Project

General

Profile

Activity

From 07/09/2021 to 07/15/2021

07/15/2021

08:40 PM Feature #17795: Around `Process.fork` callbacks API
> Please propose other good name candidates.
Maybe `Process.forkpid`?
byroot (Jean Boussier)
08:15 PM Feature #17795: Around `Process.fork` callbacks API
@mame did you mean to close the ticket? byroot (Jean Boussier)
07:47 AM Feature #17795 (Closed): Around `Process.fork` callbacks API
Applied in changeset commit:git|645616c273aa9a328ca4ed3fceac8705e2e036cd.
----------
process.c: Call rb_thread_atfork in rb_fork_ruby
All occurrences of rb_fork_ruby are followed by a call rb_thread_fork in
the created child process.
...
mame (Yusuke Endoh)
07:29 AM Feature #17795: Around `Process.fork` callbacks API
Discussed at today's dev-meeting.
* @akr agreed with the API design of `Process._fork_`
* As above, @matz disliked the name `_fork_`.
* I proposed `__fork__`, but matz dislike it too. The message of the names `__send__` and `__id__`...
mame (Yusuke Endoh)
07:18 AM Feature #17795: Around `Process.fork` callbacks API
I considered the idea of overriding `_fork_` method. The idea itself sounds reasonable but `_fork_` is not a good name.
It should be a more descriptive name, forking a new child process, expecting overriding. Any idea?
Matz.
matz (Yukihiro Matsumoto)
06:07 PM Feature #3187: Allow dynamic Fiber stack size
nerdrew (Andrew Lazarus) wrote in #note-22:
> Is this request still being considered?
I consider this issue (and really any decade-old issue) irrelevant. Please close.
mperham (Mike Perham)
06:04 PM Feature #3187: Allow dynamic Fiber stack size
Is this request still being considered? nerdrew (Andrew Lazarus)
05:05 PM Bug #17757 (Closed): Hash#slice does not keep compare_by_identity on the results
Applied in changeset commit:git|95f8ffa5f6c70aa9383e1f6db02b22707c183402.
----------
Copy hash compare_by_identity setting in more cases
This makes the compare_by_identity setting always copied
for the following methods:
* except
* me...
jeremyevans (Jeremy Evans)
05:55 AM Bug #17757: Hash#slice does not keep compare_by_identity on the results
Yes, we must keep `compare_by_identity` status for those methods. Accepted.
Matz.
matz (Yukihiro Matsumoto)
05:04 PM Revision 95f8ffa5 (git): Copy hash compare_by_identity setting in more cases
This makes the compare_by_identity setting always copied
for the following methods:
* except
* merge
* reject
* select
* slice
* transform_values
Some of these methods did not copy the setting, or only
copied the setting if the receive...
jeremyevans (Jeremy Evans)
04:56 PM Feature #17724 (Closed): Make the pin operator support instance/class/global variables
Applied in changeset commit:git|fa87f72e1e84e2b55516be188f00434a683b924c.
----------
Add pattern matching pin support for instance/class/global variables
Pin matching for local variables and constants is already supported,
and it is fa...
jeremyevans (Jeremy Evans)
05:42 AM Feature #17724: Make the pin operator support instance/class/global variables
Sounds reasonable. Accepted.
Matz.
matz (Yukihiro Matsumoto)
04:56 PM Revision fa87f72e (git): Add pattern matching pin support for instance/class/global variables
Pin matching for local variables and constants is already supported,
and it is fairly simple to add support for these variable types.
Note that pin matching for method calls is still not supported
without wrapping in parentheses (pin ex...
jeremyevans (Jeremy Evans)
04:55 PM Revision f1035248 (git): [ruby/irb] Show code page by irb_info on Windows
https://github.com/ruby/irb/commit/6160d74199 aycabta (aycabta .)
04:55 PM Revision 456d0019 (git): [ruby/irb] Escape space in free-spacing mode
https://github.com/ruby/irb/commit/085ac42947 aycabta (aycabta .)
03:49 PM Bug #18011: `Method#parameters` is incorrect for forwarded arguments
nobu (Nobuyoshi Nakada) wrote in #note-10:
> `Method#ruby2_keywords?` may be needed, I guess.
It's possible to detect like `method.parameters.include?([:keyrest, :**])`.
I'm not sure how RBS represents delegation. The previous `(*un...
Eregon (Benoit Daloze)
02:35 PM Bug #18011: `Method#parameters` is incorrect for forwarded arguments
Changing `parameters` broke rbs test.
https://github.com/nobu/ruby/runs/3076547487?check_suite_focus=true#step:15:350
```
Failure: test_argument_forwarding(RBS::RuntimePrototypeTest)
/home/runner/work/ruby/ruby/src/gems/src/rbs/tes...
nobu (Nobuyoshi Nakada)
06:28 AM Bug #18011: `Method#parameters` is incorrect for forwarded arguments
Sounds reasonable. Accepted.
Matz.
matz (Yukihiro Matsumoto)
03:49 PM Bug #18014 (Closed): Memory leak in GC when using Ractors
Applied in changeset commit:git|119697f61e2b2b157816a8aa33aada5863959900.
----------
[Bug #18014] Fix rb_gc_force_recycle unmark before sweep
If we force recycle an object before the page is swept, we should clear
it in the mark bitmap...
peterzhu2118 (Peter Zhu)
03:49 PM Revision feec80a3 (git): * 2021-07-16 [ci skip]
git[bot]
03:48 PM Revision e5fe4864 (git): [Bug #18014] Add assertion to verify freelist
This commit adds an assertion has been added after `gc_page_sweep` to
verify that the freelist length is equal to the number of free slots in
the page.
peterzhu2118 (Peter Zhu)
03:48 PM Revision 4a627dbd (git): [Bug #18014] Fix memory leak in GC when using Ractors
When a Ractor is removed, the freelist in the Ractor cache is not
returned to the GC, leaving the freelist permanently lost. This commit
recycles the freelist when the Ractor is destroyed, preventing a memory
leak from occurring.
peterzhu2118 (Peter Zhu)
03:48 PM Revision 119697f6 (git): [Bug #18014] Fix rb_gc_force_recycle unmark before sweep
If we force recycle an object before the page is swept, we should clear
it in the mark bitmap. If we don't clear it in the bitmap, then during
sweeping we won't account for this free slot so the `free_slots` count
of the page will be inc...
peterzhu2118 (Peter Zhu)
01:24 PM Revision 3e7a7fb2 (git): Make Struct#keyword_init? return nil by default [Feature #18008]
nobu (Nobuyoshi Nakada)
12:32 PM Revision 33bea3bd (git): Regularize keyword_init values not to hold the argument object
nobu (Nobuyoshi Nakada)
11:50 AM Bug #18007: Help developers of C extensions meet requirements in "doc/extension.rdoc"
Naruse, thank you for your time.
Would you consider for 3.1 if this change was behind a configuration option that defaulted to disabled?
mdalessio (Mike Dalessio)
09:07 AM Bug #18007: Help developers of C extensions meet requirements in "doc/extension.rdoc"
I want Ruby 3.1 to be compatible with 3.0. Therefore even if it is accepted, you can merge this in 3.2. naruse (Yui NARUSE)
09:21 AM Revision 835c63cd (git): Add tests and NEWS [Feature #18008]
naruse (Yui NARUSE)
09:15 AM Feature #18008 (Closed): `keyword_init?` method for Struct
Applied in changeset commit:git|1a637544166eca6b917fb6f32baeb771f4914b7a.
----------
struct.c: Add keyword_init? singleton method for StructClass (#4609)
Fixes [Feature #18008]
hkdnet (Ko Sato)
09:11 AM Feature #18008: `keyword_init?` method for Struct
hkdnet's patch is https://github.com/ruby/ruby/pull/4609 naruse (Yui NARUSE)
09:11 AM Feature #18008: `keyword_init?` method for Struct
Accepted.
Matz.
matz (Yukihiro Matsumoto)
09:14 AM Revision 1a637544 (git): struct.c: Add keyword_init? singleton method for StructClass (#4609)
Fixes [Feature #18008] hkdnet (Ko Sato)
08:30 AM Feature #17798: exception in finalizer
Sounds OK. Let's try it.
Matz.
matz (Yukihiro Matsumoto)
07:54 AM Revision 3ce2bf4d (git): rb_interned_id_p: does not exist
This declaration was added at commit 0ee5a49dd4ffbbb285c25fa6cba88370ce9
without its implementation. Must be a mistake.
Note also that we ended up having this exct same functionality
implemented under a name of rb_check_id().
shyouhei (Shyouhei Urabe)
07:54 AM Revision 2d9aacf6 (git): rb_enc_casefold: does not exist
This declaration was added at commit 0ee5a49dd4ffbbb285c25fa6cba88370ce9
without its implementation. Must be a mistake.
shyouhei (Shyouhei Urabe)
07:46 AM Revision 645616c2 (git): process.c: Call rb_thread_atfork in rb_fork_ruby
All occurrences of rb_fork_ruby are followed by a call rb_thread_fork in
the created child process.
This is refactoring and a potential preparation for [Feature #17795].
(rb_fork_ruby may be wrapped by Process._fork_.)
mame (Yusuke Endoh)
07:16 AM Revision 8f62f12c (git): Fix typo in flag in NEWS.md
dentarg (Patrik Ragnarsson)
06:46 AM Feature #17938: Keyword alternative for boolean positional arguments
matz (Yukihiro Matsumoto) wrote in #note-12:
> Although I agreed with the idea of adding keyword arguments corresponding to boolean flags, I don't like the above name `include_all`.
> ...
What about `disclose`, `leak` or `penetrate`? The...
sawa (Tsuyoshi Sawada)
05:38 AM Feature #17938: Keyword alternative for boolean positional arguments
Although I agreed with the idea of adding keyword arguments corresponding to boolean flags, I don't like the above name `include_all`.
We have to make up a more intuitive keyword.
Matz.
matz (Yukihiro Matsumoto)
06:22 AM Bug #17719: Irregular evaluation order in hash literals
I think it can be fixed by removing the optimization in the parser and leaving it to the compiler. nobu (Nobuyoshi Nakada)
06:19 AM Bug #17737 (Rejected): `Array#permutation` does not immediately check the arity when no block is given
I agree with @marcandre. We need no fix here.
Matz.
matz (Yukihiro Matsumoto)
05:18 AM Feature #17994: Clarify `IO.read` behavior and add `File.read` method
I feel adding File.read method is uselessly complex behavior:
Socket.read (no pipe) inherits IO.read (support pipe) but behaves as File.read (no pipe).
Also, adding method require more document maintenance cost.
So, I think updati...
akr (Akira Tanaka)
04:10 AM Bug #17666: Thread#join hangs when Fiber.set_scheduler is set
I don't have enough time to see details of the request just now. I filled the Backport field to recall myself to this ticket later. nagachika (Tomoyuki Chikanaga)
01:57 AM Bug #17666: Thread#join hangs when Fiber.set_scheduler is set
I think we should consider isolating this for backport to 3.0.3 if possible.
This three lines:
https://github.com/ruby/ruby/blob/v3_0_2/thread.c#L547-L549
```c
if (target_thread->scheduler != Qnil) {
rb_scheduler_u...
ioquatix (Samuel Williams)
12:49 AM Revision f347b586 (git): [ruby/fiddle] Handle#file_name results in very platform dependent
nobu (Nobuyoshi Nakada)
12:26 AM Revision 0d74ddc5 (git): * 2021-07-15 [ci skip]
git[bot]
12:20 AM Revision c67c83fb (git): [ruby/fiddle] Module file name may be the realpath
Even when the path which was used to dlopen may be a symlink. nobu (Nobuyoshi Nakada)

07/14/2021

11:54 PM Bug #18031: Nested TracePoint#enable with define_method target crashes
I don't think the overriding behavior is intentional, since it doesn't happen for other kinds of targets.
There is an existing [test case][1] that tests this for `Proc`.
I also found a leak specific to targeting bmethods while looking ...
alanwu (Alan Wu)
11:47 PM Bug #13671: Regexp with lookbehind and case-insensitivity raises RegexpError only on strings with certain characters
Eregon (Benoit Daloze) wrote in #note-12:
> It seems ruby master as of today still uses Onigmo 6.1.3, but https://github.com/k-takata/Onigmo/releases/tag/Onigmo-6.2.0 is needed to fix this bug.
> ...
If nobody else wants to urgently do...
duerst (Martin Dürst)
02:33 PM Bug #13671: Regexp with lookbehind and case-insensitivity raises RegexpError only on strings with certain characters
It seems ruby master as of today still uses Onigmo 6.1.3, but https://github.com/k-takata/Onigmo/releases/tag/Onigmo-6.2.0 is needed to fix this bug.
Who can update Onigmo to latest?
Eregon (Benoit Daloze)
02:34 PM Misc #17997: DevelopersMeeting20210715Japan
* [Bug #13671] Regexp with lookbehind and case-insensitivity raises RegexpError only on strings with certain characters (eregon)
* Can we update to latest Onigmo to fix this? Who knows how to do that/who to assign?
Eregon (Benoit Daloze)
12:06 PM Misc #17997: DevelopersMeeting20210715Japan
- [Feature #17837] Add support for Regexp timeouts (Sam Saffron)
- I support looking more closely at Nobu's patch. I have done some experiments which show worst-case slowdowns of ~5%.
duerst (Martin Dürst)
01:00 PM Revision 2fa3209a (git): [ruby/fiddle] fixed the test on case-insensitive filesystem
nobu (Nobuyoshi Nakada)
11:59 AM Feature #17837: Add support for Regexp timeouts
nobu (Nobuyoshi Nakada) wrote in #note-22:
> I made a patch for `Regexp#backtrack_limit=`.
> ...
I have looked at this patch. I think this is the general direction to go. I also think that the interface/API looks good, maybe having a k...
duerst (Martin Dürst)
11:52 AM Bug #18038 (Closed): Invalid interpolation in heredocs
Given code as followed:
``` ruby
var = 1
v1 = <<~CMD
something
#{"/#{var}"}
CMD
v2 = <<~CMD
something
#{other = "/#{var}"}
CMD
v3 = <<~CMD
something
#{("/#{var}")}
CMD
p v1
p v2
p v3
p v1 == v2
...
maciej.mensfeld (Maciej Mensfeld)
09:56 AM Revision 67897762 (git): [ruby/fiddle] Add Fiddle::Handle#file_name (https://github.com/ruby/fiddle/pull/88)
https://github.com/ruby/fiddle/commit/4ee1c6fc4b Kenta Murata
09:55 AM Revision 169529a0 (git): [ruby/fiddle] Check HAVE_RUBY_MEMORY_VIEW_H rather than API version (https://github.com/ruby/fiddle/pull/86)
https://github.com/ruby/fiddle/commit/c5abcc3a7e nobu (Nobuyoshi Nakada)
09:43 AM Revision 818c74b7 (git): [ruby/fiddle] Return the module handle value in Fiddle::Handle#to_i and add FIddle::Handle#to_ptr (https://github.com/ruby/fiddle/pull/87)
https://github.com/ruby/fiddle/commit/170111a0cb Kenta Murata
04:18 AM Bug #16654 (Closed): Segfault in rb_str_hash
jeremyevans0 (Jeremy Evans)
03:14 AM Bug #16654: Segfault in rb_str_hash
I was able to reproduce this on an old app I inherited. It's not an issue in ruby itself, rather the issue seems to be caused by a bug in bootsnap <= 1.4.8: https://github.com/Shopify/bootsnap/pull/322
You can reproduce this by having...
mwallba (Michael Wallbaum)
01:48 AM Revision 57a743ef (git): * 2021-07-14 [ci skip]
git[bot]
01:48 AM Revision 896bbb9f (git): Merge RubyGems/Bundler master from 8459ebd6ad65ce3397233416dc64083ae7572bb9
hsbt (Hiroshi SHIBATA)
12:31 AM Feature #18020: Introduce `IO::Buffer` for fiber scheduler.
@eregon thanks for the feedback.
The flags are more efficient and for the current design they are mostly implementation specific. I'm not sure how you implement multiple flags with symbols? For the initial design we can actually avoid e...
ioquatix (Samuel Williams)

07/13/2021

01:55 PM Bug #17788 (Closed): ruby 3.0.0 - compiling c++ extension on alpine fails
Applied in changeset commit:git|29f6f79e7396018962eb25c5f5e409f5fe28a73b.
----------
Get `ruby_nonempty_memcpy` to have C linkage
Fixes [Bug #17788]
xtkoba (Tee KOBAYASHI)
01:55 PM Revision 29f6f79e (git): Get `ruby_nonempty_memcpy` to have C linkage
Fixes [Bug #17788] xtkoba (Tee KOBAYASHI)
01:20 PM Misc #17997: DevelopersMeeting20210715Japan
* [Feature #17795] Around `Process.fork` callbacks API (dan0042)
* After a few meetings without a decision, can we at least reach a compromise with `Process._fork_` ?
* For certain uses cases that would improve the statu quo from "...
Dan0042 (Daniel DeLorme)
12:34 PM Revision cb955dc9 (git): [ruby/fiddle] update dependencies
nobu (Nobuyoshi Nakada)
12:21 PM Revision 1d03c7da (git): [ruby/irb] Add an explanation of default sub commands of "measure", which are :time and :stackprof
https://github.com/ruby/irb/commit/759be5a344 aycabta (aycabta .)
11:36 AM Revision 40d45ab0 (git): [ruby/fiddle] Check HAVE_RUBY_MEMORY_VIEW_H rather than API version
https://github.com/ruby/fiddle/commit/93f9564446 nobu (Nobuyoshi Nakada)
11:30 AM Revision a5d6ea92 (git): [ruby/error_highlight] Set the binary mode for Tempfile creation in a test
https://github.com/ruby/error_highlight/commit/8273d3b6f2 mame (Yusuke Endoh)
10:37 AM Revision 472d8c55 (git): [ruby/fiddle] Update required_ruby_version (https://github.com/ruby/fiddle/pull/85)
Drop supports for old versions, keeping 2.5 as CI supports it for
now.
https://github.com/ruby/fiddle/commit/90634e7c55
nobu (Nobuyoshi Nakada)
10:37 AM Revision bb868f48 (git): [ruby/fiddle] Use have_header and have_type to detect memory view availability
Fix https://github.com/ruby/fiddle/pull/84
It may detect ruby/memory_view.h for system Ruby that is installed in
/usr.
We can use RUBY_API_VERSION_MAJOR to detect memory view availability
because memory view is available since Ruby 3.0...
Sutou Kouhei
10:37 AM Revision 5c0d8c63 (git): [ruby/fiddle] Add "offsetof" to Struct classes (https://github.com/ruby/fiddle/pull/83)
* Add "offsetof" to Struct classes
I need to get the offset of a member inside a struct without allocating
the struct. This patch adds an "offsetof" class method to structs that
are generated.
The usage is like this:
```ruby
MyStruct...
tenderlovemaking (Aaron Patterson)
10:37 AM Revision a2c9e1b5 (git): [ruby/fiddle] Bump version
https://github.com/ruby/fiddle/commit/049138b4b8 Sutou Kouhei
10:37 AM Revision 70b03186 (git): [ruby/fiddle] MemoryView: ensure reset rb_memory_view_t::obj on error
https://github.com/ruby/fiddle/commit/0ed39345fe Sutou Kouhei
10:37 AM Revision 9f86e50e (git): [ruby/fiddle] StringValuePtr may change the val
https://github.com/ruby/fiddle/commit/bddca7c895 Sutou Kouhei
10:37 AM Revision 10e26cfa (git): [ruby/fiddle] Add MemoryView.export and MemoryView#release (https://github.com/ruby/fiddle/pull/80)
fix https://github.com/ruby/fiddle/pull/79
Users can release memory views explicitly before process exit.
Reported by xtkoba. Thanks!!!
https://github.com/ruby/fiddle/commit/1de64b7e76
Sutou Kouhei
10:37 AM Revision 9988f6ac (git): [ruby/fiddle] Add Fiddle::MemoryView#to_s (https://github.com/ruby/fiddle/pull/78)
Fix https://github.com/ruby/fiddle/pull/74
Reported by dsisnero. Thanks!!!
Sutou Kouhei
10:37 AM Revision 8c905349 (git): [ruby/fiddle] test: fix SetLastError's input type
https://github.com/ruby/fiddle/commit/ca5e6a0404 Sutou Kouhei
10:37 AM Revision 37d16bb9 (git): [ruby/fiddle] test: use double quote for string literal
https://github.com/ruby/fiddle/commit/fab7eab95b Sutou Kouhei
10:37 AM Revision 5516d74a (git): [ruby/fiddle] test: add a test for win32_last_socket_error
https://github.com/ruby/fiddle/commit/c86cec03cd Sutou Kouhei
10:37 AM Revision 303ab5da (git): [ruby/fiddle] test: add missing receiver
https://github.com/ruby/fiddle/commit/1da3b4af16 Sutou Kouhei
10:37 AM Revision d1eeb9fe (git): [ruby/fiddle] windows: use GetLastError() for win32_last_error
Ruby: [Bug #11579]
Patch by cremno phobia. Thanks!!!
https://github.com/ruby/fiddle/commit/760a8f9b14
Sutou Kouhei
10:37 AM Revision c0f9191a (git): [ruby/fiddle] Bump version
https://github.com/ruby/fiddle/commit/3784cfeec4 Sutou Kouhei
10:36 AM Revision 4c039a2e (git): tool/sync_default_gems.rb: remove CRs
nobu (Nobuyoshi Nakada)
10:35 AM Feature #18020: Introduce `IO::Buffer` for fiber scheduler.
API-wise: integer flags feel not so Ruby-like. How about symbols instead?
Or are those flags only meant to be used from C?
`def to_str(offset, length)` seems problematic, the coercion protocol is to_str() (no arguments). So it should...
Eregon (Benoit Daloze)
10:05 AM Revision f9c559a0 (git): sync_default_gems.rb: expand links to PRs of the upstream
nobu (Nobuyoshi Nakada)
07:54 AM Revision 5fd5d71a (git): [ruby/error_highlight] Support a file that has no final newline
https://github.com/ruby/error_highlight/commit/9d671284cb mame (Yusuke Endoh)
07:51 AM Revision 23c8bc36 (git): [ruby/error_highlight] Support hard tabs
Now, the highlight line is created by replacing non-tab characters with
spaces, and keeping all hard tabs as-is. This means the highlight line
has the completely same indentation as the code snippet line.
Fixes #7
https://github.com/ru...
mame (Yusuke Endoh)
07:28 AM Revision b18f6fff (git): * 2021-07-13 [ci skip]
git[bot]
07:28 AM Revision 9df712a0 (git): Expose `rb_obj_is_fiber`.
Samuel Williams

07/12/2021

04:30 PM Bug #18002: s390x: Tests failing without LC_ALL env
Here is the status under the `/tmp/rubytest1` (`tmpdir`).
```
ruby01|s390x$ unset LC_ALL
ruby01|s390x$ ls -l /tmp/rubytest1
total 0
-rw-r--r-- 1 jaruga sudo 0 Jul 12 12:21 'A�'$'\221'
lrwxrwxrwx 1 jaruga sudo 3 Jul 12 12:21 x ->...
jaruga (Jun Aruga)
04:28 PM Bug #18002: s390x: Tests failing without LC_ALL env
> ```
> ...
For the 1st failed test, I created a minimal reproducer.
```
$ cat test.rb
require 'fileutils'
fsenc = Encoding.find("filesystem")
# => #<Encoding:ISO-8859-1> if `unset LC_ALL` on s390x.
# => #<Encoding:US-ASCII> ...
jaruga (Jun Aruga)
04:07 PM Bug #15856: Performance of redundant `Kernel.require` is slow when many gems are activated
The feature index arrays seems to ignore the priority of file types. nobu (Nobuyoshi Nakada)
10:28 AM Bug #17664: Behavior of sockets changed in Ruby 3.0 to non-blocking
> I missed some functions in io.c which could invoke read. That's why read was showing up.
Sorry, this tripped me up and I was looking for a corresponding `write` line.
> ...
This seems fine to me, but to play the devil's advocate ...
ciconia (Sharon Rosner)
02:26 AM Bug #17664: Behavior of sockets changed in Ruby 3.0 to non-blocking
I was playing around with a larger number of connections and the deferred submit:
```
io_write:Event_Backend_fiber_transfer -> 46
io_write:Event_Backend_fiber_transfer -> 46
io_write:Event_Backend_fiber_transfer -> 46
io_write:Eve...
ioquatix (Samuel Williams)
01:03 AM Bug #17664: Behavior of sockets changed in Ruby 3.0 to non-blocking
Here is `DirectScheduler`:
```
Running 30s test @ http://localhost:9090
4 threads and 128 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 3.55ms 658.12us 14.96ms 64.38%
Req/Sec 8.92k 0.9...
ioquatix (Samuel Williams)
12:54 AM Bug #17664: Behavior of sockets changed in Ruby 3.0 to non-blocking
I rewrote the `uring` implementation to track the number of pending operations. I'm kind of surprised that the SQ doesn't do this.
```
% time seconds usecs/call calls errors syscall
------ ----------- ----------- -------...
ioquatix (Samuel Williams)
12:16 AM Bug #17664: Behavior of sockets changed in Ruby 3.0 to non-blocking
I missed some functions in `io.c` which could invoke `read`. That's why `read` was showing up. Now that's been patched:
```
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------...
ioquatix (Samuel Williams)
07:48 AM Revision 84fea8ee (git): [ruby/error_highlight] Update a test for multibyte characters
https://github.com/ruby/error_highlight/commit/2fc70d7f8e mame (Yusuke Endoh)
07:48 AM Revision 8b01d16a (git): [ruby/error_highlight] Stop showing a code snippet if it has non-ascii characters
See https://github.com/ruby/error_highlight/issues/4
https://github.com/ruby/error_highlight/commit/c20efd3961
mame (Yusuke Endoh)
07:45 AM Feature #18037: Update Unicode data to Unicode Version 14.0.0
I have successfully tested upgrading to Unicode 14.0.0 with the beta release data, and reported this back to the Unicode consortium. This means that the actual upgrade should be rather smooth. duerst (Martin Dürst)
07:44 AM Feature #18037 (Closed): Update Unicode data to Unicode Version 14.0.0
Unicode Version 14.0.0 is currently in beta. See the announcement at https://home.unicode.org/unicode-14-0-beta-review/ and more details at https://www.unicode.org/versions/beta-14.0.0.html. We should test the new data during the beta pe... duerst (Martin Dürst)
07:16 AM Revision 028441d2 (git): Avoid calling `fstat` on things we already know are valid sockets.
Samuel Williams
05:50 AM Feature #17039 (Closed): Remove Time#succ
Removed at commit:7817a438eb1803e7b3358f43bd1f38479badfbdc znz (Kazuhiro NISHIYAMA)
05:19 AM Misc #18025: rb_iterate is obsolete since 1.9 but is not marked as deprecated for C compilers
+1 ko1 (Koichi Sasada)
04:45 AM Revision 0895d57d (git): * 2021-07-12 [ci skip]
git[bot]
03:10 AM Revision 6504ca00 (git): Show node IDs in dump
nobu (Nobuyoshi Nakada)

07/11/2021

10:46 PM Bug #12052: String#encode with xml option returns wrong result for totally non-ASCII-compatible encodings
nagachika (Tomoyuki Chikanaga) wrote in #note-11:
> The multiple GitHub Actions environments show the failure of make check.
commit:391abc543cea118a9cd7d6310acadbfa352668ef is needed.
nobu (Nobuyoshi Nakada)
09:15 PM Bug #17664: Behavior of sockets changed in Ruby 3.0 to non-blocking
> My understanding is sockets are buffered, so normally you'll see EAGAIN only if you saturate them.
For `write` this seems totally reasonable, but I was also checking `read` which you'd expect to block more often.
> ...
Yes, agree...
ioquatix (Samuel Williams)
04:38 PM Bug #17664: Behavior of sockets changed in Ruby 3.0 to non-blocking
> In my testing, comparing `io_uring` `io_read` and `io_write` operations, perform about 20% worse in practice in my benchmarks. This was surprising to me. My current understanding as to why it's slow is because when we perform `io_read`... ciconia (Sharon Rosner)
10:05 AM Bug #17664: Behavior of sockets changed in Ruby 3.0 to non-blocking
Here are some summaries from `strace -c`:
Using non-blocking sockets (note the errors column which indicates EAGAIN):
```
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ---...
ioquatix (Samuel Williams)
09:16 AM Bug #17664: Behavior of sockets changed in Ruby 3.0 to non-blocking
I have researched this topic today and I'm going to share some of my notes and thoughts.
Firstly, with regards to performance, the most important platform is Linux, and I personally believe that `io_uring` is going to be the most import...
ioquatix (Samuel Williams)
11:28 AM Revision c2ed5ab0 (git): [ruby/date] Fixed markups for bold [ci skip]
https://github.com/ruby/date/commit/404f9d2096 nobu (Nobuyoshi Nakada)
11:28 AM Revision 8065670c (git): [ruby/date] Fix comparison with Float::INFINITY
Fixes [Bug #17945]
https://github.com/ruby/date/commit/953d907238
jeremyevans (Jeremy Evans)
11:12 AM Revision 49ba7cd2 (git): [DOC] Move mailing-list URLs to footnotes [ci skip]
nobu (Nobuyoshi Nakada)
10:56 AM Revision 69038501 (git): Move core_assertions.rb from test/unit
This file contains extended assertions for ruby core which do not
belong to test/unit.
nobu (Nobuyoshi Nakada)
09:26 AM Revision b32ae989 (git): Move rb_str_escape function declaration
S_H_ (Shun Hiraoka)
09:11 AM Bug #12261 (Closed): Windows: File.dirname with 2+ / or 2+ \\ will return // or \\\\
It is a different thing from single '/' on Windows, like drive letters. nobu (Nobuyoshi Nakada)

07/10/2021

09:12 PM Revision e330bbee (git): * 2021-07-11 [ci skip]
git[bot]
09:12 PM Revision 947d0198 (git): [ruby/irb] Show LANG and LC_ALL env by irb_info
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
https://github.com/ruby/irb/commit/b431742430
aycabta (aycabta .)
12:02 PM Revision 491ab282 (git): Remove half-defined Reline on LoadError
When fiddle is not avaiable, reline/terminfo depending on it also
fails.
nobu (Nobuyoshi Nakada)
10:14 AM Revision d172f8ac (git): Skip fiddle tests if fiddle is not avaiable
nobu (Nobuyoshi Nakada)
08:42 AM Feature #18033: Time.new to parse a string
```
user system total real
Time.iso8601 0.006919 0.000185 0.007104 ( 0.007091)
Time.parse 0.018338 0.000207 0.018545 ( 0.018590)
Time.new 0.003671 0.000069 0.003740 ( 0.00...
byroot (Jean Boussier)
08:39 AM Revision cb3eb3d7 (git): Get rid of conflict in ccan/list
Undefine LIST_HEAD from BSD-origin sys/queue.h. nobu (Nobuyoshi Nakada)
04:44 AM Bug #17530 (Closed): irb handles << incorrectly with variable as identifier
jeremyevans0 (Jeremy Evans)
04:44 AM Revision 9c285150 (git): * 2021-07-10 [ci skip]
git[bot]
04:44 AM Revision 289fd3c8 (git): [ruby/irb] Pass local variables from workspace binding to lexer
This fixes at least an issue where irb will incorrectly assume
code opens a heredoc when it does not, such as this code:
```ruby
s1 = 'testing'
s2 = 'this'
s2 <<s1
p s1
s1
```
Ruby parses the `s2 <<s1` as `s2.<<(s1)`, not as a heredoc,...
jeremyevans (Jeremy Evans)
03:30 AM Feature #18020: Introduce `IO::Buffer` for fiber scheduler.
Add notes about buffer allocation. ioquatix (Samuel Williams)
01:20 AM Bug #15856: Performance of redundant `Kernel.require` is slow when many gems are activated
We've still been using the David Rodriguez patch with no reported issues around it for the past ~2 years or so.
It is likely that we don't hit the Digest issue due to the way we already have to play games with that built-in gem due to...
lamont (Lamont Granquist)
12:01 AM Bug #18031: Nested TracePoint#enable with define_method target crashes
I've submitted a pull request to fix this crash: https://github.com/ruby/ruby/pull/4640
I noticed two other issues:
1. Tracepoints leak memory. I think this is definitely a bug. Example code:
```ruby
loop do
tp = Trac...
jeremyevans0 (Jeremy Evans)

07/09/2021

11:51 PM Bug #18028: test/ruby/enc/test_emoji_breaks.rb does not deal with Unicode ranges in file emoji-sequences.txt
One of the testing scripts (`test/ruby/enc/test_emoji_break.rb`) that the version declared internally in a data files matches the version we expect. In that context, I ran into the following problem, reported via standard channels to the... duerst (Martin Dürst)
09:33 PM Feature #17370: Introduce non-blocking `Addrinfo.getaddrinfo` and related methods.
This was merged and basic testing seems to work well. More evaluation is required. ioquatix (Samuel Williams)
03:51 PM Bug #15993 (Open): 'require' doesn't work if there are Cyrillic chars in the path to Ruby dir
inversion (Yura Babak) wrote in #note-8:
> jeremyevans0 (Jeremy Evans) wrote in #note-7:
> ...
I was able to reproduce the issue, but only when I installed Ruby into a path not supported by the `Windows-1251` encoding:
```
d:\Евген...
jeremyevans0 (Jeremy Evans)
11:12 AM Bug #15993: 'require' doesn't work if there are Cyrillic chars in the path to Ruby dir
jeremyevans0 (Jeremy Evans) wrote in #note-7:
> This appears to be fixed starting in Ruby 2.7 (also works in 3.0):

**Still, there is a problem.**
`require 'bundler/setup'` fails if `LOAD_PATH` or `Gem.dir` contain Cyrillic chars, t...
inversion (Yura Babak)
02:49 PM Bug #18036: Pthread fibers become invalid on fork - different from normal fibers.
I'm fine having `fork` raise an exception when called from non-main fiber if the pthread coroutine implementation is used, and issue a verbose warning in other cases. jeremyevans0 (Jeremy Evans)
09:45 AM Bug #18036 (Closed): Pthread fibers become invalid on fork - different from normal fibers.
Fork is notoriously hard to use correctly and I most cases we should be encouraging `Process#spawn`. However, it does have use cases for example pre-fork model of server design. So there are some valid usage at least.
We recently intr...
ioquatix (Samuel Williams)
09:51 AM Feature #18035: Introduce general model/semantic for immutability.
Regarding method chains, one thing that's always bothered me a bit is this:
```ruby
def foo(*arguments)
pp object_id: arguments.object_id, frozen: arguments.frozen?
end
arguments = [1, 2, 3].freeze
pp object_id: arguments.object_id, f...
ioquatix (Samuel Williams)
08:48 AM Feature #18035: Introduce general model/semantic for immutability.
This is mostly just a generic comment that may not be very helpful, but I can only say that I fully agree. Even before talking about parallel stuff (thread/fiber), knowing some object is frozen can be of help when optimizing.
One thin...
duerst (Martin Dürst)
08:11 AM Feature #18035: Introduce general model/semantic for immutability.
Fix title. ioquatix (Samuel Williams)
08:10 AM Feature #18035 (Open): Introduce general model/semantic for immutability.
It would be good to establish some rules around mutability, immutability, frozen, and deep frozen in Ruby.
I see time and time again, incorrect assumptions about how this works in production code. Constants that aren't really constant...
ioquatix (Samuel Williams)
08:51 AM Feature #18033: Time.new to parse a string
ioquatix (Samuel Williams) wrote in #note-4:
> > Time.parse often results in unintentional/surprising results.
> ...
Yes, it seems by design, and changing the behavior will just break something.
I thought that the same name but differ...
nobu (Nobuyoshi Nakada)
08:29 AM Feature #18033: Time.new to parse a string
> Time.parse often results in unintentional/surprising results.
Can we change it so that it doesn't return unintentional/surprising results? I realise this might be impossible without extending the interface... e.g. `Time.parse(..., sur...
ioquatix (Samuel Williams)
07:51 AM Feature #18033: Time.new to parse a string
ioquatix (Samuel Williams) wrote in #note-2:
> But does any other `#new` implementation work this way? Can we fix `Time#parse`? I wonder if user will be confused, should they use `Time.parse` or `Time.new`?
The reason not to "fix `Ti...
nobu (Nobuyoshi Nakada)
06:30 AM Feature #18033: Time.new to parse a string
It looks like good improvement.
But does any other `#new` implementation work this way? Can we fix `Time#parse`? I wonder if user will be confused, should they use `Time.parse` or `Time.new`?
Why is `Time.parse` so slow?
This se...
ioquatix (Samuel Williams)
06:13 AM Feature #18033 (Closed): Time.new to parse a string
Make `Time.new` parse `Time#inspect` and ISO-8601 like strings.
* `Time.iso8601` and `Time.parse` need an extension library, `date`.
* `Time.iso8601` can't parse `Time#inspect` string.
* `Time.parse` often results in unintentional/s...
nobu (Nobuyoshi Nakada)
07:22 AM Revision 60722391 (git): Remove no longer needed include files (Unicode Version 12.1.0)
duerst (Martin Dürst)
07:14 AM Bug #18032: Openstruct is ~20..25x slower with Ruby 3.0.0 and 3.0.1 compared to earlier versions
@mame @marcandre that is unfortunate, because initializing from a hash is probably the most frequently used form.
I agree on correctness over perfomance - I ran into the issue with pre-defined methods before :)
Thank you for takin...
TiloS (Tilo S)
06:34 AM Bug #18032 (Rejected): Openstruct is ~20..25x slower with Ruby 3.0.0 and 3.0.1 compared to earlier versions
@mame is correct that #15409 was a concern, but this is mainly due to #12136 and listed in the release notes for 3.0.
Basically we have prioritized correctness over performance and came back to a solution similar to that of Ruby 2.2.
...
marcandre (Marc-Andre Lafortune)
05:41 AM Bug #18032 (Assigned): Openstruct is ~20..25x slower with Ruby 3.0.0 and 3.0.1 compared to earlier versions
Maybe due to this change: https://bugs.ruby-lang.org/issues/15409#note-9
> reverts lazy initialization and restores overriding private methods
I'm assigning this ticket to @marcandre.
BTW, OpenStruct is now considered as "an ant...
mame (Yusuke Endoh)
05:04 AM Bug #18032 (Rejected): Openstruct is ~20..25x slower with Ruby 3.0.0 and 3.0.1 compared to earlier versions
Doing some timings with different Ruby versions, I noticed that when using Ruby 3.0.0 and 3.0.1
the time to create OpenStruct instances has significantly increased by 20..25x
```
0.936016 seconds elapsed for Class.new (Ruby 2.7.2...
TiloS (Tilo S)
07:01 AM Feature #18020: Introduce `IO::Buffer` for fiber scheduler.
Okay, the PR is ready for review: https://github.com/ruby/ruby/pull/4621
Here is how it's used:
- `uring.c`: https://github.com/socketry/event/blob/b40bb0b174aed4cc3fed0f0eaafdd73f2a6a6f4c/ext/event/backend/uring.c#L265-L365
- `epoll.c...
ioquatix (Samuel Williams)
06:47 AM Feature #18020: Introduce `IO::Buffer` for fiber scheduler.
Does `FFI::Pointer` have locking mechanism suitable for IO? Does it have a mutability model suitable for reading and writing? Does it allocate page aligned mapped memory suitable for zero-copy IO?
Even if I agree that it was suitable,...
ioquatix (Samuel Williams)
06:39 AM Revision 23ed8ef4 (git): Update bundled_gems
znz (Kazuhiro NISHIYAMA)
06:16 AM Bug #18034 (Closed): Segmentation fault fiddle with `--enable-bundled-libffi` and macOS
I always got a segmentation fault with `make test-all TESTS="fiddle"` and `--enable-bundled-libffi` on macOS.
https://gist.github.com/hsbt/9f7dc9f62e9197b92c5a99384972dad3
hsbt (Hiroshi SHIBATA)
 

Also available in: Atom