Project

General

Profile

Activity

From 10/24/2020 to 10/30/2020

10/30/2020

11:47 PM Revision 670e288d (git): Add warning for str_new_static functions
Many functions in string.c assume that capa + termlen to be readable
memory. Add comment in header to communicate this to extension authors.
See also: comment in str_fill_term()
alanwu (Alan Wu)
11:34 PM Revision 520b86ca (git): Move variable closer to usage
alanwu (Alan Wu)
10:26 PM Bug #16809: Fiber crashes with --with-coroutine=copy
I tried pull request #3624 on OpenBSD/sparc64 and it still crashed.
I was able to come up with a fix that works on OpenBSD/sparc64, as long as a couple files are compiled without optimization: https://github.com/ruby/ruby/pull/3726
jeremyevans0 (Jeremy Evans)
07:22 PM Revision bd6cd851 (git): Tweak return of `Ractor#close`, add doc
Marc-Andre Lafortune
06:30 PM Feature #17298 (Open): Ractor's basket communication APIs
This ticket proposes `send_basket`/`receive_basket`, `yield_basket`/`take_basket` APIs to make effective and flexible bridge ractors.
## Background
When we want to send an object as a message, we usually need to copy it. Copying is...
ko1 (Koichi Sasada)
04:48 PM Revision 7c548278 (git): * 2020-10-31 [ci skip]
git[bot]
04:48 PM Revision fd089276 (git): Ractor's "will" doesn't need copying.
`r = Ractor.new{ expr }` generates the block return value from `expr`
and we can get this value by `r.take`. Ractor.yield and Ractor#take
passing values by copying on default. However, the block return value
(we named it "will" in the co...
ko1 (Koichi Sasada)
03:32 PM Bug #17293 (Rejected): URI.parse fails to parse correctly URN or other special characters in path/url
greg.howdeshell (Greg Howdeshell) wrote:
> URI.parse looks to fail parsing endpoints that have special characters. For example:
> ...
This is expected. The `#/applications/` is an anchor/fragment, not part of the path (path is `/`). ...
jeremyevans0 (Jeremy Evans)
02:58 PM Bug #17293 (Rejected): URI.parse fails to parse correctly URN or other special characters in path/url
URI.parse looks to fail parsing endpoints that have special characters. For example:
``` ruby
url = 'http://foobar.com/#/applications/'
path = 'my_application'
URI.join(url, path).to_s
```
The result renders `http://foobar.com/my...
greg.howdeshell (Greg Howdeshell)
03:09 PM Feature #17297 (Closed): Feature: Introduce Pathname.mktmpdir

When I want to create a tmpdir I often want to manipulate it as a pathname. By introducing Pathname.mktmpdir I can get this behavior.
Currently I must:
```ruby
Dir.mktmpdir do |dir|
dir = Pathname(dir)
# ... code
end
``...
schneems (Richard Schneeman)
03:08 PM Feature #17296 (Feedback): Feature: Pathname#chmod use FileUtils.chmod instead of File

The `FileUtils.chmod` provides the same numerical interface as `File.chmod` and it also includes a "symbolic mode" interface. With this patch you'll be able to run this code:
```ruby
Pathname.new("bin/compile").chmod("+x")
```
...
schneems (Richard Schneeman)
03:06 PM Feature #17295 (Rejected): Feature: Create a directory and file with Pathname#touch

Right now if a developer wants to create a file and is not sure if the path exists yet or not they must:
```ruby
Pathname.new("/a/b/c/d.txt").tap {|p| p.dirname.mkpath; FileUtils.touch(p)}
```
After this patch a developer can...
schneems (Richard Schneeman)
03:04 PM Feature #17294 (Closed): Feature: Allow method chaining with Pathname#mkpath Pathname#rmtree

Currently in my code when I want to create a pathname object and create a path at the same time I must use tap
```
path = Pathname.new("/tmp/new").tap(&:mkpath)
```
I think it would be cleaner to be able to chain on the results...
schneems (Richard Schneeman)
12:45 PM Revision 66bf743b (git): Promote debug.rb to default gems.
It have no upstream repo yet. This change is experimental for 3.0.0-preview2. hsbt (Hiroshi SHIBATA)
10:07 AM Feature #17277: Make Enumerator#with_index yield row and col indices for Matrix
sawa (Tsuyoshi Sawada) wrote in #note-7:
> I think the current behaviour is natural. You cannot play around with `with_index` since its receiver is `Enumerator`, not `Matrix`, and the information as a matrix is already gone.
> ...
I ge...
greggzst (Grzegorz Jakubiak)
08:11 AM Bug #17158 (Feedback): Ractor Segfault when using shell and puts
ko1 (Koichi Sasada)
08:11 AM Bug #17158: Ractor Segfault when using shell and puts
sorry to be late, but I can't reproduce this issue.
`while PUTS_RACTORS=1 WORK=shell make run; do date; done` doesn't show any errors on my environment (ruby 3.0.0dev (2020-10-29T15:09:12Z master 502d6d8459) [x86_64-linux]).
recent...
ko1 (Koichi Sasada)
07:52 AM Revision 89c8ca32 (git): add a test of define_method with shareable Proc.
a method defined by define_method with normal Proc can not cross
ractors because the normal Proc is not shareable. However,
shareable Proc can be crossed between ractors, so the method with
shareable Proc should be called correctly.
ko1 (Koichi Sasada)
07:52 AM Revision 08ddc335 (git): sync vm->waiting_fds correctly.
vm->waiting_fds is global resource so we need to lock it correctly.
(forgot to sync one place)
ko1 (Koichi Sasada)
06:18 AM Revision a1828a1f (git): Promote win32ole to default gems.
But win32ole gem is still experimental for 3.0.0-preview2.
I'm working to extract this library on https://github.com/ruby/win32ole.
hsbt (Hiroshi SHIBATA)
03:30 AM Revision 17c6b6b1 (git): Fix a typo [ci skip]
znz (Kazuhiro NISHIYAMA)
03:26 AM Revision 799253dc (git): strip trailing spaces [ci skip]
nobu (Nobuyoshi Nakada)
12:21 AM Feature #17291: Optimize __send__ call
I'm neutral (at least no against it). `__send__` in general has other usages than to reroute method visibilities. Optimising it could benefit good wills. shyouhei (Shyouhei Urabe)
12:17 AM Feature #17288: Optimize __send__ call with a literal method name
JFYI I learned the use of "immediate" refinement from rails.
https://github.com/rails/rails/pull/27363
shyouhei (Shyouhei Urabe)
12:17 AM Feature #17261: Software transactional memory (STM) for Threads and Ractors
chrisseaton (Chris Seaton) wrote in #note-14:
> I think there's benefits to building STM into the language (if we decided we want STM at all) rather than it being a library.
I think so, especially with Ractors, but now we (*I*) don't...
ko1 (Koichi Sasada)

10/29/2020

08:54 PM Feature #17261: Software transactional memory (STM) for Threads and Ractors
I think there's benefits to building STM into the language (if we decided we want STM at all) rather than it being a library.
When you look at more advanced features like conflict resolution and conflict mitigation you may want to do ...
chrisseaton (Chris Seaton)
07:40 PM Feature #17261: Software transactional memory (STM) for Threads and Ractors
Eregon (Benoit Daloze) wrote in #note-12:
> I was talking about the namespace
Ah, I see.
ko1 (Koichi Sasada)
07:22 PM Feature #17261: Software transactional memory (STM) for Threads and Ractors
ko1 (Koichi Sasada) wrote in #note-11:
> You wrote "under Thread and not under Ractor". What does it mean?
I was talking about the namespace, the proposal is Thread::TVar (and not Ractor::TVar), which I agree is a good namespace for ...
Eregon (Benoit Daloze)
06:19 PM Feature #17261: Software transactional memory (STM) for Threads and Ractors
Eregon (Benoit Daloze) wrote in #note-10:
> That does not work with Ractor though (at least currently).
You wrote "under Thread and not under Ractor". What does it mean?
ko1 (Koichi Sasada)
05:21 PM Feature #17261: Software transactional memory (STM) for Threads and Ractors
ko1 (Koichi Sasada) wrote in #note-8:
> For this purpose, concurrent-ruby provides TVar for threads.
That does not work with Ractor though (at least currently).
Eregon (Benoit Daloze)
04:03 PM Feature #17261 (Rejected): Software transactional memory (STM) for Threads and Ractors
ko1 (Koichi Sasada)
04:03 PM Feature #17261: Software transactional memory (STM) for Threads and Ractors
> I think it would be nice to make it its own gem (tvar maybe?) given it's under Thread and not under Ractor, and it could most likely work on other Ruby implementations (e.g., TruffleRuby).
For this purpose, concurrent-ruby provides ...
ko1 (Koichi Sasada)
08:12 PM Feature #17288: Optimize __send__ call with a literal method name
How about a private module instead?
```ruby
class Foo
module Helpers
def self.special # General users should not call or rely on `special`
:special
end
end
private_constant :Helpers
def foo
Helpers.special
en...
Eregon (Benoit Daloze)
04:06 AM Feature #17288: Optimize __send__ call with a literal method name
shyouhei (Shyouhei Urabe) wrote in #note-9:
> @marcandre Here you are:
> ...
0) I was wrong, I retract what I said.
1) My mind is blown. I have always thought of refinements as a way to safely monkey-patch other people's classes, in...
marcandre (Marc-Andre Lafortune)
12:11 AM Feature #17288: Optimize __send__ call with a literal method name
@marcandre Here you are:
```ruby
class Foo
using Module.new {
refine Foo.singleton_class do
def special
end
end
}
def foo
self.class.special
end
class Bar
def foo
Foo.specia...
shyouhei (Shyouhei Urabe)
07:53 PM Feature #17273: shareable_constant_value pragma
Eregon (Benoit Daloze) wrote in #note-16:
> Eregon (Benoit Daloze) wrote in #note-14:
> ...
I agree that it's relatively rare and not a good idea. However, Sequel does this (Sequel::DATABASES). It's been around since 2008 and many ex...
jeremyevans0 (Jeremy Evans)
07:47 PM Feature #17273: shareable_constant_value pragma
Eregon (Benoit Daloze) wrote in #note-16:
> I guess it's relatively rare that a gem would (intentionally) expose a non-frozen constant as part of its API, and that the gem relies on being able to mutate it.
To confirm it, we will int...
ko1 (Koichi Sasada)
07:33 PM Feature #17273: shareable_constant_value pragma
Eregon (Benoit Daloze) wrote in #note-14:
> Of course, no gems should directly mutate constants of another gem.
I missed that the gem doesn't need to mutate `A` to break `OtherLib`.
I guess it's relatively rare that a gem would (intenti...
Eregon (Benoit Daloze)
07:29 PM Feature #17273: shareable_constant_value pragma
ko1 (Koichi Sasada) wrote in #note-13:
> if lits contains Ruby expression, SyntaxError
Could you give an example?
SyntaxError doesn't seem OK to me. It should simply not freeze if not a literal.
Eregon (Benoit Daloze)
07:26 PM Feature #17273: shareable_constant_value pragma
ko1 (Koichi Sasada) wrote in #note-12:
> * It is possible to break other library easily:
That sounds very bad code breaking the encapsulation of that other library.
Of course, no gems should directly mutate constants of another gem....
Eregon (Benoit Daloze)
04:14 PM Feature #17273: shareable_constant_value pragma
By discussing with Matz and several MRI committers, we decided to introduce conservative option and radical option as experimental.
* the name of pragma is `shareable_constant_value` because it affects values referred from constants (...
ko1 (Koichi Sasada)
07:49 PM Feature #17284: Shareable Proc
`Ractor.make_shareable` does traverse reachable and not-already-shareable objects for other objects than Procs, it seems bad that it behaves differently for Proc.
I think the intention is clear with `Ractor.make_shareable(Proc.new{p a})...
Eregon (Benoit Daloze)
06:12 PM Feature #17284 (Closed): Shareable Proc
Applied in changeset commit:git|5d97bdc2dcb835c877010daa033cc2b1dfeb86d6.
----------
Ractor.make_shareable(a_proc)
Ractor.make_shareable() supports Proc object if
(1) a Proc only read outer local variables (no assignments)
(2) read out...
ko1 (Koichi Sasada)
03:47 PM Feature #17284: Shareable Proc
By discussion with Matz and several MRI committers, we decided that making shareable Proc should be more conservative.
* `Ractor.make_shareable(read_values)` should be danger to freeze objects unexpectedly.
* if all read variables are s...
ko1 (Koichi Sasada)
07:42 PM Misc #16778: Should we stop vendoring default gems code?
@hsbt there was no response to https://bugs.ruby-lang.org/issues/16778#note-22
How about reopening this issue?
@deivid Are you still interested to do that PoC for a single default gem?
I think it would be helpful to make progress on...
Eregon (Benoit Daloze)
10:51 AM Misc #16778: Should we stop vendoring default gems code?
>Now after the recent positive comments you changed the status to "rejected". Could you clarify?
It's my mistake.
But no one submit a patch for this issue while 6 months. I reject this.
hsbt (Hiroshi SHIBATA)
06:12 PM Revision 5d97bdc2 (git): Ractor.make_shareable(a_proc)
Ractor.make_shareable() supports Proc object if
(1) a Proc only read outer local variables (no assignments)
(2) read outer local variables are shareable.
Read local variables are stored in a snapshot, so after making
shareable Proc, any...
ko1 (Koichi Sasada)
04:28 PM Feature #16670 (Closed): Reverse order of `expression` in `pattern` for 1-line pattern matching while it's still experimental
jeremyevans0 (Jeremy Evans)
04:23 PM Feature #16670: Reverse order of `expression` in `pattern` for 1-line pattern matching while it's still experimental
There were notes in the recent dev meeting that affect this issue: https://github.com/ruby/dev-meeting-log/blob/master/DevelopersMeeting20201026Japan.md#feature-17260-promote-pattern-matching-to-official-feature-ktsj
`=>` is a new fea...
ttilberg (Tim Tilberg)
04:06 PM Feature #17159: extend `define_method` for Ractor
marcandre (Marc-Andre Lafortune) wrote in #note-8:
> How about:
> ...
Matz, how about this proposal?
ko1 (Koichi Sasada)
04:05 PM Feature #17256 (Closed): Freeze all Regexp objects
commit:7ad56fd87b35abf4933e0146761df91e9ec9890a ko1 (Koichi Sasada)
04:05 PM Feature #17269 (Closed): Frozen Process::Status
commit:1c6ebe14fbdb2bc23878133cbf7a99ea856e3d89 ko1 (Koichi Sasada)
03:09 PM Bug #17254 (Closed): ENV.replace may set nil instead of the proper value
Applied in changeset commit:git|c0aeb98aa903334f06758d39c772cb22440d8a4e.
----------
Make ENV.replace handle multiple environ entries with the same key
While it is expected that all environment keys are unique, that is
not enforced. It...
jeremyevans (Jeremy Evans)
03:09 PM Revision 502d6d84 (git): * 2020-10-30 [ci skip]
git[bot]
03:08 PM Revision c0aeb98a (git): Make ENV.replace handle multiple environ entries with the same key
While it is expected that all environment keys are unique, that is
not enforced. It is possible by manipulating environ directly you
can call a process with an environment with duplicate keys. If
ENV.replace was passed a hash with a key...
jeremyevans (Jeremy Evans)
02:42 PM Revision 07c03bc3 (git): check isolated Proc more strictly
Isolated Proc prohibit to access outer local variables, but it was
violated by binding and so on, so they should be error.
ko1 (Koichi Sasada)
09:48 AM Bug #16651: Extensions Do Not Compile on Mingw64 with mingw32-make
It would replace "C:/MSYS64/..." as "/C/MSYS64/...".
Where did a slash go?
nobu (Nobuyoshi Nakada)
06:34 AM Bug #16651: Extensions Do Not Compile on Mingw64 with mingw32-make
This is still and issue with Ruby 2.7.2.
The offending line of code is now at line 1908 in mkmf.rb.
cfis (Charlie Savage)
09:14 AM Revision bf951c76 (git): An ellipsis (...) can only be placed at the beginning
nobu (Nobuyoshi Nakada)
06:26 AM Feature #17292: Hash Shorthand / Punning
I would agree this is a duplicate, but in the last year we have had the introduction of the pattern matching syntax which makes this less of a syntactical oddity than it may have been in the past. baweaver (Brandon Weaver)
05:07 AM Feature #17292 (Closed): Hash Shorthand / Punning
### Set Literal vs Javascript Object Punning
There was a proposal for a Set literal here: https://bugs.ruby-lang.org/issues/16989
```ruby
set = { 1, 2, 3 }
```
...but it was brought up that this is similar to the Javascript Ob...
baweaver (Brandon Weaver)
05:50 AM Bug #17142: Ruby fails to build in AIX
Are you using GCC to build ruby? What was the error you hit? ReiOdaira (Rei Odaira)
05:22 AM Feature #17168 (Closed): Bundle RBS
Applied at commit:ba889100d850e973e519cebc48d5b4f1e8ab0034 hsbt (Hiroshi SHIBATA)
04:51 AM Feature #17290: Syntax sugar for boolean keyword argument
I would concur with Marc-Andre on this one, I believe punning would be a more valuable feature, especially for keyword arguments.
Examples:
```ruby
def method_name(foo: 1, bar: 2, baz: 3)
foo + bar + baz
end
foo = 1
bar = 2
baz = 3
...
baweaver (Brandon Weaver)
04:29 AM Feature #17290: Syntax sugar for boolean keyword argument
I'm personally hoping that `strip: ` could be syntax sugar for `strip: strip`... marcandre (Marc-Andre Lafortune)
02:54 AM Feature #17290 (Closed): Syntax sugar for boolean keyword argument
We frequently use keyword arguments just to pass `true` value out of the truthy/falsy options given. And in many such cases, the falsy option is set as the default, and only the truthy value is ever passed explicitly. I propose to have a... sawa (Tsuyoshi Sawada)
03:05 AM Feature #17291 (Assigned): Optimize __send__ call
I made a patch to optimize a `__send__` call. This optimization replaces a `__send__` method call with a call of the method whose name is the first argument of `__send__` method. The patch is available in [this pull-request](https://gith... mrkn (Kenta Murata)
02:34 AM Bug #17289: Time#strftime occurs Segmentation Fault on ruby-2.7.2p137
Let me tell you that I currently have no idea what is going on. If `rb_funcall` is broken the situation must be more catastrophic than what is reported here (happens once a day). shyouhei (Shyouhei Urabe)
01:35 AM Revision 9f3adaf5 (git): Use public allocators for creating new T_OBJECT objects
This way the header flags and object internals are set correctly tenderlovemaking (Aaron Patterson)

10/28/2020

11:11 PM Revision d8b0f1f7 (git): Objects are born embedded, so we don't need to check ivpr
It's not necessary to check ivpt because objects are allocated as
"embedded" by default
tenderlovemaking (Aaron Patterson)
10:48 PM Bug #17142: Ruby fails to build in AIX
I've added a pull request to fix this, though I don't have the ability to test on AIX: https://github.com/ruby/ruby/pull/3717 jeremyevans0 (Jeremy Evans)
10:43 PM Feature #17206: Introduce new Regexp option to avoid global MatchData allocations
Sorry. “a huge amount of String garbage” is my misunderstanding.
But I don’t know under what situation this option may cause a bug.
scivola20 (sciv ola)
10:42 PM Bug #17255 (Closed): Installation failed for ruby version 2.7.1: unknown encoding name: binary (ArgumentError)
jeremyevans0 (Jeremy Evans)
10:29 PM Revision 58fd54f9 (git): Fix error in update-deps due to tab/space difference
jeremyevans (Jeremy Evans)
10:27 PM Bug #13768 (Closed): SIGCHLD and Thread dead-lock problem
Applied in changeset commit:git|dfb3605bbee9c3cfbc1c354594c367472f29cb35.
----------
Add Thread.ignore_deadlock accessor
Setting this to true disables the deadlock detector. It should
only be used in cases where the deadlock could be ...
jeremyevans (Jeremy Evans)
10:27 PM Revision dfb3605b (git): Add Thread.ignore_deadlock accessor
Setting this to true disables the deadlock detector. It should
only be used in cases where the deadlock could be broken via some
external means, such as via a signal.
Now that $SAFE is no longer used, replace the safe_level_ VM flag
wi...
jeremyevans (Jeremy Evans)
08:59 PM Feature #17288: Optimize __send__ call with a literal method name
Just a few things:
We need to also remember **.instance_variable_get()** and **.instance_variable_set()**.
Ruby does not quite use a similar "restriction-style" OOP like, say, java. It will
depend a lot on the style and preferences of ...
shevegen (Robert A. Heiler)
08:48 PM Feature #17288: Optimize __send__ call with a literal method name
shyouhei (Shyouhei Urabe) wrote in #note-4:
> Private methods shall not be called at the first place. Period. That is breaking encapsulation.
I wish that was the case, but Ruby access is *not expressive enough* for this to be the cas...
marcandre (Marc-Andre Lafortune)
12:32 PM Feature #17288: Optimize __send__ call with a literal method name
Eregon (Benoit Daloze) wrote in #note-5:
> Here are the first 1000 .send() usages in gems:
> ...
So? I don’t think we should follow that. If people misunderstand what an OOPL is, we would better not confirm that.
> > Private method...
shyouhei (Shyouhei Urabe)
10:09 AM Feature #17288: Optimize __send__ call with a literal method name
Here are the first 1000 .send() usages in gems:
https://gist.github.com/eregon/21c8f14c478089c1a9295c21661583a9
420 of them use a literal Symbol for the first argument.
> Private methods shall not be called at the first place. Perio...
Eregon (Benoit Daloze)
09:58 AM Feature #17288: Optimize __send__ call with a literal method name
zverok (Victor Shepelev) wrote in #note-3:
> @shyouhei what about private methods?
Private methods shall not be called at the first place. Period. That is breaking encapsulation.
Again I’m not against the ability to do such things...
shyouhei (Shyouhei Urabe)
08:34 AM Feature #17288: Optimize __send__ call with a literal method name
@shyouhei what about private methods? zverok (Victor Shepelev)
08:25 AM Feature #17288: Optimize __send__ call with a literal method name
Hello, I'm against this optimisation. `obj.__send__(:method)` should just be written as `obj.method`.
Not against the ability to write `obj.__send__(:method)`, but `obj.method` must be the preferable way and thus must be the fastest ...
shyouhei (Shyouhei Urabe)
05:52 PM Feature #17261: Software transactional memory (STM) for Threads and Ractors
I think it would be nice to make it its own gem (`tvar` maybe?) given it's under `Thread` and not under `Ractor`, and it could most likely work on other Ruby implementations (e.g., TruffleRuby).
That should also make it possible to e.g....
Eregon (Benoit Daloze)
05:29 PM Feature #17261: Software transactional memory (STM) for Threads and Ractors
I wrote a long-form blog post to give people interested in this proposed feature some context.
https://chrisseaton.com/truffleruby/ruby-stm/
I've also suggested a benchmark that we can start to use for experimenting.
chrisseaton (Chris Seaton)
05:16 PM Revision a99f52d5 (git): Remove another unnecessary test
Same as 5be42c1ef4f7ed0a8004cad750a9ce61869bd768 tenderlovemaking (Aaron Patterson)
04:57 PM Revision 5be42c1e (git): Remove unnecessary conditional
As of 0b81a484f3453082d28a48968a063fd907daa5b5, `ROBJECT_IVPTR` will
always return a value, so we don't need to test whether or not we got
one. T_OBJECTs always come to life as embedded objects, so they will
return an ivptr, and when th...
tenderlovemaking (Aaron Patterson)
04:45 PM Revision 2c19c148 (git): If an object isn't embedded it will have an ivptr
We don't need to check the existence if an ivptr because non-embedded
objects will always have one
tenderlovemaking (Aaron Patterson)
03:42 PM Revision 9190451f (git): * 2020-10-29 [ci skip]
git[bot]
03:41 PM Revision 0bbbb5a6 (git): `dest` is always embedded so we can remove this check
tenderlovemaking (Aaron Patterson)
01:12 PM Revision 93e6364a (git): merge revision(s): 07786ed
* test/net/http/test_https.rb: Stop the error due to openssl 1.1.1h
On some environments that uses OpenSSL 1.1.1h, the two tests now fail.
http://rubyci.s3.amazonaws.com/android29-x86_64/ruby-master/log/20200924T062352Z...
U.Nakamura
12:19 PM Feature #17266: Bundle TypeProf
mame (Yusuke Endoh) wrote in #note-5:
> Okay, I'll add it.
Thanks.
> ...
I think it's not a big issue if TypeProf is meant only as a CLI/standalone tool, and not a gem to `require` at runtime.
Then people can generate .rbs files ...
Eregon (Benoit Daloze)
12:40 AM Feature #17266: Bundle TypeProf
> maybe still ship it but raise a nice error if used on RUBY_ENGINE != "ruby"?
Okay, I'll add it.
> ...
Sorry. In (far) future, I'd like to improve TypeProf to use AST instead of bytecodes if this project is considered successful. ...
mame (Yusuke Endoh)
11:47 AM Bug #17212 (Feedback): FreeBSDで3.0.0-preview1のビルドが失敗する
hsbt (Hiroshi SHIBATA)
05:16 AM Bug #17289: Time#strftime occurs Segmentation Fault on ruby-2.7.2p137
Looking at it. Though I cannot reproduce this either.
mame (Yusuke Endoh) wrote in #note-2:
> This falls back to `rb_funcall`. This `rb_funcall` is replaced with `rb_funcallv_with_cc`. This should call FIXNUM's plus, but it seems ...
shyouhei (Shyouhei Urabe)
01:22 AM Revision fb3c711d (git): compile.c: separate compile_builtin_function_call (#3711)
Kenta Murata
12:47 AM Revision 8f9c113f (git): Added benchmark of vm_send by variable [ci skip]
nobu (Nobuyoshi Nakada)

10/27/2020

10:21 PM Misc #16778: Should we stop vendoring default gems code?
> We can extract like matrix, prime and tracer as bundled gems from the default gems.
That is not what I am looking for, nor what this issue is about. What I think we want (@deivid, me, and probably @eregon) is for the default gem sourc...
headius (Charles Nutter)
05:17 PM Misc #16778: Should we stop vendoring default gems code?
There are many default gems (listed on https://stdgems.org/), so making them bundled gems is a not a good solution, it only works for subset of them.
Anything transitively needed by RubyGems cannot be a bundled gem.
Eregon (Benoit Daloze)
01:32 PM Misc #16778: Should we stop vendoring default gems code?
@hsbt In your previous message you said: "We still wait for the PoC of this issue.", and set status to "feedback". Now after the recent positive comments you changed the status to "rejected". Could you clarify? deivid (David Rodríguez)
12:58 PM Misc #16778 (Rejected): Should we stop vendoring default gems code?
@headius
We can extract like matrix, prime and tracer as bundled gems from the default gems.
But that is the different scope of this issue. If you are interested in it, can you submit a new issue?
hsbt (Hiroshi SHIBATA)
09:55 PM Feature #9459: Net::HTTP initializes openssl library after TCP connection is established
This appears to still be an issue, though I think this is a feature request and not a bug. I've submitted the patch as a pull request to the net-http repository: https://github.com/ruby/net-http/pull/4 jeremyevans0 (Jeremy Evans)
09:32 PM Bug #9595 (Rejected): Float#to_d inconsistent between 2.0.0 and 2.1.1
BigDecimal behavior has remained the same since 2.1, and 2.0's excessive precision was actually a bug, fixed in commit:1699396fe502d929ced019dc0dd3463a35fbf6d3. jeremyevans0 (Jeremy Evans)
06:35 PM Feature #17288: Optimize __send__ call with a literal method name
I think `obj.send(:foo)` should be optimized too, to not create a an arbitrary performance difference between `send` and `__send__`.
`send` is also used ~15x used more frequently than `__send__` in gems, so that would be even more valua...
Eregon (Benoit Daloze)
08:32 AM Feature #17288 (Assigned): Optimize __send__ call with a literal method name
I made a patch to optimize a `__send__` call with a literal method name. This optimization replaces a `__send__` method call with a `send` instruction. The patch is available in [this pull-request](https://github.com/ruby/ruby/pull/370... mrkn (Kenta Murata)
06:08 PM Feature #17266: Bundle TypeProf
Since TypeProf [depends on CRuby bytecodes](https://github.com/ruby/typeprof/blob/master/lib/typeprof/iseq.rb), probably it should be excluded on alternative implementations since it won't work?
Or maybe still ship it but raise a nice e...
Eregon (Benoit Daloze)
02:10 PM Feature #17266: Bundle TypeProf
Yes, thanks! mame (Yusuke Endoh)
11:25 AM Feature #17266 (Closed): Bundle TypeProf
Applied at commit:c05e41035c01ab38bdb279601a08e17921bcdc8e hsbt (Hiroshi SHIBATA)
03:29 PM Revision 915024e3 (git): * 2020-10-28 [ci skip]
git[bot]
03:27 PM Revision c1bebbb2 (git): test/ruby/test_rational.rb: Prevent "assigned but unused variable"
mame (Yusuke Endoh)
03:22 PM Bug #17289 (Assigned): Time#strftime occurs Segmentation Fault on ruby-2.7.2p137
@shyouhei I suspect if this is due to 2.7's new method cache. Could you check it out?
```
/opt/ruby/lib/libruby.so.2.7(timew_out_of_timet_range+0x1c) [0x7fc1188c2ef4] time.c:1664
```
```
1664 if (lt(timexv, mulv(INT2FIX(TIME_SCALE)...
mame (Yusuke Endoh)
12:35 PM Bug #17289: Time#strftime occurs Segmentation Fault on ruby-2.7.2p137
Additional Information:
* I used to use v2.6.2 and Segmentation fault does not occur at that time.
* This stacktrace is reproducible. whenever this error occurs the stacktrace is the same.
joker1007 (Tomohiro Hashidate)
12:29 PM Bug #17289 (Feedback): Time#strftime occurs Segmentation Fault on ruby-2.7.2p137
Segmentation Fault occurred when I run Time#strftime via Time#iso8601 on ruby-2.7.2.
It occurs repeatedly about once a day in our system.
Because it was not possible to make a reproduction case in a simple environment, I share the C Le...
joker1007 (Tomohiro Hashidate)
02:26 PM Revision 8e060754 (git): Revert "Fixed typo"
This reverts commit 379a5ca539af0e954b1cdf63b9365ad208b9c7f3.
This "typo" is intentional to test the transposition detection by
did_you_mean.
nobu (Nobuyoshi Nakada)
02:25 PM Revision dcc231c8 (git): merge revision(s): 07786ed
test/net/http/test_https.rb: Stop the error due to openssl 1.1.1h
On some environments that uses OpenSSL 1.1.1h, the two tests now fail.
http://rubyci.s3.amazonaws.com/android29-x86_64/ruby-master/log/20200924T062352Z.f...
U.Nakamura
02:20 PM Feature #17187 (Assigned): Add connect_timeout to TCPSocket
Glass_saga (Masaki Matsushita)
01:59 PM Revision 379a5ca5 (git): Fixed typo
hsbt (Hiroshi SHIBATA)
12:48 PM Bug #17213: Rails CI against Ruby 3.0.0dev fails likely since a53e2850c572135ed657144bc14e47b29c64fa94
It also reproduces with the latest `rubylang/ruby:master-debug-nightly-bionic` which generate large log file like assetions. Attached the gzipped log file to this ticket.
* Reproduced with `rubylang/ruby:master-debug-nightly-bionic`
...
yahonda (Yasuo Honda)
12:35 PM Feature #17281: Remove support for mathn
I'm +1 to this. Can we remove it without approval from Matz? hsbt (Hiroshi SHIBATA)
07:28 AM Bug #17220: Rails Active Job integration test fails with Ruby 3.0.0 since 2038cc6cab6ceeffef3ec3a765c70ae684f829ed
As `getaddrinfo` and `getaddrinfo_a` are not in the async-signal-safe function list in POSIX.1-2001, it can't work in both way.
So the "POSIXLY-correct" answer is "you must not use that method in forked process".
nobu (Nobuyoshi Nakada)
07:12 AM Revision 3198e7ab (git): Separate `send` into `public_send` and `__send__`
nobu (Nobuyoshi Nakada)
05:42 AM Revision acdb8933 (git): Removed unused environment variable
nobu (Nobuyoshi Nakada)
04:25 AM Feature #17284: Shareable Proc
marcandre (Marc-Andre Lafortune) wrote in #note-13:
> ko1 (Koichi Sasada) wrote in #note-12:
> ...
Is "reassignments" `a = 1`?
Yes. It is checked at `#freeze` timing (if there is assignments to outer variables, raise an error).
> W...
ko1 (Koichi Sasada)
02:49 AM Feature #17284: Shareable Proc
ko1 (Koichi Sasada) wrote in #note-12:
> My understanding:
> ...
Indeed. But `freeze` must do special check for reassignments.
What I dislike about `Proc#freeze` is that it does not make intuitive sense to me. A `Proc` is not mutabl...
marcandre (Marc-Andre Lafortune)
01:17 AM Feature #17284: Shareable Proc
marcandre (Marc-Andre Lafortune) wrote in #note-11:
> This is already possible, (even if the block does not refer to `a`):
> ...
It is true. But the degree is not same. It is easy to freeze them accidentally.
So Matz and other attende...
ko1 (Koichi Sasada)

10/26/2020

11:55 PM Revision 135d3690 (git): [DOC] more precise description of "**" in Dir.glob pattern [ci skip]
nobu (Nobuyoshi Nakada)
11:31 PM Bug #17220: Rails Active Job integration test fails with Ruby 3.0.0 since 2038cc6cab6ceeffef3ec3a765c70ae684f829ed
I checked the glibc source, and it intentionally keeps the thread alive:
```c
/* If the runlist is empty, then we sleep for a while, waiting for
something to arrive in it. */
if (runp == NULL && optim.gai_idle_time >=...
eugeneius (Eugene Kenny)
09:03 PM Misc #16778: Should we stop vendoring default gems code?
Sounds great. marcandre (Marc-Andre Lafortune)
08:48 PM Misc #16778: Should we stop vendoring default gems code?
+1000 for this. JRuby is currently the only Ruby implementation that sources the default and bundled gems exclusively from released gems, and as a result we frequently have to chase down rogue changes and unreleased code when we upgrade ... headius (Charles Nutter)
08:44 PM Revision c56fdaec (git): Revert assert for debugging on CI
This reverts commit ac69849e49982ea83036c04c5d5f7245e3956a49.
The bug seems to have been fixed.
alanwu (Alan Wu)
06:33 PM Feature #17287 (Closed): Faster Pathname FileUtils methods
I have a patch that I would like to merge into Pathname for increased performance. I understand that akr maintains pathname and may not be on GitHub. Here is a link to my patch:
https://github.com/ruby/ruby/pull/3693
Here is the di...
schneems (Richard Schneeman)
05:44 PM Feature #17284: Shareable Proc
ko1 (Koichi Sasada) wrote in #note-8:
> Today's meeting, there are comments:
> ...
This is already possible, (even if the block does not refer to `a`):
```ruby
def foo(&b) b.binding.local_variable_get(:a).freeze; end
a = [1]
fo...
marcandre (Marc-Andre Lafortune)
04:15 PM Feature #17284: Shareable Proc
> (b) If we can read an outer lvar but it is not frozen/made shareable, I guess that can only mean it is deep-copied?
in dev-meeting, there is same comment: they should copy everything and freeze them instead of marked as frozen and s...
ko1 (Koichi Sasada)
04:12 PM Feature #17284: Shareable Proc
I have several question about Proc#detach to understand your idea.
```ruby
x = 1
a = ary = []
pr = Proc.new { ary << x ; x += 1 }.detach
x = ary = nil # no effect on `p`, as binding is detached # ko1: what is `p`? `pr`?
pr.call # =>...
ko1 (Koichi Sasada)
03:55 PM Feature #17284: Shareable Proc
Today's meeting, there are comments:
* (c) is too danger to freeze reachable objects from reachable local variables.
```ruby
def foo(&b) b.shareable!; end
a = [1]
foo{ p a }
a << 2 #=> frozen error
```
This example is more worse beca...
ko1 (Koichi Sasada)
01:26 PM Feature #17284: Shareable Proc
(a) The method name `isolate` sounds like it will convert the proc to make it isolated, but it seems all it does is raise an error if the proc is not already isolated from the outer scope?
(b) If we can read an outer lvar but it is not ...
Dan0042 (Daniel DeLorme)
08:07 AM Feature #17284: Shareable Proc
(c) sounds the most useful and general.
While reading the description, I thought `Proc#deep_freeze` is a good name.
That clearly says it will freeze transitively the closure (stopping at shareable objects).
I think it would be goo...
Eregon (Benoit Daloze)
05:25 AM Feature #17284: Shareable Proc
ko1 (Koichi Sasada) wrote in #note-4:
> Thank you for your reply.
Here's a longer reply.
I would like a method to make a Proc independent of the binding it was created in. I'm thinking of `Proc#detach` that would make a snapshot o...
marcandre (Marc-Andre Lafortune)
01:34 AM Feature #17284: Shareable Proc
Thank you for your reply.
> I'm not sure of the use-cases for a) or b).
Do you think `Ractor.new()` can call (c) instead of current (a)?
In other words, can we accept (1) and (2) in the following example?
```
b = a = []
Ractor.new do
...
ko1 (Koichi Sasada)
04:45 PM Revision 7ad56fd8 (git): freeze dynamic regexp literals
Regexp literals are frozen, and also dynamically comppiled Regexp
literals (/#{expr}/) are frozen.
ko1 (Koichi Sasada)
04:42 PM Bug #17146 (Feedback): Queue operations are allowed after it is frozen
At last dev-meeting we skipped this issue because it is difficult, but no benefit to change the current behavior.
BTW
> AFAIK no other class undefines #freeze, that seems unfriendly.
`ENV.freeze` raises an error (`freeze': canno...
ko1 (Koichi Sasada)
04:40 PM Feature #17256: Freeze all Regexp objects
> ko1 (Koichi Sasada) Could you show the errors from the tests?
Sorry I lost the patch.
Anyway, at last dev-meeting, freezing all Regexp *literals* including dynamically created objects are accepted.
I don't have objection to free...
ko1 (Koichi Sasada)
04:37 PM Revision f8d264fd (git): * 2020-10-27 [ci skip]
git[bot]
04:37 PM Revision 1c6ebe14 (git): freeze Process::Status
It seems immutable information. ko1 (Koichi Sasada)
04:37 PM Feature #17269: Frozen Process::Status
This proposal is accepted and I'll merge it to try. ko1 (Koichi Sasada)
04:36 PM Feature #17270: ObjectSpace.each_object should be restricted on multi-Ractors
This proposal was confirmed.
We need to introduce same filter for some other methods...
ko1 (Koichi Sasada)
04:36 PM Bug #17268: special global variables which can be accessed from ractors
The proposal is accepted.
> I wonder if "regular" global variables should be Ractor-local, or behave like constants.
This is rejected at first by Matz (my original proposal is making all $gvars are ractor-local), to avoid confusion.
ko1 (Koichi Sasada)
04:34 PM Feature #17261: Software transactional memory (STM) for Threads and Ractors
At last dev-meeting, this proposal is not accepted to introduce it in core because the importance of this feature is not sure.
Maybe I'll introduce as ractor gem to study the API and usefulness of this feature.
ko1 (Koichi Sasada)
04:29 PM Feature #17273: shareable_constant_value pragma
Today's (yesterday's) dev-meeting, there is a comment:
* It is possible to break other library easily:
```ruby
require 'other-lib'
# sharable_constants: true
A = OtherLib::MutableArray # freeze OtherLib::MutableArray accidentally
```...
ko1 (Koichi Sasada)
04:21 PM Feature #17278: On-demand sharing of constants for Ractor
I also +1 for Matz because of non-deterministic behavior. ko1 (Koichi Sasada)
03:24 PM Feature #17278: On-demand sharing of constants for Ractor
The mechanism's _implementation_ may be a little complex but I think _usage_ is quite simple. In the vast majority of cases the developer doesn't need to think about anything; existing constants will just work with ractors. It's like GC ... Dan0042 (Daniel DeLorme)
09:04 AM Feature #17278 (Feedback): On-demand sharing of constants for Ractor
I understand the benefit of the proposal but the mechanism behind is too complex and can cause unexpected result with concurrency (e.g. race conditions). It's the code (design) smell. We need more time to investigate further.
Matz.
matz (Yukihiro Matsumoto)
03:15 AM Feature #17278: On-demand sharing of constants for Ractor
Eregon (Benoit Daloze) wrote in #note-5:
> A performance concern is this will make the first `rb_check_frozen()` to any constant need the process-global lock (or a more fine-grained lock, but then it will increase footprint).
> ...
I w...
Dan0042 (Daniel DeLorme)
03:59 PM Feature #17143: Improve support for warning categories
matz (Yukihiro Matsumoto) wrote in #note-10:
> I am OK with warning categories. But the proposed categories are too fine-grained, I think. Here's the Python warning categories:
> ...
Here are the Python 3 warning categories, along with...
jeremyevans0 (Jeremy Evans)
07:50 AM Feature #17143: Improve support for warning categories
I am OK with warning categories. But the proposed categories are too fine-grained, I think. Here's the Python warning categories:
https://docs.python.org/3/library/warnings.html#warning-categories
Matz.
matz (Yukihiro Matsumoto)
03:26 PM Feature #17286: `Ractor.new` should accept `move: true`
I'm also thinking about the same feature, and the problem is, maybe we should choose move or copy on each parameters:
```ruby
Ractor.new io, # want to move
str # want to copy
do |io, str|
io.puts str
end
```
and I have n...
ko1 (Koichi Sasada)
05:10 AM Feature #17286 (Open): `Ractor.new` should accept `move: true`
Another surprise when writing my backport is that `Ractor.new` does not accept `move:` keyword argument.
```ruby
Ractor.new(val, move: true) { |data| ... }
# equivalent to
Ractor.new { data = Ractor.receive; ... }.tap { |r| r.send(...
marcandre (Marc-Andre Lafortune)
02:40 PM Feature #17100: Ractor: a proposal for a new concurrent abstraction without thread-safety issues
nobu (Nobuyoshi Nakada) wrote in #note-42:
> `Kernel#send` should be deprecated because of `BasicObject#__send__`.
I think that's not reasonable.
There seem to be ~424649 usages of `.send` in gems, vs only ~28004 of `.__send__` (htt...
Eregon (Benoit Daloze)
02:18 PM Feature #17100: Ractor: a proposal for a new concurrent abstraction without thread-safety issues
Trying to recap the ideas...
0) Use `send`; `Kernel#send` should be deprecated because of `BasicObject#__send__` (amazing nobu!)
1) Use a different name entirely; `accept`, `yield`, `pass`, `call`, `post`, `queue`, `deliver`
2) Use a ...
Dan0042 (Daniel DeLorme)
01:41 PM Feature #17100: Ractor: a proposal for a new concurrent abstraction without thread-safety issues
duerst (Martin Dürst) wrote in #note-41:
> Send would be the best name, except that that we are not in a vacuum. It is bad practice to have one and the same name for two fundamentally different and colliding functionalities.
Agreed.
...
nobu (Nobuyoshi Nakada)
09:25 AM Feature #17100: Ractor: a proposal for a new concurrent abstraction without thread-safety issues
ko1 (Koichi Sasada) wrote in #note-37:
> I believe `send` is the best name, so I disagree about it.
Send would be the best name, except that that we are not in a vacuum. It is bad practice to have one and the same name for two fund...
duerst (Martin Dürst)
07:30 AM Feature #17100: Ractor: a proposal for a new concurrent abstraction without thread-safety issues
marcandre (Marc-Andre Lafortune) wrote in #note-38:
> `send` accepts `move: true`, so `ractor.<<(data, move: true)` looks very odd.
Good point.
Maybe a good way to avoid/workaround that issue would be to have `Ractor#move(obj)` (or ...
Eregon (Benoit Daloze)
05:36 AM Feature #17100: Ractor: a proposal for a new concurrent abstraction without thread-safety issues
ko1 (Koichi Sasada) wrote in #note-37:
> I believe `send` is the best name, so I disagree about it.
I understand that. Please consider that many people find this a really bad name though. What would be the second best name? What does...
marcandre (Marc-Andre Lafortune)
05:33 AM Feature #17100: Ractor: a proposal for a new concurrent abstraction without thread-safety issues
Eregon (Benoit Daloze) wrote in #note-36:
> Currently there is the alias `Ractor#<<`, maybe we should use that consistently instead of `send` in the docs, tests, etc?
> ...
`send` accepts `move: true`, so `ractor.<<(data, move: true)` ...
marcandre (Marc-Andre Lafortune)
01:36 PM Feature #17145: Ractor-aware `Object#deep_freeze`
marcandre (Marc-Andre Lafortune) wrote in #note-31:
> There might very well be a `SharedArray` class, but I don't see how `Array` could ever become shareable.
Sorry, I think my point was not very clear. Replace "Array" with any class...
Dan0042 (Daniel DeLorme)
09:02 AM Feature #17145: Ractor-aware `Object#deep_freeze`
I made a mistake in the previous message (the reply was for another issue). Sorry for confusion.
As far as I undestand, the behavior of `freeze` and `make_shareable` are different. So making `deep_freeze` Ractor-aware does not make se...
matz (Yukihiro Matsumoto)
07:58 AM Feature #17145 (Rejected): Ractor-aware `Object#deep_freeze`
This looks very interesting, but it would introduce quite big incompatibility. I don't want to break existing code.
Matz.
matz (Yukihiro Matsumoto)
07:46 AM Feature #17145: Ractor-aware `Object#deep_freeze`
marcandre (Marc-Andre Lafortune) wrote in #note-31:
> My understanding is that will never be the case. You can't have 1) fast and 2) concurrent access to mutable data.
Digressing a bit, I would say it's possible ([thread-safe Array](htt...
Eregon (Benoit Daloze)
05:28 AM Feature #17145: Ractor-aware `Object#deep_freeze`
Dan0042 (Daniel DeLorme) wrote in #note-30:
> Let's say that in the future Array becomes Ractor-safe (i.e. shareable). Would that mean then that `[].deep_freeze` would no longer freeze the array?
My understanding is that will never b...
marcandre (Marc-Andre Lafortune)
12:15 PM Revision bdd1d17a (git): Allow non-argument endless-def with a space instead of parentheses
nobu (Nobuyoshi Nakada)
09:44 AM Feature #17265: Add `Bool` module
I'm planning to make the semantics of `bool` in RBS (in the next release). It will be an alias of `true | false` and we will add another type for conditionals, something like `type boolish = top`.
So, I feel there is no strong reason ...
soutaro (Soutaro Matsumoto)
07:55 AM Feature #17265 (Feedback): Add `Bool` module
RBS side is up to @soutaro etc. I am still against Ruby side. @marcandre stated about communication with other typed systems / data interchange as a benefit, but we are not going to make Ruby (type-wise) compatible with statically typed ... matz (Yukihiro Matsumoto)
09:43 AM Bug #16518 (Closed): Should we rationalize Rational's numerator automatically?
Applied in changeset commit:git|69837229d74813c807e9d079aaee33aec2c7a4d0.
----------
rational.c: convert a numerator to rational before calling fdiv in Kernel.Rational() (#3702)
This makes `Rational(BigDecimal(1), 60) == Rational(1, 60...
Anonymous
03:44 AM Bug #16518 (Assigned): Should we rationalize Rational's numerator automatically?
I'm working on it at https://github.com/ruby/ruby/pull/3702 mrkn (Kenta Murata)
09:43 AM Revision 69837229 (git): rational.c: convert a numerator to rational before calling fdiv in Kernel.Rational() (#3702)
This makes `Rational(BigDecimal(1), 60) == Rational(1, 60)`.
[Bug #16518]
Kenta Murata
09:00 AM Feature #17260 (Closed): Promote pattern matching to official feature
Applied in changeset commit:git|52c630da004d9273e8e5fc91c6304e9eed902566.
----------
Assoc pattern matching (#3703)
[Feature #17260] One-line pattern matching using tASSOC
R-assignment is rejected instead.
nobu (Nobuyoshi Nakada)
09:00 AM Revision 52c630da (git): Assoc pattern matching (#3703)
[Feature #17260] One-line pattern matching using tASSOC
R-assignment is rejected instead.
nobu (Nobuyoshi Nakada)
07:52 AM Feature #17171 (Rejected): Why is the visibility of constants not affected by `private`?
This looks very interesting, but it would introduce quite big incompatibility. I don't want to break existing code.
Matz.
matz (Yukihiro Matsumoto)
07:47 AM Feature #17259 (Closed): Kernel#warn should ignore <internal: entries
Applied in changeset commit:git|cffdacb15a363321e1c1879aa7d94924acafd1cf.
----------
Ignore <internal: entries from core library methods for Kernel#warn(message, uplevel: n)
* Fixes [Bug #17259]
Eregon (Benoit Daloze)
05:27 AM Feature #17259: Kernel#warn should ignore <internal: entries
Accepted.
Matz.
matz (Yukihiro Matsumoto)
07:47 AM Revision cffdacb1 (git): Ignore <internal: entries from core library methods for Kernel#warn(message, uplevel: n)
* Fixes [Bug #17259] Eregon (Benoit Daloze)
07:47 AM Revision fbb2d30e (git): Add specs that #caller and #caller_locations include core library methods defined in Ruby
Eregon (Benoit Daloze)
07:20 AM Revision 3673c3ea (git): Update to ruby/spec@b164536
Eregon (Benoit Daloze)
07:06 AM Revision ba24aee2 (git): Remove spec which is too difficult to get working with various compilers
* The spec means to use an actual system library function, not a wrapper. Eregon (Benoit Daloze)
06:40 AM Feature #17176: GC.auto_compact / GC.auto_compact=(flag)
Accepted as long as it's turned off by default.
Matz.
matz (Yukihiro Matsumoto)
05:00 AM Feature #17187: Add connect_timeout to TCPSocket
Accepted.
Matz.
matz (Yukihiro Matsumoto)
05:00 AM Feature #17187: Add connect_timeout to TCPSocket
document? akr (Akira Tanaka)
04:45 AM Bug #11202 (Rejected): No warning when a link to an original method body was removed
I don't think the benefit is worth the complexity.
Matz.
matz (Yukihiro Matsumoto)
04:36 AM Bug #11808: Different behavior between Enumerable#grep and Array#grep
Sorry we need more time to consider.
ko1 (Koichi Sasada)
04:34 AM Bug #13768: SIGCHLD and Thread dead-lock problem
This issue told us there's false positive in our deadlock detector. So I accept adding `Thread.ignore_deadlock = true`.
Matz,
matz (Yukihiro Matsumoto)
04:29 AM Bug #14012 (Rejected): NameError is raised when use class variables in Refinements
I officially reject this proposal. Class variables are no longer encouraged to use.
Matz.
matz (Yukihiro Matsumoto)
03:15 AM Feature #17285: Less strict `Ractor.select`
For (0), I'm thinking to introduce `Ractor::Selector` (or similar) to manage the ractors.
```
sel = Rcator::Selector.new
sel.receive(r1) do |msg| ... end
sel.receive(r2) do |msg| ... end
sel.wait # Ractor.select(r1, r2)
```
an...
ko1 (Koichi Sasada)
02:49 AM Feature #17285 (Open): Less strict `Ractor.select`
Summary: could we have a way for `Ractor.select` to skip ractors with closed queues and raise only if no ractor with an open queue remains?
Detail:
I [backported `Ractor` for earlier Ruby versions](https://github.com/marcandre/back...
marcandre (Marc-Andre Lafortune)
01:12 AM Feature #17282 (Third Party's Issue): Deprecate Digest::SHA1
Digest is now a separate project. https://github.com/ruby/digest
P.S. I want "2nd party's issue" status. `ruby/digets` is not a 3rd party.
shyouhei (Shyouhei Urabe)
12:09 AM Revision 507af754 (git): [DOC] Expanded glob patterns for Dir.glob
No longer need to get rid of C block comments in builtin ruby
script comments.
nobu (Nobuyoshi Nakada)
12:05 AM Revision 3cb03a00 (git): Include c_escape.rb in COMPILE_PRELUDE
template/prelude.c.tmpl requires tool/ruby_vm/helpers/c_escape.rb. nobu (Nobuyoshi Nakada)
12:01 AM Revision 396e9210 (git): Escape '/*' within block comment too
nobu (Nobuyoshi Nakada)

10/25/2020

11:16 PM Revision b6d0b3df (git): Use gcc-specific pragma only on gcc (and the family)
nobu (Nobuyoshi Nakada)
10:56 PM Revision ff2276ef (git): Fix bootstrap-test error in previous commit
jeremyevans (Jeremy Evans)
10:39 PM Bug #10845: Subclassing String
I've added a pull request for making String methods consistently return String instances when called on String subclasses: https://github.com/ruby/ruby/pull/3701
For the reasons @marcandre mentioned, I think this makes more sense. In...
jeremyevans0 (Jeremy Evans)
10:10 PM Revision 9c8f0a34 (git): Use 'shareable' with an 'e' [ci skip]
Marc-Andre Lafortune
09:30 PM Feature #17145: Ractor-aware `Object#deep_freeze`
Let's say that in the future Array becomes Ractor-safe (i.e. shareable). Would that mean then that `[].deep_freeze` would no longer freeze the array? Dan0042 (Daniel DeLorme)
07:33 PM Feature #17145: Ractor-aware `Object#deep_freeze`
Not only should the default be `skip_shareable: true`, I don't really see the use-case for `skip_shareable: false`. Unless someone comes up with one, the option should probably be removed altogether, or maybe we could start without the o... marcandre (Marc-Andre Lafortune)
01:45 PM Feature #17145: Ractor-aware `Object#deep_freeze`
ko1 (Koichi Sasada) wrote in #note-26:
> So classes/module should be frozen if `[C].deep_freeze`.
I think it's very rare somebody would want that.
Would that freeze the `Array` class too because the class is reachable from the object?
...
Eregon (Benoit Daloze)
08:45 PM Revision 8376cae2 (git): * 2020-10-26 [ci skip]
git[bot]
08:44 PM Revision 5e6f9fd8 (git): Tweak a few Ractor tests that were missing comments [ci skip]
Marc-Andre Lafortune
08:38 PM Revision ee54075a (git): Remove trailing whitespace [ci skip]
Marc-Andre Lafortune
08:08 PM Feature #17159: extend `define_method` for Ractor
How about:
```ruby
define_method(:name, make_shareable: true) { ... }
# equivalent to:
define_method(:name, &Ractor.make_shareable(Proc.new{...}))`
```
With `make_shareable` as making accessed external variables shareable and not reass...
marcandre (Marc-Andre Lafortune)
08:04 PM Feature #17284: Shareable Proc
I think c) semantics are definitely the most useful.
For API: `Ractor.make_shareable(proc)` (and equivalently `proc.deep_freeze`)
I'm not sure of the use-cases for a) or b).
marcandre (Marc-Andre Lafortune)
07:33 PM Feature #17284: Shareable Proc
https://github.com/ruby/ruby/pull/3700
for `Ractor.make_shareable(a_proc)` (`a_proc` becomes shareable Proc with (c) shareable! semantics).
ko1 (Koichi Sasada)
05:04 PM Feature #17284 (Closed): Shareable Proc
For some reasons, we need to provide a way to make sharable Proc between ractors.
* (1) A block for the `Ractor.new`.
* (2) Send a proc between ractors.
* (3) A block for global callback methods: `define_method` ([Bug #17159]), `Tra...
ko1 (Koichi Sasada)
01:33 PM Feature #17278: On-demand sharing of constants for Ractor
Eregon (Benoit Daloze) wrote in #note-5:
> Also, and maybe more clearly, it would require every single Ruby constant read in the main Ractor to check that FL_AUTOSHARE flag, whether or not Ractors are used.
Actually not this one, bas...
Eregon (Benoit Daloze)
01:21 PM Feature #17278: On-demand sharing of constants for Ractor
A performance concern is this will make the first access to any constant need the process-global lock (or a more fine-grained lock, but then it will increase footprint).
That's not negligible, especially when considering to reuse JIT'ed...
Eregon (Benoit Daloze)
01:14 PM Bug #17283: Why does Dir.glob's ** match files in current directory?
Eregon (Benoit Daloze) wrote in #note-2:
> Interestingly this behavior differs between Bash and Zsh:
Bash **doesn't** support `**`, and it just equals `*`.
nobu (Nobuyoshi Nakada)
12:25 PM Bug #17283 (Closed): Why does Dir.glob's ** match files in current directory?
Applied in changeset commit:git|e880d075f847ff17e1bc77301a9ed363fb40525b.
----------
[DOC] refined "**" description in `Dir.glob` [ci skip]
As same as the description for `File.fnmatch`.
[Bug #17283]
nobu (Nobuyoshi Nakada)
12:23 PM Bug #17283: Why does Dir.glob's ** match files in current directory?
Interestingly this behavior differs between Bash and Zsh:
```
$ tree
.
├── dir
│   └── subfile
└── foo
$ bash
$ echo **
dir foo
$ echo **/*
dir/subfile
$ zsh -f
$ echo **
dir foo
$ echo **/*
dir dir/subfile foo
```
I think we cannot c...
Eregon (Benoit Daloze)
01:11 PM Feature #17100: Ractor: a proposal for a new concurrent abstraction without thread-safety issues
Eregon (Benoit Daloze) wrote in #note-36:
> Currently there is the alias `Ractor#<<`, maybe we should use that consistently instead of `send` in the docs, tests, etc?
I believe `send` is the best name, so I disagree about it.
ko1 (Koichi Sasada)
12:42 PM Feature #17100: Ractor: a proposal for a new concurrent abstraction without thread-safety issues
marcandre (Marc-Andre Lafortune) wrote in #note-35:
> What about `send`? Should we use `yield`? `pass`? `call`?
Currently there is the alias `Ractor#<<`, maybe we should use that consistently instead of `send` in the docs, tests, etc?
(...
Eregon (Benoit Daloze)
01:07 PM Revision 25a332f5 (git): Fix compilation on MSVC
* cast scalar value instead of function
* use `rb_pid_t` for the portability
nobu (Nobuyoshi Nakada)
12:57 PM Feature #17273: shareable_constant_value pragma
Maybe the pragma should be `# frozen_constants: true`?
"Freezing a constant" is intuitively "deeply-freeze the value", isn't it?
And since we already have `# frozen_string_literal: true` it would make nice connection.
Also, `share...
Eregon (Benoit Daloze)
12:24 PM Revision e880d075 (git): [DOC] refined "**" description in `Dir.glob` [ci skip]
As same as the description for `File.fnmatch`.
[Bug #17283]
nobu (Nobuyoshi Nakada)
10:43 AM Revision 8d22dd8c (git): * 2020-10-25 [ci skip]
git[bot]
10:42 AM Revision 99e067ea (git): Try to fix compilation on MSVC
Eregon (Benoit Daloze)

10/24/2020

07:57 PM Bug #17283 (Closed): Why does Dir.glob's ** match files in current directory?
If my current directory has 1 file and 1 dir, and I use `Dir.glob("**/*")` or even just `**`, both the dir and the file would be matched.
I would expect that only the dir will be matched, since the glob starts with `**`, which wants t...
Yanir (Yanir Tsarimi)
02:51 PM Feature #17206: Introduce new Regexp option to avoid global MatchData allocations
I took a quick look, the logic to set $~ is here:
https://github.com/ruby/ruby/blob/148961adcd0704d964fce920330a6301b9704c25/re.c#L1608-L1623
It does not seem so expensive, but the region is allocated which xmalloc() which is probabl...
Eregon (Benoit Daloze)
02:30 PM Feature #17206: Introduce new Regexp option to avoid global MatchData allocations
scivola20 (sciv ola) wrote in #note-5:
> I believe that people who can use `match?` and `match` methods properly, can use this new Regexp option properly.
I disagree, `match?` is clear, I think `=~` suddenly not setting `$~` would be...
Eregon (Benoit Daloze)
01:34 AM Feature #17206: Introduce new Regexp option to avoid global MatchData allocations
I believe that people who can use `match?` and `match` methods properly, can use this new Regexp option properly.
By the way, the total size of ``$` ``, `$&`, `$'` equals to the size of the target string. Therefore a huge amount of St...
scivola20 (sciv ola)
01:53 PM Revision 148961ad (git): Update to ruby/spec@4f59d86
Eregon (Benoit Daloze)
01:53 PM Revision 342fbae8 (git): Update to ruby/mspec@b56e7a2
Eregon (Benoit Daloze)
01:52 PM Revision 1388257d (git): * 2020-10-24 [ci skip]
git[bot]
01:51 PM Revision 71f69954 (git): Tweaks for the ruby/spec workflow
Eregon (Benoit Daloze)
05:34 AM Feature #17282: Deprecate Digest::SHA1
Note that we don't currently even deprecate MD5, and if we were going to deprecate SHA1 due to security issues, we should deprecate MD5 first since it's even worse. I think we should strongly discourage the use of MD5 and SHA1 in the Di... jeremyevans0 (Jeremy Evans)
05:06 AM Feature #17282 (Third Party's Issue): Deprecate Digest::SHA1
In light of the widespread deprecation of SHA1 due to collision risk it poses, should Ruby still expose it without a warning within Digest::SHA1?
[FIPS PUB 180-1](https://csrc.nist.gov/publications/detail/fips/180/1/archive/1995-04-1...
olivierlacan (Olivier Lacan)
03:38 AM Misc #17200: DevelopersMeeting20201026Japan
* [Ticket #17208]  Add `Set#compact` and `Set#compact!` methods (koic)
* Is this proposal acceptable?
koic (Koichi ITO)
12:25 AM Feature #17100: Ractor: a proposal for a new concurrent abstraction without thread-safety issues
We now have `receive`, very good.
What about `send`? Should we use `yield`? `pass`? `call`?
marcandre (Marc-Andre Lafortune)
 

Also available in: Atom