Project

General

Profile

Activity

From 05/15/2023 to 05/21/2023

05/21/2023

11:49 PM Revision 872249e2 (git): Don't leak pipes. (#7820)
Samuel Williams
06:20 PM Feature #19559: Introduce `Symbol#+@` and `Symbol#-@`, and eventually replace boolean arguments with symbols
sawa (Tsuyoshi Sawada) wrote in #note-17:
> I recalled that Ruby had adopted community conduct guideline https://www.ruby-lang.org/en/conduct/, whose third point says:
> ...
I’ve stayed out of this for the most part, but I want to addr...
austin (Austin Ziegler)
03:50 PM Feature #19559: Introduce `Symbol#+@` and `Symbol#-@`, and eventually replace boolean arguments with symbols
matz (Yukihiro Matsumoto) wrote in #note-16:
> You should have expressed that you felt it was rude to treat a serious proposal as an April Fool's joke. ... [T]hat doesn't mean you should ask for the comment to be deleted or banned. I ...
sawa (Tsuyoshi Sawada)
03:41 PM Feature #19644: Module::current to complement Module::nesting
ioquatix (Samuel Williams) wrote:
> In some cases, where things like `Module.nesting[n]` is too slow, having an argument like `Module.nesting(n)` or such which gets the first `n`
`Module.nesting(n)` does address the perf aspect, but it...
bughit (bug hit)
03:34 PM Feature #19682: ability to get a reference to the "default definee"
ioquatix (Samuel Williams) wrote in #note-12:
> In some cases, where things like `Module.nesting[n]` is too slow, having an argument like `Module.nesting(n)` or such which gets the first `n`
You appear to be commenting on #19644, no...
bughit (bug hit)
12:16 PM Feature #19682: ability to get a reference to the "default definee"
In some cases, where things like `Module.nesting[n]` is too slow, having an argument like `Module.nesting(n)` or such which gets the first `n` values can reduce the cost of the method call. I think such a feature can be reasonable, howev... ioquatix (Samuel Williams)
02:00 PM Revision 7f7a8fa5 (git): Put `rb_fork` back into process.c
Now, calling `rb_fork` directly breaks the PID cache and the timer
thread, so must use `rb_fork_ruby` or similar instead.
nobu (Nobuyoshi Nakada)
10:51 AM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
> has test coverage here, therefore this is deliberate.
Note that this isn't necessarily true. The spec was added by Alan as part of an optimization, but that doesn't mean it was necessarily intended behavior, as in it was trying to ...
byroot (Jean Boussier)
09:37 AM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
OK, I think the discussion to have in the meeting is reduced to one simple question only. Let me explain.
The behaviour I have learnt regarding temp names "owned" by other anonymous modules has test coverage [here](https://github.com/ru...
fxn (Xavier Noria)
07:10 AM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
LOL, it turns out reproducing the non-determinism is trivial. So, on one hand we have the original example:
```ruby
m = Module.new
m::C = Class.new
m::D = m::C
M = m
M::C.name # => "M::D", unexpected
```
In my machine, just i...
fxn (Xavier Noria)
07:47 AM Revision 08675889 (git): Use `rb_fork_ruby` for `--help` pager
Instead of `rb_fork`, to update `current_fork_gen` which has been
introduced at 3563e1383fe4ce13168cd3b9f4d5222d69d00061.
Otherwise, the forked process attempts to stop the timer thread, but
raises an exception because the thread is not...
nobu (Nobuyoshi Nakada)
07:44 AM Revision 4f4bc13e (git): Skip too-complex-shape test which is always flaky regardless JIT
nobu (Nobuyoshi Nakada)
03:29 AM Bug #19683 (Closed): ruby-3.3.0-preview1 does not build with BSD make without --with-baseruby
ruby-3.3.0-preview1 does not build with BSD make without `--with-baseruby`. However, it builds fine with GNU make and when using BSD make with `--with-baseruby`. Previous Ruby tarball releases have built fine with BSD make without `--wi... jeremyevans0 (Jeremy Evans)
02:57 AM Revision 64e156f2 (git): [ruby/irb] Fix typo (https://github.com/ruby/irb/pull/587)
* Fix typo
* s/braking/breaking/g
Co-authored-by: Stan Lo <stan001212@gmail.com>
---------
https://github.com/ruby/irb/commit/5f8e69f5f2
Co-authored-by: Stan Lo <stan001212@gmail.com>
ima1zumi (Mari Imaizumi)
01:31 AM Revision a997f144 (git): Skip first if flaky [ci skip]
nobu (Nobuyoshi Nakada)
12:59 AM Revision 1dd5427a (git): Fix typo in spec file description [ci skip]
fixed typo for spec description Ivanov-Anton

05/20/2023

10:42 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
One imaginary rule (in the sense that I do not know if it is real) that could be at play here could be: If you are a class/mod object reachable through a constant path, necessarily you have a permanent name. Which one? Whatever comes fir... fxn (Xavier Noria)
10:29 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
@byroot agree we are reaching a point in which we need some authoritative answer saying: This is how it is supposed to work.
I was surprised by the edition of names you do not "own", I had never tried this. I'd expect those to be skippe...
fxn (Xavier Noria)
06:15 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
> it's not 100% certain not clearing it on remove_const was a feature or an oversight.
Interesting datapoint on this part:
```ruby
A = Class.new
B = A
Object.send(:remove_const, :A)
p B.name
```
From `1.8` to `2.3` -> `"B"`...
byroot (Jean Boussier)
06:10 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
So to clarify my thinking, my own mental model, or interpretation of Ruby's intent, is that whichever constant you assign a Module/Class to become it's name, and that's final and permanent.
```ruby
C = Class.new
D = C
Object.remove...
byroot (Jean Boussier)
03:19 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
That's a really interesting example.
There if the result would be `N::X` (as I believe https://github.com/ruby/ruby/pull/7829 would do), that would be very surprising, nobody ever assigned this class to N::X.
I think that shows the value...
Eregon (Benoit Daloze)
03:07 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
I have run another experiment that may weaken my point about the trailing segment being invariant:
```ruby
m = Module.new
m::X = Class.new
puts m::X.name # => #<Module:0x000000010bf14a80>::X 👍
n = Module.new
n::Y = m::X
puts n::Y.name ...
fxn (Xavier Noria)
02:12 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
So, I'd like to summarize the points in this discussion.
On one hand, we have a segment changed here:
```ruby
m = Module.new
class m::C; end
p m::C.name # => "#<Module:0x000000010789fbe0>::C"
m::D = m::C
p m::D.name # => "#<Module:0x...
fxn (Xavier Noria)
12:29 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
By "broken" I just mean it no longer reflects a valid way to access that module, that's all, no more than that. Eregon (Benoit Daloze)
12:23 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
No, `N.name` is not broken! It is just the way it works in Ruby.
You cannot claim something is broken because it does not satisfy a property that nobody is claiming it is satisfied!
fxn (Xavier Noria)
12:19 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
Eregon (Benoit Daloze) wrote in #note-8:
> The final/permanent name of a Module should reflect how to access it, and this should hold for e.g. A::B as long as no one does `A.remove_const :B` or `A::B = ...` (or `const_set` obviously).
> ...
Eregon (Benoit Daloze)
12:17 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
Oh yes, what I wanted to mean is that TruffleRuby has things modeled so that what I believe is the correct behaviour is easy to implement. You grab the object, if its name is not permanent ask for its basename and make it permanent, the ... fxn (Xavier Noria)
11:09 AM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
fxn (Xavier Noria) wrote in #note-11:
> @Eregon and BTW, your implementation have things ready and squared with the Ruby model. First assignment sets that basename (I understand). So, when the constants are recursively iterated, you use...
Eregon (Benoit Daloze)
11:03 AM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
fxn (Xavier Noria) wrote in #note-10:
> @Eregon, as I said, there is no requirement that names are reachable constant paths.
For `Module#name` in general, no, but once there is a permanent/non-anonymous (= starts with `#<`) name, the...
Eregon (Benoit Daloze)
11:01 AM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
@Eregon and BTW, your implementation have things ready and squared with the Ruby model. First assignment sets that basename (I understand). So, when the constants are recursively iterated, you use the basename of the object stored in the... fxn (Xavier Noria)
10:54 AM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
@Eregon, as I said, there is no requirement that names are reachable constant paths. So the fact that they might not be is irrelevant. They were not constant paths with a `#<Module:0x000000010789fbe0>` prefix for starters.
And at the ...
fxn (Xavier Noria)
10:48 AM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
In case it's not clear, the problem with the current PR is it would return `M::C` for that last line, but that's a lie, because `M::C` would be `NameError: uninitialized constant M::C`. While M::D is the correct way to refer to that clas... Eregon (Benoit Daloze)
10:41 AM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
byroot (Jean Boussier) wrote in #note-4:
> @Eregon I don't think that's correct, as the first assigned name persists:
But only because you never give it a permanent name to `m`, so of course it just uses the anonymous/partial name it...
Eregon (Benoit Daloze)
10:18 AM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
Let me elaborate the alignment I see.
In Ruby, these lines are different:
```ruby
C = Class.new
d = C
D = C
```
The first line creates a class object and assigns it to a constant. At that point, it gets its name, because it is the fir...
fxn (Xavier Noria)
10:06 AM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
Philosopher hat on :): I am surprised that this feature (permanent names) exists at all, really. The Ruby model does not have a tree of objects, it has a graph of modules and constants and that is all.
Class and module objects are objec...
fxn (Xavier Noria)
12:11 AM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
I was trying it on ruby head. I don't think the fact I couldn't reproduce it really matters - I just thought I'd give you feedback since I tried it. It's an interesting bug. ioquatix (Samuel Williams)
08:40 PM Revision b3f355cf (git): Set rlimit_nproc to 64 instead of 128 on OpenBSD for spawn_too_long_path tests
This significantly reduces testing time, and may allow the test to
pass before timeout in CI.
jeremyevans (Jeremy Evans)
07:39 PM Feature #19644: Module::current to complement Module::nesting
Eregon (Benoit Daloze) wrote in #note-5:
> > Could be useful for debugging/logging.
> ...
They could be if invoked frequently enough.
>
> ...
Module::nesting[0] has to walk and build the entire nesting chain. This is undesirable if you...
bughit (bug hit)
12:41 PM Feature #19644 (Rejected): Module::current to complement Module::nesting
> Could be useful for debugging/logging.
Those are not performance critical, so `Module::nesting[0]` is enough.
You also don't want to provide a concrete example where it's a clear gain, OK, let's close then until there is a clear ...
Eregon (Benoit Daloze)
10:51 AM Feature #19644: Module::current to complement Module::nesting
In a module body it's the same.
So why do you need it? Isn't it trivially accessible via other ways?
Eregon (Benoit Daloze)
07:24 PM Feature #19682: ability to get a reference to the "default definee"
Eregon (Benoit Daloze) wrote in #note-10:
> bughit (bug hit) wrote in #note-8:
> ...
You have posted a bunch of confused nonsense here. First you wanted to dupe this on the premise the `Module.nesting[0] == "default definee"`. Then you...
bughit (bug hit)
07:09 PM Feature #19682: ability to get a reference to the "default definee"
bughit (bug hit) wrote in #note-8:
> Looks like you need these context references so you can figure out how ruby works.
> ...
I think these qualify as potential violations of the code of conduct, which you can see at https://www.ruby-l...
Eregon (Benoit Daloze)
06:21 PM Feature #19682: ability to get a reference to the "default definee"
bughit (bug hit) wrote in #note-8:
> Not clear to me how you can implement these concepts and still be confused about the differences among self, Module::nesting[0] and "default definee".
I am not confused, you misunderstood my reply...
Eregon (Benoit Daloze)
06:05 PM Feature #19682: ability to get a reference to the "default definee"
> @bughit This is a bit insulting, I know how Ruby work, I implemented all these concepts in TruffleRuby.
> ...
Not clear to me how you can implement these concepts and still be confused about the differences among self, Module::nesting...
bughit (bug hit)
12:43 PM Feature #19682 (Open): ability to get a reference to the "default definee"
I didn't mean to close this one, only #19644, seems it's automatic somehow if linked as duplicate? Eregon (Benoit Daloze)
12:41 PM Feature #19682 (Rejected): ability to get a reference to the "default definee"
Eregon (Benoit Daloze)
12:39 PM Feature #19682: ability to get a reference to the "default definee"
> Looks like you need these context references so you can figure out how ruby works.
@bughit This is a bit insulting, I know how Ruby work, I implemented all these concepts in TruffleRuby.
The point is these things are things Ruby ne...
Eregon (Benoit Daloze)
11:06 AM Feature #19682: ability to get a reference to the "default definee"
Eregon (Benoit Daloze) wrote in #note-2:
> Seems a duplicate of #19644.
Let's see. You thought Module::nesting[0] was the same as self. And now you think Module::nesting[0] is the same as "default definee". Wrong on both counts. Looks l...
bughit (bug hit)
10:51 AM Feature #19682: ability to get a reference to the "default definee"
Seems a duplicate of #19644.
Again, why do you need it?
I think there is no chance to add something without a concrete use case/example, as I said in https://bugs.ruby-lang.org/issues/19644#note-1
Eregon (Benoit Daloze)
12:43 PM Revision 8d242a33 (git): `rb_bug` prints a newline after the message
nobu (Nobuyoshi Nakada)
12:02 PM Feature #19643 (Closed): Direct primitive compare sort for Array#sort_by
Applied in changeset commit:git|87217f26f120611d009f1b178d3cc5eaf1b8b515.
----------
[Feature #19643] Direct primitive compare sort for `Array#sort_by`
In most of case `sort_by` works on primitive type.
Using `qsort_r` with function po...
nekoyama32767 (Jinsong Yu)
10:40 AM Revision 87217f26 (git): [Feature #19643] Direct primitive compare sort for `Array#sort_by`
In most of case `sort_by` works on primitive type.
Using `qsort_r` with function pointer is much slower than compare data directly.
I implement an intro sort which compare primitive data directly for `sort_by`.
We can even afford an O(n...
nekoyama32767 (Jinsong Yu)
10:31 AM Feature #19642: Remove vectored read/write from `io.c`.
"ioquatix (Samuel Williams) via ruby-core" <ruby-core@ml.ruby-lang.org> wrote:
> ```
> irb(main):001:0> $stderr.sync
> => true
> irb(main):002:0> $stdout.sync
> => true
> ```
>
> It looks like `$stdout` and `$stderr` are both b...
Anonymous
09:32 AM Revision 892798ca (git): Update default gems list at 8db13c179e475e99f6155eb85f196a [ci skip]
git[bot]
09:31 AM Revision 8db13c17 (git): [ruby/reline] Bump version to 0.3.4
(https://github.com/ruby/reline/pull/538)
https://github.com/ruby/reline/commit/1fb0753bc1
ima1zumi (Mari Imaizumi)
07:42 AM Revision 41512cd1 (git): Lrama v0.5.1
yui-knk (Kaneko Yuichiro)
04:28 AM Revision 9ce6c08c (git): [ruby/irb] Add assertion for dynamic_prompt's assertion execution
(https://github.com/ruby/irb/pull/586)
Because the assertions for `dynamic_prompt` lives inside a block given to
`RubyLex`, they could be skipped unnoticed if the setup is not correct.
This commit adds a simple assertion to check if th...
st0012 (Stan Lo)
01:08 AM Revision 6d9875cc (git): [ruby/irb] Fix dynamic_prompt test not executed, remove unnecessary
set_input
(https://github.com/ruby/irb/pull/585)
https://github.com/ruby/irb/commit/b5f3efdcf0
tompng (tomoya ishida)

05/19/2023

07:35 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
@Eregon I don't think that's correct, as the first assigned name persists:
```ruby
m = Module.new
class m::C; end
p m::C.name # => "#<Module:0x000000010789fbe0>::C"
m::D = m::C
p m::D.name # => "#<Module:0x000000010789fbe0>::...
byroot (Jean Boussier)
05:41 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
TruffleRuby remembers the given basename (`C` in this case) as a separate field, so that's similar to your approach.
But I think we need to validate the module is still reachable through that basename, otherwise we would name it incor...
Eregon (Benoit Daloze)
02:51 PM Bug #19681: The final classpath of partially named modules is sometimes inconsistent once permanently named
Would it make sense to store insertion order or otherwise store the order (or what is an alias) so that the constant names could be resolved correctly?
I could not reproduce the bug with the given repro, I assume it only occurs sometimes.
ioquatix (Samuel Williams)
02:08 PM Bug #19681 (Closed): The final classpath of partially named modules is sometimes inconsistent once permanently named
Reported to me by @fxn
```ruby
m = Module.new
class m::C; end
p m::C.name # => "#<Module:0x000000010789fbe0>::C"
m::D = m::C
p m::D.name # => "#<Module:0x000000010789fbe0>::C"
M = m
p M::C.name # => "M::D"
```
Expect...
byroot (Jean Boussier)
06:29 PM Feature #19682 (Rejected): ability to get a reference to the "default definee"
https://blog.yugui.jp/entry/846
"default definee" is a pretty important context so why not make it easy to identify?
Could be a Module class method or a global method (Kernel) or a keyword.
bughit (bug hit)
06:19 PM Feature #19644: Module::current to complement Module::nesting
Eregon (Benoit Daloze) wrote in #note-1:
> Is `self` not enough? This needs a concrete use case.
`Module::nesting[0]` is the current lexically open module/class, its not `self`
bughit (bug hit)
05:55 PM Feature #19644: Module::current to complement Module::nesting
Is `self` not enough? This needs a concrete use case. Eregon (Benoit Daloze)
05:46 PM Feature #19520: Support for `Module.new(name)` and `Class.new(superclass, name)`.
ioquatix (Samuel Williams) wrote in #note-42:
> This isn't just about exception messages. Any time such an object is printed, e.g. via `irb`, a log message, any kind of formatted output, it is less informative without the proposed featu...
Eregon (Benoit Daloze)
04:03 AM Feature #19520: Support for `Module.new(name)` and `Class.new(superclass, name)`.
> OTOH, I feel it's enough to get the file:line from the backtrace to investigate/debug/fix when a NoMethodError or similar happens with such an instance of an anonymous class.
This isn't just about exception messages. Any time such a...
ioquatix (Samuel Williams)
04:23 PM Feature #19634: Pattern matching dynamic key
I count 44 instances of this in our production code (~100k lines of Elixir), but I don’t think I’ve ever used key and value pinning as shown in the examples above.
But dynamic key matching is precisely what is required when it is requ...
austin (Austin Ziegler)
04:02 PM Feature #19634: Pattern matching dynamic key
______________________________________________ Anonymous
02:55 PM Bug #18743: Enumerator#next / peek re-use each others stacktraces
The exceptions are already being chained through `cause`, but I've just updated the tests to make this fact clearer.
Indeed a new exception is created every time. Initially I looked for an API to simply update the backtrace on the exi...
marcper (Marcelo Pereira)
01:48 PM Revision e8c9f727 (git): [ruby/irb] Simplify each_top_level_statement
(https://github.com/ruby/irb/pull/576)
* Simplify each_top_level_statement, reduce instance vars
* Update lib/irb/ruby-lex.rb
Co-authored-by: Stan Lo <stan001212@gmail.com>
* Remove unused ltype from TestRubyLex#check_state response
...
tompng (tomoya ishida)
10:04 AM Feature #19236: Allow to create hashes with a specific capacity from Ruby
This was discussed in the last dev meeting. The conclusion was:
> In 3.3 it throws error all keyword arguments to Hash.new. Then Ruby 3.4 allows that Hash.new will accept capacity keyword argument.
byroot (Jean Boussier)
09:42 AM Feature #19610 (Rejected): GC.delay_promotion
Ok, closing in favor of #19678 then. byroot (Jean Boussier)
03:56 AM Revision 875adad9 (git): The too-complex test isn't stablefor RJIT either
https://github.com/ruby/ruby/actions/runs/5020231516 k0kubun (Takashi Kokubun)
02:33 AM Revision b70e3f44 (git): Skip test_dump_too_complex_shape for YJIT for now
It fails too often with YJIT:
* https://github.com/ruby/ruby/actions/runs/5015976941/jobs/8992254690
* https://github.com/ruby/ruby/actions/runs/5017310353/jobs/8995281395
* https://github.com/ruby/ruby/actions/runs/5019625711/jobs/9000...
k0kubun (Takashi Kokubun)
01:33 AM Revision b54b388f (git): [ruby/irb] Display mod key as `Option` on Darwin platforms
(https://github.com/ruby/irb/pull/584)
Check RUBY_PLATFORM for `darwin` and modify the mod key from `Alt` to
`Option`.
adam12 (Adam Daniels)
01:33 AM Feature #19642: Remove vectored read/write from `io.c`.
Thanks Nakamura-san for your feedback.
According to POSIX:
> Atomic/non-atomic: A write is atomic if the whole amount written in one operation is not interleaved with data from any other process. This is useful when there are multi...
ioquatix (Samuel Williams)
01:01 AM Feature #19642: Remove vectored read/write from `io.c`.
If I remember correctly, writev was introduced for atomic writes, not for performance.
(I am neutral to remove writev.)
usa (Usaku NAKAMURA)
12:49 AM Feature #19642: Remove vectored read/write from `io.c`.
Thanks for your feedback Aaron.
The concern is less about the internal overhead.
I'm sure different OS can optimise for different situations, e.g. in some cases I imagine `writev` can be faster than `write` if the system call overhead ...
ioquatix (Samuel Williams)
12:25 AM Revision 74600917 (git): [ruby/openssl] Revert "Skip OpenSSL::TestHMAC#test_dup when running with RHEL9"
This reverts commit https://github.com/ruby/openssl/commit/9493d4a3bb26.
https://github.com/ruby/openssl/commit/b880a023dd
hsbt (Hiroshi SHIBATA)
12:25 AM Revision b26ddfd7 (git): [ruby/openssl] Fix warnings about the OPENSSL_FIPS macro in OpenSSL 1.1.
The commit <https://github.com/ruby/openssl/commit/c5b2bc1268bc> made the warnings below
in the case of OpenSSL 1.1 where the `OPENSSL_FIPS` macro is not defined.
```
$ bundle install --standalone
$ bundle exec rake compile -- \
--wi...
Jun Aruga
12:25 AM Revision 678d41bc (git): [ruby/openssl] Implement FIPS functions on OpenSSL 3.
This commit is to implement the `OpenSSL::OPENSSL_FIPS`, `ossl_fips_mode_get`
and `ossl_fips_mode_set` to pass the test `test/openssl/test_fips.rb`.
It seems that the `OPENSSL_FIPS` macro is not used on the FIPS mode case any
more, and ...
Jun Aruga
12:25 AM Revision 741a3bd5 (git): [ruby/openssl] CI: Add OpenSSL FIPS mode case.
test/openssl/fixtures/ssl/openssl_fips.cnf.tmpl:
I referred to the following document for the openssl config file for FIPS mode.
<https://www.openssl.org/docs/manmaster/man7/fips_module.html>
- Making all applications use the FIPS modul...
Jun Aruga
12:22 AM Bug #19386: `test_hmac.rb` of openssl is timeout on RHEL9
Thanks to track this.
I did upgrade our CI instance.
```
[hsbt@rhel9 ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux release 9.2 (Plow)
```
I try to this test with RHEL 9.2 again.
hsbt (Hiroshi SHIBATA)
12:05 AM Revision 94a513b0 (git): YJIT: Enable debug symbols in dev_nodebug (#7822)
k0kubun (Takashi Kokubun)

05/18/2023

11:42 PM Bug #19680: test_process.rb tests fail sometimes on FreeBSD
Apologies, I accidentally submitted the issue while I was still writing it, just editing the issue to provide some detail now... (OK - done now) kjtsanaktsidis (KJ Tsanaktsidis)
11:41 PM Bug #19680 (Closed): test_process.rb tests fail sometimes on FreeBSD
I've been investigating the repeated failures of test_process.rb on FreeBSD on rubyci. I'm still working on it but I wanted to open this ticket just to keep others in the loop and gather any pointers any of you might have!
These are s...
kjtsanaktsidis (KJ Tsanaktsidis)
08:28 PM Feature #19642: Remove vectored read/write from `io.c`.
I understand the concern of copying the `iovec`, but it seems like the overhead of making N calls to `write` would at some point be more expensive than copying the struct once. I guess under the hood `writev` may just be calling `write`... tenderlovemaking (Aaron Patterson)
03:26 PM Feature #19642: Remove vectored read/write from `io.c`.
I would like to do a more comprehensive review of performance, but it seems minimal, even in the best possible circumstance:
```
| |compare-ruby|built-ruby|
|:---------|-----------:|---------:|
|io_write | 2.098| ...
ioquatix (Samuel Williams)
03:12 PM Feature #19642: Remove vectored read/write from `io.c`.
https://github.com/ruby/ruby/pull/7825 ioquatix (Samuel Williams)
07:20 PM Bug #19386: `test_hmac.rb` of openssl is timeout on RHEL9
RHEL 9.2 was released. The openssl RPM (maybe version 3.0.7. I haven't checked it by myself) on RHEL 9.2 should fix this issue.
https://developers.redhat.com/articles/2023/05/10/how-new-rhel-92-improves-developer-experience
jaruga (Jun Aruga)
07:00 PM Revision cfb79973 (git): [ruby/irb] Refactor RubyLex's input/io methods
(https://github.com/ruby/irb/pull/583)
1. Make `RubyLex#set_input` simply assign the input block. This matches
the behavior of `RubyLex#set_prompt`.
2. Merge `RubyLex#set_input`'s IO configuration logic with `#set_auto_indent`
int...
st0012 (Stan Lo)
06:51 PM Misc #19679 (Closed): Migrate Wiki from bugs.ruby-lang.org to ruby/ruby GitHub repository
# Background
There is currently a Wiki at https://bugs.ruby-lang.org/projects/ruby/wiki which contains documentation of processes, documentation of code, developers' meeting notes, and various other notes.
There are three main prob...
jemmai (Jemma Issroff)
04:17 PM Revision d74b32db (git): change to test/objectspace, don't rely on Object's shape not being "too complex"
luke-gru (Luke Gruber)
04:05 PM Revision 0c3f6992 (git): Introduce gc_mark_table macro
S_H_ (Shun Hiraoka)
02:34 PM Bug #595 (Closed): Fiber ignores ensure clause
https://github.com/ruby/ruby/commit/2df5a697e2726a11f0441b13fb5c73dd549837c8 ioquatix (Samuel Williams)
02:33 PM Revision 2df5a697 (git): Add Fiber#kill, similar to Thread#kill. (#7823)
Samuel Williams
01:21 PM Feature #19610: GC.delay_promotion
I opened #19678. peterzhu2118 (Peter Zhu)
06:14 AM Feature #19610: GC.delay_promotion
Should we edit the title or open another ticket? byroot (Jean Boussier)
01:20 PM Feature #19678 (Closed): Don't immediately promote children of old objects
This is an alternate proposal to #19610 where the feature is not configurable and always enabled.
GitHub Pull Request: https://github.com/ruby/ruby/pull/7821
References from an old object to a write barrier protected young object w...
peterzhu2118 (Peter Zhu)
04:39 AM Feature #19634: Pattern matching dynamic key
Some actual examples of dynamic key matching in Elixir: https://github.com/search?q=%2F%25%5C%7B%5C%5E%2F+&type=code marcandre (Marc-Andre Lafortune)
04:28 AM Feature #19634: Pattern matching dynamic key
FWIW, Elixir actually supports it, but I don't recall seeing it used in the wild
``` elixir
map = %{mentor_name: "Joe"}
value = "Joe"
key = :mentor_name
match?(%{^key => ^value}, map) # => true
```
OTOH, Elixir does not support `[*, ^...
marcandre (Marc-Andre Lafortune)
03:41 AM Feature #19634: Pattern matching dynamic key
Probably, you are proposing `mentor_proposals in ^mentor_name => [*, ^mentee_name, *]`. I still cannot imagine the case where dynamic key is useful.
As far as I know, no other language support dynamic key matching. Please be more concre...
matz (Yukihiro Matsumoto)
03:44 AM Bug #19677 (Closed): Failed to build ruby from the source code when following the guide
jeremyevans0 (Jeremy Evans)
03:30 AM Bug #19677: Failed to build ruby from the source code when following the guide
After the first successful build, I couldn't reproduce the build failure noted above.
In addition to it, the build just after a clean `git clone` finished without errors. So, the build failure may have been triggered by my dirty source ...
tagomoris (Satoshi Tagomori)
02:39 AM Bug #19677 (Closed): Failed to build ruby from the source code when following the guide
I followed the document "Building Ruby" (doc/contributing/building_ruby.md) and got build errors.
At the step of "5. Build Ruby: make install", the errors below happened:
```
MBA:build tagomoris$ make -j 8
BASERUBY = /Users/tagomo...
tagomoris (Satoshi Tagomori)
03:28 AM Revision b695f58d (git): [ruby/irb] Print deprecation warning for `help` command
(https://github.com/ruby/irb/pull/567)
* Give show_doc its own command class
* Print deprecation warning for `help` command
st0012 (Stan Lo)
02:39 AM Feature #19633: Allow passing block to `Kernel#autoload` as alternative to second `filename` argument
> now addressed with packwerk from what I understand.
Ah, not exactly (or at least not entirely), but that's another story! :sob:
shioyama (Chris Salzberg)

05/17/2023

05:14 PM Feature #12165: Hash#first, Hash#last
nobu (Nobuyoshi Nakada) wrote in #note-5:
> Although I've not thought about `Hash#last`, once when `st_table` got keeping the insertion order I proposed `Hash#reverse_each` (`st_reverse_foreach` for it precisely) to matz, but was reject...
bughit (bug hit)
01:37 AM Feature #12165: Hash#first, Hash#last
Although I've not thought about `Hash#last`, once when `st_table` got keeping the insertion order I proposed `Hash#reverse_each` (`st_reverse_foreach` for it precisely) to matz, but was rejected. nobu (Nobuyoshi Nakada)
03:38 PM Feature #19610: GC.delay_promotion
In the developer meeting in Matsumoto, we discussed this ticket. We agreed that making this feature configurable makes the GC harder to use and leaked too many implementation details. We decided to instead make this feature always enable... peterzhu2118 (Peter Zhu)
01:19 PM Revision cea9c30f (git): Move ar_hint to ar_table_struct
This allows Hashes with ST tables to fit int he 80 byte size pool. peterzhu2118 (Peter Zhu)
01:19 PM Revision 0938964b (git): Implement Hash ST tables on VWA
peterzhu2118 (Peter Zhu)
01:19 PM Revision 5199f2aa (git): Implement Hash AR tables on VWA
peterzhu2118 (Peter Zhu)
08:45 AM Feature #19633: Allow passing block to `Kernel#autoload` as alternative to second `filename` argument
Yeah, I understand.
I also have the feeling that you are using an autoloader just because it allows you to plug in some tricks towards your isolation goal. But such feature should come from the language to be real. I mean, if isolatio...
fxn (Xavier Noria)
08:04 AM Feature #19633: Allow passing block to `Kernel#autoload` as alternative to second `filename` argument
Thanks, that makes sense.
In one way we're not far apart. In another, though, I think we still are, because the difference is really between whether control is delegated to the caller or the callee. "isolation", which is what I'm after ...
shioyama (Chris Salzberg)
04:42 AM Revision 264ba0f8 (git): [ruby/irb] Fix Test timedout in test_debug_cmd
(https://github.com/ruby/irb/pull/582)
* Suppress Reline::IOGate.cursor_pos writing escape sequence in test_debug_cmd
* Force use Reline::GeneralIO as Reline::IOGate and remove RUBY_DEBUG_NO_RELINE option for debug test
tompng (tomoya ishida)
02:03 AM Bug #18743: Enumerator#next / peek re-use each others stacktraces
Seems find to me.
One thing I concerned, `stop_exc` will be re-created every times, and no way to know where it was first used up.
How about chaining by `cause`?
```diff
diff --git a/enumerator.c b/enumerator.c
index b33c1713718.....
nobu (Nobuyoshi Nakada)

05/16/2023

07:02 PM Feature #12165: Hash#first, Hash#last
@nobu Since you commented recently, what do you think about about a performant Hash#last(n=1) and a related performant Hash#reverse_each? Shouldn't any ordered collection that supports bidirectional enumeration, have those? bughit (bug hit)
06:41 PM Feature #19644 (Rejected): Module::current to complement Module::nesting
Module::current == Module::nesting[0] but without needlessly walking the entire nesting hierarchy.
Could be useful for debugging/logging.
It could also be a Kernel global (like `__method__`) or a keyword (like `__FILE__`)
bughit (bug hit)
01:03 PM Bug #18743: Enumerator#next / peek re-use each others stacktraces
Hey again, @ko1. This is just a reminder that the patch is pushed to Github and is waiting for a decision.
Best,
Marcelo
marcper (Marcelo Pereira)
11:11 AM Feature #19633: Allow passing block to `Kernel#autoload` as alternative to second `filename` argument
For example, if you tell me: I have devised this anonymous namespace manager (external to Zeitwerk, in principle) to enforce the desired separation of components in Shopify, and this would be the syntax I'd use, and this is realistic, I'... fxn (Xavier Noria)
10:19 AM Feature #19633: Allow passing block to `Kernel#autoload` as alternative to second `filename` argument
> If I understand correctly, you would not be against, say, a format whereby the file explicitly set its toplevel as anonymous, is that correct?
Correct.
For example, if given `$MyNamespace = Module.new` this was allowed in Ruby:
...
fxn (Xavier Noria)
09:28 AM Feature #19633: Allow passing block to `Kernel#autoload` as alternative to second `filename` argument
> Our main discrepancy is that I don't like implicit nesting. I want you to open a file and see what it defines.
Agreed.
> ...
Between an app and its gems, yes (at the cost of what I consider boilerplate). Between two gems, there is no...
shioyama (Chris Salzberg)
05:50 AM Feature #19633: Allow passing block to `Kernel#autoload` as alternative to second `filename` argument
> Concretely speaking, look at rails_on_im for an example. Here, I made some changes to Rails setup to replace Zeitwerk with Im and autoload an application under a single root namespace (MyApp). It mostly works (minus views, which I have... fxn (Xavier Noria)
10:09 AM Bug #14387 (Closed): Ruby 2.5 を Alpine Linux で実行すると比較的浅めで SystemStackError 例外になる
Ruby 2.5 is EOL today. I'll close this.
If you have this issue with Ruby 3.2, please file it with another issue. Thanks.
hsbt (Hiroshi SHIBATA)
09:54 AM Misc #19581 (Closed): Will Openssl 1.1.x fully support for Ruby3.1 throught the life time of Ruby3.1?
hsbt (Hiroshi SHIBATA)
08:42 AM Misc #19608 (Closed): Being a co-maintainer of the ruby/openssl for the OpenSSL FIPS mode
Thank you. If you have any issue, please notify me.
hsbt (Hiroshi SHIBATA)
08:20 AM Bug #4173: TestProcess#test_wait_and_sigchild が、たまに失敗する
So I noticed the FreeBSD process tests failed a few times - looking at it today/tomorrow. I also actually managed to reproduce this one on my machine once - http://rubyci.s3.amazonaws.com/freebsd13/ruby-master/log/20230515T183001Z.fail.h... kjtsanaktsidis (KJ Tsanaktsidis)
06:58 AM Feature #19643 (Closed): Direct primitive compare sort for Array#sort_by
Also see https://github.com/ruby/ruby/pull/7805
# Introduction
In most of case sort_by works on primitive type.
Using `qsort_r` or `qsort_s` with function pointer is much slower than compare data directly.
I implement a intro s...
nekoyama32767 (Jinsong Yu)
03:49 AM Revision 4d1ca2e1 (git): Ensure SIGCHLD always uses a signal handler. (#7819)
Samuel Williams
03:20 AM Bug #11582 (Closed): On Solaris, Rational#** returns -Infinity for Rational(0) when passed a negative Float
This issue is solved by [Misc #15347].
In the C99 spec, The behavior of pow(3) in corner cases are clearly defined.
Since Ruby 2.7, C99 is required to compile CRuby source code, and thus Ruby's pow method conforms to the C99 standard.
ngoto (Naohisa Goto)

05/15/2023

09:49 PM Revision 00521320 (git): [rubygems/rubygems] Bump rb-sys
Bumps [rb-sys](https://github.com/oxidize-rb/rb-sys) from 0.9.75 to 0.9.77.
- [Release notes](https://github.com/oxidize-rb/rb-sys/releases)
- [Commits](https://github.com/oxidize-rb/rb-sys/compare/v0.9.75...v0.9.77)
---
updated-depende...
dependabot[bot]
06:52 PM Revision 89451434 (git): [wasm] Allocate asyncify buffer on heap to save stack usage
katei (Yuta Saito)
02:14 PM Revision ab7bb38a (git): Remove explicit SIGCHLD handling. (#7816)
* Remove unused SIGCHLD handling.
* Remove unused `init_sigchld`.
* Remove unnecessary `#define RUBY_SIGCHLD (0)`.
* Remove unused `SIGCHLD_LOSSY`.
Samuel Williams
01:36 PM Revision bab9966b (git): [DOC] Fix a link [ci skip]
znz (Kazuhiro NISHIYAMA)
01:06 PM Feature #19572: Add a new TracePoint event for rescued exceptions
We discussed this at the [RubyKaigi dev-meeting](https://bugs.ruby-lang.org/issues/19599) as a topic and I also did a follow up discussion with @ko1. IIRC, the conclusion was:
- This `rescue` event is only for Ruby-level rescue. If ther...
st0012 (Stan Lo)
12:47 PM Misc #19608: Being a co-maintainer of the ruby/openssl for the OpenSSL FIPS mode
Thank you for discussing the topic in the meeting.
I started to work as a co-maintainer of the ruby/openssl for the FIPS mode.
jaruga (Jun Aruga)
10:10 AM Revision 3fe45a31 (git): Process parse.y without temporary files
nobu (Nobuyoshi Nakada)
10:01 AM Revision 41dccb6a (git): Lrama v0.5.0 (#7814)
yui-knk (Kaneko Yuichiro)
06:33 AM Feature #19642 (Closed): Remove vectored read/write from `io.c`.
https://github.com/socketry/async/issues/228#issuecomment-1546789910 is a comment from the kernel developer who tells us that `writev` is always worse than `write` system call.
A large amount of complexity in `io.c` comes from optiona...
ioquatix (Samuel Williams)
06:12 AM Revision c7067ed1 (git): Use the rb_sys_fail_str macro in signal.c
Let signal.c include "internal/error.h" explicitly to ensure that the
identifier rb_sys_fail_str in signal.c refers to the macro defined in
"internal/error.h" instead of the actual function.
That macro reads errno before evaluating its ...
wks (Kunshan Wang)
05:08 AM Bug #19635: errno may be overwritten by rb_sprintf if it triggers GC
Thank you, I missed it.
Please update the dependency in common.mk too.
nobu (Nobuyoshi Nakada)
04:37 AM Bug #19635: errno may be overwritten by rb_sprintf if it triggers GC
nobu (Nobuyoshi Nakada) wrote in #note-1:
> Applied in changeset commit:git|e3385f87831f036eaba96558cb4d83c8d5c43901.
> ...
@nobu, thank you for your fix, but the bug related to the `trap` function in `signal.c` still exists.
`gcc -...
wks (Kunshan Wang)
04:37 AM Bug #4173 (Closed): TestProcess#test_wait_and_sigchild が、たまに失敗する
Applied in changeset commit:git|8bd4d8867a0222a3c30a0c7ee1f69b06baa8e91a.
----------
Unskip the test skipped in #4173 (#7809)
This test was skipped 12 years ago because it was flaky on FreeBSD and
OpenBSD. Since then, Ruby's SIGCHLD ha...
Anonymous
04:36 AM Bug #4173: TestProcess#test_wait_and_sigchild が、たまに失敗する
Just to clarify, there was an unexpected issue with my PR, but only a small part of it was reverted due to some unexpected behaviour. I'll try to complete the removal of that functionality soon. ioquatix (Samuel Williams)
04:37 AM Revision 8bd4d886 (git): Unskip the test skipped in #4173 (#7809)
This test was skipped 12 years ago because it was flaky on FreeBSD and
OpenBSD. Since then, Ruby's SIGCHLD handling has been substantially
re-written (mostly by Eric Wong @normalperson in 44fc3d08).
These tests now in fact pass reliably...
KJ Tsanaktsidis
03:41 AM Revision d9033d37 (git): Bump ruby/setup-ruby from 1.148.0 to 1.149.0
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.148.0 to 1.149.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Commits](https://github.com/ruby/setup-ruby/compare/d2b39ad0b52eca07d23f3aa14fdf2a3fcc...
dependabot[bot]
02:47 AM Feature #19641 (Open): Allow setting OpenSSL::SSL::SSLContext in Net::HTTP
[Abstract]
Allow setting OpenSSL::SSL::SSLContext in Net::HTTP.
[Background]
The current implementation of Net::HTTP in Ruby allows setting certain properties of SSLContext, but not SSLContext itself. This limits the flexibility whe...
shouichi (Shouichi Kamiya)
02:15 AM Bug #19640 (Closed): `IO#puts` can generate zero length iov which can cause rb_bug crash.
ioquatix (Samuel Williams)
02:14 AM Bug #19640: `IO#puts` can generate zero length iov which can cause rb_bug crash.
Merged in https://github.com/ruby/ruby/commit/0b2613f44309bddae45562c9f3a14ed43e56959b ioquatix (Samuel Williams)
01:08 AM Bug #19640: `IO#puts` can generate zero length iov which can cause rb_bug crash.
I added a test, without the patch, it crashes:
```
> make test-all TESTS=test/fiber/test_io.rb
sed 's/{\$([^(){}]*)[^{}]*}//g' common.mk > uncommon.mk
compiling io.c
generating parse.c
revision.h updated
generating arm64-darwin2...
ioquatix (Samuel Williams)
02:13 AM Revision 0b2613f4 (git): `rb_io_puts` should not write zero length strings. (#7806)
Samuel Williams
 

Also available in: Atom