Project

General

Profile

Activity

From 01/14/2024 to 01/20/2024

01/20/2024

10:31 PM Bug #20180: Inconsistent evaluation of `**{}` depending on position in array
I submitted a pull request to fix this: https://github.com/ruby/ruby/pull/9624 jeremyevans0 (Jeremy Evans)
10:01 PM Bug #20197: Postponed job invocations are significantly reduced in Ruby 3.3
I hacked at the postponed job infrastructure pretty extensively in 3.3, I’ll have a look at this bug in the next few days.
Thank you for your report!
kjtsanaktsidis (KJ Tsanaktsidis)
03:58 PM Bug #20197 (Closed): Postponed job invocations are significantly reduced in Ruby 3.3
The number of postponed job invocations has been significantly reduced in Ruby 3.3.
While my understanding is that postponed jobs provide no guarantee of how soon registered callbacks will fire, I believe the current rate is too low for...
osyoyu (Daisuke Aritomo)
04:50 PM Feature #19117: Include the method owner in backtraces, not just the method name
byroot (Jean Boussier) wrote in #note-36:
> Also it's likely (still not 100% decided) we'll be running a 3.4 prerelease sometime around March or April on our monolith, so we can get feedback from hundreds of developers long before the f...
Dan0042 (Daniel DeLorme)
11:04 AM Feature #19117: Include the method owner in backtraces, not just the method name
> large-scale app development
Yes, the larger the app, the more likely you are to have many methods with the same name in different modules / classes, and the more gems with different file naming conventions.
> ...
Agreed. I'm for...
byroot (Jean Boussier)
12:58 AM Feature #19117: Include the method owner in backtraces, not just the method name
In fact, I am also a bit afraid that it could be too redundant in large-scale app development. But it's interesting that byroot, who is far more familiar with large-scale app development than me, thinks that it's useful.
It is hard to...
mame (Yusuke Endoh)
03:27 PM Revision 366b14c0 (git): More tests
burdettelamar (Burdette Lamar)
02:59 AM Feature #20196 (Open): Proposal: Binary data literal
I sometimes find myself needing to write some bytes in a Ruby string literal, and this experience leaves a lot to be desired:
* Bare strings don't work (potential for encoding corruption unless you remember to `.force_encoding` and ne...
ziggythehamster (Keith Gable)
01:12 AM Revision 99d6e2f1 (git): [PRISM] Revisit target nodes
kddnewton (Kevin Newton)
01:05 AM Bug #20195 (Closed): 3.3.0 YJIT mishandles ruby2_keywords splat into methods taking a rest parameter
Check with:
```ruby
ruby2_keywords def foo(*args) = args
def bar(*args, **kw) = [args, kw]
def pass_bar(*args) = bar(*args)
def body
args = foo(a: 1)
pass_bar(*args)
end
p body
```
```
$ ruby ../test.rb
[[{:a...
alanwu (Alan Wu)

01/19/2024

10:57 PM Revision ac4046d3 (git): [ruby/prism] switch unless to if
https://github.com/ruby/prism/commit/29bdbf4212
Co-authored-by: Kevin Newton <kddnewton@gmail.com>
Adam Hess
10:57 PM Revision cfabe9c5 (git): [ruby/prism] Handle stovetop start in constant path fullname
https://github.com/ruby/prism/commit/3a216e63fe HParker (Adam Hess)
09:45 PM Bug #20155: Using value of rb_fiber_scheduler_current() crashes Ruby
Are you able to share the source code and error message? Thanks. ioquatix (Samuel Williams)
09:04 PM Revision ed50161b (git): [PRISM] Fix ensure code running twice
Fixes: ruby/prism#2212 eileencodes (Eileen Uchitelle)
08:37 PM Feature #20108: Introduction of Happy Eyeballs Version 2 (RFC8305) in Socket.tcp
shioimm (Misaki Shioi) wrote in #note-8:
> shugo (Shugo Maeda) wrote in #note-6:
> ...
Oh, I missed it.
But why not use Socket.tcp in Net::HTTP?
HTTP is one of most important use cases, isn't it?
> > Maybe, but HE may be slower i...
shugo (Shugo Maeda)
01:11 PM Feature #20108: Introduction of Happy Eyeballs Version 2 (RFC8305) in Socket.tcp
shugo (Shugo Maeda) wrote in #note-6:
> Users of libraries such as Net::HTTP, Net::FTP, and Net::IMAP can't use TCPSocket.new easily.
Net::HTTP uses `TCPSocket.open`(new), not `Socket.tcp`.
https://github.com/ruby/net-http/blob/edc99a54...
shioimm (Misaki Shioi)
09:41 AM Feature #20108: Introduction of Happy Eyeballs Version 2 (RFC8305) in Socket.tcp
shioimm (Misaki Shioi) wrote in #note-2:
> There is no way to disable it; HE is intended to avoid fatal delays. Introducing a way to disable it for performance seems to me to add complexity.
Speaking of complexity, how about to leave...
shugo (Shugo Maeda)
08:53 AM Feature #20108: Introduction of Happy Eyeballs Version 2 (RFC8305) in Socket.tcp
shioimm (Misaki Shioi) wrote in #note-5:
> Thank you for comments.
> ...
Maybe, but HE may be slower in such cases as your benchmark shows.
So I think it's better to provide a way to disable HE such as `Socket.fast_fallback = false` a...
shugo (Shugo Maeda)
08:32 PM Revision 4778b0ee (git): Fix kwarg ordering
Required keyword arguments need to come first.
Fixes: https://github.com/ruby/prism/issues/2158
Co-authored-by: Kevin Newton <kddnewton@gmail.com>
tenderlovemaking (Aaron Patterson)
07:51 PM Revision e0f7cee8 (git): YJIT: Avoid doubly splitting Opnd::Value on CSel (#9617)
YJIT: Avoid doubly splitting Opnd::Value k0kubun (Takashi Kokubun)
07:48 PM Feature #19117: Include the method owner in backtraces, not just the method name
> That's just how Ruby code is written nowadays.
It's a common pattern for classes that are long enough, but it's also very common to cram multiple smaller classes in the same file, or multiple classes that are alternative implementa...
byroot (Jean Boussier)
07:38 PM Feature #19117: Include the method owner in backtraces, not just the method name
byroot (Jean Boussier) wrote in #note-32:
> Can you tell me without opening the source file, the owner of that method?
Normally it would be ActiveRecord::ConnectionAdapters::ConnectionPool; now I'm sure you chose an example where tha...
Dan0042 (Daniel DeLorme)
03:42 PM Feature #19117: Include the method owner in backtraces, not just the method name
> "connection_adapters/abstract/database_statements" is repeated as "ActiveRecord::ConnectionAdapters::DatabaseStatements"
That is the case in the example you chose, but is absolutely not a given.
Can you tell me without opening th...
byroot (Jean Boussier)
03:36 PM Feature #19117: Include the method owner in backtraces, not just the method name
It's not so much the length but the redundancy. "active_record/connection_adapters/abstract/database_statements" is repeated as "ActiveRecord::ConnectionAdapters::DatabaseStatements"
It's hard for me to say if I would like the feature o...
Dan0042 (Daniel DeLorme)
03:25 PM Feature #19117: Include the method owner in backtraces, not just the method name
> Please try it with a Rails backtrace, so you get something like:
@Dan0042 I find that is much better than the existing backtrace. ¯\\\_(ツ)_/¯
I mean, we're including more information, so yes it's longer, but in your example it's ...
byroot (Jean Boussier)
03:02 PM Feature #19117: Include the method owner in backtraces, not just the method name
Please try it with a Rails backtrace, so you get something like:
```
#before
from /opt/ruby/3.1/lib/ruby/gems/3.1.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:531:in 'with_multi_statemen...
Dan0042 (Daniel DeLorme)
09:37 AM Feature #19117: Include the method owner in backtraces, not just the method name
I tried the following (contrived) script:
```ruby
class Abstract
def oops
yield
end
end
class Concrete < Abstract
class << self
def oops(&block)
new.oops { 1 + "1" }
end
end
def oops(&block)...
byroot (Jean Boussier)
09:11 AM Feature #19117: Include the method owner in backtraces, not just the method name
> What do you think?
I think it's beautiful. I'll try to get some time to build your branch and play with it, see how it behave in more corner-casy situations.
byroot (Jean Boussier)
05:39 AM Feature #19117: Include the method owner in backtraces, not just the method name
I prototyped this proposal: https://github.com/ruby/ruby/pull/9605
Fortunately, this would bring neither perrformance degredation nor extra memory usage when an exception is raised because I just replaced the method id with the method...
mame (Yusuke Endoh)
07:09 PM Revision 740f0b52 (git): [PRISM] Fix typo with pm_scope_node_destroy
We need to run the pm_scope_node_destroy after compiling the iseq. peterzhu2118 (Peter Zhu)
05:35 PM Revision efe4b8ac (git): Fix ensure code when running break in a while loop
We need to run ensure code when breaking from a while loop
Co-authored-by: John Hawthorn <jhawthorn@github.com>
Co-authored-by: Kevin Newton <kddnewton@gmail.com>
tenderlovemaking (Aaron Patterson)
05:35 PM Revision 200d3cc1 (git): add assert on SP
tenderlovemaking (Aaron Patterson)
04:22 PM Revision 400341ae (git): [PRISM] Sync to latest
kddnewton (Kevin Newton)
04:18 PM Revision 5a5cf23d (git): [PRISM] Fix indentation for PM_SCOPE_NODE [ci skip]
peterzhu2118 (Peter Zhu)
04:12 PM Revision ba4b00d3 (git): * remove trailing spaces. [ci skip]
git[bot]
04:12 PM Revision da521fc9 (git): [ruby/prism] Parsing rules document
https://github.com/ruby/prism/commit/57a9575543 kddnewton (Kevin Newton)
04:00 PM Revision 3c929017 (git): YJIT: Optimize defined?(yield) (#9599)
* YJIT: Optimize defined?(yield)
* Remove an irrelevant comment
* s/get/gen/
k0kubun (Takashi Kokubun)
03:43 PM Revision a58e0916 (git): [ruby/prism] Extract identifier lexing documentation to separate file
https://github.com/ruby/prism/commit/c9df17e3c0 Matthew Healy
03:43 PM Revision 9c06297c (git): [ruby/prism] Remove non-ASCII examples from ReadNode fields documentation
This is due to a constraint, enforced in `templates/template.rb`,
relating to non-UTF-8 locales prohibiting non-ASCII characters in C
source files.
https://github.com/ruby/prism/commit/74e9a890be
Matthew Healy
03:43 PM Revision 57c138c5 (git): [ruby/prism] Document ConstantReadNode fields
https://github.com/ruby/prism/commit/a1623f6451 Matthew Healy
03:43 PM Revision b7d37e27 (git): [ruby/prism] Document LocalVariableReadNode fields
https://github.com/ruby/prism/commit/5e9afd3729 Matthew Healy
03:43 PM Revision 1c5e5406 (git): [ruby/prism] Document NumberedReferenceReadNode fields
https://github.com/ruby/prism/commit/c3148b4519 Matthew Healy
03:43 PM Revision 3fa6dbf3 (git): [ruby/prism] Document BackReferencedReadNode fields
https://github.com/ruby/prism/commit/99a5660623 Matthew Healy
03:43 PM Revision 512be6ce (git): [ruby/prism] Document GlobalVariableReadNode fields
https://github.com/ruby/prism/commit/5d092e6389 Matthew Healy
03:43 PM Revision 9031fd08 (git): [ruby/prism] Document ClassVariableReadNode fields
https://github.com/ruby/prism/commit/23ed81dd15 Matthew Healy
03:43 PM Revision 88810f71 (git): [ruby/prism] Document InstanceVariableReadNode fields
https://github.com/ruby/prism/commit/c0747103b0 Matthew Healy
03:29 PM Bug #20194 (Closed): Memory leak with TracePoint on bmethod
GitHub PR: https://github.com/ruby/ruby/pull/9614
When disabling the TracePoint on bmethod, the hooks list is not freed.
For example:
```ruby
obj = Object.new
obj.define_singleton_method(:foo) {}
bmethod = obj.method(:foo)
t...
peterzhu2118 (Peter Zhu)
03:25 PM Revision d0b774cf (git): Remove null checks for xfree
xfree can handle null values, so we don't need to check it. peterzhu2118 (Peter Zhu)
02:49 PM Revision d29cd972 (git): [ruby/prism] Use inttypes for more accurate printf formatting
https://github.com/ruby/prism/commit/2a22b9b72f kddnewton (Kevin Newton)
02:19 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
I opened a PR with some extra specs for the behavior *after* the constant is defined, but *before* the autoload is completed: https://github.com/ruby/ruby/pull/9613
And I updated my patch to be consistent with that behavior: https://g...
byroot (Jean Boussier)
01:42 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
Ah, I see.
So that, to me, stll reinforces my main design principle, that I have not shared so far in the discussion.
The code responsible for loading is the caller, `bar.rb` should work the same no matter how the `require` was issued....
fxn (Xavier Noria)
01:37 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
@fxn The `defined?` should be before the assignment in the autoloading thread. Eregon (Benoit Daloze)
01:16 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
Are you guys sure `defined?` depends on the thread? In this test running in 3.3 I don't seem to reproduce:
```ruby
$up = Queue.new
$down = Queue.new
File.write('/tmp/bar.rb', <<~RUBY)
Bar = 1
$up << true
$down.pop
...
fxn (Xavier Noria)
12:45 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
Alright, I guess I better see what you mean now, there is a spec for `defined?` during autoload, that ensure other threads see the constant as not defined until the autoload completed:
```ruby
it "defined? returns nil in autoload...
byroot (Jean Boussier)
12:37 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
Ok, so I see what you mean. Accessing `Const` from another thread while the autoload is still being resolve blocks until it's done, which makes sense for thread safety, and I suspect my patch breaks that, I need to double check and fix i... byroot (Jean Boussier)
12:22 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
Alternatively if `const_source_location` returns a different result based on the calling thread then I agree it seems fine in the autoloading thread to return the temporary assignment location just after that assignment.
And then after ...
Eregon (Benoit Daloze)
12:19 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
One problem though with that restore way is, I think, `const_source_location` is always the same for all threads.
What you are showing there is only valid for the thread autoloading that file, but is not the case for any other thread, wh...
Eregon (Benoit Daloze)
12:15 PM Bug #8973: Allow to configure archlibdir for multiarch
Can this be reopened or should create new ticket? vo.x (Vit Ondruch)
11:28 AM Misc #20193: DevMeeting-2024-02-14
* [Bug #20188] `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing (byroot)
* `const_source_location` continues to return the `autoload` location even after the constan...
byroot (Jean Boussier)
08:43 AM Misc #20193: DevMeeting-2024-02-14
* [Feature #16495] Inconsistent quotes in error messages (mame)
* Implemented a prototype.
* Error message: ``undefined method `foo'`` -> ``undefined method 'foo'``
* Backtrace: ``from test.rb:2:in `foo'`` -> ``from test.rb:2:in...
mame (Yusuke Endoh)
07:57 AM Misc #20193 (Closed): DevMeeting-2024-02-14
# The next dev meeting
**Date: 2024/02/14 13:00-17:00** (JST)
Log: https://github.com/ruby/dev-meeting-log/blob/master/2024/DevMeeting-2024-02-14.md
- Dev meeting *IS NOT* a decision-making place. All decisions should be done at t...
mame (Yusuke Endoh)
11:02 AM Revision 7b0f6d6d (git): Update bundled gems list at c46d23cde7c6bfc2af762525a767cd [ci skip]
git[bot]
11:02 AM Revision c46d23cd (git): Added dependencies rinda and drb
hsbt (Hiroshi SHIBATA)
11:02 AM Revision fa5094e1 (git): Stop sync rinda repo
hsbt (Hiroshi SHIBATA)
11:02 AM Revision ce73fbd7 (git): Document about rinda at Ruby 3.4
hsbt (Hiroshi SHIBATA)
11:02 AM Revision 411cda2d (git): Extract rinda
hsbt (Hiroshi SHIBATA)
09:01 AM Bug #19918: Should `a[&b]=c` be syntax valid?
https://github.com/nobu/ruby/tree/ary_set-block nobu (Nobuyoshi Nakada)
07:53 AM Bug #19918 (Assigned): Should `a[&b]=c` be syntax valid?
Discussed at the dev meeting. @matz wanted to allow `a[&b]` and forbid `a[&b] = c` if the implementation is not overly cumbersome.
@yui-knk What do you think?
Note: During the meeting, we found that the compilation of `a[&b], c[&d]...
mame (Yusuke Endoh)
08:57 AM Revision 0f315216 (git): Update bundled gems list as of 2024-01-19
git[bot]
08:44 AM Revision 31a5d4a0 (git): Skip test task for resolv-replace
hsbt (Hiroshi SHIBATA)
08:44 AM Revision 36095ed3 (git): Removed sync task for resolv-replace
hsbt (Hiroshi SHIBATA)
08:44 AM Revision 6c098d14 (git): Document about resolv-replace at Ruby 3.4
hsbt (Hiroshi SHIBATA)
08:44 AM Revision 99c2c703 (git): Extract resolv-replace
hsbt (Hiroshi SHIBATA)
08:14 AM Bug #20150: Memory leak in grapheme clusters
Hello, Martin-sensei.
In my understandings, there's no explicit rule regarding the order of backporting to each stable branch.
In this case, I backported the changeset to the 3.2 branch ahead of the 3.3 branch because I hoped to incl...
nagachika (Tomoyuki Chikanaga)
07:57 AM Misc #20075 (Closed): DevMeeting-2024-01-17
mame (Yusuke Endoh)
07:45 AM Feature #16495: Inconsistent quotes in error messages
I prototyped it: https://github.com/ruby/ruby/pull/9608
Still need to update prism and ruby/spec.
For information in impact assessment: this change made 140 tests fail in `make test-all`. Many of them examined error messages, which...
mame (Yusuke Endoh)
07:28 AM Revision 9ac316bb (git): Update bundled gems list at 11ec59c92bab5346fc0fdce9d8ed2a [ci skip]
git[bot]
07:27 AM Revision 11ec59c9 (git): Removed sync task for abbrev
hsbt (Hiroshi SHIBATA)
07:27 AM Revision e28bdff9 (git): Document about abbrev at Ruby 3.4
hsbt (Hiroshi SHIBATA)
07:27 AM Revision f4670b46 (git): spec/mspec/tool/wrap_with_guard.rb 'ruby_version_is ""..."3.4"' spec/ruby/library/abbrev/**/*.rb
hsbt (Hiroshi SHIBATA)
07:27 AM Revision b4ee5266 (git): Extract abbrev as bundled gems
hsbt (Hiroshi SHIBATA)
06:56 AM Revision d3898e97 (git): Removed sync task for observer
hsbt (Hiroshi SHIBATA)
06:35 AM Revision e8cb9e13 (git): Update bundled gems list as of 2024-01-18
git[bot]
06:24 AM Revision fb5722c0 (git): Document about observer at Ruby 3.4
hsbt (Hiroshi SHIBATA)
06:24 AM Revision 8b551b0e (git): spec/mspec/tool/wrap_with_guard.rb 'ruby_version_is ""..."3.4"' spec/ruby/library/observer/**/*.rb
hsbt (Hiroshi SHIBATA)
06:24 AM Revision 176a4428 (git): Extract observer as bundled gems
hsbt (Hiroshi SHIBATA)
05:01 AM Revision 68b403c4 (git): Fixed inconsistent library name
hsbt (Hiroshi SHIBATA)
05:00 AM Revision 385a1b15 (git): Fixed upstream URL at bundled gems
hsbt (Hiroshi SHIBATA)
03:12 AM Revision 54552b89 (git): Revert "[rubygems/rubygems] Fix `require` of a default gem when unresolved gems depend on it"
This reverts commit f1f5f22d22a149f20e019728b1ab35593d29d81a. hsbt (Hiroshi SHIBATA)
02:54 AM Revision 04cf6676 (git): Revert "[rubygems/rubygems] Fix activation conflicts when circularly requiring a gem"
This reverts commit db44088c2a92040879386aa5f268db4c858e4e5b.
https://github.com/ruby/ruby/actions/runs/7578672002/job/20641640821
https://github.com/ruby/ruby/actions/runs/7578672002/job/20641641212
https://github.com/ruby/ruby/a...
hsbt (Hiroshi SHIBATA)
02:44 AM Revision 7265a5be (git): Bump actions/upload-artifact from 4.1.0 to 4.2.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/1eb3cb...
dependabot[bot]
02:29 AM Revision a8fa28ab (git): Bump uri version used in development
deivid (David Rodríguez)
02:28 AM Revision db44088c (git): [rubygems/rubygems] Fix activation conflicts when circularly requiring a gem
If a gem is required circular, and there are unresolved specs depending
on it, we may end up in an activation conflict.
The solution is to not try to activate unresolved gems when requiring a
default gem, regardless of it having already...
deivid (David Rodríguez)
02:28 AM Revision f1f5f22d (git): [rubygems/rubygems] Fix `require` of a default gem when unresolved gems depend on it
The following conditions must be met:
* A default gem is required.
* A previous require left some gems unresolved, and those dependencies
themselves depend on the default gem.
In this case, rubygems require will first activate the de...
deivid (David Rodríguez)
02:28 AM Revision 8044e579 (git): [rubygems/rubygems] Add a comment to explain default gem activation
https://github.com/rubygems/rubygems/commit/291128268f deivid (David Rodríguez)
02:16 AM Revision 74e5665e (git): Update default gems list at b2ec4308d69a13f3ff3b1b3128d52b [ci skip]
git[bot]
01:49 AM Revision b2ec4308 (git): [ruby/irb] Bump version to v1.11.1
(https://github.com/ruby/irb/pull/837)
https://github.com/ruby/irb/commit/f052097c4b
st0012 (Stan Lo)
01:49 AM Revision 91f35305 (git): [ruby/strscan] Add test to check encoding for empty string
(https://github.com/ruby/strscan/pull/80)
See: https://github.com/ruby/strscan/issues/78#issuecomment-1890849891
https://github.com/ruby/strscan/commit/d0508518a9
naitoh (Jun NAITOH)
01:49 AM Revision ac636f57 (git): [ruby/strscan] Bump version
https://github.com/ruby/strscan/commit/d6f97ec102 Sutou Kouhei
01:49 AM Revision 4e476710 (git): [rubygems/rubygems] Test that regular gems don't shadow default gems
https://github.com/rubygems/rubygems/commit/b8ca5950a6 deivid (David Rodríguez)
01:22 AM Revision 7b253cfe (git): RJIT: Properly reject keyword splat with `yield`
See the fix for YJIT. alanwu (Alan Wu)
01:22 AM Revision bbd249e3 (git): YJIT: Properly reject keyword splat with `yield`
We don't have support for keyword splat anywhere, but we tried to
compile these anyways in case of `invokeblock`. This led to bad things
happening such as passing the wrong value and passing a hash into
rb_yjit_array_len(), which raised ...
alanwu (Alan Wu)
12:25 AM Bug #20192 (Closed): YJIT in 3.3.0 miscompiles `yield` with keyword splats
Test with:
```ruby
def splat_kw(kwargs) = yield(**kwargs)
p splat_kw({}) { _1 }
```
```shell
% ruby --yjit-call-threshold=1 test.rb
{}
% ruby test.rb
nil
```
alanwu (Alan Wu)

01/18/2024

10:55 PM Bug #20001 (Closed): Make Ruby work properly with ASAN enabled
Applied in changeset commit:git|807714447ef02c77bb0e17fe27d96ee2692264f8.
----------
Pass down "stack start" variables from closer to the top of the stack
This commit changes how stack extents are calculated for both the main
thread an...
Anonymous
10:55 PM Revision 61da90c1 (git): Mark asan fake stacks during machine stack marking
ASAN leaves a pointer to the fake frame on the stack; we can use the
__asan_addr_is_in_fake_stack API to work out the extent of the fake
stack and thus mark any VALUEs contained therein.
[Bug #20001]
kjtsanaktsidis (KJ Tsanaktsidis)
10:55 PM Revision 3cfcb45e (git): Define special macros for asan/msan being enabled
__has_feature is a clang-ism, and GCC has a different way to tell if
sanitizers are enabled. For this reason, I don't want to spray
__has_feature all over the codebase for other places where conditional
compilation based on sanitizers is...
KJ Tsanaktsidis
10:55 PM Revision cabdaebc (git): Make stack bounds detection work with ASAN
Where a local variable is used as part of the stack bounds detection, it
has to actually be on the stack. ASAN can put local variable on "fake
stacks", however, with addresses in different memory mappings. This
completely destroys the st...
KJ Tsanaktsidis
10:55 PM Revision 80771444 (git): Pass down "stack start" variables from closer to the top of the stack
This commit changes how stack extents are calculated for both the main
thread and other threads. Ruby uses the address of a local variable as
part of the calculation for machine stack extents:
* pthreads uses it as a lower-bound on the ...
KJ Tsanaktsidis
10:49 PM Revision 08edad31 (git): [rubygems/rubygems] Drop two TODOs from specification.rb
These were introduced 13 years ago, in a documentation update. Perhaps we can let the TODOs go, without taking any action?
https://github.com/rubygems/rubygems/commit/fb23fa84f9
olleolleolle (Olle Jonsson)
09:33 PM Revision c28094d3 (git): [PRISM] Add function to free scope node
pm_scope_node_destroy frees the scope node after we're done using it to
make sure that the index_lookup_table is not leaked.
For example:
10.times do
100_000.times do
RubyVM::InstructionSequence.compile_prism("begin; ...
peterzhu2118 (Peter Zhu)
09:33 PM Revision 47081c3e (git): [PRISM] Pass pm_scope_node_t by reference
We can pass pm_scope_node_t by reference to pm_new_child_iseq rather
than by value.
peterzhu2118 (Peter Zhu)
08:28 PM Feature #16495: Inconsistent quotes in error messages
Let me add a little to the matz's decision.
At the dev meeting, he said that we will replace with a single quote, not only the backticks for `NameError#message`, but also the ones for other exception messages (e.g., ``no superclass meth...
mame (Yusuke Endoh)
03:24 PM Feature #16495: Inconsistent quotes in error messages
Great to see progress on this issue.
Agreed, for method names and file names, single quotes are best.
Backticks are best for quoting source code, and there is no source code in Ruby backtraces.
Eregon (Benoit Daloze)
01:43 PM Feature #16495: Inconsistent quotes in error messages
I'd like something that's convenient to copy-paste. Testing:
with single quote pair:
undefined local variable or method 'foobar' for main:Object (NameError)
`undefined local variable or method 'foobar' for main:Object (NameError)`
...
Dan0042 (Daniel DeLorme)
07:54 AM Feature #16495: Inconsistent quotes in error messages
I agree with giving up backquotes. I'd rather use single quote pairs, unless any compatibility issues are caused.
Matz.
matz (Yukihiro Matsumoto)
08:25 PM Revision 60dd7311 (git): [PRISM] Correct checkmatch flags for splat in rescue
eightbitraptor (Matt V-H)
08:03 PM Revision 8a3e7f08 (git): [PRISM] Fix case splat with no predicate
eightbitraptor (Matt V-H)
07:59 PM Revision 686b1655 (git): [PRISM] Fix indentation in switch [ci skip]
peterzhu2118 (Peter Zhu)
07:40 PM Revision 33306a08 (git): YJIT: Stop incrementing chain_depth on defer_compilation (#9597)
k0kubun (Takashi Kokubun)
06:40 PM Revision d8ac96ef (git): [PRISM] Fix memory leak in case nodes
The temporary array conditions_labels is heap allocated and never freed.
We can use alloca instead to stack allocate it so that we don't need to
manually free it.
For example:
code = "case; #{100.times.map { "when #{it}; " }.join};...
peterzhu2118 (Peter Zhu)
06:37 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
@Eregon I feel we need to recenter the discussion to consider `const_source_location` under the current logic that undoes some things if the autoload raises.
To me, there is no doubt `const_source_location` in the code being autoloade...
fxn (Xavier Noria)
05:32 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
On a related note IIRC the recent-ish change was on failed autoload, the autoload and its constant would be completely removed: https://bugs.ruby-lang.org/issues/15790#note-12
But it seems to not be the case for this edge case, and also...
Eregon (Benoit Daloze)
05:25 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
fxn (Xavier Noria) wrote in #note-8:
> @Eregon I see what you mean, but you can't make that consistent, because by that logic
> ...
I assumed you mean that code would be in the autoloaded file (`/tmp/bar.rb`), and there could still be ...
Eregon (Benoit Daloze)
05:14 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
To me, this should be the same logic of `Kernel#require`. Whatever side-effects happened while loading the file remain. Like, partially defined classes, for example.
`Module#autoload` is just a deferred `Kernel#require` for me (even mor...
fxn (Xavier Noria)
05:08 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
@Eregon I see what you mean, but you can't make that consistent, because by that logic
```ruby
Bar = 1
p Bar
```
should not print 1, right? The constant was created, the lookup for `Bar` found it, therefore its source location i...
fxn (Xavier Noria)
04:58 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
fxn (Xavier Noria) wrote in #note-5:
> That output was meant to be what I'd expect from the previous example (which triggers the autoload). The whole program would be:
That's how I understood it, but I somehow missed the `Bar rescue nil...
Eregon (Benoit Daloze)
04:02 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
The general principle at place here would be: Ruby does not undo side-effects of code evaluation. If you defined a global, mutated an object, defined constants, ..., any change visible to the caller that happens before the exception is r... fxn (Xavier Noria)
03:58 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
> I think Module#const_source_location should not trigger the autoload, at least such a change seems out of scope of this issue.
Oh, was not proposing that.
That output was meant to be what I'd expect from the previous example (which t...
fxn (Xavier Noria)
03:36 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
`p Object.const_source_location(:Bar) # ["/tmp/bar.rb", 1]`
I think `Module#const_source_location` should not trigger the autoload, at least such a change seems out of scope of this issue.
`Module#const_source_location` should retu...
Eregon (Benoit Daloze)
05:38 PM Bug #20155: Using value of rb_fiber_scheduler_current() crashes Ruby
Unfortunately I still get the same error in the non-test project (not fiber_blocker). I've included `<ruby/fiber/scheduler.h>`. No compiler warnings regarding `rb_fiber_scheduler_*` but it still crashes when `rb_fiber_scheduler_unblock(s... paddor (Patrik Wenger)
05:32 PM Revision d3b07b98 (git): [ruby/psych] Add :stringify_names option to convert symbol keys to string for dumping
https://github.com/ruby/psych/commit/3d051d89aa Robert Schulze
03:35 PM Revision 00814fd6 (git): [PRISM] Fix memory leak in iseq
rb_iseq_compile_prism_node calls both rb_translate_prism and iseq_setup.
Both of these functions call iseq_set_sequence. This means that the first
iseq_set_sequence will leak because the iseq will be overwritten.
For example:
10.ti...
peterzhu2118 (Peter Zhu)
03:19 PM Feature #18576: Rename `ASCII-8BIT` encoding to `BINARY`
I think everyone's opinion on the thread is pretty clear and not everyone agrees, that's fine.
@matz Could you decide whether it's OK to experiment with the Encoding#name changing to "BINARY" or not?
If not, is @byroot's proposal in ...
Eregon (Benoit Daloze)
12:58 AM Feature #18576: Rename `ASCII-8BIT` encoding to `BINARY`
tenderlovemaking (Aaron Patterson) wrote in #note-7:
> I think this example should raise an exception:
> ...
I'm worried about the above misconception. No, this example shouldn't raise an exception, because being ascii-compatible is th...
Dan0042 (Daniel DeLorme)
03:15 PM Revision ef685554 (git): [DOC] RDoc for ARGF (#9558)
burdettelamar (Burdette Lamar)
02:32 PM Feature #20108: Introduction of Happy Eyeballs Version 2 (RFC8305) in Socket.tcp
Thank you for comments.
I agree that I need to reconsider the current implementation, as resolving the hostname in another thread is unneeded when there is only one address family in use.
However, even when there is only one address fami...
shioimm (Misaki Shioi)
04:28 AM Feature #20108: Introduction of Happy Eyeballs Version 2 (RFC8305) in Socket.tcp
shioimm (Misaki Shioi) wrote in #note-2:
> shugo (Shugo Maeda) wrote in #note-1:
> ...
Thanks for your reply.
I agree with Jeremy; at least, there should be a way to disable it.
shugo (Shugo Maeda)
10:56 AM Revision 97721fa4 (git): Old sh does not allow `:` in function names [ci skip]
nobu (Nobuyoshi Nakada)
09:09 AM Revision 264b7363 (git): Preserve spaces in messages [ci skip]
nobu (Nobuyoshi Nakada)
07:49 AM Feature #19742: Introduce `Module#anonymous?`
First, given the existence of the Module#set_temporary_name method as well, it seems somewhat confusing what the name of this method implies.
So, it may be necessary to first clarify what this method really wants to accomplish.
In ge...
matz (Yukihiro Matsumoto)
07:36 AM Revision a3e6546e (git): Print error messages to the stderr [ci skip]
nobu (Nobuyoshi Nakada)
07:23 AM Revision 74ce7905 (git): Update bundled gems list at 419f4260aa4827c633b3172d95a9fa [ci skip]
git[bot]
07:01 AM Revision 419f4260 (git): Use released version of bigdecimal
hsbt (Hiroshi SHIBATA)
06:56 AM Revision a660e1de (git): [DOC] correct doc comment for rb_ary_aset
Signed-off-by: Edwin Garcia <egarciavalle2014@gmail.com> Edwing123
06:26 AM Revision 52bb2ac0 (git): bump teeny
nagachika (Tomoyuki Chikanaga)
03:57 AM Misc #20191: Deprecate magic encoding comment
> The proposed change might work if announced very long-term, e.g. for 2030 or so. Just doing it now and "hope for the best" is a bad idea.
To be clear, that's exactly what I'm proposing. Matz has indicated Ruby 4 would be around 2030...
kddnewton (Kevin Newton)
03:42 AM Misc #20191: Deprecate magic encoding comment
For the record, I agree with Hiroshi, Kenta, and Yui. The changes from Python 2 to Python 3 didn't work in favor of Python (summarizing Yehuda Katz). The above change would be of a similar magnitude, with similar implications.
The pro...
duerst (Martin Dürst)
03:14 AM Misc #20191 (Rejected): Deprecate magic encoding comment
You also need to consider applications in addition to gems publicly available on GitHub.
Breaking compatibility forces such users/developers to work such unproductive work.
You must carefully compare the trade off between your developm...
naruse (Yui NARUSE)
01:06 AM Misc #20191: Deprecate magic encoding comment
We should investigate the real-world application codebases instead of gems on rubygems.org.
I guess there can be unexpectedly many scripts in non-UTF8 encoding historically, such as EUC-JP and Windows-31J.
If so, your proposal will bre...
mrkn (Kenta Murata)
01:01 AM Misc #20191: Deprecate magic encoding comment
I strongly against this proposal. There is no benefit to break existence Ruby script specified magic comment for resolving their complex issues related encoding like EUC-JP, SHIFT_JIS or something. hsbt (Hiroshi SHIBATA)
03:57 AM Revision 99c9aeef (git): merge revision(s) b8a3f1bd456f92866c4a7bd83235f78c574784a8:
Fix crash in tracing object allocations
ObjectSpace.trace_object_allocations_start could crash since it adds a
TracePoint for when objects are freed. However, TracePoint could crash
since it modifies st tables wh...
nagachika (Tomoyuki Chikanaga)
03:51 AM Bug #20150: Memory leak in grapheme clusters
Hello everybody (but in particular Tomoyuki Chikanaga and Yui Naruse),

On 2024-01-18 12:21, nagachika (Tomoyuki Chikanaga) via ruby-core wrote:
> Issue #20150 has been updated by nagachika (Tomoyuki Chikanaga).
>
> Backport chang...
Anonymous
03:21 AM Bug #20150: Memory leak in grapheme clusters
ruby_3_2 b4f8623441a8be53b643fed826ba44e933cafd7e merged revision(s) b3d612804946e841e47d14e09b6839224a79c1a4. nagachika (Tomoyuki Chikanaga)
03:42 AM Revision fd1bafc1 (git): [ruby/stringio] Fix ascii_only? flag in strio_write
(https://github.com/ruby/stringio/pull/77)
Followup of #79
`rb_str_resize()` was changed by https://github.com/ruby/ruby/commit/b0b9f7201acab05c2a3ad92c3043a1f01df3e17f .
```c
rb_str_resize(string, shorter) // clear ENC_CODERANGE in ...
tompng (tomoya ishida)
03:26 AM Feature #20080: Introduce #bounds method on Range
@stuyam Can you add this proposal to next dev-meeting? https://bugs.ruby-lang.org/issues/20075#note-9 was after the deadline and will not be discussed. hsbt (Hiroshi SHIBATA)
03:21 AM Bug #20161: Memory leak in regexp grapheme clusters
ruby_3_2 a26b41bf7a2db69b0889ed599f568a4ba2529eba merged revision(s) 37ed86fd3c798e298fad9db6e7df1f3f45e1e03b. nagachika (Tomoyuki Chikanaga)
03:20 AM Bug #20096: Ruby 3.2.2 win32/registry: Junk appended to Windows Registry String Value
ruby_3_2 5dae6eb55e9785c8329708e55a49a280a344cdc1 merged revision(s) 051a874325c177e040301878069c2b28f5d06ce6. nagachika (Tomoyuki Chikanaga)
03:20 AM Bug #20174: Ruby 3.2 jit_cont_free segfault with YJIT enabled
ruby_3_2 3302e251dccec1e981945ab19d316d0856c68bf6 merged revision(s) e07e9f8491d9ab8b22d2bdf6a8aeba834dac7eef. nagachika (Tomoyuki Chikanaga)
03:20 AM Bug #20042: ObjectSpace finalizer can cause segfault
ruby_3_2 0cc0e43745ffc13a596441adccee295274d99a0b merged revision(s) f9a48548cf3ef54fc0a385ccd78c708737055ecc. nagachika (Tomoyuki Chikanaga)
02:56 AM Revision 3302e251 (git): merge revision(s) e07e9f8491d9ab8b22d2bdf6a8aeba834dac7eef: [Backport #20174]
RJIT: Do nothing on jit_cont_free
if cont is NULL.
---
cont.c | 2 ++
1 file changed, 2 insertions(+)
nagachika (Tomoyuki Chikanaga)
02:53 AM Revision 5dae6eb5 (git): merge revision(s) 051a874325c177e040301878069c2b28f5d06ce6: [Backport #20096]
Fix memory overread in registry.rb
The terminator is not actually getting filled in; we're simply passing
(two) bytes of empty memory as the NUL terminator. This can lead to
garbage characters getting written to ...
nagachika (Tomoyuki Chikanaga)
02:51 AM Revision a26b41bf (git): merge revision(s) 37ed86fd3c798e298fad9db6e7df1f3f45e1e03b: [Backport #20161]
Fix memory leak in regexp grapheme clusters
[Bug #20161]
The cc->mbuf gets overwritten, so we need to free it to not leak memory.
For example:
str = "hello world".encode(Encoding::UTF_32LE)
...
nagachika (Tomoyuki Chikanaga)
02:50 AM Revision b4f86234 (git): merge revision(s) b3d612804946e841e47d14e09b6839224a79c1a4: [Backport #20150]
Fix memory leak in grapheme clusters
[Bug #20150]
String#grapheme_cluters and String#each_grapheme_cluster leaks memory
because if the string is not UTF-8, then the created regex will not
be freed.
...
nagachika (Tomoyuki Chikanaga)
02:48 AM Revision 0cc0e437 (git): merge revision(s) f9a48548cf3ef54fc0a385ccd78c708737055ecc: [Backport #20042]
restore the stack pointer on finalizer
When error on finalizer, the exception will be ignored.
To restart the code, we need to restore the stack pointer.
fix [Bug #20042]
---
gc.c ...
nagachika (Tomoyuki Chikanaga)
01:37 AM Revision 4095191f (git): Update default gems list at af60cdf6747316b23bf254128d8472 [ci skip]
git[bot]
01:36 AM Revision af60cdf6 (git): [ruby/io-console] Bump up version to 0.7.2
https://github.com/ruby/io-console/commit/1f2877a185 hsbt (Hiroshi SHIBATA)

01/17/2024

11:45 PM Revision 42177a89 (git): [DOC] Update ruby version in Building Ruby Dependencies
znz (Kazuhiro NISHIYAMA)
11:40 PM Revision 8370b3bc (git): Add baseruby version message
Because `--with-baseruby=/usr/bin/ruby` on macOS is Ruby 2.6,
I was confused why `--with-baseruby` was ignored.
znz (Kazuhiro NISHIYAMA)
10:44 PM Revision 6ddd583a (git): Update bundled gems list at fd81c887f9067dbc3b594dfc7a23de [ci skip]
git[bot]
10:44 PM Revision fd81c887 (git): Use fixed commit for failing result of test-bundled-gems
https://github.com/ruby/ruby/actions/runs/7550805131/job/20557022764?pr=9573
https://github.com/ruby/bigdecimal/commit/338e896234bdcf672b91f2c2052527b09e2870f8
hsbt (Hiroshi SHIBATA)
10:44 PM Revision 7cb11254 (git): spec/mspec/tool/wrap_with_guard.rb 'ruby_version_is ""..."3.4"' spec/ruby/core/rational/coerce_spec.rb
hsbt (Hiroshi SHIBATA)
10:44 PM Revision 44d74f22 (git): Guard bigdecimal related examples
spec/mspec/tool/wrap_with_guard.rb 'ruby_version_is ""..."3.4"' spec/ruby/core/integer/coerce_spec.rb
spec/mspec/tool/wrap_with_guard.rb 'ruby_version_is ""..."3.4"' spec/ruby/shared/rational/coerce.rb
spec/mspec/tool/wrap_with_guard...
hsbt (Hiroshi SHIBATA)
10:44 PM Revision 4328f190 (git): spec/mspec/tool/wrap_with_guard.rb 'ruby_version_is ""..."3.4"' spec/ruby/library/bigdecimal/**/*_spec.rb
hsbt (Hiroshi SHIBATA)
10:44 PM Revision 9f729cf3 (git): Skip bigdecimal extension on TestExtLibs
hsbt (Hiroshi SHIBATA)
10:44 PM Revision 0bdab1a7 (git): Load Rake::TaskLib when missing it
hsbt (Hiroshi SHIBATA)
10:44 PM Revision 4dde4d14 (git): Stop sync commits from bigdecimal repo
hsbt (Hiroshi SHIBATA)
10:44 PM Revision 272b1c92 (git): Document about bigdecimal at Ruby 3.4
hsbt (Hiroshi SHIBATA)
10:44 PM Revision 2b076611 (git): Extract bigdecimal as bundled gems
hsbt (Hiroshi SHIBATA)
10:21 PM Revision db9f5fc9 (git): [Prism] Implement defined? for PM_UNLESS_NODE
Ruby code:
```ruby
defined?(unless true; 1; end)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,16)>
0000 putobject "expression" ( 59...
eileencodes (Eileen Uchitelle)
10:21 PM Revision 555af5e5 (git): [Prism] Implement defined? for PM_UNTIL_NODE
Ruby code:
```ruby
defined?(until a == 1; end)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,16)>
0000 putobject "expression" ( 59)[...
eileencodes (Eileen Uchitelle)
10:21 PM Revision 24d02cd4 (git): [Prism] Implement defined? for PM_WHILE_NODE
Ruby code:
```ruby
defined?(while a != 1; end)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,16)>
0000 putobject "expression" ( 59)[...
eileencodes (Eileen Uchitelle)
10:21 PM Revision b5d3d611 (git): [Prism] Implement defined? for PM_SINGLETON_CLASS_NODE
Ruby code:
```ruby
defined?(class << self; end)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,16)>
0000 putobject "expression" ( 59)...
eileencodes (Eileen Uchitelle)
10:21 PM Revision d2000e0e (git): [Prism] Implement defined? for PM_RATIONAL_NODE
Ruby code:
```ruby
defined?(1.2r)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,16)>
0000 putobject "expression" ( 59)[Li]
0002 leav...
eileencodes (Eileen Uchitelle)
10:21 PM Revision 913772a0 (git): [Prism] Implement defined? for PM_MODULE_NODE
Ruby code:
```ruby
defined?(module M; end)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,16)>
0000 putobject "expression" ( 59)[Li]
...
eileencodes (Eileen Uchitelle)
10:21 PM Revision a9a22b9f (git): [Prism] Implement defined? for PM_MATCH_REQUIRED_NODE
Ruby code:
```ruby
defined?(1 => 1)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,16)>
0000 putobject "expression" ( 59)[Li]
0002 le...
eileencodes (Eileen Uchitelle)
10:21 PM Revision b40fc4f0 (git): [Prism] Implement defined? for PM_MATCH_WRITE_NODE
Ruby code:
```ruby
defined?(/(?<foo>bar)/ =~ 'barbar')
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,35)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1,...
eileencodes (Eileen Uchitelle)
10:21 PM Revision a2092ef2 (git): [Prism] Implement defined? for PM_IF_NODE
Ruby code:
```ruby
defined?(if true; 1; end)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,43)>
0000 putobject "expression" ( 59)[Li...
eileencodes (Eileen Uchitelle)
10:21 PM Revision fb1eed3f (git): [Prism] Implement defined? for PM_FOR_NODE
Ruby code:
```ruby
defined?(for i in [1,2] do; i; end)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,43)>
0000 putobject "expression" ...
eileencodes (Eileen Uchitelle)
10:21 PM Revision 7460820f (git): [Prism] Implement defined? for PM_DEF_NODE
Ruby code:
```ruby
defined?(def prism_test_def_node; end)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,43)>
0000 putobject "expression" ...
eileencodes (Eileen Uchitelle)
10:21 PM Revision 30e7dbb7 (git): [Prism] Implement defined? for PM_CLASS_NODE
Ruby code:
```ruby
defined?(class PrismClassA; end)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,43)>
0000 putobject "expression" ( ...
eileencodes (Eileen Uchitelle)
10:21 PM Revision 9bcd42c3 (git): [Prism] Implement defined? for PM_CASE_MATCH_NODE
Ruby code:
```ruby
defined?(case [1, 2, 3]; in [1, 2, 3]; 4; end)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,43)>
0000 putobject "expression" ...
eileencodes (Eileen Uchitelle)
10:21 PM Revision 75bed8c6 (git): [Prism] Implement defined? for PM_CASE_NODE
Ruby code:
```ruby
defined?(case :a; when :a; 1; else; 2; end)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,43)>
0000 putobject "expression" ...
eileencodes (Eileen Uchitelle)
10:20 PM Revision a25c6fd9 (git): [PRISM] Fix test spelling `RescueModifer` -> `RescueModifier`
`RescueModifier` was spelled wrong. Not a big deal, but it meant I
didn't immediately find the test when I was searching for it while
working on implementing `defined?` nodes.
eileencodes (Eileen Uchitelle)
10:07 PM Revision 9f0d3896 (git): [PRISM] Refactor keyword hash nodes
Follow up to #9540. peterzhu2118 (Peter Zhu)
10:07 PM Revision 00f9456f (git): [PRISM] Remove unnecessary flag setting
VM_CALL_KW_SPLAT and VM_CALL_KW_SPLAT_MUT are guaranteeed to be set in
this code path, so we don't need to set it again.
peterzhu2118 (Peter Zhu)
09:17 PM Revision c546ee3b (git): Remove SizedQueue#freeze
Queue#freeze uses the same C function, so SizedQueue#freeze can use
that via normal method lookup.
jeremyevans (Jeremy Evans)
09:08 PM Revision e1bae2c6 (git): [Prism] Implement defined? for PM_INDEX_OR_WRITE_NODE
Ruby code:
```ruby
defined?([0][0] ||= 1)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,58)>
0000 putobject "assignment" ( 59)[Li]
0...
eileencodes (Eileen Uchitelle)
09:08 PM Revision ff54a8f4 (git): [Prism] Implement defined? for PM_INDEX_OPERATOR_WRITE_NODE
Ruby code:
```ruby
defined?([0][0] += 1)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,58)>
0000 putobject "assignment" ( 59)[Li]
00...
eileencodes (Eileen Uchitelle)
09:08 PM Revision f8ef77af (git): [Prism] Implement defined? for PM_INDEX_AND_WRITE_NODE
Ruby code:
```ruby
defined?([0][0] &&= 1)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,58)>
0000 putobject "assignment" ( 59)[Li]
0...
eileencodes (Eileen Uchitelle)
09:08 PM Revision e217c577 (git): [Prism] Implement defined? for PM_CONSTANT_PATH_WRITE_NODE
Ruby code:
```ruby
defined?(Prism::CPWN = 1)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,58)>
0000 putobject "assignment" ( 59)[Li...
eileencodes (Eileen Uchitelle)
09:08 PM Revision 54b8330e (git): [Prism] Implement defined? for PM_CONSTANT_PATH_OR_WRITE_NODE
Ruby code:
```ruby
defined?(Prism::CPOrWN ||= 1)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,58)>
0000 putobject "assignment" ( 59...
eileencodes (Eileen Uchitelle)
09:08 PM Revision 3c9dc2f8 (git): [Prism] Implement defined? for PM_CONSTANT_PATH_OPERATOR_WRITE_NODE
Ruby code:
```ruby
defined?(Prism::CPOWN += 1)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,58)>
0000 putobject "assignment" ( 59)[...
eileencodes (Eileen Uchitelle)
09:08 PM Revision 98d6f503 (git): [Prism] Implement defined? for PM_CONSTANT_PATH_AND_WRITE_NODE
Ruby code:
```ruby
defined?(Prism::CPAWN &&= 1)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,58)>
0000 putobject "assignment" ( 59)...
eileencodes (Eileen Uchitelle)
09:08 PM Revision 7522e867 (git): [Prism] Implement defined? for PM_CALL_OR_WRITE_NODE
Ruby code:
```ruby
defined?(PrismTestSubclass.test_call_or_write_node ||= 1)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,58)>
0000 putobject "as...
eileencodes (Eileen Uchitelle)
09:08 PM Revision 9c5391d7 (git): [Prism] Implement defined? for PM_CALL_OPERATOR_WRITE_NODE
Ruby code:
```ruby
defined?(PrismTestSubclass.test_call_operator_write_node += 1)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,58)>
0000 putobject ...
eileencodes (Eileen Uchitelle)
09:08 PM Revision f657fd15 (git): [Prism] Implement defined? for PM_CALL_AND_WRITE_NODE
Ruby code:
```ruby
defined?(PrismTestSubclass.test_call_and_write_node &&= 1)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,58)>
0000 putobject "a...
eileencodes (Eileen Uchitelle)
08:51 PM Revision a6e924cf (git): [PRISM] Fix crash in compile_prism
If the argument is not a file or a string, it assumes it's a string
which will crash because RSTRING_PTR and RSTRING_LEN assumes it's a
string.
peterzhu2118 (Peter Zhu)
08:04 PM Revision b0a32b72 (git): [PRISM] Enable more btests
kddnewton (Kevin Newton)
07:45 PM Revision ebc47046 (git): [PRISM] Fix indentation in pm_setup_args [ci skip]
peterzhu2118 (Peter Zhu)
07:35 PM Revision b2c12bfd (git): [ruby/prism] Document order of scopes in parsing options
https://github.com/ruby/prism/commit/908e92a695 andrykonchin (Andrew Konchin)
06:17 PM Revision f43a919b (git): [PRISM] Fix fallthrough for PM_ENSURE_NODE
This caused it to fall into PM_ELSE_NODE which caused ensure nodes to be
compiled twice.
Fixes ruby/prism#2176.
peterzhu2118 (Peter Zhu)
05:47 PM Revision de9411c0 (git): [ruby/prism] Test version: 3.3.0
https://github.com/ruby/prism/commit/94ecb366c4 k0kubun (Takashi Kokubun)
05:47 PM Revision 27d81b92 (git): [ruby/prism] Guard 3.3.0 for pinned it
https://github.com/ruby/prism/commit/9778377b12
Co-authored-by: Kevin Newton <kddnewton@gmail.com>
k0kubun (Takashi Kokubun)
05:47 PM Revision e0d60a83 (git): [ruby/prism] Fix => ^it
https://github.com/ruby/prism/commit/24a2872b4e k0kubun (Takashi Kokubun)
05:47 PM Revision bcc4b07c (git): [ruby/prism] Add a documentation about 0it
https://github.com/ruby/prism/commit/313be8e3f7 k0kubun (Takashi Kokubun)
05:47 PM Revision 603f2ca7 (git): [ruby/prism] Parse `it` default parameter
https://github.com/ruby/prism/commit/a0c5361b9f k0kubun (Takashi Kokubun)
05:42 PM Revision cd429091 (git): [ruby/prism] Wording in node field comments
https://github.com/ruby/prism/commit/c9c913ee99 kddnewton (Kevin Newton)
05:35 PM Revision 32cbbfc9 (git): [ruby/prism] Added descriptive comments
https://github.com/ruby/prism/commit/2695ae115d nikhilbhatt (Nikhil Bhatt)
05:35 PM Revision 5273c4c9 (git): [ruby/prism] Document AndNode and OrNode
https://github.com/ruby/prism/commit/a925856c2b nikhilbhatt (Nikhil Bhatt)
05:30 PM Feature #20108: Introduction of Happy Eyeballs Version 2 (RFC8305) in Socket.tcp
If you are running a dual-stack network setup, it seems reasonable to have this enabled by default. However, if you are running a pure-IPv4 or pure-IPv6 network, this adds a lot of overhead for no benefit. I think three changes should ... jeremyevans0 (Jeremy Evans)
01:29 PM Feature #20108: Introduction of Happy Eyeballs Version 2 (RFC8305) in Socket.tcp
shugo (Shugo Maeda) wrote in #note-1:
> Is there no way to disable Happy Eyeballs?
> ...
There is no way to disable it; HE is intended to avoid fatal delays. Introducing a way to disable it for performance seems to me to add complexity...
shioimm (Misaki Shioi)
02:55 AM Feature #20108: Introduction of Happy Eyeballs Version 2 (RFC8305) in Socket.tcp
shioimm (Misaki Shioi) wrote:
> In exchange, the performance of `Socket.tcp` with HEv2 will be degraded.
> ...
Is there no way to disable Happy Eyeballs?
I'm not sure, but it may have more impact in local networks.
shugo (Shugo Maeda)
05:13 PM Revision e1751b2e (git): [ruby/openssl] test/openssl/test_ocsp.rb: fix flaky test
Fixes: https://github.com/ruby/openssl/issues/695
https://github.com/ruby/openssl/commit/95281fe4a9
rhenium (Kazuki Yamaguchi)
05:09 PM Revision 4f634d3c (git): [ruby/openssl] Add support for IO#timeout.
(https://github.com/ruby/openssl/pull/714)
* Add support for IO#timeout.
https://github.com/ruby/openssl/commit/3bbf5178a9
Samuel Williams
05:08 PM Misc #20191 (Rejected): Deprecate magic encoding comment
I would like to ask that we deprecate the magic encoding comment, and instead require all source files to be encoded in UTF-8.
There would be many benefits to the performance of both the parser and compiler. It would also help to simp...
kddnewton (Kevin Newton)
04:41 PM Revision 6213ab1a (git): [ruby/openssl] Only set min_version on OpenSSL < 1.1.0
Both Red Hat and Debian-like systems configure the minimum TLS version
to be 1.2 by default, but allow users to change this via configs.
On Red Hat and derivatives this happens via crypto-policies[1], which in
writes settings in /etc/cr...
Ewoud Kohl van Wijngaarden
04:35 PM Revision 947194aa (git): [PRISM] Fix memory leak of ST table
This commit fixes a memory leak in rb_translate_prism because the ST
table is never freed. There are still more memory leaks which still need
to be fixed.
For example:
10.times do
100_000.times do
RubyVM::InstructionS...
peterzhu2118 (Peter Zhu)
04:28 PM Bug #5179: Complex#rationalize and to_r with approximate zeros
I'm working on to_r at https://github.com/ruby/ruby/pull/9581.
I will do for other methods later.
mrkn (Kenta Murata)
04:27 PM Misc #20075: DevMeeting-2024-01-17
* [Ticket #20080] Introduce #bounds method on Range (stuyam)
* Easier serialization of ranges, easy array deconstruction for setting `begin` and `end` as variable.
stuyam (Stuart Yamartino)
12:27 AM Misc #20075: DevMeeting-2024-01-17
- [Feature #20108] Introduction of Happy Eyeballs Version 2 (RFC8305) in Socket.tcp (shioimm)
- Can this be merged? Or is there something more to consider?
shioimm (Misaki Shioi)
03:57 PM Revision 78ad91f8 (git): [Prism] Fix more method call argumnents
In #2087 it was noted that there was a bug in the number of arguments in
`SplatNode` and `KeywordHashNode`. I looked into this with Aaron before
the linked PR was merged and we found a bunch of cases that weren't
working quite right. Thi...
eileencodes (Eileen Uchitelle)
03:52 PM Revision 03645d1e (git): YJIT: Support empty splat and some block_arg calls to ivar getters (#9567)
These seem odd at first glance, but they're used with `...` calls with
`Module#delegate` from Active Support. These account for ~3% of fallback
reasons in the `lobsters` benchmark.
alanwu (Alan Wu)
03:51 PM Revision 3f23cb1a (git): [ruby/prism] Remove flag gating for 3.3.0 bug fixes
https://github.com/ruby/prism/commit/64baf94271 kddnewton (Kevin Newton)
03:36 PM Feature #20102: Introduce `Fiber#resuming?`
It appears to me that the method you want is to determine if an exception can legitimately be sent to the fiber. I am not rejecting the addition of such a method, but in that case, I think the name `resuming?` would be inappropriate. Any... matz (Yukihiro Matsumoto)
03:35 PM Revision afba09d3 (git): YJIT: specialized codegen for integer right shift (#9564)
* YJIT: specialized codegen for integer right shift
Used in optcarrot. May also be used to write pure-Ruby gems.
No overflow check or fixnum untagging required.
* Update yjit/src/codegen.rs
Co-authored-by: Takashi Kokubun <takashikkbn...
maximecb (Maxime Chevalier-Boisvert)
03:17 PM Revision 63ff29cd (git): [Prism] Fix return test
This test didn't work as is because it causes a SyntaxError. Instead we
need to put the `defined?(return)` into a method and call that. I double
checked that on the `master` branch this returns an Unsupported node
error.
eileencodes (Eileen Uchitelle)
03:17 PM Revision dcf9d77b (git): [Prism] Implement defined? for PM_BEGIN_NODE
Ruby code:
```ruby
defined?(begin; 1; end)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,23)>
0000 putobject "expression" ( 59)[Li]
...
eileencodes (Eileen Uchitelle)
03:17 PM Revision 338aa465 (git): [Prism] Implement defined? for PM_RETRY_NODE
Ruby code:
```ruby
defined?(retry)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,15)>
0000 putobject "expression" ( 59)[Li]
0002 lea...
eileencodes (Eileen Uchitelle)
03:17 PM Revision 8774abad (git): [Prism] Implement defined? for PM_RETURN_NODE
Ruby code:
```ruby
defined?(return)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,16)>
0000 putobject "expression" ( 59)[Li]
0002 le...
eileencodes (Eileen Uchitelle)
03:17 PM Revision d0a7c33f (git): [Prism] Implement defined? for PM_REDO_NODE
Ruby code:
```ruby
defined?(redo)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,14)>
0000 putobject "expression" ( 59)[Li]
0002 leav...
eileencodes (Eileen Uchitelle)
03:17 PM Revision 2697acf7 (git): [Prism] Implement defined? for PM_INTERPOLATED_X_STRING_NODE
Ruby code:
```ruby
defined?(`echo #{1}`)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,21)>
0000 putobject "expression" ( 59)[Li]
00...
eileencodes (Eileen Uchitelle)
03:17 PM Revision e0c90199 (git): [Prism] Implement defined? for PM_INTERPOLATED_SYMBOL_NODE
Ruby code:
```ruby
defined?(:"1 #{1 + 2} 1")
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,25)>
0000 putobject "expression" ( 59)[Li...
eileencodes (Eileen Uchitelle)
03:17 PM Revision 25f1a8e4 (git): [Prism] Implement defined? for PM_DEFINED_NODE
Ruby code:
```ruby
defined?(defined?(a))
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,21)>
0000 putobject "expression" ( 59)[Li]
00...
eileencodes (Eileen Uchitelle)
03:17 PM Revision 82ed9095 (git): [Prism] Implement defined? for PM_BREAK_NODE
Ruby code:
```ruby
defined?(break)
```
Instructions:
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,15)>
0000 putobject "expression" ( 59)[Li]
0002 lea...
eileencodes (Eileen Uchitelle)
03:17 PM Revision 0c814092 (git): [Prism] Implement defined for PM_NEXT_NODE
Ruby code:
```ruby
defined?(next)
```
Instructions
```
"********* Ruby *************"
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(59,15)>
0000 putobject "expression" ( 59)[Li]
0002 leave...
eileencodes (Eileen Uchitelle)
03:15 PM Revision 3a7ad808 (git): [PRISM] Fix test_compile_prism_with_file
The test should be testing RubyVM::InstructionSequence.compile_prism
with a file but it is instead passing the file path (which is a string)
which raises a SyntaxError because it is not Ruby syntax.
peterzhu2118 (Peter Zhu)
02:48 PM Revision ef4a08eb (git): [PRISM] Fix stack inconsistency in MultiWriteNode
eightbitraptor (Matt V-H)
01:54 PM Revision e17c83e0 (git): Fix memory leak in String#tr and String#tr_s
rb_enc_codepoint_len could raise, which would cause the memory in buf
to leak.
For example:
str1 = "\xE0\xA0\xA1#{" " * 100}".force_encoding("EUC-JP")
str2 = ""
str3 = "a".force_encoding("Windows-31J")
10.times do
...
peterzhu2118 (Peter Zhu)
01:26 PM Revision 67a545b3 (git): * expand tabs. [ci skip]
Please consider using misc/expand_tabs.rb as a pre-commit hook. git[bot]
01:26 PM Revision 13879fea (git): [ruby/prism] Fix prism brace association for constant-like method/local calls
https://github.com/ruby/prism/commit/8ca24f263e HParker (Adam Hess)
12:22 PM Bug #19246: Rebuilding the loaded feature index much slower in Ruby 3.1
> That doesn't sound like it's doing a copy.
My mad, you are right, I missed the `copy` argument is passed as false.
Honestly I think we could change that. Feature names are generally small, it wouldn't be a noticeable performance ...
byroot (Jean Boussier)
12:17 PM Bug #19246: Rebuilding the loaded feature index much slower in Ruby 3.1
byroot (Jean Boussier) wrote in #note-11:
> > But the current API rb_provide isn't ideal for this scenario. Partly because the string passed in needs to always live.
> ...
The comment for `rb_fstring_cstr`:
```
rb_fstring_new and rb...
thomthom (Thomas Thomassen)
10:37 AM Revision c68ce6f7 (git): Skip checking for symbol leaks in libruby.so linking extensions
The libruby.so linking extension libraries contain symbols exported
from extension libraries, and is not subject of test-leaked-globals.
nobu (Nobuyoshi Nakada)
09:50 AM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
(BTW, to me, the fact that an `autoload` is just a trigger and does not require the constant to be defined in its receiver is dubious too. But that would be for a different thread.) fxn (Xavier Noria)
09:40 AM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
I tried, the current behavior does not make a lot of sense to me:
```ruby
File.write('/tmp/bar.rb', 'Bar = 1; raise')
autoload :Bar, '/tmp/bar'
Bar rescue nil
p Object.const_source_location(:Bar) # ["foo.rb", 2]
p Object.autoload?(:Bar...
fxn (Xavier Noria)
09:26 AM Revision 6215b5ba (git): Fix off-by-one error of argc
Fix ruby/ruby#9562 nobu (Nobuyoshi Nakada)
09:19 AM Feature #18576: Rename `ASCII-8BIT` encoding to `BINARY`
> Such incompatibility is not acceptable.
In all honesty, a selective application of this dogma doesn’t always look justified.
For better or worse, we break compatibility constantly.
One of the recent telling examples was the remo...
zverok (Victor Shepelev)
08:36 AM Feature #18576: Rename `ASCII-8BIT` encoding to `BINARY`
@naruse no one is denying that there is private code out there that will be broken by such change. The question is how much and how hard it would be to detect and fix, and how much the change improve Ruby for its users.
We regularly m...
byroot (Jean Boussier)
08:26 AM Feature #18576: Rename `ASCII-8BIT` encoding to `BINARY`
Even if you "fix" gems, the number of affected gems insists there are as many as private rails applications.
Such incompatibility is not acceptable.
naruse (Yui NARUSE)
08:28 AM Bug #20155: Using value of rb_fiber_scheduler_current() crashes Ruby
I knew it's something embarrassing like that. Adding `#include <ruby/fiber/scheduler.h>` actually helped. Thanks a lot. paddor (Patrik Wenger)
01:42 AM Bug #20155: Using value of rb_fiber_scheduler_current() crashes Ruby
Here is an example of valid usage:
```ruby
static VALUE
call_rb_fiber_scheduler_block(VALUE mutex)
{
return rb_fiber_scheduler_block(rb_fiber_scheduler_current(), mutex, Qnil);
}
```
taken from `thread_sync.c`.
When I ...
ioquatix (Samuel Williams)
12:32 AM Bug #20155: Using value of rb_fiber_scheduler_current() crashes Ruby
You're right. It was line 28, the one with `rb_fiber_scheduler_block(scheduler, blocker, timeout)`.
I just ran it again with the commit I just pushed (which enables the bad line in the test `#test_fiber_blocking_in_ext` on line 44):
...
paddor (Patrik Wenger)
07:39 AM Feature #19742: Introduce `Module#anonymous?`
I have all these matters in my mind pretty clearly (and I am writing a book about constants), but in case someone is reading and is not used to the orthogonality of all this, you can even have a permanent name set that is not reachable e... fxn (Xavier Noria)
06:39 AM Feature #19742: Introduce `Module#anonymous?`
Same. The name is called "permanent" because it does not change, the predicate above would be `reachable_through_its_name?`.
But then, the Ruby language does no have any expectation about the name of classes and modules. If there was so...
fxn (Xavier Noria)
12:39 AM Feature #19742: Introduce `Module#anonymous?`
@ioquatix I think your definition of "permanent" doesn't quite work, semantically. A name can be said to be permanent if doesn't change (even after remove_const for example). What you have there is the opposite; if a module stops being p... Dan0042 (Daniel DeLorme)
04:36 AM Feature #20182: Rewrite Array#each in Ruby
Accepted. For the individual concerns:
1. I'd like to keep race condition safety to be about the same as the current implementation using primitives, unless it's too difficult.
2. If the user intentionally redefines the fundamental m...
matz (Yukihiro Matsumoto)
04:13 AM Revision 42168802 (git): Bump actions/cache from 3.3.3 to 4.0.0
Bumps [actions/cache](https://github.com/actions/cache) from 3.3.3 to 4.0.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.co...
dependabot[bot]
03:49 AM Revision 6b11cfe0 (git): Bump actions/cache in /.github/actions/setup/directories
Bumps [actions/cache](https://github.com/actions/cache) from 3.3.3 to 4.0.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.co...
dependabot[bot]
03:39 AM Revision bf254b4d (git): Omit low-memory test on old platforms
nobu (Nobuyoshi Nakada)
02:57 AM Revision 2c3876be (git): Bump ruby/setup-ruby from 1.165.1 to 1.167.0
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.165.1 to 1.167.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Commits](https://github.com/ruby/setup-ruby/compare/360dc864d5da99d54fcb8e9148c14a84b9...
dependabot[bot]
01:31 AM Revision 8642a573 (git): Rename BUILTIN_ATTR_SINGLE_NOARG_INLINE
to BUILTIN_ATTR_SINGLE_NOARG_LEAF
The attribute was created when the other attribute was called BUILTIN_ATTR_INLINE.
Now that the original attribute is renamed to BUILTIN_ATTR_LEAF, it's
only confusing that we call it "_INLINE".
k0kubun (Takashi Kokubun)
01:27 AM Revision e37a37e6 (git): Drop obsoleted BUILTIN_ATTR_NO_GC attribute
The thing that has used this in the past was very buggy, and we've never
revisied it. Let's remove it until we need it again.
k0kubun (Takashi Kokubun)
01:17 AM Bug #20185: String#ascii_only? buggy in ruby 3.3
No, `Fix https://bugs.ruby-lang.org/issues/20185`of commit message is not correct format for redmine autolink. hsbt (Hiroshi SHIBATA)
12:48 AM Revision 1addb395 (git): [ruby/psych] Provide a 'Changelog' link on rubygems.org/gems/psych
By providing a 'changelog_uri' in the metadata of the gemspec
a 'Changelog' link will be shown on https://rubygems.org/gems/psych
which makes it quick and easy for someone to check on the changes
introduced with a new version.
Details o...
Mark Young
12:45 AM Revision 77593495 (git): [ruby/psych] issue #443: drop special tests for y, Y, n, N since they covered in the more general test
https://github.com/ruby/psych/commit/6750b35402 colindkelley (Colin Kelley)
12:45 AM Revision 8ae24e6b (git): [ruby/psych] issue #443: quote Y and N when dumping
https://github.com/ruby/psych/commit/93c8fb443a colindkelley (Colin Kelley)
12:02 AM Revision cf8fb942 (git): CHECK_LEAKS is always enabled with 01459f1
hsbt (Hiroshi SHIBATA)

01/16/2024

11:54 PM Revision b4ed5b7d (git): Bump the required BASERUBY version to 2.7 (#9566)
[[Misc #16671]](https://bugs.ruby-lang.org/issues/16671) k0kubun (Takashi Kokubun)
11:29 PM Revision 88bb09b3 (git): Update bundled gems list at 6c016a4197c233b08a038e3ae7bc91 [ci skip]
git[bot]
11:28 PM Revision 6c016a41 (git): Inject base64 for basic auth examples of bundler
hsbt (Hiroshi SHIBATA)
11:28 PM Revision 42aa24a2 (git): No longer needed to sync base64
hsbt (Hiroshi SHIBATA)
11:28 PM Revision afb30eb2 (git): spec/mspec/tool/wrap_with_guard.rb 'ruby_version_is ""..."3.4"' spec/ruby/library/base64/**/*_spec.rb
hsbt (Hiroshi SHIBATA)
11:28 PM Revision 05e79826 (git): Document about base64 at Ruby 3.4
hsbt (Hiroshi SHIBATA)
11:28 PM Revision 4e2eca3b (git): Extract base64 as bundled gems
hsbt (Hiroshi SHIBATA)
11:16 PM Bug #20155: Using value of rb_fiber_scheduler_current() crashes Ruby
Line 29 does not point to any meaningful statement: https://github.com/paddor/fiber_blocker/blob/main/ext/fiber_blocker/fiber_blocker.c#L29 - can you check it? ioquatix (Samuel Williams)
11:01 PM Bug #20155: Using value of rb_fiber_scheduler_current() crashes Ruby
Thanks for looking into this. I'm pretty sure it was that one (initial) commit in the fiber_blocker repo. My extension (a PR for the rbnng gem [1]) would ideally block/unblock fibers using NNG's `nng_aio_*()` functions [2]. That's how I ... paddor (Patrik Wenger)
09:27 PM Bug #20155: Using value of rb_fiber_scheduler_current() crashes Ruby
Here is the implementation from CRuby:
```c
static VALUE
rb_fiber_scheduler_current_for_threadptr(rb_thread_t *thread)
{
VM_ASSERT(thread);
if (thread->blocking == 0) {
return thread->scheduler;
}
els...
ioquatix (Samuel Williams)
09:17 PM Bug #20155: Using value of rb_fiber_scheduler_current() crashes Ruby
Can you tell me the exact commit/revision which was running:
```
/home/user/dev/oss/async_ruby_test/rbnng/fiber_blocker/lib/fiber_blocker/fiber_blocker.so(block_fiber+0x4a) [0x7f1554ad430a] ../../../../ext/fiber_blocker/fiber_blocker...
ioquatix (Samuel Williams)
09:00 PM Bug #20155 (Assigned): Using value of rb_fiber_scheduler_current() crashes Ruby
Thanks for the report, I'll need to investigate. ioquatix (Samuel Williams)
08:46 PM Bug #20155: Using value of rb_fiber_scheduler_current() crashes Ruby
@ioquatix Could you have a look at this? I have a feeling I'm missing something obvious. paddor (Patrik Wenger)
11:13 PM Feature #19742: Introduce `Module#anonymous?`
I think we can assume this is a fair definition, but I'd like to confirm it with @matz:
```ruby
class Module
def permanent?
if name = self.name
Object.const_get(name).equal?(self)
end
rescue NameError
false
end
...
ioquatix (Samuel Williams)
10:51 PM Feature #19742: Introduce `Module#anonymous?`
@jeremyevans0 I agree.
My defense of `anonymous == name.nil?` is based on the meaning of the adjective, as you said. You are anonymous unless you have a name. The discrepancy in this thread comes from "I have use cases in which I want t...
fxn (Xavier Noria)
10:36 PM Feature #19742: Introduce `Module#anonymous?`
I'm against `Module#anonymous?`, because it's ambiguous. I would expect modules with temporary and not permanent names to be anonymous. If you could never refer to module by absolute constant reference, I would expect it to be should b... jeremyevans0 (Jeremy Evans)
10:33 PM Feature #19742: Introduce `Module#anonymous?`
Correction: I have looked at the logs. It was introduced because of conciseness initially (the same way in Ruby we prefer `array.empty?` to `array.length == 0`, you prefer a method that captures the meaning). Right after that, the abstra... fxn (Xavier Noria)
10:24 PM Feature #19742: Introduce `Module#anonymous?`
@Dan0042 right, it could be the case that in Rails anything autoloadable has a permanent name and that has made the predicate sufficient in practice after 3.0. I introduced that predicate myself back in 2010 because you got an empty stri... fxn (Xavier Noria)
10:03 PM Feature #19742: Introduce `Module#anonymous?`
In Rails this method is used for things like `name.underscore unless anonymous?` so it's pretty clear to me it should return true in case of a temporary name, otherwise `name.underscore` results in garbage like `"#<module:0x00007fe87f033... Dan0042 (Daniel DeLorme)
08:41 PM Feature #19742: Introduce `Module#anonymous?`
@Dan0042 yes, there are different points of view expressed, and at some point Ruby core will take one direction or another.
In my personal proposal, none of those objects are `anonymous?`, because, for me, a temporary name is a name. An...
fxn (Xavier Noria)
08:40 PM Feature #19742: Introduce `Module#anonymous?`
Ah BTW one line below that link we see something interesting which can be repro'd on CRuby like:
```ruby
irb(main):006:0> m = Module.new
=> #<Module:0x00007fd24624d540>
irb(main):007:0> m::C = Class.new
=> #<Module:0x00007fd24624d54...
Eregon (Benoit Daloze)
08:37 PM Feature #19742: Introduce `Module#anonymous?`
Agreed, `anonymous?` seems not well defined for the temporary name case.
In fact I would think of `anonymous?` as `!fully_named` and indeed for the anecdote TruffleRuby already has this meaning for anonymous [internally](https://github....
Eregon (Benoit Daloze)
08:22 PM Feature #19742: Introduce `Module#anonymous?`
After reading all the above it doesn't seem like there's a clear agreement on what this proposed `#anonymous?` is supposed to be. If it's just equivalent to `.name.nil?` then what is the point? Else, what is the behavior exactly?
```rub...
Dan0042 (Daniel DeLorme)
11:36 AM Feature #19742: Introduce `Module#anonymous?`
@ko1 I think that is a good direction, because with the introduction of temporary names as a blessed concept with API and all, I believe there are several matching APIs that may arise. One proposal could be:
```
Module#name ->...
fxn (Xavier Noria)
04:35 AM Feature #19742: Introduce `Module#anonymous?`
Another idea is introducing `#permanent_name` for Ruby 3.2's name which returns nil if it is not named. ko1 (Koichi Sasada)
09:54 PM Revision 2bf99701 (git): YJIT: Finer breakdown for block_arg counters
For example, on `lobsters` the block_arg reason was at ~10%. With this
change it shows that 6% of that is `send_cfunc_block_arg`.
alanwu (Alan Wu)
09:19 PM Revision 5471f99e (git): [PRISM] Fix memory leak when compiling file
There is a memory leak when passing a file to
RubyVM::InstructionSequence.compile_prism because it does not free the
mapped file.
For example:
require "tempfile"
Tempfile.create(%w"test_iseq .rb") do |f|
f.puts "name = '...
peterzhu2118 (Peter Zhu)
08:46 PM Bug #20188: `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
Maybe the idea was because of autoload thread-safety the value is not published to other threads until the autoload completes, and so maybe const_source_location was done that way too.
I don't see the need to delay that though as it shou...
Eregon (Benoit Daloze)
09:25 AM Bug #20188 (Closed): `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing
Ref: https://github.com/fxn/zeitwerk/issues/281
`const_source_location` keeps returning the location of the `autoload` call, even after the real constant was defined. It only starts returning the real constant location once the autolo...
byroot (Jean Boussier)
08:29 PM Bug #20189: `rb_str_resize` does not clear coderange when expanding
byroot (Jean Boussier) wrote in #note-5:
> I must admit I'm not very familiar with wide char encodings, but this surprises me a bit. Ruby strings should always have their terminator, so I don't see how expanding a string would change th...
Eregon (Benoit Daloze)
02:08 PM Bug #20189: `rb_str_resize` does not clear coderange when expanding
> Expanding string in some encoding (utf16 utf32) can change coderange to either valid or broken,
I must admit I'm not very familiar with wide char encodings, but this surprises me a bit. Ruby strings should always have their terminat...
byroot (Jean Boussier)
01:32 PM Bug #20189: `rb_str_resize` does not clear coderange when expanding
Seems commit:b0b9f7201acab05c2a3ad92c3043a1f01df3e17f. nobu (Nobuyoshi Nakada)
01:31 PM Bug #20189: `rb_str_resize` does not clear coderange when expanding
I think so. sjis char does not end with null bytes, other encoding seems same too.
~~~ruby
Encoding.list.select {|e|
256.times.any? do |first_byte|
a = first_byte.chr
b = a + "\0";
# only one of \x??\x00 and \x?? is...
tompng (tomoya ishida)
01:20 PM Bug #20189: `rb_str_resize` does not clear coderange when expanding
Does this happen only with wide-char encoding? nobu (Nobuyoshi Nakada)
12:56 PM Bug #20189 (Open): `rb_str_resize` does not clear coderange when expanding
Expanding string in some encoding (utf16 utf32) can change coderange to either valid or broken, but rb_str_resize does not clear coderange.
This will cause a bug in c-extension libraries that use rb_str_resize.
~~~ruby
# Example f...
tompng (tomoya ishida)
08:25 PM Revision 7b6731b1 (git): [ruby/prism] Provide abstract methods in Prism::Node
To make typechecking easier.
https://github.com/ruby/prism/commit/8f96877d7a
kddnewton (Kevin Newton)
08:23 PM Bug #20185: String#ascii_only? buggy in ruby 3.3
Indeed on Redmine I see no link to the commit in https://bugs.ruby-lang.org/issues/20185?tab=history#note-2, it seems like a bug. Eregon (Benoit Daloze)
08:17 PM Bug #20185: String#ascii_only? buggy in ruby 3.3
Apologies everyone, got temporary redmine visual impairment. Thank you. chucke (Tiago Cardoso)
07:30 PM Bug #20185: String#ascii_only? buggy in ruby 3.3
chucke (Tiago Cardoso) wrote in #note-3:
> nobu, can I ask why was the ticket closed? Even considering the comment from andrykonchin, he clearly points oot at the end that there are bytes greater than 128 in the string (therefore `.asci...
jeremyevans0 (Jeremy Evans)
07:19 PM Bug #20185: String#ascii_only? buggy in ruby 3.3
nobu, can I ask why was the ticket closed? Even considering the comment from andrykonchin, he clearly points oot at the end that there are bytes greater than 128 in the string (therefore `.ascii_only?` should be false). chucke (Tiago Cardoso)
03:11 PM Bug #20185 (Closed): String#ascii_only? buggy in ruby 3.3
nobu (Nobuyoshi Nakada)
08:10 PM Feature #18057: Introduce Array#mean
Was this proposal rejected? matheusrich (Matheus Richard)
07:19 PM Revision 8cbba87c (git): [ruby/prism] Add parse options to JavaScript's parsePrism function
https://github.com/ruby/prism/commit/d7fe7c7ae7 Cameron Dutro
07:01 PM Revision d124124c (git): [ruby/prism] Fix up gemspec
https://github.com/ruby/prism/commit/82e3126762 kddnewton (Kevin Newton)
06:47 PM Revision 8bf12d7b (git): [ruby/prism] First pass at documenting information about the CRuby compiler
https://github.com/ruby/prism/commit/b575914b2f jemmai (Jemma Issroff)
06:21 PM Bug #14607 (Closed): Fix use of the rb_profile_frames start parameter
jeremyevans0 (Jeremy Evans)
06:14 PM Bug #14607: Fix use of the rb_profile_frames start parameter
> The original patch has a merge conflict. However, I have opened a pull request with the fix for this issue (https://github.com/ruby/ruby/pull/2713) that has been rebased to resolve the merge conflict.
The github PR has been merged, ...
dylants (Dylan Thacker-Smith)
05:55 PM Revision 07b9b534 (git): [PRISM] Fix crash with empty ensure blocks
Fixes ruby/prism#2179. peterzhu2118 (Peter Zhu)
05:43 PM Revision 7bd7030a (git): [PRISM] Replace local lookup recursion with loop
eightbitraptor (Matt V-H)
05:43 PM Revision 70a8ed07 (git): [PRISM] Don't allocate labels when not needed
The labels lstart, lend, lcont are only needed when there is a rescue
clause. They are not needed when there is only an ensure clause or
neither.
peterzhu2118 (Peter Zhu)
04:12 PM Revision 1caa881a (git): [PRISM] Fix splat assignment
Fixes ruby/prism#2177 peterzhu2118 (Peter Zhu)
03:51 PM Revision c5e43da4 (git): [ruby/prism] Correct the "ambiguous first argument" condition
Fix https://github.com/ruby/prism/pull/2182
This change reflects this line:
https://github.com/ruby/ruby/blob/6283ae8d369bd2f8a022bb69bc5b742c58529dec/parse.y#L11124.
https://github.com/ruby/prism/commit/a52588ff37
make_now_just (Hiroya Fujinami)
03:06 PM Revision 6283ae8d (git): [ruby/stringio] Update the coderange after overwrite
Fix https://bugs.ruby-lang.org/issues/20185
https://github.com/ruby/stringio/commit/8230552a46
nobu (Nobuyoshi Nakada)
02:58 PM Revision fef8ccff (git): Rename pm_lookup_local_index_any_scope
Now it's the only local lookup function we can just call it
pm_lookup_local_index
eightbitraptor (Matt V-H)
02:58 PM Revision 543bd7f3 (git): Remove scope_node->local_depth_offset
eightbitraptor (Matt V-H)
02:58 PM Revision 1b97f611 (git): Remove pm_lookup_local_index_with_depth
eightbitraptor (Matt V-H)
02:58 PM Revision 0d705b34 (git): Remove the found_depth pointer
Now that we're returning pm_local_index_t eightbitraptor (Matt V-H)
02:58 PM Revision da383c0d (git): Return pm_local_index_t when looking up local indexes
instead of returning the index and updating found_depth in the parent
scope
eightbitraptor (Matt V-H)
02:58 PM Revision f4b299a1 (git): Bind index & depth together into pm_local_index_t
eightbitraptor (Matt V-H)
02:58 PM Revision 3d45b743 (git): Replace pm_lookup_local_index with lookup_local_index_with_depth
eightbitraptor (Matt V-H)
02:58 PM Bug #5179: Complex#rationalize and to_r with approximate zeros
`Complex(re, im.to_r).to_r` looks good to me if `im` is not `0` or `0r`. `Complex(re, im.to_i).to_i` is also OK for me in the same manner.
`Complex(re, im.to_f).to_f` cannot resolve the problem the current `to_f` holds. I don't have...
mrkn (Kenta Murata)
02:18 PM Revision ade56737 (git): Fix coderange of invalid_encoding_string.<<(ord)
Appending valid encoding character can change coderange from invalid to valid.
Example: "\x95".force_encoding('sjis')<<0x5C will be a valid string "\x{955C}"
tompng (tomoya ishida)
01:47 PM Bug #20190 (Closed): `invalid_encoding_string << number` should be valid encoding in some case, but does not
In some encoding, appending ascii char might change invalid encoding string to valid. But it does not.
~~~ruby
# encoding: utf-8
valid = '表'.encode('sjis')
valid.bytes
# => [0x95, 0x5c]
s = valid.byteslice(0, 1)
p s.valid_encodi...
tompng (tomoya ishida)
01:32 PM Revision 0520e967 (git): [PRISM] Fix defined? for chained calls
Fixes ruby/prism#2148. peterzhu2118 (Peter Zhu)
01:13 PM Revision d6b6e14c (git): Specify ruby mode [ci skip]
nobu (Nobuyoshi Nakada)
11:29 AM Revision 01459f16 (git): Set `CHECK_LEAKS` in spec/default.mspec
Because of `.NOEXPORT:` in template/Makefile.in, variables in
common.mk will not be exported.
nobu (Nobuyoshi Nakada)
09:34 AM Bug #20169: `GC.compact` can raises `EFAULT` on IO
Thought: we could probably remove the need for the read barrier if we swept the heap, and _then_ compacted. So we wouldn't free any objects in between moving things and updating refs. It would mean scanning the first half of each heap tw... kjtsanaktsidis (KJ Tsanaktsidis)
08:49 AM Bug #19857: Eval coverage is reset after each `eval`.
> When I started developing the covearge library, I decided that its target is "source files that actually exist".
I completely agree with this and I don't think that statement has any bearing on this proposal.
> ...
Makes sense.
...
ioquatix (Samuel Williams)
07:47 AM Bug #19857 (Rejected): Eval coverage is reset after each `eval`.
Sorry, but I am not keen on this proposal. Let me reject this once.
When I started developing the covearge library, I decided that its target is "source files that actually exist".
The measured coverage is visually observed by a huma...
mame (Yusuke Endoh)
08:40 AM Feature #20187: Bundled gems at Ruby 3.4
I already done to extract `mutex_m` and `getoptlong`. Now I'm working `base64` and `bigdecimal`. hsbt (Hiroshi SHIBATA)
08:39 AM Feature #20187 (Closed): Bundled gems at Ruby 3.4
This ticket is for tracking bundled gems status at Ruby 3.4.
I added warnings for bundled gems of Ruby 3.3 at https://bugs.ruby-lang.org/issues/19351 and https://bugs.ruby-lang.org/issues/19776.
I started to extract(promote) target...
hsbt (Hiroshi SHIBATA)
08:09 AM Revision 9f026800 (git): Removed sample code for net-imap. net-imap is alread extracted as bundled gems
hsbt (Hiroshi SHIBATA)
08:07 AM Revision ee405518 (git): Update bundled gems list at 4b6936aa047158c98a9ac8861d51e5 [ci skip]
git[bot]
08:07 AM Revision 4b6936aa (git): Unbundled samples for getoptlong
hsbt (Hiroshi SHIBATA)
08:07 AM Revision 3f501617 (git): We don't need to sync getoptlong
hsbt (Hiroshi SHIBATA)
08:07 AM Revision 326288c5 (git): Document about getoptlong at Ruby 3.4
hsbt (Hiroshi SHIBATA)
08:07 AM Revision b3ff5649 (git): spec/mspec/tool/wrap_with_guard.rb 'ruby_version_is ""..."3.4"' spec/ruby/library/getoptlong/**/*.rb
hsbt (Hiroshi SHIBATA)
08:07 AM Revision b68dab2d (git): Extract getoptlong as bundled gems
hsbt (Hiroshi SHIBATA)
07:29 AM Revision c5d54e1d (git): We don't need to sync mutex_m
hsbt (Hiroshi SHIBATA)
07:24 AM Revision 26cf40aa (git): Always enabled leakchecker by ruby/mspec
hsbt (Hiroshi SHIBATA)
06:39 AM Bug #20186 (Open): Ripper does not generate AST for some keywords in Ruby 3.3
Ripper does not generate AST for the below keyword:
- break
- next
- redo
- retry
- yield
Ruby 3.2
```
$ ruby -v
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
$ ruby -rripper -e "p Ripper.sexp('break')"
[:pr...
kzkn (Kazuki Nishikawa)
04:18 AM Feature #20182: Rewrite Array#each in Ruby
> As discussed on the PR I think this can be solved by using a Primitive which does both things atomically.
After filing this ticket, we built a nice solution using Primitive https://github.com/ruby/ruby/pull/9533. It wasn't straightfor...
k0kubun (Takashi Kokubun)
03:44 AM Revision 924f3907 (git): Enable spec_guards with 3.3
nobu (Nobuyoshi Nakada)
03:43 AM Revision be7c91db (git): Do not pollute toplevel namespace
nobu (Nobuyoshi Nakada)
01:04 AM Revision 0abbab9e (git): [Bug #20184] Test for low memory
nobu (Nobuyoshi Nakada)

01/15/2024

10:35 PM Revision 6a1bf4cf (git): YJIT: optimized codegen for String#length (#9543)
Minor optimization for programs doing string processing. maximecb (Maxime Chevalier-Boisvert)
10:12 PM Revision 6a175902 (git): [PRISM] Fix keyword splat inside of array
Fixes ruby/prism#2155. peterzhu2118 (Peter Zhu)
08:28 PM Feature #20182: Rewrite Array#each in Ruby
> or are users supposed to avoid mutating the array in the middle of its loop?
Not supporting to mutate the array while looping would be a pretty big incompatibility as written in https://github.com/ruby/ruby/pull/6687#discussion_r101...
Eregon (Benoit Daloze)
05:07 PM Feature #20164: Add Exception#deconstruct_keys
palkan (Vladimir Dementyev) wrote in #note-1:
> The question is what keys must be supported for each standard exception class?
I computed a quick list and it would look something like this.
```
Exception ...
Dan0042 (Daniel DeLorme)
04:27 PM Revision cc7b19e0 (git): [DOC] Improve docs for GC.compact
peterzhu2118 (Peter Zhu)
03:32 PM Revision 5e61cc26 (git): YJIT: Optimize Integer#succ (#9519)
k0kubun (Takashi Kokubun)
02:58 PM Revision 7c6d7fbc (git): [PRISM] Fix case without predicate
Fixes ruby/prism#2149. peterzhu2118 (Peter Zhu)
02:04 PM Revision e0312f90 (git): [ruby/pp] Print beginless ranges properly
Instead of displaying the start of the range as nil
https://github.com/ruby/pp/commit/1df210d903
segiddins (Samuel Giddins)
05:49 AM Feature #19057: Hide implementation of `rb_io_t`.
Are you saying that in general:
```
struct A {
int x;
float y;
char z;
struct S s;
};
```
and
```
struct B {
int x;
float y;
};
```
That reinterpreting a pointer to A as a pointer to B, and accessing f...
ioquatix (Samuel Williams)
03:32 AM Feature #19057: Hide implementation of `rb_io_t`.
"ioquatix (Samuel Williams) via ruby-core" <ruby-core@ml.ruby-lang.org> wrote:
> - unicorn has merged a fix but it is not released: https://yhbt.net/unicorn.git/63c85c4282d15e22bd32a905883d2d0e149619d1/s/
> - kgio has merged a fix but...
Anonymous
05:25 AM Bug #20169: `GC.compact` can raises `EFAULT` on IO
I spent some more time today studying this problem. This is what I've learned so far. I'm definitely far from an expert in the mechanics of how GC's work, so please jump in and correct me if you are!
1. Obviously, as @luke-gru suggest...
kjtsanaktsidis (KJ Tsanaktsidis)
03:15 AM Revision 9c329989 (git): Bump actions/upload-artifact from 4.0.0 to 4.1.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/c7d193...
dependabot[bot]
12:35 AM Revision dde21a79 (git): Explicitly convert between `VALUE` and `st_data_t`
nobu (Nobuyoshi Nakada)

01/14/2024

11:15 PM Bug #20185: String#ascii_only? buggy in ruby 3.3
I cannot reproduce the issue with plain String (without StringIO) on Ruby 3.2, 3.1 and 3.0. `ascii_only?` reports `false` for "богус":
```
ruby -e 'p "богус".ascii_only?'
false
```
I believe in the examples involving StringIO the obser...
andrykonchin (Andrew Konchin)
03:10 PM Bug #20185 (Closed): String#ascii_only? buggy in ruby 3.3
This was the smallest reduction of the bug I could come up with:
require "stringio"
puts StringIO::VERSION
def is_ascii(buffer)
str = buffer.string
puts "\"#{str}\" is ascii: #{str.ascii_only?}"
en...
chucke (Tiago Cardoso)
10:10 PM Bug #20184: Ruby segfaults on Fly.io with 256 MB RAM
I also wonder if we should add some CI for running ruby on a low memory/virtual memory constrained system. ioquatix (Samuel Williams)
10:09 PM Bug #20184: Ruby segfaults on Fly.io with 256 MB RAM
I was also investigating this issue.
On low-memory systems (< ~400MB RAM+Swap), `Init_default_shapes` will fail and cause Ruby to segfault later.
Even something as simple as `ruby -e "puts 123"` will fail.
The 2nd `mmap` in `shape.c` ...
ioquatix (Samuel Williams)
03:20 PM Bug #20184 (Closed): Ruby segfaults on Fly.io with 256 MB RAM
commit:8b8dcc7af174def5216044019c1d3e42edfdc7cf should have fixed this. nobu (Nobuyoshi Nakada)
03:07 PM Bug #20184: Ruby segfaults on Fly.io with 256 MB RAM
In shape.c:Init_default_shapes(), the result of `mmap` for `rb_shape_tree_ptr->shape_cache` seems unchecked.
I'm not sure if it can continue without `shape_cache`.
nobu (Nobuyoshi Nakada)
01:09 PM Bug #20184 (Closed): Ruby segfaults on Fly.io with 256 MB RAM
I've been running a Ruby 3.2 app on Fly.io with 256 MB RAM and it has been working fine.
When I upgraded to Ruby 3.3.0, any Ruby script would crash immediately with a segfault.
I haven't been able to reproduce it outside of fly.io.
...
aalin (Andreas Alin)
09:49 PM Bug #18805 (Closed): IO::Buffer is inconsistent when returning a string from an empty buffer
Fixed in https://github.com/ruby/ruby/commit/c5cf4d4e129f64cb69aaf0a829aed068ef1943c4 ioquatix (Samuel Williams)
02:59 AM Bug #18805: IO::Buffer is inconsistent when returning a string from an empty buffer
As a 2nd issue was created about the similar issue, I think it's worth improving.
See https://github.com/ruby/ruby/pull/9532 for the proposed changes.
ioquatix (Samuel Williams)
09:48 PM Bug #19542 (Closed): Operations on zero-sized IO::Buffer are raising
Applied in https://github.com/ruby/ruby/commit/c5cf4d4e129f64cb69aaf0a829aed068ef1943c4 ioquatix (Samuel Williams)
02:58 AM Bug #19542: Operations on zero-sized IO::Buffer are raising
See https://github.com/ruby/ruby/pull/9532 for the proposed changes. ioquatix (Samuel Williams)
02:21 AM Bug #19542: Operations on zero-sized IO::Buffer are raising
I am okay to make this work as you propose, however it should be noted, in C, you cannot provide `NULL` and size=0 to memcpy or similar functions (see https://stackoverflow.com/questions/5243012/is-it-guaranteed-to-be-safe-to-perform-mem... ioquatix (Samuel Williams)
09:47 PM Revision c5cf4d4e (git): Improve behavioural consistency of unallocated (zero length) `IO::Buffer`. (#9532)
This makes the behaviour of IO::Buffer.new(0) and IO::Buffer.new.slice(0, 0) consistent.
Fixes https://bugs.ruby-lang.org/issues/19542 and https://bugs.ruby-lang.org/issues/18805.
Samuel Williams
08:01 PM Bug #19916 (Closed): URI#to_s can serialize to a value that doesn't deserialize to the original
jeremyevans0 (Jeremy Evans)
07:41 PM Bug #20064 (Closed): Inconsistent behavior between array splat *nil and hash splat **nil
Applied in changeset commit:git|5c823aa686a5549649df4af86d173bebed2418e1.
----------
Support keyword splatting nil
nil is treated similarly to the empty hash in this case, passing
no keywords and not calling any conversion methods.
Fi...
jeremyevans (Jeremy Evans)
07:41 PM Revision 5c823aa6 (git): Support keyword splatting nil
nil is treated similarly to the empty hash in this case, passing
no keywords and not calling any conversion methods.
Fixes [Bug #20064]
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
jeremyevans (Jeremy Evans)
02:38 PM Revision 77241324 (git): Skip checking for symbol leaks in libruby.a linking extensions
The libruby.a linking extension libraries contain symbols exported
from extension libraries, and is not subject of test-leaked-globals.
nobu (Nobuyoshi Nakada)
01:27 PM Revision 338eb006 (git): [ruby/strscan] StringScanner#captures: Return nil not "" for
unmached capture
(https://github.com/ruby/strscan/pull/72)
fix https://github.com/ruby/strscan/issues/70
If there is no substring matching the group (s[3]), the behavior is
different.
If there is no substring matching the group, the co...
naitoh (Jun NAITOH)
08:55 AM Revision 0610f555 (git): Constify `rb_global_parser_config`
nobu (Nobuyoshi Nakada)
07:59 AM Bug #20181 (Closed): Process.wait(-1) doesn't report exited child processes if WAITPID_USE_SIGCHLD is enabled
byroot (Jean Boussier)
05:19 AM Bug #20183 (Closed): `erb/escape.so` cannot be loaded when `--with-static-linked-ext`
Since `cgi/escape.c` and `erb/escape.c` are both initialized by `Init_escape()` functions, both call the same function in `extinit.c`.
nobu (Nobuyoshi Nakada)
04:31 AM Feature #18035: Introduce general model/semantic for immutability.
> If this is accepted, should Data classes all be immutable? To quote the docs:
By default, it does not look like Data is considered immutable as nested values can mutate.
However, this proposal would allow for immutable Data instances...
ioquatix (Samuel Williams)
03:12 AM Feature #18035: Introduce general model/semantic for immutability.
It's not just about performance, it's about providing strong interface guarantees and making sure users don't violate those guarantees accidentally. e.g.
```ruby
THINGS = [1, 2, 3]
def things
return THINGS
end
# user code:
my_things...
ioquatix (Samuel Williams)
03:30 AM Feature #19057: Hide implementation of `rb_io_t`.
Latest update:
- unicorn has merged a fix but it is not released: https://yhbt.net/unicorn.git/63c85c4282d15e22bd32a905883d2d0e149619d1/s/
- kgio has merged a fix but it is not released: https://yhbt.net/kgio.git/dbf5290cf9f89174f6b35a5...
ioquatix (Samuel Williams)
03:20 AM Feature #19057: Hide implementation of `rb_io_t`.
Related PR: https://github.com/ruby/ruby/pull/9530 ioquatix (Samuel Williams)
12:31 AM Feature #20182: Rewrite Array#each in Ruby
I think this is a great idea and would like to see more of Ruby implemented in Ruby. The smaller the C implementation becomes, the better, for all the stated reasons, but also additionally, it's cleaner and easier to understand.
Regardi...
ioquatix (Samuel Williams)
 

Also available in: Atom