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`? -
08:15 PM Feature #17795: Around `Process.fork` callbacks API
- @mame did you mean to close the ticket?
-
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.
... -
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__`... -
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.
-
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. -
06:04 PM Feature #3187: Allow dynamic Fiber stack size
- Is this request still being considered?
-
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... -
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.
-
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... -
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... -
05:42 AM Feature #17724: Make the pin operator support instance/class/global variables
- Sounds reasonable. Accepted.
Matz.
-
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... -
04:55 PM Revision f1035248 (git): [ruby/irb] Show code page by irb_info on Windows
- https://github.com/ruby/irb/commit/6160d74199
-
04:55 PM Revision 456d0019 (git): [ruby/irb] Escape space in free-spacing mode
- https://github.com/ruby/irb/commit/085ac42947
-
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... -
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... -
06:28 AM Bug #18011: `Method#parameters` is incorrect for forwarded arguments
- Sounds reasonable. Accepted.
Matz.
-
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... - 03:49 PM Revision feec80a3 (git): * 2021-07-16 [ci skip]
-
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. -
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. -
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... -
01:24 PM Revision 3e7a7fb2 (git): Make Struct#keyword_init? return nil by default [Feature #18008]
-
12:32 PM Revision 33bea3bd (git): Regularize keyword_init values not to hold the argument object
-
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?
-
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.
-
09:21 AM Revision 835c63cd (git): Add tests and NEWS [Feature #18008]
-
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] -
09:11 AM Feature #18008: `keyword_init?` method for Struct
- hkdnet's patch is https://github.com/ruby/ruby/pull/4609
-
09:11 AM Feature #18008: `keyword_init?` method for Struct
- Accepted.
Matz.
-
09:14 AM Revision 1a637544 (git): struct.c: Add keyword_init? singleton method for StructClass (#4609)
- Fixes [Feature #18008]
-
08:30 AM Feature #17798: exception in finalizer
- Sounds OK. Let's try it.
Matz.
-
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(). -
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. -
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_.) -
07:16 AM Revision 8f62f12c (git): Fix typo in flag in NEWS.md
-
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... -
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.
-
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.
-
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.
-
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... -
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.
-
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... -
12:49 AM Revision f347b586 (git): [ruby/fiddle] Handle#file_name results in very platform dependent
- 12:26 AM Revision 0d74ddc5 (git): * 2021-07-15 [ci skip]
-
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.
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 ... -
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... -
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? -
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?
-
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%. -
01:00 PM Revision 2fa3209a (git): [ruby/fiddle] fixed the test on case-insensitive filesystem
-
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... -
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
... - 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
-
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
- 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
-
04:18 AM Bug #16654 (Closed): Segfault in rb_str_hash
-
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... - 01:48 AM Revision 57a743ef (git): * 2021-07-14 [ci skip]
-
01:48 AM Revision 896bbb9f (git): Merge RubyGems/Bundler master from 8459ebd6ad65ce3397233416dc64083ae7572bb9
-
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...
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] -
01:55 PM Revision 29f6f79e (git): Get `ruby_nonempty_memcpy` to have C linkage
- Fixes [Bug #17788]
-
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 "... -
12:34 PM Revision cb955dc9 (git): [ruby/fiddle] update dependencies
-
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
-
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
-
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
-
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 - 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... -
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... - 10:37 AM Revision a2c9e1b5 (git): [ruby/fiddle] Bump version
- https://github.com/ruby/fiddle/commit/049138b4b8
- 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
- 10:37 AM Revision 9f86e50e (git): [ruby/fiddle] StringValuePtr may change the val
- https://github.com/ruby/fiddle/commit/bddca7c895
- 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 - 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!!! - 10:37 AM Revision 8c905349 (git): [ruby/fiddle] test: fix SetLastError's input type
- https://github.com/ruby/fiddle/commit/ca5e6a0404
- 10:37 AM Revision 37d16bb9 (git): [ruby/fiddle] test: use double quote for string literal
- https://github.com/ruby/fiddle/commit/fab7eab95b
- 10:37 AM Revision 5516d74a (git): [ruby/fiddle] test: add a test for win32_last_socket_error
- https://github.com/ruby/fiddle/commit/c86cec03cd
- 10:37 AM Revision 303ab5da (git): [ruby/fiddle] test: add missing receiver
- https://github.com/ruby/fiddle/commit/1da3b4af16
- 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 - 10:37 AM Revision c0f9191a (git): [ruby/fiddle] Bump version
- https://github.com/ruby/fiddle/commit/3784cfeec4
-
10:36 AM Revision 4c039a2e (git): tool/sync_default_gems.rb: remove CRs
-
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... -
10:05 AM Revision f9c559a0 (git): sync_default_gems.rb: expand links to PRs of the upstream
-
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
-
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... - 07:28 AM Revision b18f6fff (git): * 2021-07-13 [ci skip]
- 07:28 AM Revision 9df712a0 (git): Expose `rb_obj_is_fiber`.
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 ->... -
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> ... -
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.
-
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 ... -
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... -
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... -
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
------ ----------- ----------- -------... -
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
------ ----------- ----------- --------- --------... -
07:48 AM Revision 84fea8ee (git): [ruby/error_highlight] Update a test for multibyte characters
- https://github.com/ruby/error_highlight/commit/2fc70d7f8e
-
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 -
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.
-
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...
- 07:16 AM Revision 028441d2 (git): Avoid calling `fstat` on things we already know are valid sockets.
-
05:50 AM Feature #17039 (Closed): Remove Time#succ
- Removed at commit:7817a438eb1803e7b3358f43bd1f38479badfbdc
-
05:19 AM Misc #18025: rb_iterate is obsolete since 1.9 but is not marked as deprecated for C compilers
- +1
- 04:45 AM Revision 0895d57d (git): * 2021-07-12 [ci skip]
-
03:10 AM Revision 6504ca00 (git): Show node IDs in dump
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. -
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... -
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`...
-
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
------ ----------- ----------- --------- --------- ---... -
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... -
11:28 AM Revision c2ed5ab0 (git): [ruby/date] Fixed markups for bold [ci skip]
- https://github.com/ruby/date/commit/404f9d2096
-
11:28 AM Revision 8065670c (git): [ruby/date] Fix comparison with Float::INFINITY
- Fixes [Bug #17945]
https://github.com/ruby/date/commit/953d907238 -
11:12 AM Revision 49ba7cd2 (git): [DOC] Move mailing-list URLs to footnotes [ci skip]
-
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. -
09:26 AM Revision b32ae989 (git): Move rb_str_escape function declaration
-
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.
07/10/2021
- 09:12 PM Revision e330bbee (git): * 2021-07-11 [ci skip]
-
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 -
12:02 PM Revision 491ab282 (git): Remove half-defined Reline on LoadError
- When fiddle is not avaiable, reline/terminfo depending on it also
fails. -
10:14 AM Revision d172f8ac (git): Skip fiddle tests if fiddle is not avaiable
-
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... -
08:39 AM Revision cb3eb3d7 (git): Get rid of conflict in ccan/list
- Undefine LIST_HEAD from BSD-origin sys/queue.h.
-
04:44 AM Bug #17530 (Closed): irb handles << incorrectly with variable as identifier
- 04:44 AM Revision 9c285150 (git): * 2021-07-10 [ci skip]
-
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,... -
03:30 AM Feature #18020: Introduce `IO::Buffer` for fiber scheduler.
- Add notes about buffer allocation.
-
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... -
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...
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...
-
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.
-
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:\Евген... -
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... -
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.
-
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... -
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... -
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... -
08:11 AM Feature #18035: Introduce general model/semantic for immutability.
- Fix title.
-
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... -
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... -
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... -
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... -
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... -
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... -
07:22 AM Revision 60722391 (git): Remove no longer needed include files (Unicode Version 12.1.0)
-
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... -
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.
... -
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... -
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... -
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... -
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,... -
06:39 AM Revision 23ed8ef4 (git): Update bundled_gems
-
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