summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-12-05ZJIT: Include local variable names in `Get|SetLocal` insn's print value (#15423)Stan Lo
ZJIT: Print local variable names GetLocal and SetLocal instructions
2025-12-05ZJIT: Build by default when build environment allowsAlan Wu
"Default" means when `--enable-zjit` is absent from `./configure` arguments.
2025-12-05ZJIT: configure.ac: Look for GNU make when detecting build environmentAlan Wu
Building ZJIT requires GNU make at the moment. To get access to `$gnumake`, lift the `make` flavour detection up to the environment section, before the JIT section runs.
2025-12-05ZJIT: configure.ac logic to detect suitable build environmentAlan Wu
This runs the detection, but does nothing with the result. * Fixed version requirement in messages -- ZJIT requires >= 1.85 unlike YJIT. * New: Detect when rust 1.85 is available, and neither --enable-yjit nor --enable-zjit is passed to ./configure, include both YJIT and ZJIT in the build
2025-12-05YJIT: Fix unused_unsafe warning in `StatsAlloc`Alan Wu
2025-12-05ZJIT: Update `depend` for zjit.oAlan Wu
2025-12-05YJIT: Fix duplicate make rule warning in combo buildAlan Wu
2025-12-05ZJIT: Fix duplicate make rule warning in combo buildAlan Wu
~/zjit/zjit.mk:30: warning: overriding commands for target `~/build-default/' ~/yjit/yjit.mk:26: warning: ignoring old commands for target `~/build-default/' ~/zjit/zjit.mk:30: warning: overriding commands for target `~/build-default/' ~/yjit/yjit.mk:26: warning: ignoring old commands for target `~/build-default/'
2025-12-05tool/update-deps: Skip ZJIT and YJIT+ZJIT build objectsAlan Wu
2025-12-05CI: Avoid building ZJIT when LLVM is too oldAlan Wu
2025-12-05ZJIT: Avoid binding to `rb_iseq_constant_body`Alan Wu
Its definition changes depending on e.g. whether there is YJIT in the build.
2025-12-05YJIT: Fix including stats for ZJIT instructions when ZJIT not in buildAlan Wu
2025-12-05JITs: Update bindings to include interpreter zjit_ opcodesAlan Wu
Mostly YJIT. ZJIT already has the right bindings and this just tweaks the CI configuration.
2025-12-05JITs: rb_iseq_opcode_at_pc(): Accommodate switch-case interpreterAlan Wu
2025-12-05ZJIT: Account for when YJIT is on by default in test_zjit_enableAlan Wu
2025-12-05ZJIT: Fix -Wpedantic warning in C99 mode when built with YJITAlan Wu
> insns.def:857:5: error: assigning to 'rb_zjit_func_t' (aka 'unsigned > long (*)(struct rb_execution_context_struct *, struct > rb_control_frame_struct *, unsigned long (*)(struct > rb_execution_context_struct *, struct rb_control_frame_struct *))') from > 'void *' converts between void pointer and function pointer > [-Werror,-Wpedantic]
2025-12-05ZJIT: Skip GC.auto_compact test when unsupportedAlan Wu
2025-12-05[ruby/prism] Correct constant pool bucket type logicKevin Newton
When replacing an owned constant by a different type (constant or shared) replace with the correct type instead of defaulting to shared. https://github.com/ruby/prism/commit/fbe9b131a1
2025-12-05[ruby/prism] Avoid undefined int overflow behaviourSteven Johnstone
Fixes https://github.com/ruby/prism/pull/3786. https://github.com/ruby/prism/commit/b72b664675
2025-12-05[ruby/prism] Avoid out-of-bounds readsSteven Johnstone
Fixes https://github.com/ruby/prism/pull/3784. https://github.com/ruby/prism/commit/3fe862534b
2025-12-05Allow rb_thread_call_with_gvl() to work when thread already has GVLKeenan Brock
[Feature #20750] Co-authored-by: Benoit Daloze <eregontp@gmail.com>
2025-12-05[ruby/openssl] x509cert: handle invalid validity periods in Certificate#inspectKazuki Yamaguchi
In a newly allocated OpenSSL X509 object, the notBefore and notAfter fields contain an ASN1_STRING object with type V_ASN1_UNDEF rather than an ASN1_TIME. Commit https://github.com/ruby/openssl/commit/73484f67949a made asn1time_to_time() stricter and it now raises an exception if the argument is not an ASN1_TIME. Previously, it would print a verbose-mode warning and return nil. OpenSSL::X509::Certificate#inspect should work even when the certificate is invalid. Let's handle this. https://github.com/ruby/openssl/commit/18c283f2b6
2025-12-05[ruby/timeout] Simplify logic to make GET_TIME shareableBenoit Daloze
https://github.com/ruby/timeout/commit/281b2507e7
2025-12-05[ruby/timeout] Fix logic for Ractor supportBenoit Daloze
* Fix indentation to stay a multiple of 2 spaces. https://github.com/ruby/timeout/commit/a1d784cb66
2025-12-05[ruby/timeout] Fix condition and fix test to catch that broken conditionBenoit Daloze
https://github.com/ruby/timeout/commit/82fb6f6925
2025-12-05[ruby/timeout] Minor tweaksBenoit Daloze
https://github.com/ruby/timeout/commit/daab9a2193
2025-12-05[ruby/timeout] support RactorKoichi Sasada
1. Introduce State to store all status. 2. Store State instance to the Ractor local storage if possible 3. Make `GET_TIME` (Method object) shareable if possible 3 is supporeted Ruby 4.0 and later, so the Rator support is works only on Ruby 4.0 and later. https://github.com/ruby/timeout/commit/54ff671c6c
2025-12-05[ruby/psych] Use Node#to_ruby parse_symbols optionÉtienne Barrié
https://github.com/ruby/psych/commit/907fd4fa97
2025-12-05Never shrink bignum on reallocJohn Hawthorn
As far as I can tell, this only ever shrinks by one, and it's really not worth the expensive realloc for that.
2025-12-05Use VWA for bignumJohn Hawthorn
Previously we only allocated bignums from the 40 byte sizepool, and embedded bignum used a fixed size.
2025-12-05[ruby/net-http] open: Never call Timeout.timeout in rescue clauseDaisuke Aritomo
The try-open_timeout-then-fallback-to-timeout introduced in https://github.com/ruby/net-http/commit/1903cedd8cd0 works well, but when it errors due to any reason in Rubies which do not support `open_timeout`, it spits the rescued ArgumentError that is unrelated to user code and not actionable. Net::HTTP.start('foo.bar', 80) /.../net-http-0.8.0/lib/net/http.rb:1691:in 'TCPSocket#initialize': Failed to open TCP connection to foo.bar:80 (getaddrinfo(3): nodename nor servname provided, or not known) (Socket::ResolutionError) from /.../net-http-0.8.0/lib/net/http.rb:1691:in 'IO.open' from /.../net-http-0.8.0/lib/net/http.rb:1691:in 'block in Net::HTTP#connect' from /.../timeout-0.4.4/lib/timeout.rb:188:in 'block in Timeout.timeout' from /.../timeout-0.4.4/lib/timeout.rb:195:in 'Timeout.timeout' from /.../net-http-0.8.0/lib/net/http.rb:1690:in 'Net::HTTP#connect' from /.../net-http-0.8.0/lib/net/http.rb:1655:in 'Net::HTTP#do_start' from /.../net-http-0.8.0/lib/net/http.rb:1635:in 'Net::HTTP#start' from /.../net-http-0.8.0/lib/net/http.rb:1064:in 'Net::HTTP.start' (snip) /.../net-http-0.8.0/lib/net/http.rb:1682:in 'TCPSocket#initialize': unknown keyword: :open_timeout (ArgumentError) sock = TCPSocket.open(conn_addr, conn_port, @local_host, @local_port, open_timeout: @open_timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ from /.../net-http-0.8.0/lib/net/http.rb:1682:in 'IO.open' from /.../net-http-0.8.0/lib/net/http.rb:1682:in 'Net::HTTP#connect' from /.../net-http-0.8.0/lib/net/http.rb:1655:in 'Net::HTTP#do_start' from /.../net-http-0.8.0/lib/net/http.rb:1635:in 'Net::HTTP#start' from /.../net-http-0.8.0/lib/net/http.rb:1064:in 'Net::HTTP.start' (snip) ... 8 levels... This patch suppresses the ArgumentError by moving the retry out of the rescue clause. https://github.com/ruby/net-http/commit/86232d62f5
2025-12-05[ruby/openssl] asn1: use ASN1_TIME_to_tm() to decode UTCTime and GeneralizedTimeKazuki Yamaguchi
The current logic relies on sscanf() and error checks are almost entirely missing. It also assumes that ASN1_STRING contents are NUL terminated, which is undocumented and not guaranteed for all valid ASN1_TIME objects. Switch to using ASN1_TIME_to_tm() added in OpenSSL 1.1.1. It is also supported by LibreSSL and AWS-LC. In the long term, we may want to replace ASN1_TIME_to_tm() with a hand-rolled decoder, since the function is intended for a specific use-case. It is too permissive for strict DER, yet still does not support all valid DER inputs and silently drops information such as fractional seconds. However, it handles everything that the current sscanf() code could handle. https://github.com/ruby/openssl/commit/73484f6794
2025-12-05[ruby/openssl] asn1: reorder declarationsKazuki Yamaguchi
Move variable declarations for OpenSSL::ASN1 classes to the top of the file. asn1time_to_time() will need eASN1Error in the next patch. https://github.com/ruby/openssl/commit/6c0ef87897
2025-12-05[ruby/timeout] Only the timeout method should be public on the Timeout moduleBenoit Daloze
https://github.com/ruby/timeout/commit/cd51eac3ca
2025-12-05[DOC] Describe `$F`Nobuyoshi Nakada
This variation is used when `-a` option is given.
2025-12-05[DOC] Describe the global variables set by command line optionsNobuyoshi Nakada
These variables are set by command line options, but it is deprecated to assign them any value other than nil in ruby code.
2025-12-05[DOC] Centerize Variable, English, and Constant columnsNobuyoshi Nakada
2025-12-05Add Set C API to newsJeremy Evans
Also, don't use backticks around Set in the top level of the Core classes updates section, as other classes/modules do not use that format.
2025-12-05Correctly handle `Process.fork` with an active `Fiber.scheduler`. (#15385)Sharon Rosner
In the child process, nullify the current fiber scheduler and set the current fiber to blocking.
2025-12-05Update NEWS.md for Ruby 4.0.0 (#15369)Yusuke Endoh
I extracted the relevant descriptions from the draft NEWS.md that hsbt-san had Gemini generate by analyzing `git log`. Co-authored-by: Hiroshi SHIBATA <hsbt@ruby-lang.org> Co-authored-by: Alan Wu <XrXr@users.noreply.github.com> Co-authored-by: Jeremy Evans <code@jeremyevans.net> Co-Authored-By: Earlopain <14981592+Earlopain@users.noreply.github.com>
2025-12-05Skip Windows runner group warning under ruby/ruby repoHiroshi SHIBATA
2025-12-05Ractor.shareable_proc(&pr) should copy prKoichi Sasada
`pr` should not change on this method.
2025-12-04[ruby/rubygems] Add before(:context) hook to warn when spec files are not ↵Hiroshi SHIBATA
assigned to any Windows runner group https://github.com/ruby/rubygems/commit/3ddb740969
2025-12-04[ruby/rubygems] Try to split and run three runners for WindowsHiroshi SHIBATA
I organized all examples the followings: ``` Total test time: 2468.41 seconds Total files: 168 Group A: 42 files, 617.08 seconds Group B: 42 files, 617.05 seconds Group C: 42 files, 617.14 seconds Group D: 42 files, 617.14 seconds ``` https://github.com/ruby/rubygems/commit/94d41e6c7c
2025-12-04[DOC] Cross-link between README pagesBurdetteLamar
2025-12-04Fix thread scheduler issue with thread_sched_wait_events (#15392)Luke Gruber
Fix race between timer thread dequeuing waiting thread and thread skipping sleeping due to being dequeued. We now use `th->event_serial` which is protected by `thread_sched_lock`. When a thread is put on timer thread's waiting list, the event serial is saved on the item. The timer thread checks that the saved serial is the same as current thread's serial before calling `thread_sched_to_ready`. The following script (taken from a test in `test_thread.rb` used to crash on scheduler debug assertions. It would likely crash in non-debug mode as well. ```ruby def assert_nil(val) if val != nil raise "Expected #{val} to be nil" end end def assert_equal(expected, actual) if expected != actual raise "Expected #{expected} to be #{actual}" end end def test_join2 ok = false t1 = Thread.new { ok = true; sleep } Thread.pass until ok Thread.pass until t1.stop? t2 = Thread.new do Thread.pass while ok t1.join(0.01) end t3 = Thread.new do ok = false t1.join end assert_nil(t2.value) t1.wakeup assert_equal(t1, t3.value) ensure t1&.kill&.join t2&.kill&.join t3&.kill&.join end rs = 30.times.map do Ractor.new do test_join2 end end rs.each(&:join) ```
2025-12-04Adjust test to avoid bugJohn Hawthorn
2025-12-04Change bmethod defined_ractor to use id insteadJohn Hawthorn
When defining a bmethod, we recorded the current Ractor's object in the method. However that was never marked and so could be GC'd and reused by a future Ractor. Instead we can use the Ractor's id, which we expect to be unique forever. Co-authored-by: Luke Gruber <luke.gru@gmail.com>
2025-12-04Take VM lock in `class_switch_superclass` (#15356)Luke Gruber
Safe multi-ractor subclass list mutation We need to lock around mutation and accesses of a class's subclasses list. Unfortunately we also need to do this when creating singleton classes, as the singleton class does need to go into `super`'s subclasses list for CC invalidation purposes.
2025-12-05Add openssl reformatting to .git-blame-ignore-revs [ci skip]Kazuki Yamaguchi