Project

General

Profile

Activity

From 11/08/2021 to 11/14/2021

11/14/2021

07:16 PM Bug #18283: Creating a subclass in Ractor dumps core
I think this is a duplicate of #18119. peterzhu2118 (Peter Zhu)
04:14 PM Misc #18335 (Third Party's Issue): openindiana ruby 3.1 --enable-dtrace requires debugflags="-g1"
Hello,
I tried compiling ruby 3.1 preview on OpenIndiana (Illumos) and this works:
./configure --prefix=$HOME/ruby-31 --with-gcc --disable-dtrace
gmake
gmake install
It works:
$HOME/ruby-31/bin/ruby --version
ruby 3.1.0pre...
stes (David Stes)
03:46 PM Feature #18334: ENV#to_h returns a new Hash object but Hash#to_h does not, which can cause inconsistencies
With the current implementation of ENV#to_h, `ENV.to_h.dup` would create two new Hashes instead of one. `hash.to_h.dup` would correctly create only one new Hash. postmodern (Hal Brodigan)
12:23 PM Feature #18334: ENV#to_h returns a new Hash object but Hash#to_h does not, which can cause inconsistencies
I think it would be confusing if `ENV#dup` returns a `Hash` and not a `ENV`, as that would be inconsistent with all other `#dup`.
`to_SHORT` never guarantees to return a copy, so if you don't know the receiver and want to mutate the res...
Eregon (Benoit Daloze)
05:08 AM Feature #18334 (Open): ENV#to_h returns a new Hash object but Hash#to_h does not, which can cause inconsistencies
I noticed that in ruby-3.1.0-preview1 ENV#dup was removed in favor of ENV#to_h. However, methods that accept either ENV or a Hash object will not behave the same, since ENV#to_h returns a new Hash object but Hash#to_h returns the same Ha... postmodern (Hal Brodigan)
12:40 PM Feature #18296: Custom exception formatting should override `Exception#full_message`.
mame (Yusuke Endoh) wrote in #note-13:
> Also, the motivation of this proposal is not clear to me.
Some important motivation is explained in https://bugs.ruby-lang.org/issues/18296#note-4:
* Callers can choose whether they want `did...
Eregon (Benoit Daloze)
12:26 PM Bug #18330: Make failure on 32-bit Linux (Android) with Clang due to implicit 64-to-32-bit integer truncation
cc @ioquatix Eregon (Benoit Daloze)
01:20 AM Bug #18333: /Library/Ruby/Gems/2.6.0/gems/ethon-0.15.0/lib/ethon/curls/classes.rb:36: [BUG] Illegal instruction at 0x0000000104978000
Dup of #18288 and others. Third-party issue. xtkoba (Tee KOBAYASHI)
12:01 AM Bug #18333 (Rejected): /Library/Ruby/Gems/2.6.0/gems/ethon-0.15.0/lib/ethon/curls/classes.rb:36: [BUG] Illegal instruction at 0x0000000104978000
```
$ github-pages health-check
/Library/Ruby/Gems/2.6.0/gems/ethon-0.15.0/lib/ethon/curls/classes.rb:36: [BUG] Illegal instruction at 0x0000000104978000
ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.arm64e-darwin21]
-- Cra...
dabrahams (Dave Abrahams)
12:42 AM Feature #18332: a ? b
`"font-bold" if root?` reads much better than `root? ? "font-bold"`. sawa (Tsuyoshi Sawada)

11/13/2021

08:48 PM Revision fc456adc (git): Enhanced RDoc for Integer (#5099)
Treats:
#allbits?
#anybits?
#nobits?
#succ
#pred
#chr`
#to_s
#+
#-
burdettelamar (Burdette Lamar)
08:36 PM Feature #18332: a ? b
Well, obviously that's a matter of personal taste, but for a one-branch `if` the postfix form seems to read naturally ("this item will have class "font-bold" if it is root).
So it might be that `cond ? result` reads better for you be...
zverok (Victor Shepelev)
07:42 PM Feature #18332: a ? b
Thanks, I still think the `root? ? "font-bold"` reads better than `"font-bold" if root?` though dorianmariefr (Dorian Marié)
07:34 PM Feature #18332: a ? b
```ruby
puts "#{'font-bold' if true}"
# => font-bold
```
zverok (Victor Shepelev)
06:41 PM Feature #18332 (Open): a ? b
It would be a shortcut for `a ? b : nil`:
e.g.
```
"#{current_path == "/" ? "font-bold"}"
"#{user.admin? ? "text-red-600"}"
```
Doing `a && b` returns `false` which converted to a string gives `"false"`.
When `nil` convert...
dorianmariefr (Dorian Marié)
05:41 PM Revision 38c555a3 (git): show encoding for each path
ko1 (Koichi Sasada)
05:36 PM Revision 43358c08 (git): * 2021-11-14 [ci skip]
git[bot]
05:35 PM Revision 4d8d8c9d (git): test/io/console/test_io_console.rb: dump debug output to stderr
make test-all in parallel mode seems to hide stdout mame (Yusuke Endoh)
12:41 PM Feature #18331: Kernel.#Time
And I just found a `Date` counterpart https://bugs.ruby-lang.org/issues/13259, and said to myself, "there are people thinking similar things with me", but it happened to be myself. sawa (Tsuyoshi Sawada)
12:27 PM Feature #18331 (Open): Kernel.#Time
I remember that, once, Matz suggested a new literal notation for date/time, but he later withdrew it. It seems like introducing new syntax at this point is less realistic. But I believe that many people have wanted a simple way to create... sawa (Tsuyoshi Sawada)

11/12/2021

04:47 PM Bug #18250: Anonymous variables seem to break `Ractor.make_shareable`
So following the last fixes Rails CI, as well as Shopify CI with regular ruby-head now passes.
However I noticed our ruby-head debug builds are running into an assertion error:
```
id_table.c:153: hash_table_raw_insert: Assertion ...
byroot (Jean Boussier)
11:33 AM Feature #18033: Time.new to parse a string
Nice performance improvement!
In terms of the interface I think it would be confusing to make `Time.new` parse a string:
* Using a `.parse` method for parsing is more conventional / less surprising / more intention revealing
* Havin...
timcraft (Tim Craft)
10:45 AM Bug #18330: Make failure on 32-bit Linux (Android) with Clang due to implicit 64-to-32-bit integer truncation
For the arm32 + clang's log <https://rubyci.s3.amazonaws.com/crossruby/crossruby-master-armv7a-android30/log/20211111T210030Z.log.html.gz>.
If we want to add the arm32 + clang case to the pull-request timing CI, we can add the arm32 +...
jaruga (Jun Aruga)
08:36 AM Revision 415671a2 (git): parse.y: Fix memory leak at parse error
Local variable tables might leak at the parse error. mame (Yusuke Endoh)
07:44 AM Bug #18269: trace_opt_not and trace_opt_regexpmatch2 insns are indistinguishable
FYI: I stopped the false-positive warning by explicitly excluding opt_regexpmatch2 from the check.
commit:61938e2db59a032a46fc3de2ebead2e5e9d630a9
mame (Yusuke Endoh)
07:40 AM Revision 61938e2d (git): test/ruby/test_jit.rb: suppress a false-positive warning
It reports "opt_regexpmatch2 insn is not included", but actually it is
included. This is due to a known bug of ISeq#to_a on which this check
depends.
https://bugs.ruby-lang.org/issues/18269
mame (Yusuke Endoh)
07:23 AM Revision 3aa62b45 (git): test/io/console/test_io_console.rb: add debug code
to debug the following failure
http://ci.rvm.jp/results/trunk-test@ruby-sky1/3708240
```
/tmp/ruby/v3/src/trunk-test/test/io/console/test_io_console.rb:10:in `===': incompatible encoding regexp match (US-ASCII regexp with UTF-16BE strin...
mame (Yusuke Endoh)
07:04 AM Revision a0460818 (git): Update bundled_gems at 2021-11-12
git[bot]
03:46 AM Revision c833ece5 (git): Rework implementation of `IO::Buffer.for(string)` to use string locking.
Samuel Williams
03:46 AM Revision 98b442e0 (git): More immutability and locking tests.
Samuel Williams
12:56 AM Revision e73197df (git): Update vcvars on windows-2022 [ci skip]
https://github.com/ruby/actions/commit/875a056af0fb2f26fed20c32263ea840c293e2da
https://github.com/actions/virtual-environments/commit/d6a789cbef30e0681d6667b1c91cb7a9bd9184bd#diff-a1f67f5c4a583bf90c239743379ad9473fbf1fa9d11c5cb7739c8012...
znz (Kazuhiro NISHIYAMA)

11/11/2021

11:47 PM Bug #18330 (Closed): Make failure on 32-bit Linux (Android) with Clang due to implicit 64-to-32-bit integer truncation
Observed in crossruby CI for armv7a-android30 (http://rubyci.s3.amazonaws.com/crossruby/crossruby-master-armv7a-android30/log/20211111T210030Z.log.html.gz):

```
compiling io_buffer.c
io_buffer.c:297:16: error: implicit conversion ...
xtkoba (Tee KOBAYASHI)
09:52 PM Bug #18329 (Closed): Calling super to non-existent method dumps core
peterzhu2118 (Peter Zhu)
04:57 PM Bug #18329: Calling super to non-existent method dumps core
Thank you for the report. I have a fix prepared here: https://github.com/ruby/ruby/pull/5108 peterzhu2118 (Peter Zhu)
09:05 PM Revision 3cf7130d (git): [rubygems/rubygems] Remove duplicated spec
https://github.com/rubygems/rubygems/commit/86b874ed24 deivid (David Rodríguez)
09:05 PM Revision 4736dec5 (git): [rubygems/rubygems] Remove `gemfile_should_be` helper as well
https://github.com/rubygems/rubygems/commit/79f3c00caa deivid (David Rodríguez)
09:05 PM Revision 1f91009d (git): [rubygems/rubygems] Remove `have_lockfile` matcher too
https://github.com/rubygems/rubygems/commit/635f3f2605 deivid (David Rodríguez)
09:05 PM Revision d0f26646 (git): [rubygems/rubygems] Remove `lockfile_should_be` helper
It doesn't add anything.
https://github.com/rubygems/rubygems/commit/ece3c864df
deivid (David Rodríguez)
07:08 PM Revision 84202963 (git): [Bug #18329] Fix crash when calling non-existent super method
The cme is NULL when a method does not exist, so check it before
accessing the callcache.
peterzhu2118 (Peter Zhu)
06:47 PM Revision a9a94540 (git): Remove RCLASS(obj)->ptr when RVARGC is enabled
With RVARGC we always store the rb_classext_t in the same slot as the
RClass struct that refers to it. So we don't need to store the pointer
or access through the pointer anymore and can switch the RCLASS_EXT
macro to use an offset
eightbitraptor (Matt V-H)
05:49 PM Bug #18293: Time.at in master branch was 25% slower then Ruby 3.0
It seems like C -> builtin conversion makes method calls with keyword arguments faster, but C seems faster on method calls without keyword arguments if the method has keyword arguments (with default values).
```
$ benchmark-driver -v...
k0kubun (Takashi Kokubun)
01:13 AM Bug #18293: Time.at in master branch was 25% slower then Ruby 3.0
Current status:
```
$ cat /tmp/a.yml
benchmark:
- Time.at(0)
$ benchmark-driver -v --rbenv '3.0.0;before;after' /tmp/a.yml
3.0.0: ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin19]
before: ruby 3.1.0dev (2021-11-10T08:42...
k0kubun (Takashi Kokubun)
05:02 PM Revision d08d1370 (git): * 2021-11-12 [ci skip]
git[bot]
05:01 PM Revision dee2e9b2 (git): Bundle RBS 1.7.0 (#5105)
* Bundle RBS 1.7.0
* tool/test-bundled-gems.rb: Use a correct path to Check if rbs is built
* tool/test-bundled-gems.rb: lib/rbs/parse.y is no longer created
Co-authored-by: Yusuke Endoh <mame@ruby-lang.org>
soutaro (Soutaro Matsumoto)
02:06 PM Feature #18296: Custom exception formatting should override `Exception#full_message`.
Eregon (Benoit Daloze) wrote in #note-7:
> mame (Yusuke Endoh) wrote in #note-6:
> ...
Thanks. I think that this is the most important part of this proposal. It should be clearly explained in the description. Actually, I don't think th...
mame (Yusuke Endoh)
11:38 AM Feature #18296: Custom exception formatting should override `Exception#full_message`.
While initially thinking about this issue I kind of forgot `full_message` includes the backtrace (the name doesn't make that super obvious).
One thing to address is how `did_you_mean/error_highlight` can insert additional output after...
Eregon (Benoit Daloze)
11:07 AM Feature #18296: Custom exception formatting should override `Exception#full_message`.
mame (Yusuke Endoh) wrote in #note-6:
> Does this proposal include that the ruby interpreter should use `#full_message` to show the error information? This is an incompatibility, is it acceptable?
Yes, let's fix that.
I don't think ...
Eregon (Benoit Daloze)
05:49 AM Feature #18296: Custom exception formatting should override `Exception#full_message`.
TBH I'm unsure if I could understand what you propose. It would be very helpful if you could create a proof-of-concept patch.
I have one concern. My minimum expectation of error_highlight and did_you_mean is that the ruby interpreter ...
mame (Yusuke Endoh)
01:54 PM Revision c53aecee (git): fix a memory leak introduced in 8bbd319
This commit fixes a memory leak introduced in an early part of the
variable width allocation project that would prevent the rb_classext_t
struct from being free'd when the class is swept.
eightbitraptor (Matt V-H)
01:52 PM Bug #18170: Exception#inspect should not include newlines
Eregon (Benoit Daloze) wrote in #note-19:
> BTW it seems `irb` disables `error_highlight` somehow:
Because irb uses `Kernel#eval` to execute the input code, error_highlight cannot get the source code. Currently, there is a secret API...
mame (Yusuke Endoh)
10:28 AM Feature #18280: Allow rb_utf8_str_new_cstr(NULL)
shyouhei (Shyouhei Urabe) wrote in #note-13:
> Fix merged ATM to delete the attribute, for the sake of compatibility.
> ...
Thank you! I'm agree, compatibility is very important.
ukolovda (Dmitry Ukolov)
08:30 AM Feature #18280: Allow rb_utf8_str_new_cstr(NULL)
Fix merged ATM to delete the attribute, for the sake of compatibility.
What to do with those other functions shall be discussed though.
shyouhei (Shyouhei Urabe)
10:10 AM Feature #10917: Add GC.stat[:total_time] when GC profiling enabled
> for experts who want to tuning the GC performance. So I think the difference (ns, ms in Integer and sec in Float) it is no problem.
Agreed. As long it's clearly stated in the method documentation, it's fine.
byroot (Jean Boussier)
09:44 AM Feature #10917: Add GC.stat[:total_time] when GC profiling enabled
* `GC.total_time` returns measured total time in nano seconds.
* `GC.stat(:time)` (and Hash) returns measured total time in milli seconds.
ns and ms can be confusion but there are some reasons:
* As request `GC.stat(:time)` should...
ko1 (Koichi Sasada)
09:23 AM Feature #10917: Add GC.stat[:total_time] when GC profiling enabled
I cleanup the patch:
https://github.com/ruby/ruby/pull/4757
GC measurement feature
* `GC.measure_total_time = true` enables total time measurement (default: true)
* `GC.measure_total_time` returns current flag.
...
ko1 (Koichi Sasada)
09:04 AM Revision b5531adf (git): quick fix for `test_initialize_HEAD`
https://github.com/ruby/ruby/commit/52ab9bbee918c63faad32e3851b162691b984d40 makes a failure.
```
1) Failure:
HTTPRequestTest#test_initialize_HEAD [/tmp/ruby/v3/src/trunk/test/net/http/test_http_request.rb:53]:
<{"accept"=>["*/*"], "u...
ko1 (Koichi Sasada)
08:59 AM Revision cd51bf61 (git): test/openssl/test_ssl: adjust certificate expiry date
test_connect_certificate_verify_failed_exception_message occasionally
fails. Is it possible that OpenSSL sees a different clock from Ruby by
more than 10 seconds?
http://ci.rvm.jp/logfiles/brlog.trunk-random0.20211111-072828
Let's give...
rhenium (Kazuki Yamaguchi)
08:34 AM Revision 52ab9bbe (git): [ruby/net-http] Send Accept-Encoding header on HEAD method
https://github.com/ruby/net-http/commit/9d95c5e3e6 Shohei Maeda
08:14 AM Revision 33533fab (git): revival of must_not_null()
Presence of RBIMPL_ATTR_NONNULL let C compilers to eliminate
must_not_null(). Because null pointers are not allowed to exist there
are no reason to call the function. In reality null pointers are still
passed to those functions in a nu...
shyouhei (Shyouhei Urabe)
05:00 AM Revision 155bc427 (git): [ruby/getoptlong] fixup 5f57f47572502173e2e8880f83ef7b3e2659f974
https://github.com/ruby/getoptlong/commit/5683297853 hsbt (Hiroshi SHIBATA)
05:00 AM Revision 6ecd30b4 (git): [ruby/getoptlong] Save the copy of `ARGV`
It refers the same object and will be replaced.
https://github.com/ruby/getoptlong/commit/5f57f47572
nobu (Nobuyoshi Nakada)
02:45 AM Revision f5dcecf3 (git): rb_file_size: add doxygen
Must not be a bad idea to improve documents. [ci skip] shyouhei (Shyouhei Urabe)
02:45 AM Revision ad84c5d1 (git): rb_enc_code_to_mbclen: fix doxygen
Wrong parameter name. [ci skip] shyouhei (Shyouhei Urabe)
02:45 AM Revision 4b383012 (git): RB_ENCODING_SET_INLINED: fix doxygen
Wrong parameter name. [ci skip] shyouhei (Shyouhei Urabe)
02:45 AM Revision a4a6e5cd (git): ENCODING_MASK: fix doxygen link [ci skip]
shyouhei (Shyouhei Urabe)
02:45 AM Revision 1370b087 (git): io/buffer.h: C linkage
Because `make install` installs this header to target systems, it must
be ready to be `#include`d form a C++ program.
shyouhei (Shyouhei Urabe)
01:37 AM Revision db316e62 (git): [ruby/getoptlong] Write a first test of getoptlong.rb
https://github.com/ruby/getoptlong/commit/18cdb03fd4 burdettelamar (Burdette Lamar)
01:37 AM Revision 414b5565 (git): [ruby/tmpdir] [DOC] Fix syntax in example code [ci skip]
RDoc expects example code to be valid syntax.
https://github.com/ruby/tmpdir/commit/ee42540ebb
nobu (Nobuyoshi Nakada)
12:35 AM Revision 51c67ee6 (git): Don't allow `fd == -1` to propagate to system calls.
Samuel Williams

11/10/2021

11:46 PM Bug #18329 (Closed): Calling super to non-existent method dumps core
The following code runs on Ruby 2.7.4 and doesn't produce a core dump. On Ruby 3.0.0, 3.0.2 and 3.1.0-preview 1 the following code produces a core dump:
``` ruby
# example2.rb
module Probes
def self.included(base)
base.ext...
lewispb (Lewis Buckley)
10:14 PM Revision d5dd87d0 (git): [ci skip] Fix typo in test name
peterzhu2118 (Peter Zhu)
07:05 PM Bug #18293: Time.at in master branch was 25% slower then Ruby 3.0
On current master I get `6044704` i/s and `5368058` i/s on 3.0.2, 11.2% slower. Eregon (Benoit Daloze)
07:02 PM Bug #18293: Time.at in master branch was 25% slower then Ruby 3.0
FYI in TruffleRuby when we need to know if an argument is passed or not we use a default value of `undefined` which would be just `Qundef` in CRuby.
It works well and it's efficient to check (identity check).
For the anecdote, that's an ...
Eregon (Benoit Daloze)
11:19 AM Bug #18293 (Open): Time.at in master branch was 25% slower then Ruby 3.0
byroot (Jean Boussier)
09:18 AM Bug #18293 (Closed): Time.at in master branch was 25% slower then Ruby 3.0
Applied in changeset commit:git|8bcff5604b15fd29f357669dd8cb65a6618c9926.
----------
Tentative fix of subsec to `Time.at` [Bug #18293]
nobu (Nobuyoshi Nakada)
08:44 AM Bug #18293 (Open): Time.at in master branch was 25% slower then Ruby 3.0
I thought and tried it but still 10% slower than 3.0. nobu (Nobuyoshi Nakada)
08:42 AM Bug #18293 (Closed): Time.at in master branch was 25% slower then Ruby 3.0
Applied in changeset commit:git|83bdc2f00c4565a091d88399e5a315a96f6afed6.
----------
Simplify default values of `Time.at` [Bug #18293]
nobu (Nobuyoshi Nakada)
08:07 AM Bug #18293: Time.at in master branch was 25% slower then Ruby 3.0
FYI, the current iseq is:
```
irb(main)[01:0]> puts RubyVM::InstructionSequence.of(Time.method(:at)).disasm
== disasm: #<ISeq:at@<internal:timev>:270 (270,2)-(272,5)> (catch: FALSE)
local table (size: 7, argc: 1 [opts: 2, rest: -1,...
k0kubun (Takashi Kokubun)
07:32 AM Bug #18293: Time.at in master branch was 25% slower then Ruby 3.0
I don't understand why we need to detect wether the parameters were passed, why can't we just have default values?
```ruby
>> Time.at(946702800, 0, :usec) == Time.at(946702800)
=> true
```
Or am I missing something?
byroot (Jean Boussier)
04:24 AM Bug #18293: Time.at in master branch was 25% slower then Ruby 3.0
`Time.at` has complicated default arguments. I believe that would result in 5 local variable assignments in VM and be the bottleneck.
If you apply the attached patch and use this benchmark script:
```yml
benchmark:
- Time.at(0)
- T...
k0kubun (Takashi Kokubun)
06:52 PM Revision 98cc6d15 (git): * 2021-11-11 [ci skip]
git[bot]
06:51 PM Revision 8d5f38a8 (git): Use Primitive. in timev.rb for consistency with all other .rb files
Eregon (Benoit Daloze)
06:08 PM Bug #18286: Universal arm64/x86_84 binary built on an x86_64 machine segfaults/is killed on arm64
Lack of codesigning on Apple Silicon is an excellent guess, but unfortunately does not seem to be the cause here as Tim's demonstrated above (and I've verified as well). I first noticed this issue when testing a `ruby` that was fully sig... ccaviness (Clay Caviness)
05:50 PM Bug #18286: Universal arm64/x86_84 binary built on an x86_64 machine segfaults/is killed on arm64
Sure. I had suspected that at some point so I checked the signature using `codesign -dvvvvv`. But I also just repeated that test, and then replaced the built binary with a new ad-hoc signature on the M1. That unfortunately seemed to not ... timsutton (Tim Sutton)
05:25 PM Bug #18286: Universal arm64/x86_84 binary built on an x86_64 machine segfaults/is killed on arm64
Can you please try `codesign -s - ruby`? Because Apple's arm chip requires the exectutables signed.
I encountered the same killed 9 error elsewhere, FYI: https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-11/msg01480.html
ecnelises (Chaofan QIU)
01:00 PM Feature #6210: load should provide a way to specify the top-level module
Agreed, it could be used to experiment with new ways to load code in a non global manner.
That being said it would entirely sidestep iseq caching. Not that it's a deal breaker, but if this were to be used for loading lots of code, we ...
byroot (Jean Boussier)
12:23 PM Feature #18020: Introduce `IO::Buffer` for fiber scheduler.
My initial assessment, based on the changes we made, is that we are potentially incorrectly using `fd` before this PR is applied. For it to fail in the way it is, it means we are still using the previous value of `fptr->fd` even though i... ioquatix (Samuel Williams)
09:04 AM Feature #18020: Introduce `IO::Buffer` for fiber scheduler.
Thanks @mame, yes this change adds fiber scheduler hooks for low level file read/write operations and this necessitates passing the IO object around rather than just the file descriptor integer. The changes are mostly cosmetic though and... ioquatix (Samuel Williams)
08:06 AM Feature #18020: Introduce `IO::Buffer` for fiber scheduler.
The change caused SEGV on Solaris.
http://rubyci.s3.amazonaws.com/solaris10-gcc/ruby-master/log/20211110T070003Z.fail.html.gz
```
Thread 8 (Thread 84 (LWP 84)):
#0 0xfef2054c in __systemcall6 () from /lib/libc.so.1
#1 0xfef05d18...
mame (Yusuke Endoh)
06:24 AM Feature #18020 (Closed): Introduce `IO::Buffer` for fiber scheduler.
I have merged this. We will follow up with additional changes in new tickets as needed. ioquatix (Samuel Williams)
12:02 PM Misc #18266: DevelopersMeeting20211118Japan
- [Bug #18296] Custom exception formatting should override `Exception#full_message`.
* (mame: you need to write your comment)
ioquatix (Samuel Williams)
11:58 AM Feature #18296: Custom exception formatting should override `Exception#full_message`.
Also given how this works, I believe we should remove `ErrorHighlight.formatter` from the public interface. https://github.com/ruby/error_highlight/issues/15 ioquatix (Samuel Williams)
11:57 AM Feature #18296: Custom exception formatting should override `Exception#full_message`.
I think this is a clean and simple proposal/fix, which enables users to choose whether they want that extra information on a per-call to #full_message-basis.
As a side effect it also enables DidYouMean and ErrorHighlight to e.g. look ...
Eregon (Benoit Daloze)
11:49 AM Feature #18296 (Closed): Custom exception formatting should override `Exception#full_message`.
After discussing with @eregon, we came to the conclusion that the current implementation of `did_you_mean` and `error_highlight` could avoid many issues by using `Exception#full_message`.
We propose to introduce a more nuanced interfa...
ioquatix (Samuel Williams)
11:26 AM Feature #18033: Time.new to parse a string
If I might add a nitpick, the actual format is RFC 3339, which is pretty much a subset of ISO 8601.
But yes, +1 to making `Time.iso8601` a core method.
byroot (Jean Boussier)
10:44 AM Feature #18033: Time.new to parse a string
Like @ioquatix and @byroot I think `Time.new` taking a iso-like String is not a good idea.
Also it's technically incompatible (the first argument is always the year for `Time.new` and it even accepts strings):
```
> Time.new "2234-01-01...
Eregon (Benoit Daloze)
11:15 AM Bug #18170: Exception#inspect should not include newlines
ioquatix (Samuel Williams) wrote in #note-18:
> Here is what I want:
> ...
That's hard, e.g. for Errno#message.
I think having a way to get the original message or the message unaffected by `did_you_mean/error_highlight` is good thoug...
Eregon (Benoit Daloze)
11:10 AM Bug #18170: Exception#inspect should not include newlines
BTW it seems `irb` disables `error_highlight` somehow:
```
$ ruby -ve 'self.instance_off'
ruby 3.1.0dev (2021-11-08T13:15:21Z master bd2674ad33) [x86_64-linux]
-e:1:in `<main>': undefined method `instance_off' for main:Object (NoMeth...
Eregon (Benoit Daloze)
11:10 AM Bug #18170: Exception#inspect should not include newlines
Here is what I want:
- `Exception.new(message).message` is always `message`.
- Top level unhandled exception handler, which defaults to some well defined interface for printing exceptions.
- Well defined hooks for augmenting the exc...
ioquatix (Samuel Williams)
11:03 AM Bug #18170: Exception#inspect should not include newlines
I've been thinking about this again, and I'm not sure if
```
#<Foo:0x00007f15aeb4ba48 @exception=#<NameError: undefined local variable or method `exampl' for #<Foo:0x00007f15aeb4ba48 ...>
@exception = begin; exampl; rescue Excepti...
Eregon (Benoit Daloze)
09:14 AM Revision 8bcff560 (git): Tentative fix of subsec to `Time.at` [Bug #18293]
nobu (Nobuyoshi Nakada)
08:47 AM Revision 850912b6 (git): Install pkg-config on 32-bit Ubuntu [ci skip]
nobu (Nobuyoshi Nakada)
08:47 AM Revision 4eb23c9d (git): Commit miss [ci skip]
nobu (Nobuyoshi Nakada)
08:42 AM Revision 83bdc2f0 (git): Simplify default values of `Time.at` [Bug #18293]
nobu (Nobuyoshi Nakada)
08:42 AM Revision cc33d07f (git): Disable experimental warnings in test/runner.rb
nobu (Nobuyoshi Nakada)
08:07 AM Revision 943b6e4d (git): Fix format specifier
nobu (Nobuyoshi Nakada)
07:41 AM Revision 46e46eaf (git): size_t is not for file size
nobu (Nobuyoshi Nakada)
06:21 AM Revision 81d0ce7e (git): Mark IO::Buffer as experimental.
Samuel Williams
06:21 AM Revision 4b890342 (git): IO::Buffer for scheduler interface.
Samuel Williams
05:09 AM Revision 56b90cf9 (git): Fix a typo and add `IO.` [ci skip]
znz (Kazuhiro NISHIYAMA)
01:08 AM Revision af74cc75 (git): * 2021-11-10 [ci skip]
git[bot]
01:08 AM Revision e8086e27 (git): gc.h: move rb_objspace_garbage_object_p to internal/gc.h
... to allow class.c to use the function mame (Yusuke Endoh)
01:08 AM Revision 5c892da7 (git): class.c: descendants must not cause GC until the result array is created
Follow up of 428227472fc6563046d8138aab17f07bef6af753. The previous fix
uses `rb_ary_new_from_values` to create the result array, but it may
trigger the GC.
This second try is to create the result array by `rb_ary_new_capa`
before the s...
mame (Yusuke Endoh)

11/09/2021

04:55 PM Bug #18293: Time.at in master branch was 25% slower then Ruby 3.0
I think it'd be good to understand the slow down here.
Is it due to having the method in Ruby and using `Primitive.`?
It seems unexpectedly high for that.
Or maybe the fact there is a declared keyword argument is slow if the kwarg is n...
Eregon (Benoit Daloze)
09:04 AM Bug #18293: Time.at in master branch was 25% slower then Ruby 3.0
It's quite a hotspot in our cache serializers:
- https://github.com/Shopify/paquito/blob/aabd8740175f37b382d425da004636266d546901/lib/paquito/types.rb#L88
- https://github.com/Shopify/paquito/blob/aabd8740175f37b382d425da00463626...
byroot (Jean Boussier)
04:38 AM Bug #18293: Time.at in master branch was 25% slower then Ruby 3.0
Could anybody share use cases (preferably a link to a particular code calling it) where `Time.at`'s performance matters? k0kubun (Takashi Kokubun)
04:47 PM Feature #18035: Introduce general model/semantic for immutability.
@Dan0042 I think you can experiment with that in a gem if you'd like.
I wouldn't call the module `Immutable` to avoid mixing the two concepts.
I think concretely it would be hard and not necessarily useful to use that refinement for ...
Eregon (Benoit Daloze)
04:42 PM Feature #18035: Introduce general model/semantic for immutability.
Re flags, can we just remove the highest FL_USER flags and use it to mark immutable instead?
Those FL_USER flags are actually not meant to be used by gems BTW (#18059).
Eregon (Benoit Daloze)
04:33 PM Feature #18035: Introduce general model/semantic for immutability.
Question for the immutability-minded folks here. What would you think of an `Immutable` refinement like:
```ruby
module Immutable
refine String do
def +(other)
super.freeze
end
def <<(other)
raise Immu...
Dan0042 (Daniel DeLorme)
04:32 PM Feature #16663: Add block or filtered forms of Kernel#caller to allow early bail-out
@zverok No, that can't work because then in your example the actual place where the stack is queried is e.g. inside `#find` which e.g. adds an extra entry on the stack.
Also in general we can't use Enumerable/Enumerator here, the passed...
Eregon (Benoit Daloze)
01:28 PM Feature #16663: Add block or filtered forms of Kernel#caller to allow early bail-out
Can't the specialized Enumerator be used for that? The downside is it probably would be inconsistent with the existing protocol of `caller`, so maybe the new method would be necessary, but, roughly speaking:
```ruby
lazy_caller.find { ...
zverok (Victor Shepelev)
12:36 PM Feature #16663: Add block or filtered forms of Kernel#caller to allow early bail-out
The non-local return like `return frame` is likely to be rather costly in this case unfortunately.
Stack walking typically can't be JITed since it accesses a lot of VM stuff, and so the exception/jump for the `return` (or `break`) is qu...
Eregon (Benoit Daloze)
12:27 PM Feature #16663: Add block or filtered forms of Kernel#caller to allow early bail-out
:+1: this seems a great idea.
I was initially thinking this might be tricky to implement, but it seems most APIs to walk the stack out there already allow to do arbitrary calls from inside a callback (e.g., Java 9's `StackWalker`, `Tr...
Eregon (Benoit Daloze)
02:45 PM Feature #18127: Ractor-local version of Singleton
ioquatix (Samuel Williams) wrote in #note-4:
> 1. Existing Ruby code is incompatible with Ractor.
> ...
That's a really good summary of the current situation with Ractor. Too many things need to be modified, frozen, restricted, even fo...
Dan0042 (Daniel DeLorme)
01:19 AM Feature #18127: Ractor-local version of Singleton
I appreciate the work that is being done here. However I am against introducing this feature as currently proposed and think that more discussion is required.
This change does not address the fact that `Singleton` remains broken when us...
ioquatix (Samuel Williams)
12:43 PM Bug #18282: Rails CI raises Segmentation fault with ruby 3.1.0dev supporting `Class#descendants`
No need to say sorry. Thanks for providing fixes. https://github.com/ruby/ruby/pull/5097 resolves segmentation fault at Rails test. yahonda (Yasuo Honda)
12:23 PM Bug #18282: Rails CI raises Segmentation fault with ruby 3.1.0dev supporting `Class#descendants`
Could you please try this PR? https://github.com/ruby/ruby/pull/5097
I knew that the fix was incomplete but I couldn't fix it before preview1. I'm sorry.
mame (Yusuke Endoh)
11:02 AM Bug #18282: Rails CI raises Segmentation fault with ruby 3.1.0dev supporting `Class#descendants`
Thanks for the update.
I have attempt to validate the fix, actually it still raises segmentation fault with `ruby 3.1.0preview1` including 428227472fc6563046d8138aab17f07bef6af753 .
```
$ bundle exec rake test
/home/yahonda/.rben...
yahonda (Yasuo Honda)
07:15 AM Bug #18282 (Closed): Rails CI raises Segmentation fault with ruby 3.1.0dev supporting `Class#descendants`
Applied in changeset commit:git|428227472fc6563046d8138aab17f07bef6af753.
----------
class.c: calculate the length of Class.descendants in advance
GC must not be triggered during callback of rb_class_foreach_subclass.
To prevent GC, we...
mame (Yusuke Endoh)
12:21 PM Revision 0d3898ec (git): [rubygems/rubygems] Remove more unused stuff from make command parsing
https://github.com/rubygems/rubygems/commit/eba7d173d4 deivid (David Rodríguez)
12:21 PM Revision ba3dfe6e (git): [rubygems/rubygems] This method is never passed a block
https://github.com/rubygems/rubygems/commit/d79ade274b deivid (David Rodríguez)
12:21 PM Revision d713b602 (git): [rubygems/rubygems] Fix assert_contains_make_command on make defined by environment variable.
The `parse_make_command_line` in `assert_contains_make_command` fails to get
the make targets correctly, when the make command is set with make options by
environment variable such as `export make='make -j2'` at
lib/rubygems/ext/builder....
Jun Aruga
12:21 PM Revision ec6352c1 (git): [rubygems/rubygems] Improve error message when make command doesn't match
https://github.com/rubygems/rubygems/commit/8c2725e9a6 deivid (David Rodríguez)
08:31 AM Revision 54bda176 (git): test/ruby/test_iseq.rb: Prevent a warning
http://rubyci.s3.amazonaws.com/ubuntu/ruby-master/log/20211109T063003Z.log.html.gz
```
[ 9898/21145] TestISeq#test_super_with_block_and_kwrest/home/chkbuild/chkbuild/tmp/build/20211109T063003Z/ruby/test/ruby/test_iseq.rb:1: warning: meth...
mame (Yusuke Endoh)
08:30 AM Revision cf50f948 (git): test/ruby/test_enum.rb: Prevent a warning
http://rubyci.s3.amazonaws.com/ubuntu/ruby-master/log/20211109T063003Z.log.html.gz
```
[ 1960/21145] TestEnumerable#test_to_a_keywords/home/chkbuild/chkbuild/tmp/build/20211109T063003Z/ruby/test/ruby/test_enum.rb:138: warning: method red...
mame (Yusuke Endoh)
08:10 AM Revision d5ae8925 (git): Add doc for `a_call` and `a_return` events of TracePoint
pocke (Masataka Kuwabara)
08:09 AM Revision 75aae66c (git): Some codes replace to `RBOOL` macro (#5023)
* Some code replace and using RBOOL macro
* Fix indent
* Using RBOOL in syserr_eqq function
S_H_ (Shun Hiraoka)
07:56 AM Revision c1c13c58 (git): Add one more test example for swap instruction
Nikita Vasilevsky
07:21 AM Revision 5a3b2e61 (git): Needs `$` in `make` command line to be escaped
nobu (Nobuyoshi Nakada)
07:21 AM Revision 5680c38c (git): Use valid `ec` for postponed job.
Postponed job can be registered from non-Ruby thread, which means
`ec` in TLS can be NULL. In this case, use main thread's `ec` instead.
See https://github.com/ruby/ruby/pull/4108
and https://github.com/ruby/ruby/pull/4336
ko1 (Koichi Sasada)
07:11 AM Revision 3628616d (git): Remove a redundant condition
mame (Yusuke Endoh)
07:11 AM Revision 64007fc5 (git): class.c (Class#descendants): Ingore subclasses created after estimation
It is theoretically possible if a finalizer creates a subclass. mame (Yusuke Endoh)
07:11 AM Revision 037da506 (git): class.c: Use ALLOC_N instead of ALLOCA_N
mame (Yusuke Endoh)
07:11 AM Revision 42822747 (git): class.c: calculate the length of Class.descendants in advance
GC must not be triggered during callback of rb_class_foreach_subclass.
To prevent GC, we can not use rb_ary_push. Instead, this changeset calls
rb_class_foreach_subclass twice: first counts the subclasses, then
allocates a buffer (which ...
mame (Yusuke Endoh)
06:20 AM Revision 3ff0a0b4 (git): Filter method names only if filtering method name only
If sole `filter` option doesn't seem including test case name,
match with method name only.
And if the filter is a Regexp or String, it never matches method
name symbols.
nobu (Nobuyoshi Nakada)
05:52 AM Revision 6cf7c0a4 (git): test/readline/test_readline.rb: skip a test on i686-linux
... because readline library (or libtinfo) seems to cause SEGV
internally even with Readline 8.1.
This SEGV is caught as SystemStackError, which leads to a test failure.
http://rubyci.s3.amazonaws.com/debian-i386/ruby-master/log/2021110...
mame (Yusuke Endoh)
05:39 AM Revision 1290bdf1 (git): test/ruby/test_fiber.rb: Extend timeout on Solaris
The test usually takes 200 sec. on Solaris, so the timeout of 300 sec.
looks too short.
mame (Yusuke Endoh)
02:30 AM Revision 1d609707 (git): Fix a link [ci skip]
znz (Kazuhiro NISHIYAMA)
02:09 AM Feature #17849: Fix Timeout.timeout so that it can be used in threaded Web servers
Eregon (Benoit Daloze) wrote in #note-22:
> @mame How do you explain the test I linked above fails (still does with latest CRuby) then?
The exception is raised immediately after the block returns, and before `handle_interrupt` return...
mame (Yusuke Endoh)
01:56 AM Revision d7432fde (git): [rubygems/rubygems] Use `shellsplit` instead of array of strings
Previously, the command string to be used for the shell command
was first generated and then split using shellsplit. This change
reverts the current behavior as it breaks if the value of remote
contains a space.
https://github.com/rubyg...
Nicholas Lee

11/08/2021

09:41 PM Revision e014c9d6 (git): [ci skip] Update NEWS.md for [Feature #18290]
peterzhu2118 (Peter Zhu)
09:27 PM Feature #18020: Introduce `IO::Buffer` for fiber scheduler.
@matz thanks, I will rebase and merge it with experimental warning. ioquatix (Samuel Williams)
02:35 AM Feature #18020: Introduce `IO::Buffer` for fiber scheduler.
I am not fully satisfied with the quality of the code (at the last time I checked a while ago), but basically, I agree with the merging.
So let us experiment with it.
Matz.
matz (Yukihiro Matsumoto)
09:25 PM Bug #18295 (Third Party's Issue): gtk2 won't work with newest versions of its dependencies
This looks like an issue with your setup. You'll need to install version 3.4.3 of the atk, pango, and gdk_pixbuf2 gems (see https://rubygems.org/gems/gtk2/versions/3.4.3). Looks like the ruby-gnome maintainers stopped supporting gtk2 s... jeremyevans0 (Jeremy Evans)
09:13 PM Bug #18295 (Third Party's Issue): gtk2 won't work with newest versions of its dependencies
I am running an up-to-date version of Artix, which installs ruby-atk 3.4.5-1 ruby-pango 3.4.5-1 and ruby-gdk_pixbuf2 3.4.5-1.
But it would seem that ruby-gtk2 3.4.3 wants specifically that version of the above three packages (at least, ...
zsd (Jim D)
08:39 PM Revision 39d3d24a (git): [Feature #18290] Remove tests that test use of rb_gc_force_recycle
Remove tests that assume objects get force recycled. peterzhu2118 (Peter Zhu)
07:24 PM Bug #18286: Universal arm64/x86_84 binary built on an x86_64 machine segfaults/is killed on arm64
I have been hoping to do the same operation here for my org, as a way to distribute a universal Ruby binary that would be usable on both Intel and Apple Silicon machines, and to be able to build it on Intel. I seem to run into the same p... timsutton (Tim Sutton)
07:16 PM Bug #18293: Time.at in master branch was 25% slower then Ruby 3.0
I was able to repro this on Ubuntu 20.04 on an AMD CPU. Looks like moving these functions from `time.c` to `timev.rb` is the reason.
77e7082e824af8523c1e7c3bfc111c2e52e7e3b3 (Moved Time.at to builtin)
```
Time.at ...
peterzhu2118 (Peter Zhu)
02:27 PM Bug #18293 (Closed): Time.at in master branch was 25% slower then Ruby 3.0
− | Ruby 3.0.2 | Ruby 3.1.0-dev | result
-- | -- | -- | --
Time.at | 8.223M | 6.190M | 0.753x
### Environment
- MacBook Pro (14inch, 2021)
- macOS 12.0
- Apple M1 Max
- Apple clang ve...
watson1978 (Shizuo Fujita)
07:06 PM Feature #18290 (Closed): Deprecate rb_gc_force_recycle
Applied in changeset commit:git|aeae6e2842e1702dfb89b8ae69b48c4f5f64c662.
----------
[Feature #18290] Remove all usages of rb_gc_force_recycle
This commit removes usages of rb_gc_force_recycle since it is a burden
to maintain and makes...
peterzhu2118 (Peter Zhu)
07:05 PM Revision 30940648 (git): [Feature #18290] Deprecate rb_gc_force_recycle and remove invalidate_mark_stack_chunk
This commit deprecates rb_gc_force_recycle and coverts it to a no-op
function. Also removes invalidate_mark_stack_chunk since only
rb_gc_force_recycle uses it.
peterzhu2118 (Peter Zhu)
07:05 PM Revision aeae6e28 (git): [Feature #18290] Remove all usages of rb_gc_force_recycle
This commit removes usages of rb_gc_force_recycle since it is a burden
to maintain and makes changes to the GC difficult.
peterzhu2118 (Peter Zhu)
06:38 PM Revision aa5bccfc (git): NEWS.md: Mention Process._fork [[Feature #17795]]
mame (Yusuke Endoh)
06:33 PM Bug #18294 (Closed): error when parsing regexp comment
The following code generates the error "too short escaped multibyte character"
``` ruby
_re = /
foo # \M-ca
/x
```
Removing the \ or doubling it makes the error disappear.
Since this is in comment text, I would expect to be abl...
thyresias (Thierry Lambert)
06:33 PM Revision 83749338 (git): * 2021-11-09 [ci skip]
git[bot]
06:32 PM Revision efe7e6e9 (git): Bundle rbs 1.7.0.beta.5
mame (Yusuke Endoh)
06:13 PM Feature #12125: Proposal: Shorthand operator for Object#method
Hello,
I cannot help myself to see than all proposal are of the form:
` (expression) (shorthand_operator) (method_name)`
while I had seen some interesting option, to me, that format seem to add an obsure behaviour rater than a shorthan...
Azuma-01 (Azuma Eleth)
06:01 PM Misc #18266: DevelopersMeeting20211118Japan
* [Feature #6210] load should provide a way to specify the top-level module (jeremyevans0)
* This is fairly easy to implement in a backwards compatible manner, and seems useful.
* Are we OK adding this feature? If so, is the pull ...
jeremyevans0 (Jeremy Evans)
05:33 PM Feature #17849: Fix Timeout.timeout so that it can be used in threaded Web servers
@mame How do you explain the test I linked above fails (still does with latest CRuby) then?
https://bugs.ruby-lang.org/issues/17849#note-16
Anyway, we all agree nobody should rely on that, and it's also unrealistic to ask people to e...
Eregon (Benoit Daloze)
08:58 AM Feature #17849: Fix Timeout.timeout so that it can be used in threaded Web servers
@headius
headius (Charles Nutter) wrote in #note-18:
> This is incorrect code.
I believe that my code is correct under the current implementation of MRI. You may think that the method invocation itself `Thread.handle_interrupt(.....
mame (Yusuke Endoh)
03:45 PM Feature #18276: `Proc#bind_call(obj)` same as `obj.instance_exec(..., &proc_obj)`
Eregon (Benoit Daloze) wrote in #note-10:
> I'd assume on that object's singleton class like `instance_exec`, but I guess it's not the only possibility.
I would assume the same thing; it would be pretty strange if this defined a `foo...
Dan0042 (Daniel DeLorme)
01:27 PM Bug #18292 (Closed): 3.1.0-dev `include` cause Module to be marked as initialized
Some subtle change I found while testing our app compatibility with Ruby head:
```ruby
class Mod1 < Module
def initialize(...)
super
end
end
p Mod1.new
class Mod2 < Module
def initialize(...)
include Enumerabl...
byroot (Jean Boussier)
01:15 PM Revision bd2674ad (git): [rubygems/rubygems] Use bundler-graph instead of bundler-viz
https://github.com/rubygems/rubygems/commit/a54cca13db hsbt (Hiroshi SHIBATA)
11:43 AM Feature #18272: Please replace unsafe SHA1 with another digest algorithm
Another suggestion from our internal discussion:
```
SHA1 should work for you, though it would be better if you could switch to EVP API from old SHA* API, if you by chance still use it.
```
pvalena (Pavel Valena)
09:35 AM Revision 7cc4e147 (git): Get rid of implicit expansion to `long double` on ix86
nobu (Nobuyoshi Nakada)
09:33 AM Revision 395738e8 (git): Separate TestReadline#test_interrupt_in_other_thread
This method is already known to fail on Travis-CI arm32-linux. nobu (Nobuyoshi Nakada)
09:04 AM Revision a64f7e9c (git): Try 32bit environment
nobu (Nobuyoshi Nakada)
08:08 AM Revision 2772f856 (git): Prefer ANSI-style prototypes over old K&R-style definitions
nobu (Nobuyoshi Nakada)
08:08 AM Revision b47f7afb (git): Fix filename typo [Bug #18140]
nobu (Nobuyoshi Nakada)
07:07 AM Revision b5ca8ebc (git): Update bundled_gems at 2021-11-08
git[bot]
06:14 AM Revision 833c69ee (git): Convert IDs to Integers
As the ID serial is 32bit value and internal IDs created in the
parser are assigned from its maximum value, Symbol converted from
it will exceed 32bit and overflow on 32bit platforms.
nobu (Nobuyoshi Nakada)
03:52 AM Revision f3bae1a2 (git): * 2021-11-08 [ci skip]
git[bot]
03:52 AM Revision 3501e0cb (git): memory_view.c: Add _memory_view_entry member in rb_memory_view_t (#5088)
Kenta Murata
 

Also available in: Atom