Project

General

Profile

Activity

From 05/12/2024 to 05/18/2024

05/18/2024

03:29 PM Revision dbbaf871 (git): [DOC] Fix `$<` comment
nobu (Nobuyoshi Nakada)
03:27 PM Revision fd8e6e8c (git): Replace cast tags for `tSTRING_DVAR` with typed midrule actions
nobu (Nobuyoshi Nakada)
02:59 PM Bug #20154: aarch64: configure overrides `-mbranch-protection` if it was set in CFLAGS via environment
I don't think I quite understand what exactly the right course of action here is.
> Would it make sense to check if such flags exist and not overwrite them if they do?
Why is this not a serious proposal? "We should respect user giv...
kjtsanaktsidis (KJ Tsanaktsidis)
12:48 PM Bug #20493: Segfault on rb_io_getline_fast
You're welcome, thank you for posting such a detailed and actionable report. You're exactly right; your patch deals with this issue in IO methods using `rb_io_getline_fast` but this is probably causing crashes in other places as well; _h... kjtsanaktsidis (KJ Tsanaktsidis)
10:28 AM Bug #20493: Segfault on rb_io_getline_fast
Thanks for this extremely detailed explanation!
Just for my own understanding [I'm not as proficient in low level C, took me a while reading through all details], can I assert that: the fix I suggested would've only "fixed" the segfau...
josegomezr (Jose Gomez)
09:44 AM Bug #20493: Segfault on rb_io_getline_fast
After applying that fix to the RPM spec file in https://build.opensuse.org/package/show/devel:languages:ruby/ruby3.3, I can't get the reproduction to crash any more. kjtsanaktsidis (KJ Tsanaktsidis)
09:43 AM Bug #20493: Segfault on rb_io_getline_fast
I opened https://github.com/ruby/ruby/pull/10795 as a proposed fix for this. Let's see what other people (and CI) think :) kjtsanaktsidis (KJ Tsanaktsidis)
09:37 AM Bug #20493: Segfault on rb_io_getline_fast
OK, I believe I've worked out what's wrong here.
The BLOCKING_REGION macro is used to release the GVL, run some code, and re-acquire the GVL. It looks like this:
```
#define BLOCKING_REGION(th, exec, ubf, ubfarg, fail_if_interrupt...
kjtsanaktsidis (KJ Tsanaktsidis)
07:15 AM Bug #20493: Segfault on rb_io_getline_fast
Thank you for your bug report and excellent reproduction! I've had a look at this today - I haven't reached a conclusion yet, but I want to write down where I got so far.
The crash is happening because:
* One thread is calling `rb_...
kjtsanaktsidis (KJ Tsanaktsidis)
11:10 AM Bug #19753: IO::Buffer#get_string can't handle negative offset
Backported by https://github.com/ruby/ruby/pull/10778 nagachika (Tomoyuki Chikanaga)
11:09 AM Revision 0e664ebc (git): Fix `io_buffer_get_string` default length computation. (#8427)
* Fix `io_buffer_get_string` default length computation.
When an offset bigger than the size is given, the resulting length will be
computed incorrectly. Raise an argument error in this case.
* Validate all arguments.
Samuel Williams
11:09 AM Revision 67d499a7 (git): Improvements to `IO::Buffer` `read`/`write`/`pread`/`pwrite`. (#7826)
- Fix IO::Buffer `read`/`write` to use a minimum length. Samuel Williams
11:09 AM Revision 359e40e3 (git): Rename `data` -> `buffer` for better readability. (#7836)
Samuel Williams
11:09 AM Revision 1bfdd68b (git): Adjust `else` style to be consistent in each files [ci skip]
nobu (Nobuyoshi Nakada)
10:46 AM Revision 232f7b37 (git): Replace cast tags with typed midrule actions
* Add types to `tLAMBDA` and `tSTRING_DBEG` to store corresponding
information when returning these tokens.
* Add `enum lex_state_e state` to `%union` for `tSTRING_DBEG`.
nobu (Nobuyoshi Nakada)
10:16 AM Feature #20492: Debug option for tempfile
Since you say you're OK with solutions requiring modifying the program though, have you tried doing something like this?
```
Tempfile::Remover.class_eval { def call(...) = nil }
```
I realise if this is a common use-case it would...
kjtsanaktsidis (KJ Tsanaktsidis)
06:44 AM Revision ac85eef1 (git): Fix links
burdettelamar (Burdette Lamar)
02:26 AM Revision 55c62e67 (git): No need to specify tags anymore
In the past, these codes were used by both parser and ripper.
On ripper, the type of LHS is `<val>` then type cast was needed.
However currently these are only used by parser then no need to
cast.
yui-knk (Kaneko Yuichiro)

05/17/2024

10:05 PM Feature #20448: Make coverage event hooking C API public
Thanks for the research. So, `TracePoint.new(:branch)` seems good enough for the use case of fuzzer, right?
But with just this API, there is no way to get the list of all edges, including ones that are not fired. This is needed for br...
mame (Yusuke Endoh)
06:37 PM Feature #20448: Make coverage event hooking C API public
**TL;DR: I've been further researching how fuzzers gather coverage information, and what types of coverage are most useful for fuzzing. I think the best course of action regarding this request would be to implement a fairly general cover... ms-tob (Matt S)
08:42 PM Revision cce7c25a (git): [PRISM] Enable TestRequire
kddnewton (Kevin Newton)
05:21 PM Bug #20493 (Closed): Segfault on rb_io_getline_fast
We've spotted a consistent segfault when running bundle install with `--jobs 4`
When running: `bundle install -j 4` we'd get a Segfault at:
```
/usr/lib64/ruby/3.3.0/rubygems/ext/builder.rb:93: [BUG] Segmentation fault at 0x000000...
josegomezr (Jose Gomez)
03:37 PM Bug #20218: aset/masgn/op_asgn with keyword arguments
In this issue there's no consideration of compatibility or utility. This is a breaking change. The ability to pass kwargs to index methods has been in ruby for a long time, probably from the inception of kwargs and I have code that uses ... bughit (bug hit)
03:29 PM Revision e61d24d7 (git): [PRISM] Enable passing IRB test
kddnewton (Kevin Newton)
03:23 PM Revision c60cdbdc (git): [PRISM] Emit END event for modules
kddnewton (Kevin Newton)
02:47 PM Revision 0649c1e3 (git): [ruby/prism] Revert incorrect synthesized true node change
https://github.com/ruby/prism/commit/31ef81fd06 kddnewton (Kevin Newton)
02:45 PM Revision aed93ba1 (git): [ruby/prism] Replace and Use PM_LOCATION_NULL_VALUE macro
https://github.com/ruby/prism/commit/50e188b168 S_H_ (Shun Hiraoka)
02:33 PM Revision 4ba0579d (git): [PRISM] Enable TestSyntax#test_error_message_encoding
kddnewton (Kevin Newton)
01:04 PM Revision 2d825ca7 (git): REXML 3.2.8 is not working with rss and test-bundled-gems yet.
https://github.com/ruby/ruby/actions/runs/9125437794/job/25091614796#step:11:272 hsbt (Hiroshi SHIBATA)
08:40 AM Revision 8acec5b6 (git): Update bundled gems list at 10d02e71d1f57b68f530c0e669e444 [ci skip]
git[bot]
08:26 AM Revision cbc84b80 (git): * 2024-05-17 [ci skip]
git[bot]
08:25 AM Revision a131d239 (git): AppVeyor is retired at 2024
hsbt (Hiroshi SHIBATA)
08:25 AM Revision 5db59cd5 (git): [ruby/openssl] test_asn1.rb: Remove the assertions of the time string format without second.
This commit fixes the following errors in the tests.
Because the OpenSSL project changed the code to make the time string format
without second invalid. So, we drop the assertions.
```
1) Error: test_generalizedtime(OpenSSL::TestASN1): ...
Jun Aruga
08:25 AM Revision 89574f02 (git): [ruby/openssl] test/openssl/test_asn1.rb: skip failing tests on LibreSSL 3.6.0
LibreSSL 3.6.0 expects the seconds part in UTCTime and GeneralizedTime
to be always present. LibreSSL 3.6.0 release note [1] says:
> - The ASN.1 time parser has been refactored and rewritten using CBS.
> ...
[1] https://ftp.openbsd.org/...
rhenium (Kazuki Yamaguchi)
08:25 AM Revision 10f4e4d9 (git): [ruby/net-http] Skip test_session_reuse_but_expire with OpenSSL 3.3
OpenSSL 3.3.0 9 Apr 2024 is also broken.
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
https://github.com/ruby/net-http/commit/ab525c956d
Xi Ruoyao
08:17 AM Revision 10d02e71 (git): Update bundled_gems
hsbt (Hiroshi SHIBATA)
02:50 AM Revision 534f1c37 (git): Bump actions/checkout in /.github/actions/setup/directories
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.5 to 4.1.6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](http...
dependabot[bot]
02:50 AM Revision 0f8f0386 (git): Bump actions/checkout from 4.1.5 to 4.1.6
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.5 to 4.1.6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](http...
dependabot[bot]
02:44 AM Revision 84d2bacb (git): [ruby/irb] Reorder ruby lex clauses for unrecoverable first
(https://github.com/ruby/irb/pull/956)
When a syntax error includes multiple error messages, we want to
check for unrecoverable messages first so that we do not
accidentally match a recoverable error later in the message.
https://githu...
kddnewton (Kevin Newton)
02:13 AM Revision 761b9070 (git): [PRISM] Enable TestParse#test_truncated_source_line
kddnewton (Kevin Newton)
02:05 AM Revision b90ea8ae (git): [ruby/find] find.gemspec: Drop executables dir config
This gem contains no executables.
https://github.com/ruby/find/commit/7bd452155e
olleolleolle (Olle Jonsson)
01:18 AM Misc #20407: Question about applying encoding modifier to an interpolated Regexp
I checked the related source code especially about rb_reg_preprocess_dregexp. It wrongly calls rb_reg_preprocess with overwriting fixed_enc instead of inheriting it.
It seems to raise error if the resulted encoding of the regexp is ot...
naruse (Yui NARUSE)
12:55 AM Feature #20470: Extract Ruby's Garbage Collector
+1 for extracting GC implementation of `gc.c` into a separate `gc_impl.c` file.
My motivation: Some of the use cases of Ruby on Wasm (e.g. edge computing platform) do not actually need to collect garbage objects during execution because...
katei (Yuta Saito)

05/16/2024

07:35 PM Revision 854cbbd5 (git): [PRISM] Enable TestParse#test_string
kddnewton (Kevin Newton)
07:35 PM Revision 92af7054 (git): [ruby/prism] Truncate source lines in errors messages when too long
https://github.com/ruby/prism/commit/72518f5716 kddnewton (Kevin Newton)
06:40 PM Revision 98e1e610 (git): [ruby/prism] Update more escape error messages to match CRuby
https://github.com/ruby/prism/commit/ab43b3ab66 kddnewton (Kevin Newton)
06:21 PM Revision 012a80d7 (git): [PRISM] Enable TestISeq#test_syntax_error_message
kddnewton (Kevin Newton)
06:12 PM Revision 0b4cf461 (git): [PRISM] Enable TestM17N#test_string_mixed_unicode
kddnewton (Kevin Newton)
05:43 PM Feature #20492 (Open): Debug option for tempfile
Hi,
the ruby lib tempfile is quite useful, but since it always deletes files once the object is garbage collected or the program terminates (or the program explicitely asks to remove the file) it is difficult to debug programs and to...
hadmut (Hadmut Danisch)
05:22 PM Revision 286d3032 (git): [ruby/prism] More mixed encoding errors
https://github.com/ruby/prism/commit/2a43b4f55c kddnewton (Kevin Newton)
04:43 PM Feature #20484: A new pragma for eager resolution of classes referenced in rescue clauses.
zverok (Victor Shepelev) wrote in #note-3:
> Honestly, it is no different than any name used in a branch that wasn’t tested. E.g. if you have this:
> ...
I would agree that any such opt-in feature should probably catch other cases. I'...
jfrisby (Jon Frisby)
04:28 PM Revision 07241dfa (git): [PRISM] Enable TestParse#test_question
kddnewton (Kevin Newton)
04:28 PM Revision 7eb45a40 (git): [PRISM] Enable TestParse#test_invalid_char
kddnewton (Kevin Newton)
04:28 PM Revision 58f993c5 (git): [PRISM] Enable TestParse#test_percent
kddnewton (Kevin Newton)
04:28 PM Revision 52401a32 (git): [PRISM] Enable TestSyntax#test_syntax_error_at_newline
kddnewton (Kevin Newton)
04:28 PM Revision 14debd13 (git): [PRISM] Enable TestSyntax#test__END___cr
kddnewton (Kevin Newton)
03:15 PM Bug #19753: IO::Buffer#get_string can't handle negative offset
Thanks so much, I will review it. ioquatix (Samuel Williams)
12:23 PM Bug #19753: IO::Buffer#get_string can't handle negative offset
I have cherry-picked some additional refactoring commits and open pull request https://github.com/ruby/ruby/pull/10778.
nagachika (Tomoyuki Chikanaga)
10:20 AM Bug #19753: IO::Buffer#get_string can't handle negative offset
https://github.com/nagachika/ruby/commit/7d325d1b2ea7b6ef7debd6a29ad97c93311ed9b5 Here is the changeset to backport into ruby_3_2 branch, including style change and refactoring (data -> buffer).
I have resolved some conflict by hand.
@...
nagachika (Tomoyuki Chikanaga)
03:10 PM Revision d314d976 (git): [ruby/prism] Match CRuby invalid escape character syntax error message
https://github.com/ruby/prism/commit/0ef5658dcc kddnewton (Kevin Newton)
03:10 PM Revision 0e11781f (git): [ruby/prism] Match CRuby invalid character error message
https://github.com/ruby/prism/commit/8d4c5c2bca kddnewton (Kevin Newton)
02:52 PM Revision 910bb492 (git): [ruby/prism] Update error message for invalid % at EOF
https://github.com/ruby/prism/commit/178d4f66fd kddnewton (Kevin Newton)
02:23 PM Revision 7a4b9d16 (git): [ruby/prism] Match CRuby error message for unknown % string
https://github.com/ruby/prism/commit/863197629c kddnewton (Kevin Newton)
02:16 PM Revision 01166888 (git): [ruby/prism] Always go to string lex mode even if EOF
https://github.com/ruby/prism/commit/57d5c9be2c kddnewton (Kevin Newton)
02:00 PM Revision 477b13ba (git): [ruby/prism] Update unterminated string error location
https://github.com/ruby/prism/commit/33d12afa60 kddnewton (Kevin Newton)
01:34 PM Revision c55c11d7 (git): [rubygems/rubygems] Fix binstubs sometimes not getting regenerated when `--destdir` is given
This was only working for gems also installed in the default gem home.
https://github.com/rubygems/rubygems/commit/47df02dbd9
deivid (David Rodríguez)
01:34 PM Revision 35c5c7ed (git): [rubygems/rubygems] Refactor `Gem::Specification#find_all_by_name`
So that it can also be delegated to `Gem::SpecificationRecord`.
https://github.com/rubygems/rubygems/commit/1407807a99
deivid (David Rodríguez)
12:25 PM Revision d076101a (git): Fix dump of NODE [ci skip]
nobu (Nobuyoshi Nakada)
11:55 AM Revision 5111b3d4 (git): [rubygems/rubygems] Fix `gem uninstall --user-install` for symlinked HOME's
https://github.com/rubygems/rubygems/commit/7f0706a897 deivid (David Rodríguez)
11:55 AM Revision b19693f0 (git): [rubygems/rubygems] Improve uninstaller tests
Tests have two copies of b-2 installed, one in default home and another
in user home. But only the one in default home was visible because of
not reloading paths. The user install test was working by chance.
https://github.com/rubygems/...
deivid (David Rodríguez)
11:55 AM Revision 847fc9af (git): [rubygems/rubygems] Fix error message calling method removed a long time ago
https://github.com/rubygems/rubygems/commit/5fbe5e43d6 deivid (David Rodríguez)
09:21 AM Revision 7857061e (git): [rubygems/rubygems] Fix regression when caching gems from secondary sources
If `cache_all_platforms` setting is enabled, the secondary source was
no longer considering cached gems.
That means that if the remote secondary source has removed its gems,
then this was now resulting in an error while before the previ...
deivid (David Rodríguez)
09:20 AM Revision 29a9ab0b (git): [rubygems/rubygems] Deprecate Bundler constants
https://github.com/rubygems/rubygems/commit/6166e4bce1 deivid (David Rodríguez)
09:20 AM Revision 9fd41480 (git): [rubygems/rubygems] Use RubyGems freebsd helper
https://github.com/rubygems/rubygems/commit/5d03a346ab deivid (David Rodríguez)
09:20 AM Revision 4db76d19 (git): [rubygems/rubygems] Add a FreeBSD platform helper
https://github.com/rubygems/rubygems/commit/535c83d5be deivid (David Rodríguez)
08:22 AM Bug #20468 (Closed): Segfault on safe navigation in for target
Applied in changeset commit:git|2dd46bb82ffc4dff01d7ea70922f0e407acafb4e.
----------
[Bug #20468] Fix safe navigation in `for` variable
nobu (Nobuyoshi Nakada)
07:35 AM Misc #20238: Use prism for mk_builtin_loader.rb
I talked with k0kubun and disscussed about multiple options as below.
I understand the background and agree to go ahead.
Upgrading BASERUBY
* more work for each upgrade
* there is less motivation to upgrade BASERUBY other than mk_b...
naruse (Yui NARUSE)
07:26 AM Bug #19427: Marshal.load(source, freeze: true) doesn't freeze in some cases
I think it's obviously a bug, but I'm concerned that changing the behavior might cause FrozenError in applications. Therefore, I have decided not to backport the changesets related to this issue.
Please feel free to raise any objections...
nagachika (Tomoyuki Chikanaga)
07:22 AM Revision 2dd46bb8 (git): [Bug #20468] Fix safe navigation in `for` variable
nobu (Nobuyoshi Nakada)
04:54 AM Revision 9d696196 (git): [rubygems/rubygems] Clean up generated and copied files
> leaving the files after gem rebuild was intentional, for local
> ...
https://github.com/rubygems/rubygems/pull/4913#issuecomment-2081710691
https://github.com/rubygems/rubygems/commit/185a2091fb
nobu (Nobuyoshi Nakada)
04:30 AM Bug #20490 (Closed): Process.waitpid2(-1, Process::WNOHANG) misbehaves on Ruby 3.1 & 3.2 with detached process
nagachika (Tomoyuki Chikanaga)
04:30 AM Bug #20490: Process.waitpid2(-1, Process::WNOHANG) misbehaves on Ruby 3.1 & 3.2 with detached process
Thank you for your report. I will look the PRs.
I will set the status of this ticket because of this is a backport ticket.
And currently 3.1 branch is under the security maintenance phase, so I fill the Backport field for 3.1 with "WON...
nagachika (Tomoyuki Chikanaga)
04:29 AM Misc #20491 (Closed): Proposal for new branch maintainers
Thank you. I'll do my best.
hsbt (Hiroshi SHIBATA)
04:28 AM Misc #20491: Proposal for new branch maintainers
I think this is a good idea. Approved.
Matz
matz (Yukihiro Matsumoto)
02:53 AM Misc #20491: Proposal for new branch maintainers
Note: I confirmed this proposal with @k0kubun and @usa hsbt (Hiroshi SHIBATA)
04:10 AM Bug #19530: `Array#sum` and `Enumerable#sum` sometimes show different behaviours
Since this was a long standing bug, I won't backport it to stable branch in general. If you know any real applications suffered from this behavior, please let me know.
Thanks.
nagachika (Tomoyuki Chikanaga)
02:37 AM Bug #20183: `erb/escape.so` cannot be loaded when `--with-static-linked-ext`
ruby_3_2 2d686e1019414f6bbb7ccbfa897b7b665250743d merged revision(s) ae8990aef098410ecc2b5f48fea9d7d171a3c5f6. nagachika (Tomoyuki Chikanaga)
02:36 AM Revision 2d686e10 (git): merge revision(s) ae8990aef098410ecc2b5f48fea9d7d171a3c5f6: [Backport #20183]
Alias init functions
The extension library has each initialization function named "Init_" +
basename. If multiple extensions have the same base name (such as
cgi/escape and erb/escape), the same function will be ...
nagachika (Tomoyuki Chikanaga)
12:06 AM Feature #16461: Proc#using
Sorry for the delay.
Eregon (Benoit Daloze) wrote in #note-10:
> Reading #12086 again, I feel #12281 is a much simpler alternative (`using(refinement) { literal block }`).
> ...
It looks too redundant to me because `using` is needed...
shugo (Shugo Maeda)

05/15/2024

11:41 PM Feature #19840 (Feedback): [Proposal] Expand Find pattern to Multiple Find
Sorry for late response.
I disagree with this suggestion.
I implemented this feature in the [pattern-match](https://github.com/k-tsj/pattern-match) gem, a PoC library for pattern matching.
```ruby
match({ results: [{ id: 1, nam...
ktsj (Kazuki Tsujimoto)
07:02 PM Bug #20401: Duplicated when clause warning line number
I've updated the message to say:
```
'when' clause on line 4 duplicates 'when' clause on line 2 and is ignored
```
I hope this is okay, I believe it is much more clear. The PR is here: https://github.com/ruby/ruby/pull/10776. @no...
kddnewton (Kevin Newton)
04:49 PM Revision 2aed14d6 (git): [PRISM] Enable TestParse#test_global_variable
kddnewton (Kevin Newton)
04:49 PM Revision cd8b28f0 (git): [PRISM] Enable test_location_of_invalid_token
kddnewton (Kevin Newton)
04:49 PM Revision be239cc7 (git): [PRISM] Enable TestParse#test_unexpected_eof
kddnewton (Kevin Newton)
04:49 PM Revision cabc0e09 (git): [PRISM] Enable TestParse#test_unexpected_token_after_numeric
kddnewton (Kevin Newton)
04:49 PM Revision 901f4c3f (git): [PRISM] Temporarily exclude IRB test
kddnewton (Kevin Newton)
03:53 PM Revision cbd15538 (git): [ruby/prism] Extend the bounds of the invalid global variable name error
https://github.com/ruby/prism/commit/89d0d9851a kddnewton (Kevin Newton)
03:44 PM Revision c4a58667 (git): [ruby/prism] Replace end of file with end-of-input
https://github.com/ruby/prism/commit/dd532ded95 kddnewton (Kevin Newton)
09:11 AM Revision e73f6618 (git): [rubygems/rubygems] Do not override `@orig_env`
It is saved in `setup` and restored in `teardown`.
https://github.com/rubygems/rubygems/commit/880c5de667
nobu (Nobuyoshi Nakada)
08:16 AM Misc #20491 (Closed): Proposal for new branch maintainers
In RubyKaigi 2024, I, naruse and nagachika discussed about maintaining stable branches. We propose the following members for the new branch maintainer of current stable branches.
* `ruby_3_3`: @k0kubun
* `ruby_3_2`: @nagachika
* `...
hsbt (Hiroshi SHIBATA)
04:21 AM Bug #20490: Process.waitpid2(-1, Process::WNOHANG) misbehaves on Ruby 3.1 & 3.2 with detached process
I've opened fixes here:
* 3.2: https://github.com/ruby/ruby/pull/10771
* 3.1: https://github.com/ruby/ruby/pull/10772
stanhu (Stan Hu)
03:39 AM Bug #20490: Process.waitpid2(-1, Process::WNOHANG) misbehaves on Ruby 3.1 & 3.2 with detached process
I think this patch in the `ruby_3_2` branch fixes the problem:
```diff
diff --git a/process.c b/process.c
index 354e16fd26..52d49948a5 100644
--- a/process.c
+++ b/process.c
@@ -1290,7 +1290,7 @@ waitpid_wait(struct waitpid_state *w)
...
stanhu (Stan Hu)
02:07 AM Bug #20490 (Closed): Process.waitpid2(-1, Process::WNOHANG) misbehaves on Ruby 3.1 & 3.2 with detached process
This is a follow-up issue for a bug that I thought was fixed in https://bugs.ruby-lang.org/issues/19837 and duplicated in https://bugs.ruby-lang.org/issues/20181.
The following script doesn't terminate quickly in Ruby 3.1.5 and 3.2.4,...
stanhu (Stan Hu)
02:02 AM Bug #20424 (Closed): ZLib::GZipReader always double allocates strings when passed outbuf, significantly increasing memory usage
hsbt (Hiroshi SHIBATA)

05/14/2024

09:51 PM Bug #20424: ZLib::GZipReader always double allocates strings when passed outbuf, significantly increasing memory usage
[zlib #61 was merged](https://github.com/ruby/zlib/pull/61#event-12808578072). It seems like we can consider this ticket complete. martinemde (Martin Emde)
09:44 PM Revision e3e1e530 (git): [ruby/zlib] Avoid double copying into provided outbuf
https://github.com/ruby/zlib/commit/07f44b7546 segiddins (Samuel Giddins)
09:44 PM Revision e33336cb (git): [ruby/zlib] Avoid allocating intermediary strings when read/readpartial are passed an outbuf
This accounts for a significant number of string allocations when reading rubygems, but we can avoid that in many places by only copying into the outbuf when present
https://github.com/ruby/zlib/commit/d25ef406c1
segiddins (Samuel Giddins)
09:43 PM Revision cb1a574e (git): Bump github/codeql-action from 3.25.4 to 3.25.5
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.4 to 3.25.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md...
dependabot[bot]
08:37 PM Bug #20489: Ractor behavior strange in ruby master
Thank you. I'll investigate it. ko1 (Koichi Sasada)
09:00 AM Bug #20489 (Closed): Ractor behavior strange in ruby master
This is a tarai program
Run`./ruby tarai_ractor.rb 2 8` is to use 2 thread to run 8 times tarai function total, that means 4 times tarai for each ractor(thread).
```
GC.disable
def split_len(len, split)
ret = []
mod = l...
nekoyama32767 (Jinsong Yu)
07:41 PM Feature #6648: Provide a standard API for retrieving all command-line flags passed to Ruby
nobu (Nobuyoshi Nakada) wrote in #note-15:
> `RbConfig` is for build time informations, and does not look a right place for runtime informations.
Isn't it ok to relax the semantics a little bit? RbConfig seems to me the most logical ...
Dan0042 (Daniel DeLorme)
07:49 AM Feature #6648: Provide a standard API for retrieving all command-line flags passed to Ruby
Note that for this to be most effective it would be the arguments unprocessed as they appear on the command line, but that may not be possible to do if the shell removes quoting.
I don't think that should be a reason not to implement ...
headius (Charles Nutter)
07:38 AM Feature #6648: Provide a standard API for retrieving all command-line flags passed to Ruby
`RbConfig` is for build time informations, and does not look a right place for runtime informations.
nobu (Nobuyoshi Nakada)
07:26 AM Feature #6648: Provide a standard API for retrieving all command-line flags passed to Ruby
If `RbConfig` is a convenient place for you, it is OK to add `ruby_args`.
Matz.
matz (Yukihiro Matsumoto)
07:23 AM Feature #6648: Provide a standard API for retrieving all command-line flags passed to Ruby
@matz Do you agree with `RbConfig.ruby_args`, is it OK to add it? Eregon (Benoit Daloze)
04:08 PM Revision 965cb3ab (git): [rubygems/rubygems] Fix issue when cleaning up plugin stubs
When `gem uninstall <gem> --install-dir <dir>` is run, if the version
removed had a plugin, and that same version happened to also be
installed globally, then the plugin stub would fail to be removed.
https://github.com/rubygems/rubygem...
deivid (David Rodríguez)
04:08 PM Revision bd842361 (git): [rubygems/rubygems] Extract a `Gem::SpecificationRecord` class
This class handles all logic to handle the list of specifications, given
a set of GEM_PATH directories. Makes `Gem::Specification` has less
responsibilities and will help with fixing some bugs next.
https://github.com/rubygems/rubygems/...
deivid (David Rodríguez)
04:08 PM Revision c219ee00 (git): [rubygems/rubygems] Fix typo in attribute documentation
https://github.com/rubygems/rubygems/commit/8c9807092c deivid (David Rodríguez)
04:08 PM Revision 5628cc12 (git): [rubygems/rubygems] Add missing docs
Other analog methods are documented, so document this one too.
https://github.com/rubygems/rubygems/commit/76da34d44d
deivid (David Rodríguez)
04:08 PM Revision 91e38719 (git): [rubygems/rubygems] Simplify documentation
I don't think this method is any worse than others, let's only document
what it does.
https://github.com/rubygems/rubygems/commit/dec722187f
deivid (David Rodríguez)
04:08 PM Revision 64542380 (git): [rubygems/rubygems] Make `Gem.clear_paths` test less implementation dependent
https://github.com/rubygems/rubygems/commit/b545daa95d deivid (David Rodríguez)
04:08 PM Revision 8d28e635 (git): [rubygems/rubygems] Simplify test teardown
If we move test directory removal to the very end, I think we should not
leak anything.
https://github.com/rubygems/rubygems/commit/fb3d8944b5
deivid (David Rodríguez)
04:08 PM Revision 4dc0b230 (git): [rubygems/rubygems] Remove redundant receivers
https://github.com/rubygems/rubygems/commit/7b71965a70 deivid (David Rodríguez)
09:56 AM Feature #15554: warn/error passing a block to a method which never use a block
`--warn-unused-block`/`:warn_unused_block`? Anonymous
05:59 AM Feature #15554: warn/error passing a block to a method which never use a block
We are discussing how to make opt-in.
Because relaxed mode can miss cases (e.g. for methods with a common name), and some newer codebases/some Rubyists might want to use the stricter check (e.g. it enhances readability, ignored blocks b...
Eregon (Benoit Daloze)
09:00 AM Feature #20437: Could the licensing conditions be made less ambiguous?
> The Ruby License is a dual license with 2-clause BSDL and the "conditions below". Your proposal is the proposal to change the Ruby license and it won't be accepted.
If these two are inseparable, forming together the "Ruby" license, th...
vo.x (Vit Ondruch)
07:56 AM Feature #20437: Could the licensing conditions be made less ambiguous?
> lib/net/protocol.rb
The description is obsoleted.
The license of the code is the same as Ruby
> ...
Racc's license is the same as Ruby
see also https://github.com/ruby/racc
> Rubygems
It looks MIT License and the Ruby lic...
naruse (Yui NARUSE)
08:22 AM Revision 41e6fd06 (git): [DOC] Fix typo in example code for `String#encode` method
The example code in the documentation for the `String#encode` method has
a typo in the `fallback` option. The example code uses `h` as the
fallback option, but it should use `hash` instead to match the variable
name in the example code.
Alexander Ross
08:19 AM Revision 44f50f41 (git): Update default gems list at 4a1e4436a99c5794b022f03e8c0589 [ci skip]
git[bot]
08:18 AM Revision 4a1e4436 (git): [ruby/reline] Bump version to 0.5.7
(https://github.com/ruby/reline/pull/704)
https://github.com/ruby/reline/commit/b9b3d392ff
ima1zumi (Mari Imaizumi)
07:56 AM Bug #20421: String#index and String#byteindex don't clear `$~` when offset > size (or bytesize)
Thank you for the PR. I agree that the patch is good to backport. PR merged at 449899b38314d0ecbe61e42d34398bdf2561b8e9. nagachika (Tomoyuki Chikanaga)
07:29 AM Revision 449899b3 (git): Fix `String#index` to clear MatchData when a regexp is passed
[Bug #20421]
The bug was fixed in Ruby 3.3 via 9dcdffb8bf8a3654fd78bf1a58b30c8e13888a7a
byroot (Jean Boussier)
07:23 AM Feature #20443: Allow Major GC's to be disabled
As long as the pluggable GC issue is clearly stated somewhere, I have no objection.
Matz.
matz (Yukihiro Matsumoto)
07:01 AM Feature #20470: Extract Ruby's Garbage Collector
I think the risk is fairly low, since the user has to compile Ruby with `--with-shared-gc` to enable this feature. Since they have to manually enable this feature at compile time, they should be aware of the possible security issues that... peterzhu2118 (Peter Zhu)
06:48 AM Feature #20470: Extract Ruby's Garbage Collector
My concern is that a part of this feature, adding a new environment variable that loads a shared object implicitly, can cause security issues.
`LD_PRELOAD`, `DYLD_INSERT_LIBRARIES` and so on have the same risk, so dynamic linkers remove...
nobu (Nobuyoshi Nakada)
06:43 AM Revision b60f0944 (git): Fix TestPatternMatching#test_deconstruct_keys test
Before the change `C.keys` returned keys captured in some previous test case that by chance captured `nil` value what made this test passed successfully. Now it returns keys captured in this test case. andrykonchin (Andrew Konchin)
01:58 AM Revision 9d01f657 (git): [ruby/reline] Implement the undo command
(https://github.com/ruby/reline/pull/701)
* Refactor send
* Implement the undo command
* Fix @past_lines initialization
* Improve assertion
* Hide to save buffer in insert_pasted_text
* Replace @using_delete_command with @undoing
...
ima1zumi (Mari Imaizumi)

05/13/2024

10:45 PM Bug #20485 (Closed): Simple use of Fiber makes GC leak objects with singleton method
No worries. This aspect of Ruby GC often confuses people. byroot (Jean Boussier)
09:35 AM Bug #20485: Simple use of Fiber makes GC leak objects with singleton method
I tried looping with `100.times` in a more complex case that I created in the middle of the entire investigation of a test suite whose memory usage keeps growing until getting killed due to OOM, and as you said, the "leaked" object remai... skhrshin (Shintaro Sakahara)
08:47 AM Bug #20485: Simple use of Fiber makes GC leak objects with singleton method
Alright, looking at your dump:
```json
{"address":"0x7f2b570455b8", "type":"CLASS", "shape_id":2, "slot_size":160, "class":"0x7f2b57045518", "variation_count":0, "superclass":"0x7f2b5707fd30", "name":"Work", "references":["0x7f2b5707...
byroot (Jean Boussier)
08:25 AM Bug #20485: Simple use of Fiber makes GC leak objects with singleton method
I asked my co-workers to try this script and some of them gave me their results. The following table includes my results.
|Environment|# of people|Reproducibility|
|--|--|--|
|ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linu...
skhrshin (Shintaro Sakahara)
06:40 AM Bug #20485: Simple use of Fiber makes GC leak objects with singleton method
@skhrshin if you can reproduce consistently, what could be helpful would be to provide a heap dump like this (use some service list GitHub gist because the output might be big:
```ruby
require 'objspace'
class Work
def add_meth...
byroot (Jean Boussier)
06:37 AM Bug #20485: Simple use of Fiber makes GC leak objects with singleton method
To be honest I also tried 3.2.2 and 3.1.4, each with `[1].each`, `1.times` and `Mutex.new.synchronize`, and neither reproduced.
So I'm starting to wonder if it isn't simply that for some reason one object consistently end up on the st...
byroot (Jean Boussier)
06:24 AM Bug #20485 (Open): Simple use of Fiber makes GC leak objects with singleton method
byroot (Jean Boussier)
06:18 AM Bug #20485: Simple use of Fiber makes GC leak objects with singleton method
I closed because I tried your repro script with `ruby 3.3.1 (2024-04-23 revision c56cd86388) [arm64-darwin23]` both with `1.times` and `Mutex.new.synchronize` and it doesn't fail.
Also your description really fit [Bug #19436], hence ...
byroot (Jean Boussier)
04:33 AM Bug #20485: Simple use of Fiber makes GC leak objects with singleton method
Do you mean this is fixed in trunk? Or are you saying this shouldn't happen on Ruby 3.3.1? If latter, that is not correct as I wrote `[1].each` and `Mutex.new.synchronize` versions reproduce the problem on Ruby 3.3.1.
I would like you t...
skhrshin (Shintaro Sakahara)
06:23 PM Misc #20488 (Closed): Document source file size restrictions
I was hoping we might be able to decide on an official maximum size for a source file in terms of bytes/lines/columns/etc.
Ruby uses fixed integer sizes to represent line numbers, column numbers, offsets, etc. These can overflow with ...
kddnewton (Kevin Newton)
06:04 PM Revision 5319587a (git): [rubygems/rubygems] Restore previous way of loading monitor
I'm not sure why but this particular change seems to have introduced
some flaky test failures. So I'll revert it.
https://github.com/rubygems/rubygems/commit/668488014b
deivid (David Rodríguez)
06:04 PM Revision d1c172df (git): [rubygems/rubygems] Don't load `SharedHelpers` unnecessarily
https://github.com/rubygems/rubygems/commit/de4650f629 deivid (David Rodríguez)
06:04 PM Revision 22dab739 (git): [rubygems/rubygems] Don't depend on Pathname unnecessarily
https://github.com/rubygems/rubygems/commit/8c8aaecc48 deivid (David Rodríguez)
04:44 PM Misc #20436: DevMeeting at RubyKaigi 2024
I asked Matz and here is a reordered agenda: https://hackmd.io/CoLraFp_QrqyHBcv3g8bVg?both
Many topics so we can't discuss all of them. The purpose of this meeting is knowing each other. Please discuss detailed topics with the people ...
ko1 (Koichi Sasada)
05:48 AM Misc #20436: DevMeeting at RubyKaigi 2024
* [Bug #20424] ZLib::GZipReader always double allocates strings when passed outbuf, significantly increasing memory usage
* Lots of discussion on the GitHub PR [here](https://github.com/ruby/zlib/pull/61)
* What do we need to do to...
tenderlovemaking (Aaron Patterson)
04:42 PM Bug #20478: Circular parameter syntax error rules
I figured that was already happening for the "unused" warning. kddnewton (Kevin Newton)
04:31 PM Revision b5e53e2f (git): [ruby/prism] Rescue LoadError for ruby_parser as well
https://github.com/ruby/prism/commit/d4eb13e703 kddnewton (Kevin Newton)
04:29 PM Revision 5931f857 (git): [ruby/prism] Add error handling for missing `parser` gem in `Prism::Translation`
Resolves https://github.com/ruby/prism/pull/2803.
This PR adds error handling for missing `parser` gem in `Prism::Translation`.
The `parser` gem is a required runtime dependency when using `Prism::Translation::Parser`.
But it is not re...
koic (Koichi ITO)
03:34 PM Revision e6340258 (git): [ruby/prism] Autoload newlines and comment visitors
Having the @newline instance variable in every node adds up, and
since it is so rarely used, we only want to add it when necessary.
Moving this into an autoloaded file and moving the instance variable
out of the default initializers red...
kddnewton (Kevin Newton)
01:01 PM Revision 02c8e658 (git): [rubygems/rubygems] Use a constant empty tar header to avoid extra allocations
https://github.com/rubygems/rubygems/commit/716666f65f segiddins (Samuel Giddins)
12:24 PM Bug #20487 (Rejected): 1..nil is giving range from 1 to inifinity in ruby greater than 2.6
This is expected behavior. `nil` is the implicit end of an endless range:
```ruby
(1..) == (1..nil)
# => true
(1..nil)
# => 1..
(1..).end
# => nil
```
jeremyevans0 (Jeremy Evans)
12:18 PM Bug #20487 (Rejected): 1..nil is giving range from 1 to inifinity in ruby greater than 2.6
we consider nil as undefined value, value that is not present, we consider nil as falsey value as well, when we do nil.to_i it gives us zero..then with this rational 1..nil shouldn't give the range 1 to infinity, either we should make it... akshay_kakade (Akshay Kakade)
10:35 AM Revision 58801034 (git): [rubygems/rubygems] Use spec.base_dir to remove plugins
The plugin loader from `@gem_home` was removed during uninstallation.
However, this could leave behind the plugins for `--user-install`
installed gems.
Use `Gem::Specifictaions#base_dir` instead. This ensures that the plugin
loader for ...
Vít Ondruch
10:35 AM Revision a86ad47c (git): [rubygems/rubygems] Improve plugin removal test
Instead of unit testing the `remove_plugins` method, test the whole
removal process.
https://github.com/rubygems/rubygems/commit/bfdc60af98
deivid (David Rodríguez)
09:19 AM Revision 899568cc (git): [rubygems/rubygems] Fix error when Bundler installation is corrupted
If one upgrades the default copy of Bundler through `gem update
--system`, and then reinstalls Ruby without removing the previous copy.
Then the new installation will have a correct default bundler gemspec,
but a higher copy installed in...
deivid (David Rodríguez)
09:08 AM Revision 69c87619 (git): [rubygems/rubygems] Avoid standard requires while loading shared helpers
We should make sure Bundler does not trigger RubyGems require logic for
gem activation until it had the chance to register its own monkeypatches
to RubyGems.
https://github.com/rubygems/rubygems/commit/fbd2ff86b9
deivid (David Rodríguez)
09:08 AM Revision e9262983 (git): [rubygems/rubygems] Require things right before they're needed
https://github.com/rubygems/rubygems/commit/07022e3f2f deivid (David Rodríguez)
08:42 AM Bug #20486 (Third Party's Issue): Internal compiler error when compile CRuby with msys2-mingw64-gcc14
"internal compiler error" means a bug of gcc.
We can do nothing for it.
nobu (Nobuyoshi Nakada)
08:25 AM Bug #20486 (Third Party's Issue): Internal compiler error when compile CRuby with msys2-mingw64-gcc14
Follow CRuby build guide in `https://github.com/ruby/ruby`
Some file like `numerc.c` whill produce a `internal compiler error` when enble option `-fno-omit-frame-pointer`
gcc version is
```
$ gcc --version
gcc.exe (Rev2, Built by...
nekoyama32767 (Jinsong Yu)
02:26 AM Feature #20484: A new pragma for eager resolution of classes referenced in rescue clauses.
Eager resolution of referenced constants at parse time would be very painful in many case as it would add some extra constraints on load order, likely causing circular dependency issues, even before considering things such as `autoload`.... byroot (Jean Boussier)

05/12/2024

11:26 PM Revision 3c16d93c (git): Constify encoding type in universal parser
Fixed warning about discarding modifiers.
```
../src/ruby_parser.c:677:48: warning: passing 'rb_encoding *' (aka 'const struct OnigEncodingTypeST *') to parameter of type 'void *' discards qualifiers [-Wincompatible-pointer-types-discar...
nobu (Nobuyoshi Nakada)
10:28 PM Bug #20485 (Closed): Simple use of Fiber makes GC leak objects with singleton method
Looks like a duplicate of https://bugs.ruby-lang.org/issues/19436, fixed in Ruby 3.3 but can't really be backported. byroot (Jean Boussier)
09:09 AM Bug #20485: Simple use of Fiber makes GC leak objects with singleton method
I confirmed that all of `1.times`, `[1].each` and `Mutex.new.synchronize` versions reproduce the problem on Ruby 3.2.4. skhrshin (Shintaro Sakahara)
08:52 AM Bug #20485: Simple use of Fiber makes GC leak objects with singleton method
Changing `1.times` to `[1].each` could reproduce the problem on Ruby 3.3.1 too. skhrshin (Shintaro Sakahara)
08:46 AM Bug #20485: Simple use of Fiber makes GC leak objects with singleton method
Update: To reproduce this issue with Ruby 3.3.1, Mutex is necessary. skhrshin (Shintaro Sakahara)
06:09 AM Bug #20485: Simple use of Fiber makes GC leak objects with singleton method
Update: Using Mutex was not necessary. skhrshin (Shintaro Sakahara)
03:39 AM Bug #20485 (Closed): Simple use of Fiber makes GC leak objects with singleton method
I found a possible memory leak which occurs only when several conditions are met.
The code to reproduce the problem is below:
```
class Work
def add_method
singleton_class.define_method(:f) {}
end
end
1.times { Fibe...
skhrshin (Shintaro Sakahara)
07:57 AM Feature #20484: A new pragma for eager resolution of classes referenced in rescue clauses.
Honestly, it is no different than any name used in a branch that wasn’t tested. E.g. if you have this:
```ruby
if foo
OneClass.new
else
OtherClass.new
end
```
...and the `else` branch wasn’t covered by tests, and the `OtherCl...
zverok (Victor Shepelev)
04:25 AM Feature #20484: A new pragma for eager resolution of classes referenced in rescue clauses.
duerst (Martin Dürst) wrote in #note-1:
> Can you give an example with actual code to show where you get problems?
The problem I ran into is that the exception class was properly named `SomeModule::SomeClass`, but my rescue block had...
jfrisby (Jon Frisby)
02:13 AM Feature #20484 (Feedback): A new pragma for eager resolution of classes referenced in rescue clauses.
Can you give an example with actual code to show where you get problems? duerst (Martin Dürst)
07:49 AM Feature #20483: More intuitive initialisation of null Range
What’s the expected semantics of this range?
There can be several options. Note that the behavior should be consistent/explainable in the context of other ranges (sometimes it makes sense to define the specialized behavior, but a very ...
zverok (Victor Shepelev)
07:45 AM Bug #20482 (Closed): nil variables in a guard clause of a standalone => or in expression
Applied in changeset commit:git|b911d2222f907d3fad397938e8f513ecfb4635b8.
----------
[Bug #20482] [DOC] Clarify about pattern maching guard clause
Guard clauses can only be used in `case` pattern matching statements,
not in `=>`/`in` o...
nobu (Nobuyoshi Nakada)
07:05 AM Bug #20482: nil variables in a guard clause of a standalone => or in expression
Soilent (Konstantin x) wrote in #note-2:
> Thank you, nobu! That explains it.
> ...
Yes, you can confirm the AST by `ruby --dump=parsetree -e '1 in a if a'` (the code is simplified).
> And since this is a modifier `if`, the parser c...
nobu (Nobuyoshi Nakada)
06:08 AM Bug #20482: nil variables in a guard clause of a standalone => or in expression
Thank you, nobu! That explains it.
Just to clarify, is this how the expression is parsed?
```ruby
( [1, 2] in a, b ) if b == 2*a
```
And since this is a modifier `if`, the parser creates variables a and b first, which is why t...
Soilent (Konstantin x)
12:05 AM Bug #20482: nil variables in a guard clause of a standalone => or in expression
One-line pattern matching can not have a guard clause, so the `if` in the first example is a modifier `if` and is evaluated before the pattern matching.
In short, it should be intentional, I think.
nobu (Nobuyoshi Nakada)
07:23 AM Revision b911d222 (git): [Bug #20482] [DOC] Clarify about pattern maching guard clause
Guard clauses can only be used in `case` pattern matching statements,
not in `=>`/`in` operators.
nobu (Nobuyoshi Nakada)
06:49 AM Feature #20443: Allow Major GC's to be disabled
I think that same concern applies to some existing `GC` methods (e.g. `GC.compact`, `GC.verify_compaction_reference`) etc. So it would make sense that plugable GC would offer a way for the GCs to register behavior for these methods, and ... byroot (Jean Boussier)
06:38 AM Revision 5695c5df (git): ripper: Fix opassign when assignment to backref variables
nobu (Nobuyoshi Nakada)
06:36 AM Revision a1fb6cc9 (git): ripper: Use `$&` instead of quoting charaters in tests
nobu (Nobuyoshi Nakada)
05:40 AM Bug #20481 (Closed): Untrusted Marshal data can overwrite class/module instance variables
Applied in changeset commit:git|8b9b150512b7b9514143a6b971992c9a539ead2f.
----------
[Bug #20481] Check for unmarshaling ivar
Prohibit setting instance variables of existing classes and modules
via link.
nobu (Nobuyoshi Nakada)
04:57 AM Revision 8b9b1505 (git): [Bug #20481] Check for unmarshaling ivar
Prohibit setting instance variables of existing classes and modules
via link.
nobu (Nobuyoshi Nakada)
04:55 AM Revision d9e6e6fb (git): [Bug #7759] Fix instance variable names to be checked
nobu (Nobuyoshi Nakada)
04:53 AM Revision 4edd9b07 (git): [ruby/irb] Clean up tmpdir
https://github.com/ruby/irb/commit/7d60349499 nobu (Nobuyoshi Nakada)
03:57 AM Bug #20478: Circular parameter syntax error rules
Even this should be a syntax error?
```ruby
def foo(bar = ->(baz = bar) {}) end
```
That means it needs to manage the list of yet-unusable variables, not only tracking single variable.
nobu (Nobuyoshi Nakada)
 

Also available in: Atom