summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
28 hoursv4.0.4v4.0.4Takashi Kokubun
28 hoursmerge revision(s) d077df24a2256d760cc534b242b28822d4ef6376: [Backport #22002]Takashi Kokubun
[Bug #22002] Never pop when compiling branch predicate The value is always needed. Now prism emits the same instructions as parse.y for the added test case. `defined?`/`flip-flop` caused `argument stack underflow`, `and`/`or` segfaulted during runtime.
28 hoursmerge revision(s) c4b3630f5ec500b0d8699cffe214ada3161d0de8: [Backport #22003]Takashi Kokubun
[Bug #22003] Refactor template/configure-ext.mk.tmpl - Select extension library directories by globbing extconf.rb. - Exclude extensions for test before uniquifing bundled gems. - Use `Dir.glob` base option to remove prefixed srcdir.
28 hoursmerge revision(s) ↵Takashi Kokubun
c0d86a0103de7130943d54b4a290b76ec7e0c135,47e061277ac194a36659510bcf4f3190bde629a6: [Backport #21952] class.c: rb_class_duplicate_classext also dup content of cvc_tbl [Bug #21952] Shallow copying the table result in the same memory being shared between multiple box, causing double free when one of the box is garbage collected. --- class.c: Make cvc_tbl a managed object [Bug #21952] Solves the double-free or use after-free concern with boxes. Now entries can safely be used for copy-on-write. Also is likely necessary to make it save to read cvar from secondary ractors, as allowed since: ab32c0e690b805cdaaf264ad4c3421696c588204
28 hoursmerge revision(s) 7f4f3c8ee7cde795dc27be753796fc7ea8318565: [Backport #22004]Takashi Kokubun
[PATCH] [Bug #22004] Fix short-circuited loop conditions
28 hoursmerge revision(s) f89b07ef0046257dd796a2e615cc063072114f16: [Backport #21940]Takashi Kokubun
[PATCH] Mark `$_` as box-dynamic to bypass Box gvar_tbl cache `$_` is updated through svar (rb_lastline_set), bypassing rb_gvar_set, so the Box gvar_tbl cache is never invalidated and returns a stale value. Call rb_gvar_box_dynamic so gvar_use_box_tbl() skips the cache. Fixes [Bug #21940](https://bugs.ruby-lang.org/issues/21940)
28 hoursmerge revision(s) 526344b56ea968d5704bdefe6e10bb3cf7f4f569, ↵Takashi Kokubun
8ad6baa01746e8de0460f0ccdaee69953a70af17: [Backport #21933] [PATCH] Fix Box regexp match vars after non-match [PATCH] Use box_ready for $&, $`, $\', $+ These variables have rb_gvar_readonly_setter, so box_ready is sufficient. Only $~ needs box_dynamic due to its custom match_setter.
28 hoursmerge revision(s) 4644e4f2fafe45e2c49f18bc9712d0f5fff3d341: [Backport #21986]Takashi Kokubun
[PATCH] [Bug #21986] Fix location of numeric literal When checking for suffixes, do not flush the numeric literal token even if no suffix is found.
28 hoursmerge revision(s) 24a2ba09af13b7c969733ea9370ad59d2442f4c9: [Backport #21985]Takashi Kokubun
[PATCH] [Bug #21985] Include the `-` in the negative numbers location
7 daysFix missing writebarrier on refined orig_meJohn Hawthorn
Caught by wbcheck. The same field is written with RB_OBJ_WRITE in rb_method_definition_set.
7 daysFix writebarrier on rb_class_set_box_classextJohn Hawthorn
7 daysUse write barrier version for rb_proc_call_kwJohn Hawthorn
7 daysIssue writebarrier_remember after set const tblJohn Hawthorn
7 daysAdd write barriers on Hash#rehashJohn Hawthorn
8 days- iseq.c: fix passing frozen option to compile_file_prismVladimir Dementyev
8 daysISeq.compile_file was not switching on parserKevin Newton
8 daysFix coverage support for RubyVM::ISeq.compileJean Boussier
[Bug #22018] ISeq returned by `RubyVM::InstructionSequene.load_iseq` weren't handled by the coverage module.
2026-04-21[ruby/erb] Version 6.0.1.1Takashi Kokubun
2026-04-21[ruby/erb] Prohibit def_method on marshal-loaded ERB instancesTakashi Kokubun
Extends the @_init guard to def_method so that an ERB object created via Marshal.load (which bypasses initialize) raises ArgumentError instead of evaluating arbitrary source. def_module and def_class both delegate to def_method and are covered by the same check. Co-authored-by: Tristan Madani <TristanInSec@gmail.com>
2026-04-14iseq.c: rb_estimate_iv_count handle no superclassJean Boussier
[Bug #21992] When redefining `BasicObject#initialize` there's no super class to access.
2026-04-08Add ruby_version_is guard to CVE-2019-8322 spec for changing displayed messageHiroshi SHIBATA
2026-04-08Merge RubyGems/Bundler 4.0.10Hiroshi SHIBATA
2026-04-08Merge RubyGems/Bundler 4.0.9Hiroshi SHIBATA
2026-04-08Merge RubyGems/Bundler 4.0.8Hiroshi SHIBATA
2026-04-08Merge RubyGems/Bundler 4.0.7Hiroshi SHIBATA
2026-04-08Merge RubyGems/Bundler 4.0.6Hiroshi SHIBATA
2026-04-03merge revision(s) c27ae8d91aadca0660070ee1eeae9598b1fe47ee, ↵Takashi Kokubun
b6e6ccc6c22ebb464ce101e42a14e7daea2a80b6, cbca59377ebfa1bc1183322fa9d9d0067d445c24: [Backport #21844] [ruby/psych] Remove excessive check of message Make `Data#initialize` reject `Integer` keys [Bug #21844] Fix error message
2026-04-03merge revision(s) 8ecf28f9384207590be73d5f2a95859cff9c526a: [Backport #21954]Takashi Kokubun
[ruby/rubygems] Fix NoMethodError in Gem.try_activate when activation conflicts occur
2026-04-03merge revision(s) c8155822c460a5734d700cd468d306ca03b44ce4: [Backport #21959]Takashi Kokubun
reinit rb_internal_thread_event_hooks_rw_lock at fork
2026-04-03merge revision(s) 54c4694994cc3bcfea9058b22ba3e68af6aaf740: [Backport #21961]Takashi Kokubun
marshal.c: properly freeze linked strings
2026-04-03merge revision(s) 5de4cc56086493689701e86aa0ccf6a4a4a87d75: [Backport #21971]Takashi Kokubun
Fix regexp performance regression for patterns starting with s/k
2026-04-02Convert K&R function definitions in configure.acJohn Hawthorn
2026-03-30Run GC if fiber pool expansion fails. (#16535)Samuel Williams
[Bug #21964]
2026-03-19Simplify subclasses list, remove from BoxJohn Hawthorn
Currently we maintain the subclasses list for two separate purposes (we essentially have to different relationships we're putting into the same list): 1. On a T_MODULE, we track the T_ICLASSes created to include it into other classes. Used for method invalidation and propagating includes on the module that happen after it's been used 2. On a T_CLASS/T_ICLASS, we track the T_CLASS/T_ICLASS which are the immediate children of the class. We use this for method invalidation, some cvar things, and to iterate through subclasses. Purpose 1 does not have any issues with box, the T_ICLASS always belongs to one specific module and that's immutable. This list can be box-global (always use the prime classext or hoist it out) and only needs to be pruned during free. If we care about behaviour under a particular box (ie. the propagating includes), we should look up the current box being modified on the ICLASS itself. Purpose 2 is more complicated. It currently tracks the immediate children, the T_CLASS or T_ICLASS whose super points back. Because super is per-box and is mutable (include/prepend insert ICLASSes into the chain) we need to update the list on include/prepend, entries must be per-box, and we can have multiple entries per-box. *I propose we simplify this by no longer tracking the immediate subclass*, but instead tracking the T_CLASS -> ... -> T_CLASS relationship, ie. the inverse of rb_class_superclass. That relationship is the same across all boxes and immutable after Class creation. As a special case the ICLASS for refinements are also added to the purpose 2 list (on T_CLASS). As those ICLASS do not chain to an eventual leaf T_CLASS. When we need to find the classes which have included a module, we can use the module subclasses list to find the ICLASS and then use RCLASS_INCLUDER. If we needed to iterate all T_ICLASS, we could then walk up the CLASS_SUPER chain, but I didn't find anywhere we needed to do that.
2026-03-17Ensure fiber stack is freed in all cases, if the fiber is terminated. (#16416)Samuel Williams
[Bug #21955]
2026-03-16Allow auto-sync from Prism ruby-4.0Takashi Kokubun
2026-03-16v4.0.2v4.0.2Takashi Kokubun
2026-03-16Bump Prism to v1.8.1Takashi Kokubun
2026-03-16[ruby/prism] Fix not binding power in endless methods [Backport #21097]Takashi Kokubun
Change rescue modifier binding power from PM_BINDING_POWER_COMPOSITION to PM_BINDING_POWER_MATCH + 1, so that `x = a rescue b in c` is parsed as `(x = (a rescue b)) in c` and `def f = a rescue b in c` is parsed as `(def f = (a rescue b)) in c`. https://github.com/ruby/prism/commit/7e797f59ae
2026-03-16Update pstore to 0.2.1 [Backport #21880]Takashi Kokubun
Fix ultra_safe mode of pstore bundled with Ruby 4.0.
2026-03-16merge revision(s) 08372635f7ec09f7115bd254246ebd637499651c: [Backport #21926]Takashi Kokubun
Fix race condition right after ubf registration Fixes [Bug #21926]
2026-03-16merge revision(s) f315d250b44e75a1a69f4a05b293dcc701377689: [Backport #21947]Takashi Kokubun
[ruby/timeout] Compatibility with Fiber scheduler. (https://github.com/ruby/timeout/pull/97) [Bug #21947]
2026-03-16merge revision(s) 55694ad7efc3f8dc6d5c7aefa60ded4c303ed6cf: [Backport #21945]Takashi Kokubun
[Bug #21945] Correctly handle `and?` and similar
2026-03-16merge revision(s) 361644c0cce3235e9cc6724994c6b5711deb10b8: [Backport #21917]Takashi Kokubun
[PATCH] [Bug #21917] Fix build on AIX
2026-03-16YJIT: Fix not reading locals from `cfp->ep` after `YJIT.enable` and ↵Alan Wu
exceptional entry [Backport #21941] In case of `--yjit-disable`, YJIT only starts to record environment escapes after `RubyVM::YJIT.enable`. Previously we falsely assumed that we always have a full history all the way back to VM boot. This had YJIT install and run code that assume EP=BP when EP≠BP for some exceptional entry into the middle of a running frame, if the environment escaped before `YJIT.enable`. The fix is to reject exceptional entry with an escaped environment. Rename things and explain in more detail how the predicate for deciding to assume EP=BP works. It's quite subtle since it reasons about all parties in the system that push a control frame and then run JIT code. Note that while can_assume_on_stack_env() checks the currently running environment if it so happens to be the one YJIT is compiling against, it can return true for any ISEQ. The check isn't necessary for fixing the bug, and the load bearing part of this patch is the change to exceptional entries. This fix is flat on speed and space on ruby-bench headline benchmarks. Many thanks for the community effort to create a small test case for this bug.
2026-03-11Windows: Explicitly specify the use of `coreutils` commandsNobuyoshi Nakada
It appears that shims for individual commands are no longer being created.
2026-03-11Use $LOAD_PATH.replace for safer restoration in testHiroshi SHIBATA
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11Suppress bundled gems warning for subfeatures found outside stdlib [Bug #21828]Hiroshi SHIBATA
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11Fix M:N threads under OpenBSDJohn Hawthorn
OpenBSD requires MAP_STACK for memory regions used as thread stacks. However it seems to error with "Invalid argument" unless the permissions include both PROT_READ | PROT_WRITE. We should be able to satisft this by re-mmapping over our reserved stack region to get the MAP_STACK flag. As a (very minor) bonus, this applies MAP_STACK only to the machine stack region, not the VM region. Co-authored-by: Jeremy Evans <code@jeremyevans.net>
2026-03-09Lock to install uutils-coreutils@0.5.0Hiroshi SHIBATA