Project

General

Profile

Activity

From 10/21/2021 to 10/27/2021

10/27/2021

11:58 PM Revision b74bf8dd (git): Follow up the RString change [ci skip]
Since 46b66eb9e8e6de2d5750591e532310e8f8599d90, already `ary` has
been enclosed in `embed`.
nobu (Nobuyoshi Nakada)
11:35 PM Feature #11689: Add methods allow us to get visibility from Method and UnboundMethod object.
I've submitted a pull request that implements @matz's idea of `public?`, `private?`, and `protected?`: https://github.com/ruby/ruby/pull/5040 jeremyevans0 (Jeremy Evans)
11:16 PM Feature #11919: Passing a module directly
I think this feature would be useful, and submitted a pull request to implement it: https://github.com/ruby/ruby/pull/5039 jeremyevans0 (Jeremy Evans)
10:50 PM Feature #17380 (Closed): Useful `include/prepend` in `refine`
jeremyevans0 (Jeremy Evans)
08:09 PM Feature #11782 (Closed): String#+@ and String#-@
jeremyevans0 (Jeremy Evans)
07:42 PM Feature #12495 (Open): Make "private" return the arguments again, for chaining
I think it makes sense to modify private/protected/public/module_function to be like `def` and return the receiver. I've submitted a pull request for this that builds on @herwinw's patch: https://github.com/ruby/ruby/pull/5037 jeremyevans0 (Jeremy Evans)
07:40 PM Bug #18274 (Assigned): Time.new initializes the date incorrectly after a leap day with a positive UTC offset
This appears to be caused by commit:bf789af28a3b7108186743f3cb4fd2f649afdd20. Reverting the commit fixes the issue. Assigning to @nobu to determine whether he wants to revert or try to debug. jeremyevans0 (Jeremy Evans)
07:05 PM Bug #18274 (Closed): Time.new initializes the date incorrectly after a leap day with a positive UTC offset
With 3.1.0dev revision 30942c19c0, `Time.new` can initialize the date incorrectly on the day following a leap day. The year 2000 is a leap year. 2000-03-01 00:00:00 +01:00 is considered to be 2000-02-29 00:00:00 +0100:
``` ruby
Time....
philross (Phil Ross)
07:27 PM Feature #18275 (Assigned): Add an option to define_method to not capture the surrounding environment
Invoking `define_method` will capture the surrounding environment, making sure we have access to anything defined in that surrounding scope. However, that’s not always necessary. There are uses for `define_method` where the surrounding e... vinistock (Vinicius Stock)
06:05 PM Bug #16936: `make test-all TESTS="-n !/Foo#method/"` not skipping the test case
Setting the backport flag, because it is useful to disable some test cases in Fedora package, if needed (and it will be included there soonish). But it is not super important. So feel free to ignore this backport request. Thx vo.x (Vit Ondruch)
10:56 AM Bug #16936 (Closed): `make test-all TESTS="-n !/Foo#method/"` not skipping the test case
Applied in changeset commit:git|5086c25f6015558877f85c3f1c014780b08fd3ce.
----------
Properly exclude test cases.
Lets consider the following scenario:
~~~
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):001:0> p suite
OpenS...
Anonymous
05:00 PM Revision 30942c19 (git): * 2021-10-28 [ci skip]
git[bot]
05:00 PM Revision fdbae385 (git): YJIT: move --yjit-stats at_exit call into Ruby
This change fixes `-v --yjit-stats`. Previously in this situation,
YJIT._print_stats wasn't defined as yjit.rb is not evaluated when there
is only "-v" and no Ruby code to run.
alanwu (Alan Wu)
05:00 PM Revision 6875d6d1 (git): Expect multi-line -v output for -DRUBY_DEVEL in tests
On -DRUBY_DEVEL builds, `ruby -v` can print extra info about the last
commit on a separate line, breaking some tests that expect a single
line. Assert only the first line instead.
alanwu (Alan Wu)
05:00 PM Revision 0d9913e5 (git): Fix indentation in test
alanwu (Alan Wu)
04:52 PM Feature #12533 (Closed): Refinements: allow modules inclusion, in which the module can call internal methods which it defines.
`Refinement#include` has been deprecated. `Refinement#import_methods` can now be used to handle this use case:
```ruby
module Extensions
def vegetables ; potatoe ; end
def potatoe ; "potatoe" ; end
end
module Refinary
re...
jeremyevans0 (Jeremy Evans)
04:47 PM Feature #12929 (Rejected): ternary should look ahead w/in a block (and not care about newlines)
jeremyevans0 (Jeremy Evans)
04:45 PM Feature #12971 (Closed): (Refactoring) Remove `defined?` checks from observer.rb
jeremyevans0 (Jeremy Evans)
04:33 PM Bug #18268 (Closed): Behavior change when `each_cons` and `break ... if false` are combined in Ruby 3.1
jeremyevans0 (Jeremy Evans)
04:31 PM Bug #18271 (Closed): Regexp inconsistency (repeatable)
jeremyevans0 (Jeremy Evans)
12:52 PM Bug #18271: Regexp inconsistency (repeatable)
`$1` is global variable, `"#{$1}"` is evaluated BEFORE the method call, making a string "whatever was in `$1` at that moment":
```ruby
st = 'A. C. Cobble'
'foobar' =~ /f(.{2})/ # unrelated regex call, sets $1 to "oo"
st.gsub(/. (...
zverok (Victor Shepelev)
11:45 AM Bug #18271 (Closed): Regexp inconsistency (repeatable)
han:~/au> irb >> st = 'A. C. Cobble'
=> "A. C. Cobb...
hanHoll (Han Holl)
03:09 PM Feature #18272: Please replace unsafe SHA1 with another digest algorithm
We still support `digest/md5` and `digest/rmd160`, and I doubt those are more secure than SHA-1. If the operating system OpenSSL doesn't include support for old digests, then Ruby's openssl extension will not either (though the digest e... jeremyevans0 (Jeremy Evans)
01:06 PM Feature #18272: Please replace unsafe SHA1 with another digest algorithm
AFAIK SHA-1 is used in Bundler/RubyGems only to hash filepath for gem clones and could be replaced in the future. It was recently vendored in bundler and could be vendored into RubyGems as well.
It can be changed to different hashing ...
retro (Josef Šimánek)
12:00 PM Feature #18272 (Third Party's Issue): Please replace unsafe SHA1 with another digest algorithm
## Context
When working on a new version of RHEL (with Ruby 3.0), the requirement is to have a better security (remove unsafe digests or limit the use for non-security purposes). This would be achieved with using OpenSSL 3.0 as well, wh...
pvalena (Pavel Valena)
02:57 PM Revision 367884c6 (git): Fix yjit_asm_tests.c as C99 compliant (#5033)
* rb_bug should be variadic
* Prefer ANSI-style prototypes over old K&R-style definitions
* Add missing argument types
nobu (Nobuyoshi Nakada)
02:55 PM Revision a6104b39 (git): YJIT: Support newhash with values (#5029)
* YJIT: Implement newhash with values
* YJIT: Add test of duphash
* Fix compilation on macos/clang
jhawthorn (John Hawthorn)
02:31 PM Feature #16252: Hash#partition should return hashes
FWIW, current usage in gems is consistent with Hash, but I did find one incompatibility in fugit-1.3.3.
actionpack-6.0.0/lib/action_dispatch/routing/mapper.rb
267: constraints.partition do |key, requirement|
subarrays then ...
Dan0042 (Daniel DeLorme)
02:07 PM Feature #16252: Hash#partition should return hashes
I think it's ok that we don't have some particular rules for Enumerables to return their own class. Rather than consistently follow a decision, I think it's good to evaluate each case on its own merits. That said, I can certainly imagine... Dan0042 (Daniel DeLorme)
07:03 AM Feature #16252: Hash#partition should return hashes
I am afraid we don't have some particular rules for Enumerables to return their own class:
```ruby
Set[*1..8].select(&:odd?)
# => [1, 3, 5, 7] -- not a Set
```
Making `Hash#select` and `#reject` return hashes was an ad-hoc decision ...
zverok (Victor Shepelev)
01:27 PM Feature #18273 (Closed): Class#subclasses
Ref: https://github.com/rails/rails/pull/43481
Something we forgot to mention in [Feature #14394], is either a parameter or another method to only get direct descendants.
Active Support has been offering `Class.subclasses` as:
`...
byroot (Jean Boussier)
11:02 AM Feature #17351: Deprecate Random::DEFAULT
Just realized, another way to write that roll method (without deprecation) is:
```ruby
def roll rnd = Random
rnd.rand(6)+1
end
```
I also noticed deprecated constants are no longer warned by default as they depend on `Warning[:...
Eregon (Benoit Daloze)
10:56 AM Revision 5086c25f (git): Properly exclude test cases.
Lets consider the following scenario:
~~~
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):001:0> p suite
OpenSSL::TestEC
=> OpenSSL::TestEC
irb(#<Test::Unit::AutoRunner::Runner:0x0000560f68afc3c8>):002:0> p all_test_methods
[...
Vít Ondruch
07:55 AM Revision 9fc2f537 (git): Sort URLs by issue numbers [ci skip]
znz (Kazuhiro NISHIYAMA)
07:30 AM Feature #18137: A new method to check Proc is isolated or not
I'm afraid that we can define "Isolated Proc".
As I know there are several versions.
1) self
a: self is shareable
b: self is not shareable
2) reference to outer scope variables
x: no references
y: has references, but read-on...
ko1 (Koichi Sasada)
07:15 AM Feature #18137: A new method to check Proc is isolated or not
`Ractor.shareable?(proc_object)` is not enough? ko1 (Koichi Sasada)
07:28 AM Revision 5ff47e0c (git): Check old-style definitions
nobu (Nobuyoshi Nakada)
07:22 AM Revision 219f5415 (git): Update stdlib versions
znz (Kazuhiro NISHIYAMA)
07:13 AM Revision 489e5e3a (git): the core problem is the Proc is not shareable
tagomoris (Satoshi Tagomori)
06:44 AM Revision 9541b3b7 (git): random.c: simplify Random object deallocation
This is a follow-up for commit 265c0022390e ("Do not allocate
ractor-local storage in dfree function during GC", 2021-02-09).
The comparison with the default rb_random_mt_t is useless in the first
place, since it is never equal: no actu...
rhenium (Kazuki Yamaguchi)
05:47 AM Revision ed5f8eaf (git): [rubygems/rubygems] Don't warn when a lockfile is locked to a dev version
Even if it's newer than the running versions. Dev versions are not
released to rubygems.org, so the warning message suggests a command that
doesn't work. And dev versions are currently non deterministic
(2.3.0.dev can be many different v...
deivid (David Rodríguez)
02:29 AM Revision 4c32fcb8 (git): [ruby/error_highlight] Make the formatter mechanism support Ractor
Now the formatter configuration is per Ractor. DefaultFormatter is used
if not set.
DefaultFormatter#message_for is now a class method to allow sub-Ractors
to call the method.
https://github.com/ruby/error_highlight/commit/9fbaa8ab7c
mame (Yusuke Endoh)
01:16 AM Revision 33844f30 (git): Prefer ANSI-style prototypes over old K&R-style definitions
nobu (Nobuyoshi Nakada)

10/26/2021

08:27 PM Feature #18254 (Closed): Add an `offset` parameter to String#unpack and String#unpack1
Applied in changeset commit:git|e5319dc9856298f38aa9cdc6ed55e39ad0e8e070.
----------
pack.c: add an offset argument to unpack and unpack1
[Feature #18254]
This is useful to avoid repeteadly copying strings when parsing binary formats
byroot (Jean Boussier)
08:27 PM Revision e5319dc9 (git): pack.c: add an offset argument to unpack and unpack1
[Feature #18254]
This is useful to avoid repeteadly copying strings when parsing binary formats
byroot (Jean Boussier)
07:35 PM Feature #14394 (Closed): Class.descendants
Applied in changeset commit:git|717ab0bb2ee63dfe76076e0c9f91fbac3a0de4fd.
----------
Add Class#descendants
Doesn't include receiver or singleton classes.
Implements [Feature #14394]
Co-authored-by: fatkodima <fatkodima123@gmail.com>
...
jeremyevans (Jeremy Evans)
07:35 PM Bug #18264 (Closed): TracePoint leaks memory
Applied in changeset commit:git|a4d5ee4f31bf3ff36c1a8c8fe3cda16aa1016b12.
----------
[Bug #18264] Fix memory leak in TracePoint
TracePoint leaks memory because it allocates a `rb_tp_t` struct
without ever freeing it (it is created with...
peterzhu2118 (Peter Zhu)
05:21 AM Bug #18264: TracePoint leaks memory
Good catch.
~~An empty function was replaced with `RUBY_TYPED_NEVER_FREE` at commit:5c1b9b38d69d, but an empty free function means that the instance has nothing others to free, and it should equal `RUBY_TYPED_DEFAULT_FREE`.~~
nobu (Nobuyoshi Nakada)
07:35 PM Revision 717ab0bb (git): Add Class#descendants
Doesn't include receiver or singleton classes.
Implements [Feature #14394]
Co-authored-by: fatkodima <fatkodima123@gmail.com>
Co-authored-by: Benoit Daloze <eregontp@gmail.com>
jeremyevans (Jeremy Evans)
07:29 PM Feature #16663: Add block or filtered forms of Kernel#caller to allow early bail-out
I think this is a useful feature. I submitted a pull request to implement `caller`/`caller_locations` yielding to a passed block: https://github.com/ruby/ruby/pull/5031 jeremyevans0 (Jeremy Evans)
07:12 PM Feature #12737: Module#defined_refinements
Should the code in the description be `p M.defined_refinements`?
I'm not sure to understand the use case, isn't `using M` doing the same as that `for`?
Eregon (Benoit Daloze)
02:21 AM Feature #12737 (Assigned): Module#defined_refinements
Matz, can I add Module#defined_refinements? shugo (Shugo Maeda)
07:08 PM Bug #18267: Argument forwarding requires parenthesis on method definitions
On a more serious note, `def=` also has this restriction:
```
$ ruby -e 'def m(a) = 2'
OK
$ ruby -e 'def m a = 2'
-e:1: syntax error, unexpected end-of-input
$ ruby -e 'def m a = a'
-e:1: circular argument reference - a
-e:1: syn...
Eregon (Benoit Daloze)
07:03 PM Bug #18267: Argument forwarding requires parenthesis on method definitions
[joke] Maybe a reason to be a little bit more consistent about Ruby syntax and always use parens for method definitions? :D [/joke] Eregon (Benoit Daloze)
06:50 PM Bug #18267: Argument forwarding requires parenthesis on method definitions
It was known when the feature was introduced https://bugs.ruby-lang.org/projects/ruby-master/repository/git/revisions/d1ae2bc27fd4183e6abb9e83691e192bfe1e5316/diff, @mame added a NEWS entry specifically for it.
I presume it would clas...
byroot (Jean Boussier)
08:36 AM Bug #18267: Argument forwarding requires parenthesis on method definitions
I agree that this is a bug.
Matz.
matz (Yukihiro Matsumoto)
06:01 PM Bug #18269: trace_opt_not and trace_opt_regexpmatch2 insns are indistinguishable
No matter how we implement it (making each instruction unique, telling the compiler to not perform de-duplication if possible, etc.), one direction would be to make every address of trace instructions unique like you suggested. I would n... k0kubun (Takashi Kokubun)
05:01 PM Bug #18269: trace_opt_not and trace_opt_regexpmatch2 insns are indistinguishable
I guess one option would be to have each of the optimized trace instructions use code specific to each instruction, so that the compiler would never merge the instructions. @k0kubun, do you think that would make sense? I'm not sure wha... jeremyevans0 (Jeremy Evans)
04:08 AM Bug #18269 (Closed): trace_opt_not and trace_opt_regexpmatch2 insns are indistinguishable
On some platforms and compiler tool chain, `RubyVM::ISeq#to_a` shows a wrong instruction.
```
set_trace_func(Proc.new { })
set_trace_func(nil)
iseq = RubyVM::InstructionSequence.compile("/true/ =~ 'true'")
pp iseq.to_a.last
# e...
mame (Yusuke Endoh)
05:11 PM Revision a4d5ee4f (git): [Bug #18264] Fix memory leak in TracePoint
TracePoint leaks memory because it allocates a `rb_tp_t` struct
without ever freeing it (it is created with `RUBY_TYPED_NEVER_FREE`).
peterzhu2118 (Peter Zhu)
05:10 PM Revision f180fa6c (git): Fix Typo
Steven Nunez
05:05 PM Revision 66e31850 (git): * 2021-10-27 [ci skip]
git[bot]
05:05 PM Revision 26353c75 (git): Embed bare `double` if `sizeof(double) == sizeof(VALUE)`
nobu (Nobuyoshi Nakada)
05:05 PM Revision e3a783b1 (git): Align `RFloat` at VALUE boundary
nobu (Nobuyoshi Nakada)
04:31 PM Bug #16497: StringIO#internal_encoding is broken (more severely in 2.7)
@nobu @naruse @byroot Year after, this is still broken in the recent head.
```ruby
RUBY_DESCRIPTION
# => "ruby 3.1.0dev (2021-10-26T11:17:00Z master afdca0e780) [x86_64-linux]"
str = 'Україна'.encode('KOI8-U')
# => "\xF5\xCB\xD2\x...
zverok (Victor Shepelev)
02:44 PM Misc #18266: DevelopersMeeting20211118Japan
* [Feature #16252] Hash#partition should return hashes (dan0042)
* More consistent with `select`/`reject`
* More in line with existing usage (most people seem to convert the results to hashes)
* More efficient than arrays of arrays...
Dan0042 (Daniel DeLorme)
10:39 AM Misc #18266: DevelopersMeeting20211118Japan
* [Bug #18270] Refinement#{extend_object,append_features,prepend_features} should be removed
* Refinements are different from normal modules, so it's potentially dangerous to use refinements as mixins.
* Why not deprecate them in Rub...
shugo (Shugo Maeda)
02:28 AM Misc #18266: DevelopersMeeting20211118Japan
* [Feature #12737] Module#defined_refinements (shugo)
* It's good to have for debugging purposes. Users can see refinements defined in a module in irb etc. without reading code.
* [Feature #14332] Module.used_refinements to list refin...
shugo (Shugo Maeda)
02:42 PM Feature #16252: Hash#partition should return hashes
Two years later, and today when using hash.partition I was surprised that it didn't return two hashes.
This has to be just an oversight, right?
Dan0042 (Daniel DeLorme)
11:17 AM Revision afdca0e7 (git): Fix unaligned access to `double` in RFloat
nobu (Nobuyoshi Nakada)
11:17 AM Revision e1ecda29 (git): Make new object for negated float as `Float` is always frozen now
nobu (Nobuyoshi Nakada)
10:36 AM Revision 37395ffa (git): Make the metaclass of Refinement explicitly
Otherwise, singleton methods of Module are not inherited unless
Refinement.singleton_class is called.
shugo (Shugo Maeda)
10:21 AM Bug #16936 (Open): `make test-all TESTS="-n !/Foo#method/"` not skipping the test case
This was somehow swept under the carpet, but it is still unresolved. I have opened PR with a fix:
https://github.com/ruby/ruby/pull/5026
vo.x (Vit Ondruch)
10:20 AM Feature #18270 (Closed): Refinement#{extend_object,append_features,prepend_features} should be removed
Refinement#{extend_object,append_features,prepend_features} are not useful and should be removed.
How about to deprecate them in Ruby 3.1 and remove in Ruby 3.1?
shugo (Shugo Maeda)
08:59 AM Bug #18170: Exception#inspect should not include newlines
@mame thanks for all your work on this issue.
> Incompatibility. In general, users should not depend on the return value of #inspect. That being said, we don't want to introduce incompatibility unnecessarily. According to my PR, the s...
ioquatix (Samuel Williams)
08:06 AM Revision 8a49c7e4 (git): Revert "introduce check code for mysterious EBADF"
This reverts commit 7864efa105921eb3900c843126f2e0db02b9c6ae. ko1 (Koichi Sasada)
08:06 AM Revision d1424f7f (git): Revert "check other IO#close calls"
This reverts commit a1c4cab11d613d7df037a81a770ee44a23a2e9be. ko1 (Koichi Sasada)
07:05 AM Bug #18268: Behavior change when `each_cons` and `break ... if false` are combined in Ruby 3.1
Thank you for the information source. This looks like a breaking change in Ruby 3.1, but it's okay if it's a considered impact. koic (Koichi ITO)
03:09 AM Bug #18268: Behavior change when `each_cons` and `break ... if false` are combined in Ruby 3.1
It appears to have been changed at https://github.com/ruby/ruby/pull/1509. osyo (manga osyo)
02:55 AM Bug #18268 (Closed): Behavior change when `each_cons` and `break ... if false` are combined in Ruby 3.1
I'm not sure the details, but the following behavior has changed between Ruby 3.0.2 (and earlier) and Ruby 3.1.0-dev.
```ruby
# example.rb
def foo
[1, 2].each_cons(2) do |one, two|
break one if false
end
end
p foo
``...
koic (Koichi ITO)
05:43 AM Revision 049e1f85 (git): Fix typo
nobu (Nobuyoshi Nakada)
02:39 AM Revision 5c2b6441 (git): fix random EBADF problem
```ruby
r, w = IO.pipe
r.close
IO.for_fd(w.fileno).close
```
This code closes a file descriptor `w.fileno`, but `w` doesn't know
the closing. Another code can open same file descriptor with opening
file (`f`). After t...
ko1 (Koichi Sasada)
12:30 AM Revision 7d4c5920 (git): improve doc coverage [ci skip]
Just split the comment for struct's one and array's one. shyouhei (Shyouhei Urabe)
12:30 AM Revision a0029ae2 (git): just another evidence that @shyouhei is an idiot [ci skip]
(gdb) ptype/o struct RString
/* offset | size */ type = struct RString {
/* 0 | 16 */ struct RBasic {
/* 0 | 8 */ VALUE flags;
/* 8 | 8 */ const VALUE klass;
...
shyouhei (Shyouhei Urabe)
12:05 AM Revision b49ec78f (git): more on eliminating $make
shyouhei (Shyouhei Urabe)
12:05 AM Revision b682f763 (git): GNUMAKEFLAGS is too new for mac
It is relatively well known that mac does not update its command line
tools, and make is no exception. They ship GNU make 3.x, which didn't
yet implemented GNUMAKEFLAGS.
Resort to MAKEFLAGS there.
shyouhei (Shyouhei Urabe)
12:05 AM Revision 748688a6 (git): .github: use GNUMAKEFLAGS instead of JOBS
A bit readable to me.
See also https://github.com/ruby/ruby/pull/4880
shyouhei (Shyouhei Urabe)

10/25/2021

11:52 PM Bug #18267 (Closed): Argument forwarding requires parenthesis on method definitions
I like to write my method definitions without parenthesis. For example:
```ruby
def foo bar
# ...
end
```
I tried to use `...`, but it doesn't work. For example if I do:
```ruby
def call a, ...
a.nil?(...)
end
```
...
tenderlovemaking (Aaron Patterson)
11:01 PM Revision 92ec0105 (git): [rubygems/rubygems] Add support to build and sign certificates with multiple key algorithms
https://github.com/rubygems/rubygems/commit/967876f15d
Co-Authored-By: Frederik Dudzik <frederik.dudzik@shopify.com>
Jenny Shen
06:53 PM Revision 10fe8495 (git): Update YJIT code owners. Revert accidental commit.
maximecb (Maxime Chevalier-Boisvert)
06:29 PM Revision 722d43ad (git): Test PR
maximecb (Maxime Chevalier-Boisvert)
06:28 PM Revision cf52a2c9 (git): Add code owners for YJIT sources
Code owners are automatically tagged as reviewers on pull requests maximecb (Maxime Chevalier-Boisvert)
06:27 PM Bug #18263 (Third Party's Issue): "make install" crashed when Ruby3.0.2 clean install. (in japanese)
It looks like this may be an issue with the embedded version of libyaml that Ruby ships. If so, it should be fixed upstream in libyaml (https://github.com/yaml/libyaml), and then a pull request or issue should be filed to https://github... jeremyevans0 (Jeremy Evans)
05:36 PM Feature #18254: Add an `offset` parameter to String#unpack and String#unpack1
Agreed. The goal is to avoid slicing anyway, and to slice you need to know how many bytes you consumed.
If there's no other objections I'll merge in a day or two.
byroot (Jean Boussier)
04:55 PM Feature #18254: Add an `offset` parameter to String#unpack and String#unpack1
@byroot Thank you for adding documentation. I agree with merging.
> there should be a way to know how many bytes an invocation of String#unpack consumes.
In fact, some committers discussed this point at the dev-meeting. However, in...
mame (Yusuke Endoh)
02:34 PM Feature #18254: Add an `offset` parameter to String#unpack and String#unpack1
I extended the pull request to clearly document the `offset` keyword and stress that it's a byte offset. Hopefully that clears that concern. byroot (Jean Boussier)
09:41 AM Feature #18254: Add an `offset` parameter to String#unpack and String#unpack1
That argument will indeed be pretty much worthless if you use the `U` format, but I don't really see it as a blocker. It is meant to help binary parsers, I don't see `U` making sense for these.
As for the documentation, we indeed need...
byroot (Jean Boussier)
09:26 AM Feature #18254: Add an `offset` parameter to String#unpack and String#unpack1
mame (Yusuke Endoh) wrote in #note-5:
> Just a confirmation: the offset is byte-oriented, not character-oriented, right? There are a format "u" which is UTF-8 coding, so the behavior should be explained clearly in the document.
This ...
duerst (Martin Dürst)
06:55 AM Feature #18254: Add an `offset` parameter to String#unpack and String#unpack1
> Just a confirmation: the offset is byte-oriented, not character-oriented, right? There
Yes.
byroot (Jean Boussier)
05:39 AM Feature #18254: Add an `offset` parameter to String#unpack and String#unpack1
As the RDoc of `String#unpack` states:
```ruby
# Decodes <i>str</i> (which may contain binary data) according to the
# format string, returning an array of each value extracted. The
```
Isn't it clear that it is counted as binary?
nobu (Nobuyoshi Nakada)
02:36 AM Feature #18254: Add an `offset` parameter to String#unpack and String#unpack1
Just a confirmation: the offset is byte-oriented, not character-oriented, right? There are a format "u" which is UTF-8 coding, so the behavior should be explained clearly in the document. mame (Yusuke Endoh)
02:08 AM Feature #18254: Add an `offset` parameter to String#unpack and String#unpack1
Sounds reasonable. Accepted.
Matz.
matz (Yukihiro Matsumoto)
05:26 PM Feature #18239 (Closed): Variable Width Allocation: Strings
Applied in changeset commit:git|46b66eb9e8e6de2d5750591e532310e8f8599d90.
----------
[Feature #18239] Add struct for embedded strings
peterzhu2118 (Peter Zhu)
05:26 PM Revision a5b65981 (git): [Feature #18239] Implement VWA for strings
This commit adds support for embedded strings with variable capacity and
uses Variable Width Allocation to allocate strings.
peterzhu2118 (Peter Zhu)
05:26 PM Revision 6374be5a (git): [Feature #18239] Refactor RVARGC alloc functions
The allocation functions no longer assume that one RVALUE needs to be
allocated.
peterzhu2118 (Peter Zhu)
05:26 PM Revision 46b66eb9 (git): [Feature #18239] Add struct for embedded strings
peterzhu2118 (Peter Zhu)
05:21 PM Feature #17837: Add support for Regexp timeouts
There are other tradeoffs to consider
* `Regexp.backtrack_limit=` is deterministic, and will stop execution after a certain amount of "processing" regardless of how many threads are busy
* `Regexp.timeout=` will stop a regexp after a cer...
Dan0042 (Daniel DeLorme)
04:42 PM Feature #17837: Add support for Regexp timeouts
In my understanding, this feature is just a workaround to prevent Regexp DoS pracitcally. We can craft a regexp skirting this feature, but it would have worked well against regexps that I have ever seen as DoS issues.
I agree that usi...
mame (Yusuke Endoh)
11:17 AM Feature #17837: Add support for Regexp timeouts
What if the time between two backtracks is much larger for some Regexp, isn't that possible with many characters being matched and then at the end a possible backtrack? (e.g., something like `/(a{100000}|b{100000})*/`)
If so, it sounds ...
Eregon (Benoit Daloze)
04:39 AM Feature #17837: Add support for Regexp timeouts
For the record: this API will not interrupt the execution of a regexp that includes no interrupt check. Typically just a long regexp like `/xxxxxxxxx....{so long}...xxx/` may not be interrupted even if the time limit is exceeded. The doc... mame (Yusuke Endoh)
04:26 AM Feature #17837: Add support for Regexp timeouts
mame (Yusuke Endoh) wrote in #note-31:
> @ko1 suggested mixing the two ideas
According to @ko1, @knu suggested it first. Sorry for my wrong credit.
mame (Yusuke Endoh)
03:09 AM Feature #17837: Add support for Regexp timeouts
Discussed at dev-meeting today.
In summary, there are two proposals, `Regexp.timeout=` and `Regexp.backtrack_limit=`, which have a trade-off.
* `Regexp.timeout=` is easy to use in practical applications, but makes the regexp matchi...
mame (Yusuke Endoh)
04:58 PM Revision 09fa773e (git): ast.c: Use kept script_lines data instead of re-opening the source file (#5019)
ast.c: Use kept script_lines data instead of re-open the source file mame (Yusuke Endoh)
04:51 PM Revision 33113c6b (git): * 2021-10-26 [ci skip]
git[bot]
04:51 PM Revision 557fa389 (git): [rubygems/rubygems] Fix Bundler::Digest#sha1 on big-endian systems
As noticed by @nobu https://github.com/rubygems/rubygems/pull/4989#discussion_r735674633
From wikipedia: https://en.wikipedia.org/wiki/SHA-1#SHA-1_pseudocode
> append ml, the original message length in bits, as a 64-bit big-endian inte...
byroot (Jean Boussier)
03:07 PM Bug #18170: Exception#inspect should not include newlines
ioquatix (Samuel Williams) wrote in #note-14:
> @matz what problem are we trying to prevent by not just applying `#inspect` to every message?
Incompatibility. In general, users should not depend on the return value of `#inspect`. Tha...
mame (Yusuke Endoh)
10:20 AM Bug #18170: Exception#inspect should not include newlines
> Note that there is no space between the colon and the double quote in the first line.
Why is that? Why is it necessary?
> ...
I agree it's ad-hoc and I dislike that we could not just call inspect on every message which would be c...
ioquatix (Samuel Williams)
08:59 AM Bug #18170: Exception#inspect should not include newlines
We discussed this ticket at the dev-meeting, and matz basically accepted as above.
The approved spec is very hacky. Only when the message includes new lines, `Exception#inspect` applies `inspect` to the message. Otherwise, it embeds t...
mame (Yusuke Endoh)
02:48 PM Feature #18035: Introduce general model/semantic for immutability.
ioquatix (Samuel Williams) wrote in #note-29:
> So, I'd like to share some ideas.
> ...
I've also thought about this in the past so I'd like to share my own observation; it seems like RHash uses a lot of `FL_USER*` bits. Like 4 bits ea...
Dan0042 (Daniel DeLorme)
02:19 AM Feature #18035: Introduce general model/semantic for immutability.
> What to do on 32-bit platforms?
I wondered about this. If we don't have 64-bits in general, the only way to implement this is to either:
1. Reuse existing flag if possible.
2. Reduce number of user flags.
3. Only allow some kin...
ioquatix (Samuel Williams)
01:39 AM Feature #18035: Introduce general model/semantic for immutability.
What to do on 32-bit platforms?
And you seem to assume little endian.
nobu (Nobuyoshi Nakada)
01:28 AM Feature #18035: Introduce general model/semantic for immutability.
I tried a couple of times but I could not figure out how to allocate more flags within `RBasic` and `enum` in C99 has problems with more than 32-bit constants on some platforms.
So, I'd like to share some ideas.
Can we split flags ...
ioquatix (Samuel Williams)
02:45 PM Revision 244c98e6 (git): Strip out YJIT at build time when unsupported or disabled (#5003)
In an effort to minimize build issues on non x64 platforms, we can
decide at build time to not build the bulk of YJIT. This should fix
obscure build errors like this one on riscv64:
yjit_asm.c:137:(.text+0x3fa): relocation truncated...
alanwu (Alan Wu)
02:40 PM Revision e9435114 (git): YJIT: Implement duphash (#5009)
`duphash` showed up in the top-20 most frequent exit ops for @jhawthorn's benchmark that renders github.com/about
The implementation was almost exactly the same as `duparray`
Co-authored-by: John Hawthorn <john@hawthorn.email>
Co-auth...
Ian C. Anderson
12:30 PM Revision 1c0c8d5d (git): test/ruby/test_jit.rb: Add a test for checkmatch insn
mame (Yusuke Endoh)
12:28 PM Revision 5bcef26d (git): test/ruby/test_jit.rb: Print a hint at exit of the original process
Otherwise, the hint is printed whenever fork is called.
http://rubyci.s3.amazonaws.com/debian9/ruby-master/log/20211025T093004Z.log.html.gz
```
[20244/21156] TestThread#test_fork_while_lockedyou may want to add tests for following insns...
mame (Yusuke Endoh)
11:55 AM Feature #17795 (Closed): Around `Process.fork` callbacks API
Applied in changeset commit:git|13068ebe32a7b8a1a9bd4fc2d5f157880b374e1d.
----------
process.c: Add Process._fork (#5017)
* process.c: Add Process._fork
This API is supposed for application monitoring libraries to hook fork
event.
[F...
mame (Yusuke Endoh)
10:03 AM Feature #17795: Around `Process.fork` callbacks API
I agree with Jeremy, but I'll go a step further. If we want Ruby to be safe, the only sane way to handle fork (in general) is to close all resources in the child process (as already happens with Thread instances, and similarly with close... ioquatix (Samuel Williams)
04:18 AM Feature #17795: Around `Process.fork` callbacks API
@matz Thanks. I've created a prototype PR: https://github.com/ruby/ruby/pull/5017 mame (Yusuke Endoh)
02:36 AM Feature #17795: Around `Process.fork` callbacks API
The new method should be override (or wrap) target, so `wrap_` or `around_` are not a part of proper names.
I propose `Process._fork` for the method name, since:
* It is not for typical users
* It is the target for overriding
* We ...
matz (Yukihiro Matsumoto)
11:48 AM Revision 9d286180 (git): [rubygems/rubygems] Avoid loading the `digest` gem unnecessarily
OpenSSL includes what we need.
https://github.com/rubygems/rubygems/commit/955f3b72ca
deivid (David Rodríguez)
11:48 AM Revision a959342a (git): [rubygems/rubygems] Remove comment that seems no longer accurate
We require things inline or autoload them for efficiency and to avoid as
much as possible conflicting with user's choice of gems.
But I removed the require and observed no deadlocks when activating
gems.
https://github.com/rubygems/rub...
deivid (David Rodríguez)
11:48 AM Revision 9fbf3a1f (git): Unify issue template and ISSUES.md document
Some crucial information to ease maintainers work, like the advice of
upgrading rubygems and bundler, was one step away from the issue
template, making it easier for some users to miss.
Now all relevant information is written directly i...
deivid (David Rodríguez)
11:48 AM Revision b4a43e4f (git): [rubygems/rubygems] Show proper error when previous installation of gem can't be deleted
Instead of showing the bug report template with an error at a random
place.
https://github.com/rubygems/rubygems/commit/882ad3ab57
deivid (David Rodríguez)
11:48 AM Revision 00412be2 (git): [rubygems/rubygems] Show a proper error if gem path is not writable
Instead of showing the bug report place with an error at a randome
place.
https://github.com/rubygems/rubygems/commit/241854ce73
deivid (David Rodríguez)
11:48 AM Revision f6d19095 (git): [rubygems/rubygems] Catch up with recent error message modification
https://github.com/rubygems/rubygems/commit/ae374c1f31 deivid (David Rodríguez)
11:48 AM Revision 7073870d (git): [rubygems/rubygems] Improve readability by splitting updating the cache and searching it
https://github.com/rubygems/rubygems/commit/d0df25bb0f deivid (David Rodríguez)
11:48 AM Revision f7f85c1f (git): [rubygems/rubygems] Manage global gem cache directly
Previously, it was maintained in sync with the standard cache. That was
less efficient, and it caused some error messages to point to non
existent files.
https://github.com/rubygems/rubygems/commit/931f8cb8a9
deivid (David Rodríguez)
11:48 AM Revision 4fc29d17 (git): [rubygems/rubygems] Cached gem path resolution should consider default gems
https://github.com/rubygems/rubygems/commit/83b2b845b3 deivid (David Rodríguez)
11:48 AM Revision 4edcda67 (git): [rubygems/rubygems] Simplify gem downloading inside bundler
We can skip most stuff in `Gem::RemoteFetcher#download`, and use
`Gem::RemoteFetcher#update_cache_path` directly.
This has the benefit of allowing us to remove some workarounds to
support several rubygems versions, but also allows us to...
deivid (David Rodríguez)
11:48 AM Revision 03a563b4 (git): [rubygems/rubygems] Remove unused `let`
https://github.com/rubygems/rubygems/commit/7e1316e454 deivid (David Rodríguez)
11:48 AM Revision 57d990dd (git): [rubygems/rubygems] Raise original exception
https://github.com/rubygems/rubygems/commit/3c93b9fd21 deivid (David Rodríguez)
11:48 AM Revision 7b821bc9 (git): [rubygems/rubygems] Add missing requires
These methods rescue a constant defined by `rubygems/remote_fetcher`,
so they should technically require it.
The require is provided by `gem_remote_fetcher` anyways but I was
running a unit spec that stubs that method, so I was getting ...
deivid (David Rodríguez)
11:48 AM Revision 9b1b1718 (git): [rubygems/rubygems] Use `Gem::Specification#file_name` consistently
https://github.com/rubygems/rubygems/commit/13b933f49a deivid (David Rodríguez)
11:48 AM Revision 38542cff (git): [rubygems/rubygems] Extract a `default_cache_path` helper
https://github.com/rubygems/rubygems/commit/8319305d58 deivid (David Rodríguez)
11:48 AM Revision edc18131 (git): [rubygems/rubygems] Small refactor
Extract final cache path to a variable and pass that to `download_gem`.
It actually fits better the parameters documentation since it's the
final directory where the downloaded gem will be placed.
https://github.com/rubygems/rubygems/co...
deivid (David Rodríguez)
11:47 AM Revision 13068ebe (git): process.c: Add Process._fork (#5017)
* process.c: Add Process._fork
This API is supposed for application monitoring libraries to hook fork
event.
[Feature #17795]
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
mame (Yusuke Endoh)
11:45 AM Revision 1eac38c6 (git): test/ruby/test_rubyvm.rb: prevent "assigned but unused variable" warnings
http://rubyci.s3.amazonaws.com/centos7/ruby-master/log/20211025T093004Z.log.html.gz
```
[ 4896/21159] TestRubyVM#test_keep_script_lines(none):3: warning: assigned but unused variable - b
(none):6: warning: assigned but unused variable - ...
mame (Yusuke Endoh)
11:44 AM Revision 7da9c25a (git): test/ruby/test_refinement.rb: Prevent deprecation warnings during test
http://rubyci.s3.amazonaws.com/centos7/ruby-master/log/20211025T093004Z.log.html.gz
```
/home/chkbuild/chkbuild/tmp/build/20211025T093004Z/ruby/test/ruby/test_refinement.rb:777: warning: Refinement#include is deprecated and will be remov...
mame (Yusuke Endoh)
11:43 AM Revision 00c7b91f (git): test/ruby/test_marshal.rb: Prevent "assigned but unused variable" warning
http://rubyci.s3.amazonaws.com/centos7/ruby-master/log/20211025T093004Z.log.html.gz
```
/home/chkbuild/chkbuild/tmp/build/20211025T093004Z/ruby/test/ruby/test_marshal.rb:925: warning: assigned but unused variable - objects
```
mame (Yusuke Endoh)
11:24 AM Revision 5af3f7f3 (git): [rubygems/rubygems] Vendor a pure ruby implementation of SHA1
This allows `Source::Git` to no longer load the `digest` gem as it is causing
issues on Ruby 3.1.
https://github.com/rubygems/rubygems/pull/4989/commits/c19a9f2ff7
byroot (Jean Boussier)
11:01 AM Feature #18176 (Closed): Make Coverage suspendable
Applied in changeset commit:git|86e3d77abb8a033650937710d1ab009e98647494.
----------
Make Coverage suspendable (#4856)
* Make Coverage suspendable
Add `Coverage.suspend`, `Coverage.resume` and some methods.
[Feature #18176] [ruby-cor...
mame (Yusuke Endoh)
08:49 AM Feature #18176 (Assigned): Make Coverage suspendable
We discussed this ticket in the dev-meeting, and I accepted this proposal as the author and maintainer of coverage.so.
Currently, coverage.so does not support per-thread coverage measurement, so using Coverage.suspend/resume to gather...
mame (Yusuke Endoh)
11:00 AM Revision 86e3d77a (git): Make Coverage suspendable (#4856)
* Make Coverage suspendable
Add `Coverage.suspend`, `Coverage.resume` and some methods.
[Feature #18176] [ruby-core:105321]
mame (Yusuke Endoh)
10:42 AM Revision 54379e3d (git): Update TypeProf to 0.20.1
mame (Yusuke Endoh)
10:02 AM Revision 7394514b (git): [rubygems/rubygems] Simplify and remove some unused code
When `install_with_build_args` was added in
https://github.com/rubygems/rubygems/commit/be96283985cb49c023112117b2ac2dea0d9becf1,
there were two versions of the method: the default version in the base class that still
used the locking `w...
dodecadaniel (Daniel Colson)
09:17 AM Misc #18266: DevelopersMeeting20211118Japan
* [Feature #18262] `Enumerator::Lazy#partition` (zverok)
* Part of the effort to make `Lazy` more natural: `#partition` to return two lazy enumerators
zverok (Victor Shepelev)
09:11 AM Misc #18266 (Closed): DevelopersMeeting20211118Japan
# The next dev meeting
**Date: 2021/11/18 13:00-17:00** (JST)
Place/Sign-up/Agenda/Log: https://github.com/ruby/dev-meeting-log/blob/master/DevelopersMeeting20211118Japan.md
- Dev meeting *IS NOT* a decision-making place. All deci...
mame (Yusuke Endoh)
09:11 AM Misc #18174 (Closed): DevelopersMeeting20211021Japan
mame (Yusuke Endoh)
09:07 AM Bug #12436 (Assigned): newline argument of File.open seems not respected on Windows
@matz accepted this and asked @nobu to review the PR. mame (Yusuke Endoh)
09:05 AM Bug #18066 (Rejected): Load did_you_mean/error_highlight even with --disable-gems
We discussed this ticket at the dev-meeting, and @matz rejected this.
Now the `--disable-gems` option is just for debugging, not for casual users. We, the core developers, mainly use the option to investigate the startup overhead of t...
mame (Yusuke Endoh)
08:38 AM Revision a1c4cab1 (git): check other IO#close calls
http://ci.rvm.jp/results/trunk@ruby-iga/3690333
> tool/lib/test/unit/parallel.rb:68:in `close': Bad file descriptor (Errno::EBADF)
ko1 (Koichi Sasada)
08:13 AM Bug #18255: ioctl zeroes the last buffer byte
vihai (Daniele Orlandi) wrote in #note-6:
> The first issue is caused by `<sys/ioctl.h>` not defining `_IOC_SIZE`, ruby falls back to `DEFULT_IOCTL_NARG_LEN`. I guess you have to detect and include `<linux/ioctl.h>` or `<asm/ioctl.h>`.
...
nobu (Nobuyoshi Nakada)
06:47 AM Revision 7864efa1 (git): introduce check code for mysterious EBADF
parallel test randomly failed with EBADF.
This patch checks wich suite causes this error.
ex) http://ci.rvm.jp/results/trunk@ruby-iga/3690219
```
/tmp/ruby/v3/src/trunk/tool/lib/test/unit/parallel.rb:88:in `close': Bad file descriptor ...
ko1 (Koichi Sasada)
03:25 AM Revision b74f9d65 (git): add example for buffer: argument of pack.
akr (Akira Tanaka)
03:15 AM Revision 66d09501 (git): fix typo [ci skip]
180909 (佳华 王)
03:13 AM Revision dfb47bbd (git): Fix `Enumerable#each_cons` and `Enumerable#each_slice` to return a receiver
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
make_now_just (Hiroya Fujinami)

10/24/2021

11:38 PM Revision aa09c8da (git): Fix links [ci skip]
znz (Kazuhiro NISHIYAMA)
11:14 PM Feature #18033: Time.new to parse a string
I checked the latest update.
I'm still not sure about `Time.new(string)` parsing a string.
What about `Time.parse_strict` or `Time.parse_iso8601` etc?
ioquatix (Samuel Williams)
04:11 PM Feature #18265: Self-contained one-binary feature which discuss on ruby kaigi 2021 day 2, 《 Ruby Committers vs the World / CRuby Committers》
duerst (Martin Dürst) wrote in #note-4:
> - Fixed typo in Subject
> ...
Updated, so there is exists more describe for now.
for that youtube video, except copy the video content, i can't do more, because I can't understand Japanese
zw963 (Wei Zheng)
12:49 AM Feature #18265: Self-contained one-binary feature which discuss on ruby kaigi 2021 day 2, 《 Ruby Committers vs the World / CRuby Committers》
- Fixed typo in Subject
- When proposing a feature, please describe the feature in the text here, not just by reference (e.g. to a Youtube video).
duerst (Martin Dürst)
04:04 PM Revision 4fb71575 (git): [DOC] Fix code markup [ci skip]
Code markup in RDoc must not be concatenated with anothr word. nobu (Nobuyoshi Nakada)
03:43 PM Revision df444512 (git): * 2021-10-25 [ci skip]
git[bot]
03:40 PM Revision e10dfdf6 (git): [ruby/openssl] bn: expand BIGNUM_RAND and BIGNUM_RAND_RANGE macros
Now that BN.pseudo_rand{,_range} are alias, those macros are only used
once. Let's expand the macros for better readability.
https://github.com/ruby/openssl/commit/7c2fc00dee
rhenium (Kazuki Yamaguchi)
03:40 PM Revision e1918670 (git): [ruby/openssl] bn: make BN.pseudo_rand{,_range} an alias of BN.rand{,_range}
BN_pseudo_rand() and BN_pseudo_rand_range() are deprecated in
OpenSSL 3.0. Since they are identical to their non-'pseudo' version
anyway, let's make them alias.
https://github.com/ruby/openssl/commit/2d34e85ddf
rhenium (Kazuki Yamaguchi)
03:40 PM Revision 1b5ccc8a (git): [ruby/openssl] pkey, ssl: use EVP_PKEY_eq() instead of EVP_PKEY_cmp()
OpenSSL 3.0 renamed EVP_PKEY_cmp() to EVP_PKEY_eq() because that was a
confusing name.
https://github.com/ruby/openssl/commit/d42bd7fcdb
rhenium (Kazuki Yamaguchi)
03:40 PM Revision ee713161 (git): [ruby/openssl] pkey/ec: use EC_GROUP_free() instead of EC_GROUP_clear_free()
EC_GROUP_clear_free() is deprecated in OpenSSL 3.0.
EC_GROUP does not include any sensitive data, so we can safely use
EC_GROUP_free() instead.
https://github.com/ruby/openssl/commit/e93a5fdffc
rhenium (Kazuki Yamaguchi)
03:40 PM Revision 555788b6 (git): [ruby/openssl] pkey/ec: deprecate PKey::EC::Point#make_affine! and make it a no-op
It converts the internal representation of the point object to the
affine coordinate system. However, it had no real use case because the
difference in the internal representation has not been visible from
Ruby/OpenSSL at all.
EC_POINT_...
rhenium (Kazuki Yamaguchi)
03:40 PM Revision 16272d9a (git): [ruby/openssl] hmac: use EVP_MD_CTX_get_pkey_ctx() instead of EVP_MD_CTX_pkey_ctx()
OpenSSL 3.0 renamed EVP_MD_CTX_pkey_ctx() to include "get" in the
function name. Adjust compatibility macro so that we can use the new
function name for all OpenSSL 1.0.2-3.0.
https://github.com/ruby/openssl/commit/c106d888c6
rhenium (Kazuki Yamaguchi)
03:40 PM Revision 040387d2 (git): [ruby/openssl] digest: use EVP_MD_CTX_get0_md() instead of EVP_MD_CTX_md() if exists
The function was renamed in OpenSSL 3.0 due to the change of the
lifetime of EVP_MD objects. They are no longer necessarily statically
allocated and can be reference-counted -- when an EVP_MD_CTX is free'd,
the associated EVP_MD can also...
rhenium (Kazuki Yamaguchi)
03:40 PM Revision cfa4fa63 (git): [ruby/openssl] bn: use BN_check_prime() in OpenSSL::BN#prime{,_fasttest}?
In OpenSSL 3.0, BN_is_prime_ex() and BN_is_prime_fasttest_ex() are
deprecated in favor of BN_check_prime().
https://github.com/ruby/openssl/commit/90d51ef510
rhenium (Kazuki Yamaguchi)
03:40 PM Revision fa24e7a5 (git): [ruby/openssl] ssl: use SSL_get_rbio() to check if SSL is started or not
Use SSL_get_rbio() instead of SSL_get_fd(). SSL_get_fd() internally
calls SSL_get_rbio() and it's enough for our purpose.
In OpenSSL 3.0, SSL_get_fd() leaves an entry in the OpenSSL error queue
if BIO has not been set up yet, and we wou...
rhenium (Kazuki Yamaguchi)
03:40 PM Revision d5aa3fca (git): [ruby/openssl] ssl: use SSL_CTX_load_verify_{file,dir}() if available
SSL_CTX_load_verify_locations() is deprecated in OpenSSL 3.0 and
replaced with those two separate functions. Use them if they exist.
https://github.com/ruby/openssl/commit/5375a55ffc
rhenium (Kazuki Yamaguchi)
03:40 PM Revision 19ef7082 (git): [ruby/openssl] ts: use TS_VERIFY_CTX_set_certs instead of TS_VERIFY_CTS_set_certs
OpenSSL 3.0 fixed the typo in the function name and replaced the
current 'CTS' version with a macro.
https://github.com/ruby/openssl/commit/2be6779b08
rhenium (Kazuki Yamaguchi)
03:40 PM Revision 3d164015 (git): [ruby/openssl] ossl.c: use ERR_get_error_all() if available
OpenSSL 3.0 deprecated ERR_get_error_line_data() in favor of
ERR_get_error_all(), as part of the error queue structure changes.
https://github.com/ruby/openssl/commit/8e98d2ecc8
rhenium (Kazuki Yamaguchi)
03:40 PM Revision 32d49e93 (git): [ruby/openssl] ext/openssl/ossl.h: add helper macros for OpenSSL/LibreSSL versions
Add following convenient macros:
- OSSL_IS_LIBRESSL
- OSSL_OPENSSL_PREREQ(maj, min, pat)
- OSSL_LIBRESSL_PREREQ(maj, min, pat)
https://github.com/ruby/openssl/commit/00abee791d
rhenium (Kazuki Yamaguchi)
02:42 PM Bug #18263: "make install" crashed when Ruby3.0.2 clean install. (in japanese)
Thank you xtkoba san.
After "dnf install libyaml-devel", "make install" and "make check" now completed without crash.
and "gem list" etc. also completed normally.
"make check" still has some errors,
> Finished tests in 2156.24421...
tksotn (TAKASHI OOTANI)
08:54 AM Bug #18263: "make install" crashed when Ruby3.0.2 clean install. (in japanese)
Gotcha.
```
CFLAGS = -std=c99 -pedantic -Wall
```
`strdup(3)` is not declared because of `-std=c99`. Try instead with `-std=gnu99`. You can alternatively append `-D_DEFAULT_SOURCE` to make it declared.
You may also have an op...
xtkoba (Tee KOBAYASHI)
10:35 AM Revision 1ea53253 (git): Reduce YJIT runs on Ubuntu [ci skip]
nobu (Nobuyoshi Nakada)
10:35 AM Revision fe77a033 (git): Use `${{}}` for if statement
nobu (Nobuyoshi Nakada)
10:24 AM Revision 408605aa (git): EWOULDBLOCK is always defined since 74ba9c248890
nobu (Nobuyoshi Nakada)
10:24 AM Revision 3d7c92df (git): Extract io_again_p to check if EAGAIN or EWOULDBLOCK
nobu (Nobuyoshi Nakada)
10:24 AM Revision 9822ebee (git): suppress warnings by parenthesizing unclear expressions
nobu (Nobuyoshi Nakada)
10:24 AM Revision 7459a32a (git): suppress warnings for probable NULL dererefences
nobu (Nobuyoshi Nakada)
10:24 AM Revision e5c2bf55 (git): Suppress sign-compare warning
nobu (Nobuyoshi Nakada)
08:50 AM Revision b69c38e6 (git): Refactor associated pointer
nobu (Nobuyoshi Nakada)
07:20 AM Revision 8d6e9b66 (git): Suppress false warning for freed pointer
nobu (Nobuyoshi Nakada)
12:25 AM Revision 1be2875e (git): [flori/json] Bump version to v2.6.1
https://github.com/flori/json/commit/2db5894cfa hsbt (Hiroshi SHIBATA)
12:25 AM Revision 4cbce794 (git): [flori/json] Bump JSON::VERSION to 2.6.0.
https://github.com/flori/json/commit/da94d9f059 retro (Josef Šimánek)

10/23/2021

11:49 PM Revision d04d6bbc (git): [ruby/psych] Prefer `require_relative` for internal requires
https://github.com/ruby/psych/commit/a0f55ee85a deivid (David Rodríguez)
11:48 PM Revision 48cd6330 (git): [ruby/psych] Add stringio as a dependency.
https://github.com/ruby/psych/commit/86e3049579 retro (Josef Šimánek)
09:04 PM Feature #16989: Sets: need ♥️
Any update on that? greggzst (Grzegorz Jakubiak)
08:58 PM Feature #17873: Update of default gems in Ruby 3.1
Done: Fiddle, CSV, StringScanner kou (Kouhei Sutou)
08:58 PM Revision bd65757f (git): * 2021-10-24 [ci skip]
git[bot]
08:57 PM Revision 53dcb354 (git): NEWS: StringScanner 3.0.1 is released
Sutou Kouhei
08:57 PM Revision c0c43276 (git): [ruby/strscan] Bump version
If we use the same version as the default strscan gem in Ruby, "gem
install" doesn't extract .gem. It fails "gem install" because "gem
install" can't find ext/strscan/ to be built.
https://github.com/ruby/strscan/commit/3ceafa6cdc
Sutou Kouhei
08:57 PM Revision 76e277a0 (git): NEWS: CSV 3.2.1 is released
Sutou Kouhei
08:57 PM Revision ee948fc1 (git): [ruby/csv] Add support for Ractor (https://github.com/ruby/csv/pull/218)
https://github.com/ruby/csv/commit/a802690e11 rm155 (Rohit Menon)
08:57 PM Revision 274882be (git): [ruby/csv] Use test-unit gem instead of test-framework of ruby repo
https://github.com/ruby/csv/commit/9c4add0d31 Sutou Kouhei
08:57 PM Revision 8fde54a3 (git): [ruby/csv] CSV(): Add support for Ruby 3 (https://github.com/ruby/csv/pull/215)
The implementation of the `CSV` shortcut method is broken in Ruby 3
for calls that look like this:
```ruby
CSV(write_stream, col_sep: "|", headers: headers, write_headers: true) do |csv|
...
end
```
The above will result in the follo...
Anthony Hernandez
08:57 PM Revision 10739750 (git): [ruby/csv] CI: Stop coverage mesurement
https://github.com/ruby/csv/commit/5ff3b95018 Kenta Murata
08:57 PM Revision 8ba98f83 (git): [ruby/csv] Use "\n" for the default row separator on Ruby 3.0 or later
https://github.com/ruby/csv/commit/1f9cbc170e Sutou Kouhei
08:57 PM Revision 7f3dd601 (git): [ruby/csv] Changed line ending handling to consider the combination \r\n as a single entry when row is faulty (https://github.com/ruby/csv/pull/220)
https://github.com/ruby/csv/commit/29cef9ea9d Joakim Antman
08:57 PM Revision 39ecdabe (git): [ruby/csv] Resolve CSV::Converters and HeaderConverters lazy
It's for Ractor. If you want to use the built-in converters, you
should call Ractor.make_shareable(CSV::Converters) and/or
Ractor.make_shareable(CSV::HeaderConverters).
https://github.com/ruby/csv/commit/b0b1325d6b
Sutou Kouhei
08:57 PM Revision 8aaa1c27 (git): [ruby/csv] doc: Match text to the struct name (https://github.com/ruby/csv/pull/217)
https://github.com/ruby/csv/commit/744e41130c Vince
08:57 PM Revision e40baca3 (git): [ruby/csv] Bump version
https://github.com/ruby/csv/commit/3025070cea Sutou Kouhei
07:46 PM Feature #18265: Self-contained one-binary feature which discuss on ruby kaigi 2021 day 2, 《 Ruby Committers vs the World / CRuby Committers》
FYI, MRuby supports this. Of course it just embeds the bytecode in the binary, no actual AOT compilation of Ruby code.
Also there are various gems which make this possible for CRuby, notably https://github.com/pmq20/ruby-packer, altho...
Eregon (Benoit Daloze)
01:02 PM Feature #18265 (Open): Self-contained one-binary feature which discuss on ruby kaigi 2021 day 2, 《 Ruby Committers vs the World / CRuby Committers》
![](clipboard-202110232053-mgbon.png)
https://www.youtube.com/watch?v=zQnN1pqK4FQ
Yes, what i said is this.
1. Go-language supports to make self-contained one-binary.
2. Is it useful for ruby?
I personal propose add this f...
zw963 (Wei Zheng)
01:19 PM Revision 185c5738 (git): Add INSTRUBY_OPTS to INSTRUBY_ARGS [ci skip]
For extra options from the `make` command line.
Also add explicit `--install` option to install-nodoc.
nobu (Nobuyoshi Nakada)
06:03 AM Bug #18263: "make install" crashed when Ruby3.0.2 clean install. (in japanese)

From `LOG.make`:
```
compiling ../.././ext/psych/yaml/api.c
../.././ext/psych/yaml/api.c: 関数 ‘yaml_strdup’ 内:
../.././ext/psych/yaml/api.c:66:27: 警告: implicit declaration of function ‘strdup’; did you mean ‘cmp’? [-Wimplicit-func...
xtkoba (Tee KOBAYASHI)
04:38 AM Revision cda8bc36 (git): [ruby/openssl] test/openssl/test_ssl: use assert_raise in test_bad_socket
The Ruby tree disallows assert_raises.
https://github.com/ruby/openssl/commit/9b4f761e74
rhenium (Kazuki Yamaguchi)
04:38 AM Revision 35b9d8d3 (git): [ruby/openssl] Raise an exception if the IO object passed to SSLSocket isn't a file
SSLSocket#connect eventually calls `GetOpenFile` in order to get the
underlying file descriptor for the IO object passed in on
initialization. `GetOpenFile` assumes that the Ruby object passed in is
a T_FILE object and just casts it to ...
tenderlovemaking (Aaron Patterson)
04:38 AM Revision 47975ece (git): [ruby/openssl] test/openssl/test_pkey_rsa: disable test_no_private_exp on OpenSSL 3.0
OpenSSL::PKey::RSA#set_key does not exist when built with OpenSSL 3.0,
so it is not possible to create an RSA object with incomplete state.
https://github.com/ruby/openssl/commit/ca03c9c070
rhenium (Kazuki Yamaguchi)
04:38 AM Revision 95044fa1 (git): [ruby/openssl] test/openssl/test_pkey: use EC keys for PKey.generate_parameters tests
OpenSSL 3.0 refuses to generate DSA parameters shorter than 2048 bits,
but generating 2048 bits parameters takes very long time. Let's use EC
in these test cases instead.
https://github.com/ruby/openssl/commit/c732387ee5
rhenium (Kazuki Yamaguchi)
04:38 AM Revision d67fe1e9 (git): [ruby/openssl] test/openssl/test_ssl: fix illegal SAN extension
A certificate can only have one SubjectAltName extension. OpenSSL 3.0
performs a stricter validation and certificates containing multiple SANs
will be rejected.
https://github.com/ruby/openssl/commit/558cfbe5f5
rhenium (Kazuki Yamaguchi)
04:38 AM Revision 79d5abd0 (git): [ruby/openssl] test/openssl/test_pkcs12: fix test failures with OpenSSL 3.0
OpenSSL's PKCS12_create() by default uses pbewithSHAAnd40BitRC2-CBC for
encryption of the certificates. However, in OpenSSL 3.0, the algorithm
is part of the legacy provider and is not enabled by default.
Specify another algorithm that ...
rhenium (Kazuki Yamaguchi)
04:38 AM Revision d26e64e0 (git): [ruby/openssl] test/openssl/test_ssl: relax regex to match OpenSSL's error message
OpenSSL 3.0 slightly changed the error message for a certificate
verification failure when an untrusted self-signed certificate is found
in the chain.
https://github.com/ruby/openssl/commit/b5a0a19850
rhenium (Kazuki Yamaguchi)
04:38 AM Revision 54047b6d (git): [ruby/openssl] test/openssl/test_digest: do not test constants for legacy algorithms
Remove availability test for MD4 and RIPEMD160 as they are considered
legacy and may be missing depending on the compile-time options of
OpenSSL. OpenSSL 3.0 by default disables them.
https://github.com/ruby/openssl/commit/a3e59f4c2e
rhenium (Kazuki Yamaguchi)
04:38 AM Revision 5a8e1c52 (git): [ruby/openssl] test/openssl/test_ssl: assume ECC support
Disabling ECC support of OpenSSL is impractical nowadays.
We still try to have the C extension compile on no-ec builds (as well
as no-dh or no-engine, etc.) as long as we can, but keeping test cases
for such an extreme scenario is not w...
rhenium (Kazuki Yamaguchi)
04:38 AM Revision 0e805e73 (git): [ruby/openssl] test/openssl/test_ssl: assume TLS 1.2 support
Current versions of OpenSSL and LibreSSL all support TLS 1.2, so there
is no need for checking the availability.
https://github.com/ruby/openssl/commit/a175a41529
rhenium (Kazuki Yamaguchi)
04:38 AM Revision 37632a0a (git): [ruby/openssl] test/openssl/utils: remove dup_public helper method
It uses deprecated PKey::{RSA,DSA,DH}#set_* methods, which will not
work with OpenSSL 3.0. The same can easily be achieved using
PKey#public_to_der regardless of the key kind.
https://github.com/ruby/openssl/commit/7b66eaa2db
rhenium (Kazuki Yamaguchi)
01:56 AM Revision e353bcd1 (git): Sync did_you_mean
yuki24 (Yuki Nishijima)
01:22 AM Revision 93badf47 (git): Disable did_you_mean in TestPatternMatching
yuki24 (Yuki Nishijima)
01:14 AM Revision 905be49b (git): Remove the test for DYM's verbose formatter
yuki24 (Yuki Nishijima)
01:00 AM Revision 66df18c5 (git): Sync did_you_mean again
yuki24 (Yuki Nishijima)
12:56 AM Revision 22249bbb (git): Revert "Sync did_you_mean"
This reverts commit e22d293e06966733e71a7fd9725eee06c03d0177. yuki24 (Yuki Nishijima)
12:35 AM Revision e22d293e (git): Sync did_you_mean
yuki24 (Yuki Nishijima)

10/22/2021

09:22 PM Revision f8006982 (git): YJIT: Don't take VM lock on constant IC fill when disabled
While theoretically it's fine to take the lock and then immediately release
it, we don't need to do it when YJIT is off.
alanwu (Alan Wu)
09:03 PM Revision 7246c5b8 (git): NEWS: Fiddle 1.1.0 is released
Sutou Kouhei
08:03 PM Feature #18239: Variable Width Allocation: Strings
Thank you @matz. We will merge with it turned off by default for 3.1. peterzhu2118 (Peter Zhu)
06:07 PM Bug #18264 (Closed): TracePoint leaks memory
# GitHub PR: https://github.com/ruby/ruby/pull/5008
TracePoint leaks memory because it allocates a `rb_tp_t` struct without ever freeing it (it is created with `RUBY_TYPED_NEVER_FREE`). This is reproducible on all maintained Rubies (2...
peterzhu2118 (Peter Zhu)
04:47 PM Feature #13715: [PATCH] avoid garbage from Symbol#to_s in interpolation
normalperson (Eric Wong) wrote in #note-4:
> "jeremyevans0 (Jeremy Evans)" <noreply@ruby-lang.org> wrote:
> ...
Other options recommended were `rb_str_new_literal` and `rb_fstring_literal`. I went with `rb_fstring_literal`: https://gi...
jeremyevans0 (Jeremy Evans)
09:29 AM Feature #13715: [PATCH] avoid garbage from Symbol#to_s in interpolation
"jeremyevans0 (Jeremy Evans)" <noreply@ruby-lang.org> wrote:
> @normalperson's patch: https://github.com/ruby/ruby/pull/5002,
> expanding the optimization to include nil/true/false/0-9.
> This is an across-the-board performance impro...
normalperson (Eric Wong)
04:38 PM Revision 199ba9c3 (git): update NEWS about last commits.
ko1 (Koichi Sasada)
04:33 PM Feature #17592 (Closed): Ractor should allowing reading shareable class instance variables
https://github.com/ruby/ruby/pull/5006
merged.
ko1 (Koichi Sasada)
04:33 PM Bug #18193 (Closed): Accessing global configuration from Ractors
https://github.com/ruby/ruby/pull/5006
merged.
ko1 (Koichi Sasada)
04:33 PM Revision 41f6ce9f (git): * 2021-10-23 [ci skip]
git[bot]
04:32 PM Revision df9fac5c (git): update doc/ractor.md about ivars
ko1 (Koichi Sasada)
04:32 PM Revision a7776077 (git): add vm_ivar_of_class_set
benchmark for a class's ivar setter ko1 (Koichi Sasada)
04:32 PM Revision acb23454 (git): allow to access ivars of classes/modules
if an ivar of a class/module refer to a shareable object, this ivar
can be read from non-main Ractors.
ko1 (Koichi Sasada)
02:56 PM Revision 6b9285e8 (git): 'uri/https' is needed
`URI.parse('https://a.b.c/')` needs 'uri/https'. ko1 (Koichi Sasada)
02:53 PM Revision ba4bf8a1 (git): Fix simple test on platforms where compaction is not supported
844588f9157b364244a7d34ee0fcc70ccc2a7dd9 made it so that trying to call
gc_verify_compaction_references on unsupported platform result in an
exception rather than a crash. Rescue the exception in a YJIT btest
that uses gc_verify_compacti...
alanwu (Alan Wu)
02:31 PM Feature #15504: Freeze all Range objects
@ko1 Do you know why only Range instances and not Range subclass instances were frozen? (https://bugs.ruby-lang.org/issues/15504#note-8)
This issue title is a bit confusing, also https://bugs.ruby-lang.org/issues/15504#note-9.
Probab...
Eregon (Benoit Daloze)
12:25 PM Bug #18263 (Third Party's Issue): "make install" crashed when Ruby3.0.2 clean install. (in japanese)
本日 gem update を行った後、gem コマンドが異常終了するようになってしまいました。
/usr/local/lib/ruby/gems/3.0.0/gems/psych-4.0.2/lib/psych.rb:455: [BUG] Segmentation fault at 0xffffffff9ade4120
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux]
OSは、C...
tksotn (TAKASHI OOTANI)
12:22 PM Feature #18262: Enumerator::Lazy#partition
+1
Since a lazy enumerator is produced for both #select and #reject, it would make sense for #partition as well.
Dan0042 (Daniel DeLorme)
12:08 PM Feature #18262 (Open): Enumerator::Lazy#partition
(Part of my set of proposals about making `.lazy` more useful/popular.)
Currently:
```ruby
file = File.open('very-large-file.txt')
lines_with_errors, lines_without_errors = file.lazy.partition { _1.start_with?('E:') }
lines_with_e...
zverok (Victor Shepelev)
10:49 AM Revision d09cb64a (git): [ruby/mutex_m] Make VERSION shareable
https://github.com/ruby/mutex_m/commit/a839e29d04 rm155 (Rohit Menon)
10:48 AM Revision 553f234a (git): [ruby/uri] URI#HTTP#origin and URI#HTTP#authority (https://github.com/ruby/uri/pull/30)
https://github.com/ruby/uri/commit/bf13946c32
Co-authored-by: Samuel Williams <samuel.williams@oriontransfer.co.nz>
chucke (Tiago Cardoso)
10:48 AM Revision c8ad024e (git): [ruby/delegate] gemspec: Drop unused executables directives
https://github.com/ruby/delegate/commit/81a3c32140 olleolleolle (Olle Jonsson)
09:00 AM Bug #18261 (Closed): String#prepend inconsistent documentation
mame (Yusuke Endoh)
09:00 AM Bug #18261: String#prepend inconsistent documentation
This is a duplicate of #18241 and already fixed in the development branch. Thanks anyway. mame (Yusuke Endoh)
08:45 AM Bug #18261 (Closed): String#prepend inconsistent documentation
I noticed documentation at https://docs.ruby-lang.org/en/3.0.0/String.html#method-i-prepend says:
```
Returns a new String containing the concatenation of all given other_strings and self:
```
but `String#prepend` modifies string i...
greggzst (Grzegorz Jakubiak)
08:14 AM Revision aee4940d (git): Reduce YJIT runs on macOS [ci skip]
MacOs concurrency on GitHub Actions is limited, and the
performance is relatively poor.
nobu (Nobuyoshi Nakada)
06:53 AM Revision 93691d07 (git): Import bigdecimal-3.1.0.dev
hsbt (Hiroshi SHIBATA)
06:06 AM Revision 22a7f7ec (git): Refinement#include and Refinement#prepend have been deprecated
nobu (Nobuyoshi Nakada)
05:43 AM Revision 598382f6 (git): debug.gem 1.3.1
ko1 (Koichi Sasada)
05:18 AM Feature #14332: Module.used_refinements to list refinement modules
Matz, can I add Module.used_refinements?
shugo (Shugo Maeda)
04:53 AM Revision 9f4f3bd1 (git): Refinement#include and Refinement#prepend have been deprecated
nobu (Nobuyoshi Nakada)
03:47 AM Revision 4446942f (git): Extract UNPACK_FETCH
nobu (Nobuyoshi Nakada)
03:41 AM Revision 6469038a (git): Fix TestRubyOptions#test_enable for -DMJIT_FORCE_ENABLE
--enable=all didn't work when cppflags=-DMJIT_FORCE_ENABLE was given. k0kubun (Takashi Kokubun)
12:28 AM Feature #17873: Update of default gems in Ruby 3.1
OK. I'll do. kou (Kouhei Sutou)

10/21/2021

11:06 PM Feature #11066 (Rejected): symbol.to_s performance - caching and returning a frozen string
jeremyevans0 (Jeremy Evans)
11:06 PM Feature #11346 (Closed): New #intern_str or similarly-named method of Symbol to return a cached, frozen string (like "string".freeze)
`Symbol#name` was added in Ruby 3.0 for this. jeremyevans0 (Jeremy Evans)
10:56 PM Feature #13715: [PATCH] avoid garbage from Symbol#to_s in interpolation
I've submitted a pull request for an updated version of @normalperson's patch: https://github.com/ruby/ruby/pull/5002, expanding the optimization to include nil/true/false/0-9. This is an across-the-board performance improvement, mostly... jeremyevans0 (Jeremy Evans)
10:47 PM Revision 844588f9 (git): Push compaction page alignment check down
It seems like `gc_verify_compaction_references` is not protected in case
alignment is wrong. This commit pushes the alignment check down to
`gc_start_internal` so that anyone trying to compact will check page
alignment
I think this met...
tenderlovemaking (Aaron Patterson)
10:26 PM Feature #8637 (Closed): I18n documentation
jeremyevans0 (Jeremy Evans)
10:23 PM Feature #8951 (Closed): Please add a hash-to-hash alternative of the map method to Hash
jeremyevans0 (Jeremy Evans)
08:48 PM Feature #4183 (Closed): [ext/openssl] Timestamp support
ruby-openssl 2.2.0 (included with Ruby 3.0) added OpenSSL::Timestamp, so this can be closed. jeremyevans0 (Jeremy Evans)
08:34 PM Bug #18260: YJIT uses insecure mmap protections
We can look into this. The downside is that YJIT does a lot of code patching, so this would presumably involve two system calls every time YJIT needs to generate code. Hopefully the performance impact will be relatively minimal. maximecb (Maxime Chevalier-Boisvert)
03:58 PM Bug #18260 (Closed): YJIT uses insecure mmap protections
YJIT uses `mmap` with `PROT_READ | PROT_WRITE | PROT_EXEC` protections, which reduces security because it makes code injection attacks much easier, as the attacker only needs to be able to write their shellcode to the mapped memory regio... jeremyevans0 (Jeremy Evans)
07:07 PM Revision bdfc23cb (git): YJIT: don't compile attr_accessor methods when tracing (#4998)
2d98593bf54a37397c6e4886ccc7e3654c2eaf85 made it so that
attr_accessor methods fire C method tracing events.
Previously, we weren't checking for whether we are tracing before
compiling, leading to missed events.
Since global invalidatio...
alanwu (Alan Wu)
06:33 PM Revision d0cad8ad (git): [rubygems/rubygems] Re-enable `default_ignores` option for standard
I am not sure why this flag was turned off (it wasn't explained in my commit message in 0365dc852767ae589376a7aad1fb129738e408b0 or in my PR in #4411).
Whatever the reason, without `default_ignores` turned on, most default CI configurat...
searls (Justin Searls)
04:49 PM Revision 32a8cb96 (git): Add link to YJIT blog post to NEWS.md
Requested by @nurse maximecb (Maxime Chevalier-Boisvert)
04:14 PM Bug #17007 (Closed): SystemStackError when using super inside Module included and lexically inside refinement
Refinement#include is now deprecated and will be removed in Ruby 3.2. jeremyevans0 (Jeremy Evans)
04:13 PM Bug #17379 (Closed): Refinement with modules redefinition bug
Refinement#include is now deprecated and will be removed in Ruby 3.2. jeremyevans0 (Jeremy Evans)
04:13 PM Bug #18021 (Closed): Mixins in Refinements: possibly multiple bugs, workarounds are awkward
Refinement#include is now deprecated and will be removed in Ruby 3.2. jeremyevans0 (Jeremy Evans)
03:28 PM Revision ad1f7f2a (git): * 2021-10-22 [ci skip]
git[bot]
03:26 PM Revision 119626da (git): Force disable yjit on OpenBSD
TestRubyOptions#test_enable was broken on OpenBSD after the yjit
merge. --yjit (and --enable-all, which enables --yjit) fails on
OpenBSD because yjit uses an insecure mmap call (both writable
and executable), in alloc_exec_mem, which Ope...
jeremyevans (Jeremy Evans)
02:14 PM Bug #18187 (Rejected): Float#clamp() returns ArgumentError (comparison of Float with 1 failed)
jeremyevans0 (Jeremy Evans)
08:11 AM Bug #18187: Float#clamp() returns ArgumentError (comparison of Float with 1 failed)
I vote for keeping NaN raises exceptions.
Matz.
matz (Yukihiro Matsumoto)
01:57 PM Bug #18257: rb_mRubyVMFrozenCore is broken by GC run
I think a condition of "RSTRING_PTR is returning NULL!!" was fixed this year, but can't remember now. nobu (Nobuyoshi Nakada)
01:54 PM Bug #18257: rb_mRubyVMFrozenCore is broken by GC run
vo.x (Vit Ondruch) wrote in #note-2:
> ~~~
> ...
The `flags` 73831 = 0x12067, that means `orig` is an `Array` object, which has two elements(0x00000001000728e8, 0x0000000100072870).
nobu (Nobuyoshi Nakada)
01:34 PM Bug #18255: ioctl zeroes the last buffer byte
nobu (Nobuyoshi Nakada) wrote in #note-3:
> Found the bug.
> ...
Here I am.
Apparently it doesn't.
I dug a bit deeper and I found that there are two issues that concur to this behavior:
* `ioctl_narg_len` isn't properly extracti...
vihai (Daniele Orlandi)
01:00 PM Feature #18083: Capture error in ensure block.
ioquatix (Samuel Williams) wrote in #note-24:
> Surprisingly this does work:
> ...
It is a pattern-matching.
nobu (Nobuyoshi Nakada)
11:17 AM Feature #18083: Capture error in ensure block.
Regarding
``` ruby
foo rescue $!
```
Maybe we can improve this:
``` ruby
foo rescue => error
```
I'm not sure it's worth the effort...
Surprisingly this does work:
``` ruby
foo rescue $! => error
```
ioquatix (Samuel Williams)
11:15 AM Feature #18083: Capture error in ensure block.
Proposal to RuboCop to introduce warning: https://github.com/rubocop/rubocop/issues/10204
I support deprecating `$!` and `$@`.
One way: for Ruby 3.x we can create deprecation warning, and remove it in Ruby 4.x.
ioquatix (Samuel Williams)
10:24 AM Feature #18083: Capture error in ensure block.
ko1 (Koichi Sasada) wrote in #note-20:
> Sorry, my proposal is introducing dynamic scope, not syntactical scope like:
Ah, I misunderstood.
Then I think deprecating `$!` is the right way, since that seems the only way to be able to...
Eregon (Benoit Daloze)
06:28 AM Feature #18083: Capture error in ensure block.
First, I am not going to change the syntax for the `ensure` clause. The `ensure` clause is to unwind-protect so it is not recommended to branch depending on exceptions.
I admit the current `$!` behavior is error-prone. But considering...
matz (Yukihiro Matsumoto)
06:13 AM Feature #18083: Capture error in ensure block.
Sorry, my proposal is introducing dynamic scope, not syntactical scope like:
```ruby
def foo
p $! #=> A
begin
# no raise
ensure
p $! #=> nil
end
end
begin
raise A
ensure
foo
end
```
We can implement `raise` like me...
ko1 (Koichi Sasada)
12:31 PM Feature #17873: Update of default gems in Ruby 3.1
I prepared versions for Ruby 3.1.0-preview1. But I keep the version numbers of the following libraries.
* RubyGems/Bundler: I coordinate the version numbering with @deivid
* Reline, Irb: @aycabta
* BIgDecimal: @mrkn
* Fiddle, CSV, Strin...
hsbt (Hiroshi SHIBATA)
12:19 PM Revision d74f1e16 (git): Added version of readline-ext
hsbt (Hiroshi SHIBATA)
12:17 PM Revision c5345979 (git): Bump up readline-ext version to 0.1.3
hsbt (Hiroshi SHIBATA)
12:15 PM Feature #18259: Support quarter spec %q in Time#strftime
When we introduce a new specifier for strftime, we are afraid that we accidentally introduce it as a different meaning from the de-facto standard.
Maybe you insist coreutil's date is an implementation near the de-facto, but I think the...
naruse (Yui NARUSE)
09:39 AM Feature #18259 (Open): Support quarter spec %q in Time#strftime
This syntax is used by coreutil's `date` program (since 8.26):
> ‘%q’
> ...
> quarter of year (‘1’…‘4’)
amcalvo (Adrián Medraño Calvo)
12:07 PM Revision 03fd6093 (git): Update the merged versions of default gems.
hsbt (Hiroshi SHIBATA)
12:05 PM Revision eac7a710 (git): [ruby/prettyprint] Bump up prettyprint version to 0.1.1
https://github.com/ruby/prettyprint/commit/0e8eee5f5f hsbt (Hiroshi SHIBATA)
12:04 PM Revision ba3c2593 (git): [ruby/pp] Bump up pp version to 0.2.1
https://github.com/ruby/pp/commit/06b839b9ca hsbt (Hiroshi SHIBATA)
12:03 PM Revision 9f398d02 (git): [ruby/securerandom] Bump up securerandom version to 0.1.1
https://github.com/ruby/securerandom/commit/5f9d3d1dfa hsbt (Hiroshi SHIBATA)
12:02 PM Revision aca0dcc5 (git): [ruby/rinda] Bump up rinda version to 0.1.1
https://github.com/ruby/rinda/commit/d394ba107e hsbt (Hiroshi SHIBATA)
12:01 PM Revision b8d49d0d (git): [ruby/optparse] Bump up optparse version to 0.2.0
https://github.com/ruby/optparse/commit/1226b670e6 hsbt (Hiroshi SHIBATA)
12:01 PM Revision cb4c98f9 (git): [ruby/net-http] Bump up net-http version to 0.2.0
https://github.com/ruby/net-http/commit/f3e65e2a31 hsbt (Hiroshi SHIBATA)
12:00 PM Revision cc2f7604 (git): [ruby/net-protocol] Bump up net-protocol version to 0.1.2
https://github.com/ruby/net-protocol/commit/088e52609a hsbt (Hiroshi SHIBATA)
12:00 PM Revision 8ef125c8 (git): [ruby/uri] Bump up uri version to 0.11.0
https://github.com/ruby/uri/commit/1619f713e6 hsbt (Hiroshi SHIBATA)
11:54 AM Revision 422b057d (git): [ruby/ostruct] Bump up ostruct version to 0.5.0
https://github.com/ruby/ostruct/commit/c535a406f8 hsbt (Hiroshi SHIBATA)
11:54 AM Revision 7529fe82 (git): [ruby/io-wait] Bump up io-wait version to 0.2.0
https://github.com/ruby/io-wait/commit/f6a1b10a59 hsbt (Hiroshi SHIBATA)
11:53 AM Revision 8eb8522f (git): [ruby/stringio] Bump up stringio version to 3.0.1
https://github.com/ruby/stringio/commit/f7c40aa339 hsbt (Hiroshi SHIBATA)
11:37 AM Misc #18174: DevelopersMeeting20211021Japan
We held the dev-meeting but didn't finish until the last topic. An extra meeting will be held at the next Monday. mame (Yusuke Endoh)
11:14 AM Revision 6b08aaf2 (git): [ruby/fileutils] Bump up fileutils version to 1.6.0
https://github.com/ruby/fileutils/commit/918d19e4f2 hsbt (Hiroshi SHIBATA)
09:43 AM Feature #18035: Introduce general model/semantic for immutability.
Re naming, I discussed with @ioquatix and I think this is consistent and makes sense:
```ruby
class MyClass
extend Immutable
end
MyClass.new.immutable? # true
MY_CONSTANT = Immutable [1, 2, [3]]
MY_CONSTANT.immutable? # tr...
Eregon (Benoit Daloze)
09:20 AM Feature #18035: Introduce general model/semantic for immutability.
Use cases:
* Actually have a way to express immutable/deeply frozen in Ruby. Right now there is no way, and `freeze` is only shallow.
* Immutability has many benefits, easier to reason about, no data races possible, clarifies a lot the b...
Eregon (Benoit Daloze)
09:12 AM Feature #18035: Introduce general model/semantic for immutability.
The above sounds good.
Note that `RB_FL_FREEZE | RB_FL_SHAREABLE` is not enough, it should be a new flag, I detailed in https://bugs.ruby-lang.org/issues/18035#note-24.
Re (2) I think `.deep_freeze` would be a good option too. `Immut...
Eregon (Benoit Daloze)
03:21 AM Feature #18035: Introduce general model/semantic for immutability.
After discussing it, we found some good ideas regarding immutability in Ruby.
Firstly, we need some definition for immutability. There appear to be two options.
(1) We can assume that `RB_FL_FREEZE | RB_FL_SHAREABLE` implies immutable ...
ioquatix (Samuel Williams)
09:41 AM Feature #17760: Where we should install a header file when `gem install --user`?
We have discussed this in today's developer meeting.
- As a tentative workaround, I'll fix the digest gem not to try to install `digest.h` to an unwritable directory so `gem install --user digest` succeeds.
- It is (technically) poss...
knu (Akinori MUSHA)
08:58 AM Feature #18258: Ractor.shareable? can be slow and mutates internal object flags.
I think for the semantic model it could be easier with the proposed semantics in this issue: only always-shareable objects are shareable without `Ractor.make_shareable`/`freeze` for leaf objects with no ivars/`deep_freeze/Immutable`.
Ri...
Eregon (Benoit Daloze)
08:58 AM Feature #18258: Ractor.shareable? can be slow and mutates internal object flags.
I feel from a predictability POV, it would definitely be advantageous to set `RB_FL_SHAREABLE` in every case it's known ahead of time to avoid unexpected overheads. Even if `Ractor.shareable?` is not public interface, it's still used int... ioquatix (Samuel Williams)
08:52 AM Feature #18258: Ractor.shareable? can be slow and mutates internal object flags.
Yeah that's an alternative design.
Currently `Ractor.shareable?` semantics are "is it already shareable as in conceptually or not?".
(And the flag is just a cache for the "yes" case)
And it's not "is it already shareable as marked w...
Eregon (Benoit Daloze)
03:19 AM Feature #18258 (Closed): Ractor.shareable? can be slow and mutates internal object flags.
On my computer, even with a relatively small object graph,`Ractor.shareable?` can be quite slow (around 1-2ms). The following example creates an object graph with ~40k objects as an example, and on my computer takes around 20ms to execut... ioquatix (Samuel Williams)
07:50 AM Feature #17369 (Closed): Introduce non-blocking `Process.wait`, `Kernel.system` and related methods.
nobu (Nobuyoshi Nakada)
07:49 AM Feature #17369: Introduce non-blocking `Process.wait`, `Kernel.system` and related methods.
Please file a new issue for fiber-local `$?`. nobu (Nobuyoshi Nakada)
07:36 AM Bug #17429 (Closed): Prohibit include/prepend in refinement modules
Applied in changeset commit:git|6606597109bdb535a150606323ce3d8f5750e1f6.
----------
Deprecate include/prepend in refinements and add Refinement#import_methods instead
Refinement#import_methods imports methods from modules.
Unlike Modu...
shugo (Shugo Maeda)
05:42 AM Bug #17429: Prohibit include/prepend in refinement modules
I agreed with `import_methods`, which is more descriptive and clear.
Matz.
matz (Yukihiro Matsumoto)
07:31 AM Revision 66065971 (git): Deprecate include/prepend in refinements and add Refinement#import_methods instead
Refinement#import_methods imports methods from modules.
Unlike Module#include, it copies methods and adds them into the refinement,
so the refinement is activated in the imported methods.
[Bug #17429] [ruby-core:101639]
shugo (Shugo Maeda)
07:17 AM Revision 7185c00f (git): freeze (make shareable) script_lines
ko1 (Koichi Sasada)
07:17 AM Revision c7550537 (git): `RubyVM.keep_script_lines`
`RubyVM.keep_script_lines` enables to keep script lines
for each ISeq and AST. This feature is for debugger/REPL
support.
```ruby
RubyVM.keep_script_lines = true
RubyVM::keep_script_lines = true
eval("def foo = nil\ndef bar = nil")
pp ...
ko1 (Koichi Sasada)
06:02 AM Feature #18239: Variable Width Allocation: Strings
I agree with merging it, but it's too close to the 3.1 release. So how about merging it, turned off by default, then turning it on after the release?
Matz.
matz (Yukihiro Matsumoto)
05:08 AM Bug #18170: Exception#inspect should not include newlines
I agree with the new behavior that wraps messages with newlines.
Matz.
matz (Yukihiro Matsumoto)
05:08 AM Revision 3b16d07e (git): Fix test_version again for RUBY_YJIT_ENABLE=1
k0kubun (Takashi Kokubun)
04:57 AM Revision 76f9bc7e (git): Reduce the amount of false positive notifications
While f6048e592c520e20ba498ba4d553f07f02213a61 tried to approach the
instability mentioned there, unfortunately the Travis arm32 environment
seems unstable by itself. I already saw 2 different failures in the last
4 builds:
https://app.t...
k0kubun (Takashi Kokubun)
04:49 AM Revision 58231687 (git): [ruby/psych] Bump up psych version to 4.0.2
https://github.com/ruby/psych/commit/69a713f860 hsbt (Hiroshi SHIBATA)
04:25 AM Feature #18229: Proposal to merge YJIT
I finished to setup maximecb's account as a committer. hsbt (Hiroshi SHIBATA)
04:07 AM Revision 4d4bdcf3 (git): Move the test file
nobu (Nobuyoshi Nakada)
04:07 AM Revision 58956dba (git): Fix for out-of-place build
nobu (Nobuyoshi Nakada)
04:07 AM Revision 18b65508 (git): Suppress warnings
nobu (Nobuyoshi Nakada)
03:52 AM Revision 66a64e6f (git): Fix tests with cppflags=-DYJIT_FORCE_ENABLE
https://github.com/ko1/build-ruby/commit/0dbd95c6250594b6ddadc3c4424b071704083187 k0kubun (Takashi Kokubun)
 

Also available in: Atom