今日のビルド
8e93bf8e1fbac73b677c333b19a8b55ae9daddc3 までを pull ってきてビルド。エラー/警告ともになし。
Files: 1051 Classes: 1275 ( 317 undocumented) Modules: 244 ( 81 undocumented) Constants: 2478 ( 806 undocumented) Attributes: 1504 ( 258 undocumented) Methods: 12696 (2521 undocumented) Total: 18197 (3983 undocumented) 78.11% documented Elapsed: 33.7s
今日のテスト
make test-all を実行。
Leaked file descriptor: TestIRB::ContextTest#test_build_completor: 5 #<File::Stat dev=0x10302, ino=2623712, mode=0100644, nlink=1, uid=1000, gid=1000, rdev=0x0, size=1013, blksize=4096, blocks=8, atime=2023-11-29 22:40:21.340706189 +0900, mtime=2023-07-16 02:16:13.739839427 +0900, ctime=2023-07-16 02:16:13.739839427 +0900> Multiple autoclose IO objects for a file descriptor in: TestIRB::ContextTest#test_build_completor: #<IO:<STDIN>>(autoclose) #<IO:fd 0>(autoclose) Closed file descriptor: TestIRB::ContextTest#test_eval_input_with_long_exception: 5 Finished tests in 684.797270s, 38.7502 tests/s, 10594.2668 assertions/s. 26536 tests, 7254925 assertions, 0 failures, 0 errors, 100 skips ruby -v: ruby 3.3.0dev (2023-11-29T11:16:36Z master 8e93bf8e1f) [x86_64-linux]
今日のビルド(Universal Parser 有効化)
8e93bf8e1fbac73b677c333b19a8b55ae9daddc3 までを pull ってきてビルド。
ruby_parser.c: In function ‘rb_parser_config_initialize’:
ruby_parser.c:721:29: warning: assignment left-hand side might be a candidate for a format attribute [-Wsuggest-attribute=format]
721 | config->compile_warn = rb_compile_warn;
| ^
ruby_parser.c:722:29: warning: assignment left-hand side might be a candidate for a format attribute [-Wsuggest-attribute=format]
722 | config->compile_warning = rb_compile_warning;
| ^
ruby_parser.c:723:29: warning: assignment left-hand side might be a candidate for a format attribute [-Wsuggest-attribute=format]
723 | config->bug = rb_bug;
| ^
ruby_parser.c:724:29: warning: assignment left-hand side might be a candidate for a format attribute [-Wsuggest-attribute=format]
724 | config->fatal = rb_fatal;
| ^
ruby_parser.c: At top level:
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
Files: 1051 Classes: 1275 ( 317 undocumented) Modules: 244 ( 81 undocumented) Constants: 2478 ( 806 undocumented) Attributes: 1504 ( 258 undocumented) Methods: 12696 (2521 undocumented) Total: 18197 (3983 undocumented) 78.11% documented Elapsed: 38.7s
今日のテスト(Universal Parser 有効化)
make test-all を実行。
Leaked file descriptor: TestIRB::ContextTest#test_build_completor: 5 #<File::Stat dev=0x10302, ino=3297912, mode=0100644, nlink=1, uid=1000, gid=1000, rdev=0x0, size=1013, blksize=4096, blocks=8, atime=2023-11-29 22:40:34.255841754 +0900, mtime=2023-08-23 21:49:10.259310789 +0900, ctime=2023-08-23 21:49:10.259310789 +0900> Closed file descriptor: TestIRB::ContextTest#test_default_return_format: 5 Finished tests in 740.005937s, 35.8592 tests/s, 9805.6200 assertions/s. 26536 tests, 7256217 assertions, 0 failures, 0 errors, 99 skips ruby -v: ruby 3.3.0dev (2023-11-29T11:16:36Z master 8e93bf8e1f) [x86_64-linux]
今日のビルド(YJIT 有効化)
8e93bf8e1fbac73b677c333b19a8b55ae9daddc3 までを pull ってきてビルド。エラー/警告ともになし。
今日のテスト(YJIT 有効化)
make test-all を実行。
Leaked file descriptor: TestIRB::ContextTest#test_build_completor: 5 #<File::Stat dev=0x10302, ino=2624449, mode=0100644, nlink=1, uid=1000, gid=1000, rdev=0x0, size=1013, blksize=4096, blocks=8, atime=2023-11-29 22:40:25.240445172 +0900, mtime=2023-09-17 15:37:01.752490258 +0900, ctime=2023-09-17 15:37:01.752490258 +0900> Closed file descriptor: TestIRB::ContextTest#test_prompt_n_deprecation: 5 Finished tests in 679.027774s, 39.0794 tests/s, 10684.6307 assertions/s. 26536 tests, 7255161 assertions, 0 failures, 0 errors, 100 skips ruby -v: ruby 3.3.0dev (2023-11-29T11:16:36Z master 8e93bf8e1f) [x86_64-linux]
今日のビルド(RJIT 有効化)
8e93bf8e1fbac73b677c333b19a8b55ae9daddc3 までを pull ってきてビルド。エラー/警告ともになし。
一応、以下の警告は出ます。
./miniruby: warning: Disabling RJIT because RubyVM::RJIT::Compiler is not defined
が、このコメントにある通り
// RJIT doesn't support miniruby, but it might reach here by RJIT_FORCE_ENABLE.
なのでこの警告は出るものです。
今日のテスト(RJIT 有効化)
make test-all を実行。
1) Failure:
TestRubyOptimization#test_objtostring [/home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/test/ruby/test_optimization.rb:938]:
assert_separately failed with error message
pid 2244414 exit 1
| /home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/lib/ruby_vm/rjit/c_pointer.rb:341:in `with_class_name': undefined method `empty?' for nil (NoMethodError)
| from /home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/lib/ruby_vm/rjit/c_type.rb:69:in `new'
| from <internal:rjit_c>:963:in `rb_builtin_function'
| from /home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/lib/ruby_vm/rjit/insn_compiler.rb:2607:in `opt_invokebuiltin_delegate'
| from /home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/lib/ruby_vm/rjit/insn_compiler.rb:130:in `compile'
| from /home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/lib/ruby_vm/rjit/compiler.rb:319:in `compile_block'
| from /home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/lib/ruby_vm/rjit/compiler.rb:148:in `block in branch_stub_hit'
| from <internal:kernel>:133:in `then'
| from /home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/lib/ruby_vm/rjit/compiler.rb:147:in `branch_stub_hit'
| from <internal:array>:106:in `first'
| from /home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/tool/lib/core_assertions.rb:524:in `assert'
| from /home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/tool/lib/test/unit/assertions.rb:184:in `assert_match'
| from -:14:in `block in <main>'
| from -:13:in `each'
| from -:13:in `<main>'
2) Failure:
TestRubyOptimization#test_block_parameter_should_not_create_objects [/home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/test/ruby/test_optimization.rb:785]:
<0> expected but was
<19>.
3) Failure:
TestGc#test_gc_parameter_init_slots [/home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/test/ruby/test_gc.rb:454]:
{:slot_size=>160, :heap_allocatable_pages=>3, :heap_eden_pages=>21, :heap_eden_slots=>8587, :heap_tomb_pages=>0, :heap_tomb_slots=>0, :total_allocated_pages=>22, :total_freed_pages=>1, :force_major_gc_count=>0, :force_incremental_marking_finish_count=>0, :total_allocated_objects=>15712, :total_freed_objects=>7483}.
Expected 9811 to be >= 10000.
4) Failure:
TestGc#test_thrashing_for_young_objects [/home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/test/ruby/test_gc.rb:645]:
before_stats: {:count=>26, :time=>55, :marking_time=>37, :sweeping_time=>18, :heap_allocated_pages=>159, :heap_sorted_length=>306, :heap_allocatable_pages=>147, :heap_available_slots=>217350, :heap_live_slots=>138481, :heap_free_slots=>78869, :heap_final_slots=>0, :heap_marked_slots=>132951, :heap_eden_pages=>159, :heap_tomb_pages=>0, :total_allocated_pages=>162, :total_freed_pages=>3, :total_allocated_objects=>1359514, :total_freed_objects=>1221033, :malloc_increase_bytes=>2120, :malloc_increase_bytes_limit=>16836216, :minor_gc_count=>21, :major_gc_count=>5, :compact_count=>0, :read_barrier_faults=>0, :total_moved_objects=>0, :remembered_wb_unprotected_objects=>0, :remembered_wb_unprotected_objects_limit=>1261, :old_objects=>132941, :old_objects_limit=>252348, :oldmalloc_increase_bytes=>2120, :oldmalloc_increase_bytes_limit=>19350882}
before_stat_heap: {0=>{:slot_size=>40, :heap_allocatable_pages=>0, :heap_eden_pages=>121, :heap_eden_slots=>198128, :heap_tomb_pages=>0, :heap_tomb_slots=>0, :total_allocated_pages=>121, :total_freed_pages=>0, :force_major_gc_count=>0, :force_incremental_marking_finish_count=>1, :total_allocated_objects=>1320488, :total_freed_objects=>1188716}, 1=>{:slot_size=>80, :heap_allocatable_pages=>0, :heap_eden_pages=>12, :heap_eden_slots=>9820, :heap_tomb_pages=>0, :heap_tomb_slots=>0, :total_allocated_pages=>13, :total_freed_pages=>1, :force_major_gc_count=>0, :force_incremental_marking_finish_count=>0, :total_allocated_objects=>22871, :total_freed_objects=>18913}, 2=>{:slot_size=>160, :heap_allocatable_pages=>2, :heap_eden_pages=>21, :heap_eden_slots=>8587, :heap_tomb_pages=>0, :heap_tomb_slots=>0, :total_allocated_pages=>23, :total_freed_pages=>2, :force_major_gc_count=>0, :force_incremental_marking_finish_count=>0, :total_allocated_objects=>16145, :total_freed_objects=>13338}, 3=>{:slot_size=>320, :heap_allocatable_pages=>47, :heap_eden_pages=>3, :heap_eden_slots=>612, :heap_tomb_pages=>0, :heap_tomb_slots=>0, :total_allocated_pages=>3, :total_freed_pages=>0, :force_major_gc_count=>0, :force_incremental_marking_finish_count=>0, :total_allocated_objects=>57, :total_freed_objects=>48}, 4=>{:slot_size=>640, :heap_allocatable_pages=>98, :heap_eden_pages=>2, :heap_eden_slots=>203, :heap_tomb_pages=>0, :heap_tomb_slots=>0, :total_allocated_pages=>2, :total_freed_pages=>0, :force_major_gc_count=>0, :force_incremental_marking_finish_count=>0, :total_allocated_objects=>23, :total_freed_objects=>18}}
after_stats: {:count=>41, :time=>70, :marking_time=>39, :sweeping_time=>31, :heap_allocated_pages=>159, :heap_sorted_length=>306, :heap_allocatable_pages=>147, :heap_available_slots=>217350, :heap_live_slots=>133216, :heap_free_slots=>84134, :heap_final_slots=>0, :heap_marked_slots=>133155, :heap_eden_pages=>159, :heap_tomb_pages=>0, :total_allocated_pages=>162, :total_freed_pages=>3, :total_allocated_objects=>2363825, :total_freed_objects=>2230609, :malloc_increase_bytes=>1912, :malloc_increase_bytes_limit=>16777216, :minor_gc_count=>36, :major_gc_count=>5, :compact_count=>0, :read_barrier_faults=>0, :total_moved_objects=>0, :remembered_wb_unprotected_objects=>0, :remembered_wb_unprotected_objects_limit=>1261, :old_objects=>133142, :old_objects_limit=>252348, :oldmalloc_increase_bytes=>9696, :oldmalloc_increase_bytes_limit=>19350882}
after_stat_heap: {0=>{:slot_size=>40, :heap_allocatable_pages=>0, :heap_eden_pages=>121, :heap_eden_slots=>198128, :heap_tomb_pages=>0, :heap_tomb_slots=>0, :total_allocated_pages=>121, :total_freed_pages=>0, :force_major_gc_count=>0, :force_incremental_marking_finish_count=>1, :total_allocated_objects=>2324491, :total_freed_objects=>2198054}, 1=>{:slot_size=>80, :heap_allocatable_pages=>0, :heap_eden_pages=>12, :heap_eden_slots=>9820, :heap_tomb_pages=>0, :heap_tomb_slots=>0, :total_allocated_pages=>13, :total_freed_pages=>1, :force_major_gc_count=>0, :force_incremental_marking_finish_count=>0, :total_allocated_objects=>22954, :total_freed_objects=>18955}, 2=>{:slot_size=>160, :heap_allocatable_pages=>2, :heap_eden_pages=>21, :heap_eden_slots=>8587, :heap_tomb_pages=>0, :heap_tomb_slots=>0, :total_allocated_pages=>23, :total_freed_pages=>2, :force_major_gc_count=>0, :force_incremental_marking_finish_count=>0, :total_allocated_objects=>16364, :total_freed_objects=>13534}, 3=>{:slot_size=>320, :heap_allocatable_pages=>47, :heap_eden_pages=>3, :heap_eden_slots=>612, :heap_tomb_pages=>0, :heap_tomb_slots=>0, :total_allocated_pages=>3, :total_freed_pages=>0, :force_major_gc_count=>0, :force_incremental_marking_finish_count=>0, :total_allocated_objects=>57, :total_freed_objects=>48}, 4=>{:slot_size=>640, :heap_allocatable_pages=>98, :heap_eden_pages=>2, :heap_eden_slots=>203, :heap_tomb_pages=>0, :heap_tomb_slots=>0, :total_allocated_pages=>2, :total_freed_pages=>0, :force_major_gc_count=>0, :force_incremental_marking_finish_count=>0, :total_allocated_objects=>23, :total_freed_objects=>18}}.
<0> expected but was
<3>.
5) Failure:
TestYJIT#test_compile_opt_getconstant_path [/home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/test/ruby/test_yjit.rb:460]:
Expected to compile instructions opt_getconstant_path but didn't.
iseq:
== disasm: #<ISeq:block in <main>@-e:2 (2,15)-(12,1)>
0000 definemethod :get_foo, get_foo ( 3)[LiBc]
0003 putobject 123 ( 7)[Li]
0005 putspecialobject 3
0007 setconstant :FOO
0009 putself ( 9)[Li]
0010 opt_send_without_block <calldata!mid:get_foo, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0012 pop
0013 putself ( 10)[Li]
0014 opt_send_without_block <calldata!mid:get_foo, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0016 leave ( 12)[Br]
== disasm: #<ISeq:get_foo@-e:3 (3,2)-(5,3)>
0000 opt_getconstant_path <ic:0 FOO> ( 4)[LiCa]
0002 leave ( 5)[Re]
6) Failure:
TestYJIT#test_build_large_struct [/home/jinroq/dev/sandbox/my-ruby-build/build-rjit-ruby-repo/test/ruby/test_yjit.rb:881]:
Expected to compile instructions opt_send_without_block but didn't.
iseq:
== disasm: #<ISeq:block in <main>@-e:2 (2,15)-(12,1)>
0000 putobject Object ( 3)[LiBc]
0002 opt_getconstant_path <ic:0 Struct>
0004 putobject :a
0006 putobject :b
0008 putobject :c
0010 putobject :d
0012 putobject :e
0014 putobject :f
0016 putobject :g
0018 putobject :h
0020 opt_send_without_block <calldata!mid:new, argc:8, ARGS_SIMPLE>
0022 swap
0023 setconstant :Foo
0025 definemethod :build_foo, build_foo ( 5)[Li]
0028 putself ( 9)[Li]
0029 opt_send_without_block <calldata!mid:build_foo, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0031 pop
0032 putself ( 10)[Li]
0033 opt_send_without_block <calldata!mid:build_foo, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0035 leave ( 12)[Br]
== disasm: #<ISeq:build_foo@-e:5 (5,0)-(7,3)>
0000 opt_getconstant_path <ic:0 ::Foo> ( 6)[LiCa]
0002 putobject :a
0004 putobject :b
0006 putobject :c
0008 putobject :d
0010 putobject :e
0012 putobject :f
0014 putobject :g
0016 putobject :h
0018 opt_send_without_block <calldata!mid:new, argc:8, ARGS_SIMPLE>
0020 leave ( 7)[Re]
Finished tests in 1013.508965s, 26.1823 tests/s, 7300.1712 assertions/s.
26536 tests, 7398789 assertions, 6 failures, 0 errors, 115 skips
ruby -v: ruby 3.3.0dev (2023-11-29T11:16:36Z master 8e93bf8e1f) +RJIT [x86_64-linux]
make: *** [uncommon.mk:945: yes-test-all] エラー 6
メンテナーの k0kubun さんに報告したら、「CI は通っていて、そちらの環境特有のものと思われる。それ以前に、RJIT のサポートレベルの都合上、この GitHub Actions 以外のテスト環境の対応は特にやっていない」とのことでした。なのでコントリビュートチャンス。