Activity
From 04/08/2026 to 04/14/2026
Today
-
05:22 PM Bug #21994: If there is a local variable `foo`, calls to a method `foo` with a regexp literal as first argument is always a SyntaxError without parentheses
- > I think checking code validness is hard
I agree, since this check happens during lexical analysis, rather than parsing. It is a bit mind-boggling to me that lexical analysis depends on local variable scope, but it's what it is.
I ten... -
02:52 PM Bug #21994: If there is a local variable `foo`, calls to a method `foo` with a regexp literal as first argument is always a SyntaxError without parentheses
- I think checking code validness is hard for the code below.
Warning check is triggered at every line, each check needs to parse till the bottom.
~~~ruby
a -1 => b # only a(-1 => b) is valid, (a - 1) => b is invalid at the `2 => 3` pos... -
02:42 PM Revision 93f1010f (git): Packing the buffer into itself is not possible
- Reported at https://hackerone.com/reports/3601645.
-
01:54 PM Feature #20205: Enable `frozen_string_literal` by default
- @byroot, thank you, that's exactly what I needed.
@palkan, I think it's probably not needed, at least not in Ruby core. My project has 460 gems (counting nested deps), and in order to get my ~50,000 CI test cases 100% passing I only h... -
01:26 PM Revision f7a799af (git): [ruby/prism] Implement bracket/braces events for ripper
- Drops the check against order. Very often ripper emits events in a order
that is not easy to mimic. It's only getting worse now that most events are implemented.
Perhaps the test can be brought back at a later time. For now, I used it w... - 01:08 PM Revision 51d9e924 (git): [ruby/rubygems] Update spec_set to use lookup
- https://github.com/ruby/rubygems/commit/3a90d24e42
-
12:25 PM Revision 0280c61f (git): Convert K&R function definitions in configure.ac
-
12:23 PM Revision ace687e2 (git): [DOC] Doc for file-system timestamps (#16722)
-
10:29 AM Misc #21922: Permissions for committers for ex-default/bundled/unbundled gems repositories
- The following libraries have active maintainers. You should remove them from your list.
* https://github.com/ruby/curses
* https://github.com/ruby/net-ftp
* https://github.com/ruby/iconv
* https://github.com/ruby/syck
* https://gi... -
09:16 AM Feature #21795: Methods for retrieving ASTs
- > Concretely, this means either integrating the Prism repository into ruby/ruby
I don't think that would be a very good solution, prism is not only the parser as used by CRuby. It has bindings to other languages (rust, javascript, jav... -
06:12 AM Feature #21795: Methods for retrieving ASTs
- matz (Yukihiro Matsumoto) wrote in #note-11:
> I'm not sure ast is the right name. The nodes returned by Prism retain concrete information such as positions, whitespace, and comments, making them closer to a Concrete Syntax Tree than ... -
05:48 AM Feature #21795: Methods for retrieving ASTs
- As matz pointed out in #note-11, the ABI versioning approach would leave master in a routinely broken state. As a maintainer of error_highlight, I cannot accept this. Not being able to verify error_highlight's behavior against code using...
-
07:49 AM Misc #21968 (Closed): The pathname gem needs a new release
- https://github.com/ruby/pathname/releases/tag/v0.5.0
-
06:18 AM Revision 4f26d806 (git): [ruby/digest] Fix Digest::SHA1#update with large input
- Digest::SHA1#update fails when a very large String is passed in a
single call.
Passing 2**29 bytes (512 MB) or more at once does not update the
message length counter correctly, which results in producing an
incorrect output.
$ rub... -
05:44 AM Revision 921e1f37 (git): ruby/ruby-bench#508 merged
-
03:47 AM Misc #21975 (Rejected): Add "UTF-八" as an alias for UTF-8 encoding
- While I appreciate the proposal, I must reject it for two reasons:
First, on consistency: the vertical writing is allowed only inside string arguments, while the rest of Ruby code remains horizontal. This is inconsistent.
Second, o... - 02:25 AM Revision e31f62af (git): Bump the github-actions group across 2 directories with 4 updates
- Bumps the github-actions group with 4 updates in the / directory: [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action), [actions-rust-lang/setup-rust-toolchain](https://github.com/actions-rust-lang/setup-rust-toolchain...
- 01:23 AM Revision d05f799e (git): Bump rand from 0.10.0 to 0.10.1 in /zjit
- Bumps [rand](https://github.com/rust-random/rand) from 0.10.0 to 0.10.1.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://gith... - 01:22 AM Revision 08792f83 (git): Bump rand from 0.10.0 to 0.10.1 in the cargo group across 1 directory
- Bumps the cargo group with 1 update in the / directory: [rand](https://github.com/rust-random/rand).
Updates `rand` from 0.10.0 to 0.10.1
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/...
04/13/2026
- 11:49 PM Revision ee90e8e3 (git): Concurrent set fix when encountering garbage obj in find_or_insert
- When CASing the garbage key to EMPTY, if we succeed we should decrease
set->size because we're trying to re-insert into the same slot right after.
The insertion increases set->size if it succeeds. This issue can lead to
set->size being o... -
11:03 PM Bug #21997 (Closed): segfault in basicobject
-
06:38 PM Bug #21997: segfault in basicobject
- sorry, i think this is a duplicate #21992
-
06:37 PM Bug #21997 (Closed): segfault in basicobject
- ./ruby script.rb
```
[0, 1, -1, 10000000000000000000000, -10000000000000000000000].each do |val|
begin
class BasicObject
def initialize(v); @v = v; end
def to_s; @v.to_s; end
end
obj = BasicObject.new(... -
04:52 PM Bug #21996 (Open): Crash when modifying instance variables during inspect or Marshal dump
- In #15968 describes an issue where instance variables being modified lead to incorrect Marshal output being generated, which was partially solved by checking for the number of IVs changing and raising an exception. However, if enough IVs...
-
04:39 PM Feature #20205: Enable `frozen_string_literal` by default
- I wonder if having something like [freezolite](https://github.com/ruby-next/freezolite) but doing the opposite (disable frozen string literals for specific folders) could help to increase the adoption of the “freeze all literals” mode (`...
-
03:46 PM Revision ab324956 (git): Avoid array resize in rb_obj_instance_variables
- We know (an estimate of) the ivar count upfront (+/- hidden internal
fields), from the shape, so we should reserve the expected length
upfront. -
03:46 PM Revision 3a90afd1 (git): Avoid atomic exchange in rb_free_tmp_buffer
- Usually RB_ALLOCV_N uses alloca for small allocations, and in that case
the value is 0, and we should not need to atomic exchange it back to 0.
I'm actually not sure why we need atomic operations here anyways. -
03:43 PM Bug #21994: If there is a local variable `foo`, calls to a method `foo` with a regexp literal as first argument is always a SyntaxError without parentheses
- I know very little about parser, so perhaps what I'm about to suggest is entirely impossible, but could we refine that warning as to only trigger it if the other interpretation would be valid syntax?
e.g.:
- `p -1`
- Both `p(-1)... -
03:00 PM Bug #21994: If there is a local variable `foo`, calls to a method `foo` with a regexp literal as first argument is always a SyntaxError without parentheses
- I should say that I think the *worst* solution to this would be to warn in both cases. It would effectively require us to rewrite our DSL across every rule for every language we support. My ideal world is one where we could go back to us...
-
04:16 AM Bug #21994 (Open): If there is a local variable `foo`, calls to a method `foo` with a regexp literal as first argument is always a SyntaxError without parentheses
- ## Quick version:
```bash
ruby -e 'p /hello/' # => /hello/ (warning)
ruby -e 'p = 1; p /hello/' # syntax error
ruby -e 'p %r/hello/' # => /hello/ (no warning)
ruby -e 'p = 1; p %r/hello/' # syntax error
```
## Context
In Roug... -
09:24 AM Bug #21995: mkmf generates a non-deterministic log file
- I created a [pull request](https://github.com/ruby/ruby/pull/16734) about this.
-
09:18 AM Bug #21995 (Open): mkmf generates a non-deterministic log file
- Hello,
When compiling Ruby's C extensions with mkmf, it can generate a `mkmf.log` file with non-deterministic content, especially at the line below:
```txt
ld: /tmp/rubytest.h8pay9/cc3fbuGm.o: in function `t':
^^^^^^^^^^^^^^^... -
05:14 AM Bug #21870: Regexp: Warnings when using slightly overlapping \p{...} classes
- That was my expectation as well, but what I observed was that it does in fact seem to preserve warning behaviour for all of the other cases discussed here, as noted both here and in the pull request description. I would definitely feel s...
-
05:06 AM Bug #21870: Regexp: Warnings when using slightly overlapping \p{...} classes
- I think you mean [k-takata/Onigmo#175](https://github.com/k-takata/Onigmo/pull/175).
This PR looks to remove **all** warnings for character class overlapping, not only Unicode properties. -
04:30 AM Bug #21870: Regexp: Warnings when using slightly overlapping \p{...} classes
- As a point of order - I opened a pull request against Onigmo, should that have been to Ruby instead? I'm happy to do either or both. It is a fairly simple fix, but there are some tests in Ruby main that would need to change to reflect th...
- 02:32 AM Revision 1ffe16ce (git): Bump the github-actions group across 2 directories with 4 updates
- Bumps the github-actions group with 3 updates in the / directory: [ruby/setup-ruby](https://github.com/ruby/setup-ruby), [actions/upload-artifact](https://github.com/actions/upload-artifact) and [taiki-e/install-action](https://github.co...
04/12/2026
-
02:40 PM Bug #21992: Defining BasicObject#initialize causes segmentation fault
- > 3.2: REQUIRED, 3.3: REQUIRED, 3.4: REQUIRED, 4.0: REQUIRED
I don't know if this bug actually qualify for 3.3 (and more so 3.2) backport, but in doubt I made the PRs:
- 4.0: https://github.com/ruby/ruby/pull/16726
- 3.4: http... -
02:25 PM Bug #21992 (Closed): Defining BasicObject#initialize causes segmentation fault
- Applied in changeset commit:git|6593cc52d6153c5535968a8faff6cf4ac83a11fe.
----------
iseq.c: rb_estimate_iv_count handle no superclass
[Bug #21992]
When redefining `BasicObject#initialize` there's no super class to
access. -
01:15 PM Bug #21992: Defining BasicObject#initialize causes segmentation fault
- The fix is pretty trivial: https://github.com/ruby/ruby/pull/16725
Not the first time we fail to handle the fact that `RClass.superclass` may be `Qnil`, e.g. [Bug #21694] -
11:35 AM Bug #21992: Defining BasicObject#initialize causes segmentation fault
- nobu (Nobuyoshi Nakada) wrote in #note-1:
> `BasicObject#initialize` is not defined, so "redefining" may be questionable.
It seems it is defined:
```
$ ruby -ve 'p Class.new.instance_method :initialize'
ruby 3.4.9 (2026-03-11 rev... -
04:52 AM Bug #21992: Defining BasicObject#initialize causes segmentation fault
- petercooper (Peter Cooper) wrote:
> In Ruby HEAD, 4.0.2, 3.4.7, and 3.3.11 on macOS, this leads to an immediate segmentation fault. I also got this on Ruby 3.4.1 on Linux.
It looks like since 3.2 (commit:9c5e3671ebd9c07c178ca5dac08ad... -
02:25 PM Revision 6593cc52 (git): iseq.c: rb_estimate_iv_count handle no superclass
- [Bug #21992]
When redefining `BasicObject#initialize` there's no super class to
access. -
12:59 PM Revision 8e96d6f7 (git): rb_gc_obj_optimal_size: don't enlarge small AR table hashes
- Ref: https://github.com/ruby/ruby/pull/16653
Frozen hashes backed by AR tables can be smaller than 160B. -
07:58 AM Revision d0ef5d13 (git): Update ruby-bench to update stackprof
-
07:51 AM Revision b66b5008 (git): Remove postponed job APIs deprecated for 2 years
-
02:47 AM Revision 4affbf79 (git): Fixed the error message for `ibf_load_builtin`
- `ibf_load_ptr` returns a pointer to the loaded data without a NUL
terminator. Like as the debug output above, the length of the loaded
data must explicitly specified.
04/11/2026
-
09:43 PM Revision bf008f07 (git): [ruby/rubygems] Clarify the name and meaning of the first argument
- to `gem spec`
(https://github.com/ruby/rubygems/pull/9476)
* GEMFILE sound like Bundler Gemfile but this is unrelated.
https://github.com/ruby/rubygems/commit/3e3addb8d2 -
05:48 PM Bug #21933 (Closed): Ruby::Box: named capture local variable can become nil after non-matching lines
-
05:47 PM Revision 8ad6baa0 (git): 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. -
05:47 PM Revision 526344b5 (git): Fix Box regexp match vars after non-match
-
02:56 PM Bug #21993 (Open): `rb_gc_update_tbl_refs` is incorrectly documented as the dcompact pair for `rb_mark_tbl_no_pin`, and is unsafe for `st_table`s with non-VALUE keys
- Hey!
I work for Datadog on the [Ruby profiler](https://github.com/datadog/dd-trace-rb) and I've been exploring the TypedData GC API to understand the correct patterns for writing compaction-aware extensions.
While reading through t... -
01:27 PM Bug #21992 (Closed): Defining BasicObject#initialize causes segmentation fault
- Simplest reproduction:
``` ruby
class BasicObject
def initialize
end
end
```
In Ruby HEAD, 4.0.2, 3.4.7, and 3.3.11 on macOS, this leads to an immediate segmentation fault. I also got this on Ruby 3.4.1 on Linux.
What I... -
12:02 PM Revision f70c081b (git): Always allocate CDHASH in 80B slots
- Up to size 8, `rb_hash_new_with_size()` will allocate a 160B
slot to fit a full `ar_table`.
But in the case of CDHASH, we immediately assign a custom hash
type, which trigger the conversion into an `st_table`, potentially
wasting 80B. -
06:14 AM Bug #21990: [ruby-talk:444791] Regression: Ruby 4.0 constantly crashing
- The C backtrace in the crash report seem bogus. Almost none of it make sense. Most of the functions on the stack can't possibly call each others.
Using `gdb` or `lldb` to produce a backtrace from a core dump might help.
-
05:57 AM Bug #21952 (Closed): Ruby::Box double free at process exit when `fiddle/import` is required in multiple boxes
- Applied in changeset commit:git|c0d86a0103de7130943d54b4a290b76ec7e0c135.
----------
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
betwee... -
04:13 AM Bug #21952: Ruby::Box double free at process exit when `fiddle/import` is required in multiple boxes
- As I commented, https://github.com/ruby/ruby/pull/16595 looks good to me.
-
05:57 AM Revision c0d86a01 (git): 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.
04/10/2026
-
09:34 PM Bug #21991 (Open): `$!` stays as the first exception in Ruby Box
- Description
---
When Ruby Box is enabled (`RUBY_BOX=1`), `$!` inside `rescue` does not change after the first exception.
`$!` is expected to show the exception for each `rescue` block, but it always shows the first one.
Steps t... - 09:09 PM Revision 044a43f4 (git): ZJIT: Trace infer_types as a sub-pass of other passes (#16714)
- This helps us see how much time it takes in compiler tracing.
-
08:06 PM Bug #21990 (Open): [ruby-talk:444791] Regression: Ruby 4.0 constantly crashing
- (Filed for a user on ruby-talk who can't get registered here for some reason)
After upgrade to ruby 4.0, all our Rails applications are continuously
crashing on different nodes at different locations.
All the applications were run... -
07:35 PM Revision 4978bfb2 (git): ZJIT: `fmt::Debug` for VALUE in hex. Shorthand for rb_obj_info()
- The default `{:?}` still always prints the pointer address and never
dereferences it, but now in hex.
The "alternate" flag lets you do `println!("{my_ruby_object:#?}")` and
get a rich printout like `VALUE(0x000000010232fd00 T_CLASS/Obje... -
07:32 PM Revision 5ffaaf04 (git): ZJIT: Assert no side exits in assert_compiles()
- Most of the time, we want to assert that we compile and the compiled
code runs without exiting. A small number of tests trigger side exits,
and those are changed to use assert_compiles_allowing_exits().
```console
$ rg -F 'assert_compil... - 07:26 PM Revision 304d37f7 (git): ZJIT: Fix hanging loop (#16711)
- https://github.com/ruby/ruby/pull/16122 (c272297e8a9f2b8034739b915707910b4e568479) worked for maximal SSA but
does not work for "normal" SSA. This is because it used information
propagating across block args/params as a proxy for trackin... -
06:39 PM Revision 573b16aa (git): Bump RDoc to latest master (4913d56) (#16713)
- Update the pinned RDoc revision to pick up the latest changes from
ruby/rdoc master. -
06:15 PM Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
- ufuk (Ufuk Kayserilioglu) wrote in #note-8:
How do get from compile time code generation to runtime compilation?
I am using these hacks I mentioned and many other related hacks to make a JIT compiler. My point is that using Ruby to ... -
08:30 AM Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
- @fredlinhares
A really long time ago, while i was working with ruby and wxWidgets (C++ lib), i worked on this:
https://github.com/Hanmac/rwx/blob/master/ext/main.hpp#L538
Where I was writing C macros to help me with writing getter... - 03:42 PM Revision 678b2c1a (git): [ruby/rubygems] Update man pages date
- https://github.com/ruby/rubygems/commit/087625017a
- 03:42 PM Revision 21836339 (git): [ruby/rubygems] fix formatting for BUNDLE_PREFER_PATCH variable in man page
- https://github.com/ruby/rubygems/commit/5bdf29f86c
-
02:44 PM Revision c30d74b3 (git): Ensure version from bundled_gems is used in tool/rdoc-srcdir (#16712)
- Use version from bundled_gems in tool/rdoc-srcdir
Previously, `tool/rdoc-srcdir` used `Dir.glob(...).first` to find
bundled gems like rdoc and tsort. This picks the first match
alphabetically, which can select a stale older version when... -
01:30 PM Revision 4245f8e1 (git): [DOC] Harmonize ::atime and #atime methods (#16620)
-
01:06 PM Revision 7f4db64f (git): Emit already initialzed constant warnings in a single call
- When decorating `Warning.warn`, it's much more convenient to get
the whole warning in a single string. -
11:30 AM Feature #20205: Enable `frozen_string_literal` by default
- > we would benefit from a programmatic flag
It already exists:
```ruby
RubyVM::InstructionSequence.compile_option = {frozen_string_literal: true}
```
To be set early during the boot process (typically at the top of `config/bo... -
10:45 AM Feature #20205: Enable `frozen_string_literal` by default
- I'm converting my Monolith (TableCheck) today to use it, and I realized that we would benefit from a programmatic flag `Ruby.enable_frozen_string_literal` (similar to `RubyVM::YJIT.enable` and Rails' `config.yjit = true`). You'd set this...
-
09:56 AM Feature #20205: Enable `frozen_string_literal` by default
- > Perhaps we can get major app maintainers like Shopify switching on RUBYOPT="--enable-frozen-string-literal" throughout their ecosystem?
The Shopify monolith has been compatible with frozen string literals for several years, or at l... -
05:42 AM Feature #20205: Enable `frozen_string_literal` by default
- Hi, can we please make a concrete plan to get this done?
Perhaps we can get major app maintainers like Shopify switching on `RUBYOPT="--enable-frozen-string-literal"` throughout their ecosystem? And a push to add `frozen_string_literal:... -
09:49 AM Revision cfec60d4 (git): dir.c: cache and revalidate working directory
- `rb_dir_getwd_ospath()` is called quite frequently, but
the overwhelming majority of the time, the current directory
didn't change.
We can also assume that most of the time, `PATH_MAX` is enough
for `getcwd`, hence we can first attempt ... -
09:23 AM Feature #21987: Assume `chdir(2)` isn't called and cache `rb_dir_getwd_ospath()`
- > Is this still the case? I removed some of this in
My bad. My first prototype of that change was months ago, this is indeed no longer the case.
> ...
Yes, that was my backup plan from the start. The problem is that on macOS, `open(2)... -
07:56 AM Feature #21987: Assume `chdir(2)` isn't called and cache `rb_dir_getwd_ospath()`
- byroot (Jean Boussier) wrote:
> For some implementations, allocating a `T_DATA` to avoid leaks in case of failure.
Is this still the case? I removed some of this in https://github.com/ruby/ruby/commit/126b657bd103a1abf4b572ade557ffdc... -
06:36 AM Feature #21987: Assume `chdir(2)` isn't called and cache `rb_dir_getwd_ospath()`
- Hum, that's a case i didn't think of indeed... Might be a deal breaker.
-
02:26 AM Feature #21987: Assume `chdir(2)` isn't called and cache `rb_dir_getwd_ospath()`
- byroot (Jean Boussier) wrote:
> This however assumes that C extensions or other native libraries never call `chdir(2)` after executing Ruby, or at least always reset it before yielding back to Ruby.
And no other process renames the d... -
07:56 AM Revision b154cfa9 (git): Add a fastpath for `rb_str_normalize_ospath`
- This extra check is a hotspot for path operations on
macOS.
It was added in 9962aad7b0184e385b40c26c5a109bff7abbe43c
because of a limitation of HFS+.
But all the invalid characters are outside of ASCII range,
and most paths are ASCII, ... -
06:37 AM Revision 36b0ae02 (git): Add single byte fast path to `File.expand_path`
- Similar to previous changes to `File.join` & al.
```
compare-ruby: ruby 4.1.0dev (2026-04-09T12:24:09Z master c919778017) +PRISM [arm64-darwin25]
built-ruby: ruby 4.1.0dev (2026-04-09T17:42:24Z expand-path-mbenc 4fd047f73c) +PRISM [arm6... - 03:02 AM Revision 84412ffa (git): Bump the github-actions group across 1 directory with 2 updates
- Bumps the github-actions group with 2 updates in the / directory: [actions/github-script](https://github.com/actions/github-script) and [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `actions/github-script... -
12:39 AM Revision 4c2ae6e2 (git): Always ensure room in rb_obj_embedded_size
- Although the issue only occurred on debug builds, we should always be
requesting a size large enough to fit the object when it expands to the
heap, rather than just hoping the GC provides enough room.
04/09/2026
-
11:26 PM Revision 0c1ce03b (git): ZJIT: Make `hir::types::Class` not final and have it include metaclasses
- Every class boots with a metaclass, and all metaclasses are subclasses
of Class, so `types::Class` has no business in `ExactBitsAndClass`.
In fact, we should never see an object whose RBasic::class is exactly
rb_cClass because classes ge... -
08:55 PM Revision 8aa2322b (git): Add slot size assertion to ar_force_convert_table
- Co-authored-by: Luke Gruber <luke.gru@gmail.com>
Co-authored-by: Matt Valentine-House <matt@eightbitraptor.com> -
08:55 PM Revision 0b5862f4 (git): Don't use fixed-size hashes for cdhash
- This caused out of bounds writes because of converting to a st_table.
Co-authored-by: Luke Gruber <luke.gru@gmail.com>
Co-authored-by: Matt Valentine-House <matt@eightbitraptor.com> -
06:52 PM Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
- So, what you are doing is code-generation at compile time using ERB templates, which is cool! But, I find it a stretch to call it meta-programming, since the C code isn't writing C code at runtime, everything is happening at compile time...
-
06:21 PM Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
- Let me try to elaborate as much as I can.
Rust is not as fast as C; it is as fast as the equivalent C. However, C allows us to use some valid memory management techniques that are impossible in Rust unless you use considerable amount... -
12:50 PM Bug #21984: RubyVM::AST can't tell if an array is passed to break/next/return
- The honest answer is, not really. It's probably fine to stay as is, and I would be okay with closing this.
For context, I've been building a translation layer from RubyVM::AbstractSyntaxTree to Prism, hoping it might help with a migra... -
10:16 AM Bug #21984: RubyVM::AST can't tell if an array is passed to break/next/return
- The same thing can be also said to `a=[1,2]` and `a=1,2`.
In Prism, these are both parsed as ArrayNode with/without opening and closing.
In AbstractSyntaxTree, the non-abstract parts (bracket) are dropped. I think it's just a restricti... -
12:24 PM Revision c9197780 (git): Remove extra sentinel from shape capacities
- This isn't a 0 terminated list anymore because we iterate over
heaps_count directly. So we don't need to allocate an extra byte for the
sentinel -
12:24 PM Revision 3c28bb53 (git): Make it obvious that field count guard is for debug
- This is because when `RVALUE_OVERHEAD` is positive, ie. when
`RACTOR_CHECK_MODE` is enabled and we need to store the pointer to the
owning ractor, we need to make sure there is enough space to store it.
With the previous size pools the ... -
12:24 PM Revision 5381f0fa (git): Replace sweeping_heaps map with a counter
- We implemented some bit twiddling logic with an unsigned int to have a
neat way of tracking which heaps were currently sweeping, but we
actually don't need to care which heap is sweeping right now, just
whether some are or not, so we can... -
12:24 PM Revision 2fd891f2 (git): Use the pre-processor to generate slot sizes and reciprocals
-
12:24 PM Revision 80e3a8d2 (git): Fix zjit hir tests
-
12:24 PM Revision a8009c98 (git): Allow flex in heap growth threshold
- Add a 7/8 multiplier to the min_free_slots checks in
gc_sweep_finish_heap and gc_marks_finish, allowing heaps to be up to
~12.5% below the free slots target without triggering a major GC or
forced growth.
With 12 heaps instead of 5, eac... -
12:24 PM Revision 5c968c50 (git): Cache has_sweeping_pages as a bitfield
-
12:24 PM Revision aa5f1922 (git): Update tests for new pool layout
-
12:24 PM Revision b6658c1e (git): Introduce RVALUE_SIZE GC constant
- Add GC::INTERNAL_CONSTANTS[:RVALUE_SIZE] to store the usable size
(excluding debug overhead) of the smallest pool that can hold a standard
RVALUE. -
12:24 PM Revision c9b70883 (git): Introduce power-of-two size pools
- Replace the RVALUE_SLOT_SIZE-multiplier based pool sizes with explicit
power-of-two (and near-power-of-two) slot sizes. On 64-bit this gives
12 heaps (32, 40, 64, 80, 96, 128, 160, 256, 512, 640, 768, 1024)
instead of 5, providing finer ... -
12:24 PM Revision 2567e76e (git): Handle small pools in shape capacity calculation
- When pool slot sizes can be smaller than sizeof(struct RBasic) (e.g. a
32-byte pool on 64-bit where RBasic is 16 bytes), the capacity
calculation would underflow. Guard against this by setting capacity to
0 for pools too small to hold fi... -
12:24 PM Revision 93710423 (git): Guard rb_obj_embedded_size for zero fields
- With smaller pool sizes (e.g. 32 bytes), an RObject with 0 embedded
fields would request a size smaller than the minimum meaningful object.
Ensure at least 1 field worth of space so the embedded size is always
large enough for a valid RO... -
12:24 PM Revision 772bde30 (git): Use sizeof(VALUE) for pointer alignment checks
-
12:24 PM Revision ce9d6c89 (git): Rename SIZE_POOL_COUNT to HEAP_COUNT in tests
-
11:48 AM Bug #21988 (Closed): `return a, &b` should be syntax error
- Applied in changeset commit:git|51a3f0847782095340df5dbc8fb87450dbc1fbe7.
----------
[ruby/prism] Reject `return` and similar with block pass argument
Same handling as for `yield`. Fixes [Bug #21988]
https://github.com/ruby/prism/comm... -
11:12 AM Bug #21988: `return a, &b` should be syntax error
- https://github.com/ruby/prism/pull/4072
-
10:11 AM Bug #21988 (Closed): `return a, &b` should be syntax error
- `return a, &b` is syntax error in parse.y, but accepted in Prism
~~~ruby
Prism.parse_success?('return a, &b')
#=> true
RubyVM::AbstractSyntaxTree.parse('return a, &b')
#=> block argument should not be given (SyntaxError)
~~~
W... -
11:48 AM Revision 51a3f084 (git): [ruby/prism] Reject `return` and similar with block pass argument
- Same handling as for `yield`. Fixes [Bug #21988]
https://github.com/ruby/prism/commit/2dd20183ad -
10:45 AM Bug #21989 (Open): Fiber initialization failure on WASI/ruby.wasm raises TypeError instead of FiberError
- ## Summary
When building Ruby for WASM and using it via `ruby.wasm`, if Fiber initialization fails, the following error may occur:
```text
TypeError: wrong argument type false (expected Class)
```
instead of the expected `Fibe... -
09:13 AM Feature #21987 (Open): Assume `chdir(2)` isn't called and cache `rb_dir_getwd_ospath()`
- ### Context
I'm looking at optimizing Ruby applications boot time, and one very common operation that seems wasteful is that when interpreting relative paths
we keep calling `ruby_getcwd()`, even though its result almost never change... -
08:34 AM Revision 03757030 (git): mkmf: check for C++ compiler
- It may be set to "false" if usable compiler is not found.
-
06:10 AM Revision b94a7ec7 (git): Suppress rev-parse error message when out-of-place build
-
05:19 AM Revision c091c186 (git): Fix thread leaks
- Wait for terminated threads to finish.
-
05:13 AM Revision 4b6a467a (git): mkmf: skip if C++ compiler not found
-
05:05 AM Bug #21986 (Closed): RubyVM::AST incorrect location for literals followed by modifier `if`
- Applied in changeset commit:git|4644e4f2fafe45e2c49f18bc9712d0f5fff3d341.
----------
[Bug #21986] Fix location of numeric literal
When checking for suffixes, do not flush the numeric literal token
even if no suffix is found. -
04:32 AM Revision 4644e4f2 (git): [Bug #21986] Fix location of numeric literal
- When checking for suffixes, do not flush the numeric literal token
even if no suffix is found. -
03:18 AM Revision f4b5566d (git): mkmf: grep all occurrences in cpp output
- Apple clang aborts if cpp output is closed in middle, and leaves the
preprocessed source and reproduction shell script. -
03:18 AM Revision aaa27ee0 (git): mkmf: Redirect egrep command input
-
03:18 AM Revision f104525c (git): mkmf: cpp_command in C++ mode
- 02:25 AM Revision a4fa75ee (git): Bump taiki-e/install-action
- Bumps the github-actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `taiki-e/install-action` from 2.75.0 to 2.75.1
- [Release notes](https://github.com/taiki-e/i...
04/08/2026
-
10:49 PM Revision 949bee21 (git): Add ruby_version_is guard to CVE-2019-8322 spec for changing displayed message
-
10:49 PM Revision 4edfd93c (git): Merge RubyGems/Bundler 4.0.10
-
10:49 PM Revision dc13b5ad (git): Merge RubyGems/Bundler 4.0.9
-
10:49 PM Revision 36084c24 (git): Merge RubyGems/Bundler 4.0.8
-
10:49 PM Revision f13b3911 (git): Merge RubyGems/Bundler 4.0.7
-
10:49 PM Revision 019c261c (git): Merge RubyGems/Bundler 4.0.6
- 10:18 PM Revision 6ccabf1e (git): ZJIT: Guard an array is not frozen before popping from it
- 10:18 PM Revision ddb60fe3 (git): ZJIT: Guard that an array is not frozen before modifying it
- ArrayPush calls out to the fast-path, not checking for frozen-ness. In
debug mode, this leads to crashes. In release mode, silent erroneous
modifications. - 10:18 PM Revision 9b6066c4 (git): ZJIT: Suggest correct command in bisect script
- 10:18 PM Revision 64a49051 (git): ZJIT: Detect bad configuration in make command in bisect script
- 10:18 PM Revision b2432095 (git): ZJIT: Require Ruby 3.4+ in bisect script
- 09:45 PM Revision b53186a4 (git): ZJIT: Load immediate into register before masking (#16677)
- This otherwise causes a crash on e.g. https://github.com/ruby/ruby/pull/15220:
thread '<unnamed>' (18071) panicked at zjit/src/codegen.rs:2511:21:
internal error: entered unreachable code: with_num_bits should not be used for: V... -
09:44 PM Revision aa7e671c (git): ZJIT: [DOC] induce_breakpoint! behaves differently when ZJIT is on
-
09:05 PM Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
- fredlinhares (Frederico Linhares) wrote in #note-5:
> Sorry for the delay. I was busy until very recently, but I will be more active from now on. Here is the repository: https://gitlab.com/fredlinhares/pre_c
There is hardly any cod... -
05:42 PM Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
- Sorry for the delay. I was busy until very recently, but I will be more active from now on. Here is the repository: https://gitlab.com/fredlinhares/pre_c
-
08:24 PM Revision 82470d8b (git): Allow fixed size hashes to be allocated in smaller slots
- When we allocate a RHash using `rb_hash_new_capa()`, if `capa` is
larger than `8` it's directly allocated as an `st_stable` in a `80B`
slot.
However if the requested size if lesser or equal to 8, we allocate
it as an `ar_table` in a `16... -
07:52 PM Revision d6528d63 (git): compile.c: avoid needless rehash
- These were introduced in 165e10b6cf73f723c2f6af676b70aeb2d8cf85c9
when these hashes were allocated with `rb_hash_new()`.
But since 4fb1438b9d7f617c7a8dc37935a960a24219e697 they are allocated
with the right size, making the rehashing pur... -
07:00 PM Revision 5cf6c842 (git): rb_gc_obj_needs_cleanup_p: skip sweep for most imemo/fields
- There is only two rare cases where they need to be sweeped:
- If they are so large that they're heap allocated.
- If they have an object_id (and id2ref_tbl exist but
we can't check that here) - 06:26 PM Revision 30e31488 (git): ZJIT: Fix land race (#16686)
- Just update some HIR tests.
-
05:50 PM Bug #21986 (Closed): RubyVM::AST incorrect location for literals followed by modifier `if`
- ```
irb(main):001> RubyVM::AbstractSyntaxTree.parse("1.0if true")
=> (SCOPE@1:0-1:10 tbl: [] args: nil body: (IF@1:0-1:10 (TRUE@1:6-1:10) (FLOAT@1:3-1:3 1.0) nil))
irb(main):002> RubyVM::AbstractSyntaxTree.parse("1if true")
=> (SCOPE... - 05:34 PM Revision 6d6f927d (git): ZJIT: Merge reduce_send_without_block_to_ccall and reduce_send_to_ccall (#16675)
- Thread through special handling of the potential block argument.
- 05:34 PM Revision d3f7d2c7 (git): ZJIT: Pull load out of IsBlockParamModified (#16673)
- This makes IsBlockParamModified pure and the loads more understandable
to load-store forwarding. - 04:45 PM Revision 8886990a (git): ZJIT: Add polymorphic support for getblockparamproxy (#16636)
-
02:34 PM Feature #21982: Add `Decimal` as a core numeric class
- Oh, gotcha. Yeah we would not be able to optimize C code. Maybe one day it will motivate a pure Ruby impl but today is not that day.
-
07:06 AM Feature #21982: Add `Decimal` as a core numeric class
- > ZJIT will be able to "see through" and even elide general Ruby object allocations when possible.
I assume this will remain limited to objects and methods defined in Ruby? `BigDecimal` is implemented in C, and I don't think it could... -
02:17 PM Bug #21984: RubyVM::AST can't tell if an array is passed to break/next/return
- I don't think that fix works:
```
$ ./ruby -e 'pp RubyVM::AbstractSyntaxTree.parse("tap { break 1, 2 }")'
(SCOPE@1:0-1:18 tbl: [] args: nil body: (ITER@1:0-1:18 (FCALL@1:0-1:3 :tap nil) (SCOPE@1:4-1:18 tbl: [] args: nil body: (BREAK... -
04:53 AM Bug #21984: RubyVM::AST can't tell if an array is passed to break/next/return
- Changing this causes the rbs tests to fail.
https://github.com/ruby/ruby/actions/runs/24117591586/job/70364654030?pr=16678#step:14:828
``` diff
class Hello
- def with_return: () -> (1 | "2" | :x)
? ^
+ ... -
02:02 AM Bug #21984 (Open): RubyVM::AST can't tell if an array is passed to break/next/return
- ```
irb(main):005> RubyVM::AbstractSyntaxTree.parse("tap { break [1, 2, 3] }")
=> (SCOPE@1:0-1:23 tbl: [] args: nil body: (ITER@1:0-1:23 (FCALL@1:0-1:3 :tap nil) (SCOPE@1:4-1:23 tbl: [] args: nil body: (BREAK@1:6-1:21 (LIST@1:12-1:21 (... -
01:00 PM Revision 7209523f (git): [ruby/openssl] kdf: fix wrong OPENSSL_cleanse() calls
- Embarrassingly, the previous commits introduced OPENSSL_cleanse() calls
against the temporary struct instead of the buffer content. Thanks to
nagachika for noticing.
https://github.com/ruby/openssl/commit/8eca3efad4 -
11:08 AM Revision a5c9e840 (git): [ruby/openssl] kdf: release GVL in OpenSSL::KDF.scrypt
- scrypt is another password hashing algorithm, so releasing the GVL is
useful.
https://github.com/ruby/openssl/commit/dd2f6ba892 -
11:08 AM Revision 5c7e3c20 (git): [ruby/openssl] kdf: release GVL in OpenSSL::KDF.pbkdf2_hmac
- Since PBKDF2 runs single-threaded and is typically configured to take
several hundred milliseconds or longer, it is a perfect candidate to be
run without the GVL.
https://github.com/ruby/openssl/commit/2a24966414 -
10:59 AM Revision ad82b727 (git): Skip `imemo_tmpbuf` sweeping when the buffer was eagerly freed.
- `imemo_tmpbuf` can be skipped if `ptr` is `NULL` which is often
the case if `RB_ALLOCV_END` was used. -
08:25 AM Revision 1fb0aca3 (git): imemo.h: Extract rb_imemo_needs_cleanup_p
-
05:50 AM Bug #21985 (Closed): RubyVM::AST negative numbers do not include - in location
- Applied in changeset commit:git|24a2ba09af13b7c969733ea9370ad59d2442f4c9.
----------
[Bug #21985] Include the `-` in the negative numbers location -
02:30 AM Bug #21985 (Closed): RubyVM::AST negative numbers do not include - in location
- ```
irb(main):007> RubyVM::AbstractSyntaxTree.parse("-1")
=> (SCOPE@1:0-1:2 tbl: [] args: nil body: (INTEGER@1:1-1:2 -1))
irb(main):008>
``` -
05:50 AM Revision 24a2ba09 (git): [Bug #21985] Include the `-` in the negative numbers location
-
05:43 AM Revision 0cebedd0 (git): Fix the order of `assert_equal` arguments
- The expected value should be first, second the actual value.
-
05:39 AM Revision c8c0af3c (git): [ruby/rubygems] Fix grammar in gem installer cache comment
- Change "and lock the mutex" to "and to lock the mutex" for correct
parallel infinitive structure.
https://github.com/ruby/rubygems/commit/94f9267b72
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> -
05:39 AM Revision 539cb5e1 (git): [ruby/rubygems] Use eq matcher instead of be for string comparison in newgem template
- be checks object identity which will fail for newly-allocated strings.
eq checks value equality and is the correct matcher here.
https://github.com/ruby/rubygems/commit/828440937b
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@a... -
05:39 AM Revision f5ad01ea (git): [ruby/rubygems] Fix wrong expected value in Rust extension test templates
- The Rust function hello("world") returns "Hello world, from Rust!" but
the Ruby test templates expected "Hello earth, from Rust!", causing
generated tests to fail immediately after bundle gem --ext=rust.
https://github.com/ruby/rubygems... -
05:39 AM Revision 42b74bdb (git): [ruby/rubygems] Fix typos in comments and documentation
- https://github.com/ruby/rubygems/commit/72bdf54b6d
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> - 05:05 AM Revision b11091ca (git): [ruby/rubygems] Use distinct gemspec filenames in stub_with_version and stub_without_version helpers
- Agent-Logs-Url: https://github.com/ruby/rubygems/sessions/4028db0e-e050-48af-9704-4219653a4753
https://github.com/ruby/rubygems/commit/951ef62f76
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> - 05:05 AM Revision fdc2a611 (git): [ruby/rubygems] Fix gemspec filename inconsistencies in stub_with_version and stub_without_version
- Agent-Logs-Url: https://github.com/ruby/rubygems/sessions/8de78edb-b0d3-4fd3-bdad-898184561abd
https://github.com/ruby/rubygems/commit/5a87b86515
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> - 04:27 AM Revision 3f850711 (git): [ruby/rubygems] Fix typo in test description: 'to' -> 'do'
- Agent-Logs-Url: https://github.com/ruby/rubygems/sessions/9cf2fa2e-02a9-4dde-a833-8ad11974e1eb
https://github.com/ruby/rubygems/commit/5ac4c8400b
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> - 04:24 AM Revision a0092d2a (git): [ruby/rubygems] Fix test_execute_allowed_push_host response message to match freebird gem
- Agent-Logs-Url: https://github.com/ruby/rubygems/sessions/61efd9ab-67d3-4ce2-b81d-4b6e8ef07f99
https://github.com/ruby/rubygems/commit/bf73b51866
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> - 04:24 AM Revision 6d4e0064 (git): [ruby/rubygems] Fix lockfile DEPENDENCIES section to use 'rubocop' instead of 'parallel_tests'
- Agent-Logs-Url: https://github.com/ruby/rubygems/sessions/dd120552-e56f-4a0e-9143-ec483aa07bfc
https://github.com/ruby/rubygems/commit/56a98274c3
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> - 03:52 AM Revision 76eb974b (git): [ruby/rubygems] Fix inconsistent indentation at line 481 in git_spec.rb
- Agent-Logs-Url: https://github.com/ruby/rubygems/sessions/a9efe3b4-99c9-4af2-9954-a65a2859edfc
https://github.com/ruby/rubygems/commit/3d4e90a355
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> -
02:41 AM Revision 9232d14a (git): [DOC] Fill missing stars
- 02:24 AM Revision 3e299ba8 (git): Bump taiki-e/install-action
- Bumps the github-actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `taiki-e/install-action` from 2.74.0 to 2.75.0
- [Release notes](https://github.com/taiki-e/i...