Project

General

Profile

Activity

From 05/10/2020 to 05/16/2020

05/16/2020

06:21 PM Feature #16891: Restore Positional Argument to Keyword Conversion
Dan0042 (Daniel DeLorme) wrote in #note-1:
> IMHO there's one consideration that's more important than all others. The following code _must_ work in ruby 2.8/3.0
> ...
You are correct that behavior I proposed doesn't support this. How...
jeremyevans0 (Jeremy Evans)
08:37 AM Revision 2c3c6c96 (git): Defer initialization
Defer initialization of extension libraries, loading prelude files
and requiring files, and skip if dump options are given.
nobu (Nobuyoshi Nakada)
08:36 AM Revision 9e67a38f (git): Fallback to built-in UTF-8 for miniruby
Source code encoding is defaulted to UTF-8 now too. nobu (Nobuyoshi Nakada)
08:35 AM Revision 8c3a60df (git): leakchecker.rb: show test name
When multiple autoclose IO objects are leaked too. nobu (Nobuyoshi Nakada)
08:28 AM Feature #16781: alias :fold :reduce
shan (Shannon Skipper) wrote in #note-2:
> I was surprised to hear this, since I think of "reduce" as most popular.
https://en.wikipedia.org/wiki/Fold_(higher-order_function)
Article 'Reduce_(higher-order_function)' - just redirect ...
0x81000000 (/ /)
08:20 AM Misc #16775: DevelopersMeeting20200514Japan
We've hold a dev-meeting at 14th, but could go through only half topics. We'll hold an extra meeting at 26th.
Log: https://github.com/ruby/dev-meeting-log/blob/master/DevelopersMeeting20200514Japan.md
mame (Yusuke Endoh)
06:30 AM Feature #16894: Integer division for Ruby 3
The following is meant to be an objective assessment of the proposal, taking no stand on approval, or not.
The proposal is for inclusion of the "feature" in **Ruby 3** . By definition, Ruby 3 will be a major version, which will incorp...
jzakiya (Jabari Zakiya)
03:26 AM Feature #16894: Integer division for Ruby 3
Just FYI, I've made these patches for division recently.
https://github.com/ruby/ruby/compare/master...nobu:feature/fract-slash?expand=1
https://github.com/ruby/ruby/compare/master...nobu:feature/division?expand=1
nobu (Nobuyoshi Nakada)
01:43 AM Feature #16894: Integer division for Ruby 3
fwiw, array indexing code likely wouldn't need changed.
``` ruby
a = ["zero", "one", "two"]
a[1/2] # "zero"
a[1/2.0] # "zero"
```
Some code would break, but we have major versions to account for this. It seems like a smaller ...
ankane (Andrew Kane)
01:35 AM Feature #16897: General purpose memoizer in Ruby 3 with Ruby 2 performance
Yes I can get this to work with hacks like this:
```ruby
def memoize_26(method_name)
cache = {}
uncached = "#{method_name}_without_cache"
alias_method uncached, method_name
m = (define_method(method_name) do |*arguments|
f...
sam.saffron (Sam Saffron)
12:25 AM Feature #16897: General purpose memoizer in Ruby 3 with Ruby 2 performance
You should be able to have similar performance by using `ruby2_keywords` and keeping the method definition the same. Have you tried that?
Note that with such an approach, you would not be able to differentiate between providing keywo...
jeremyevans0 (Jeremy Evans)
12:14 AM Feature #16897 (Open): General purpose memoizer in Ruby 3 with Ruby 2 performance
```ruby
require 'benchmark/ips'
module Memoizer
def memoize_26(method_name)
cache = {}
uncached = "#{method_name}_without_cache"
alias_method uncached, method_name
define_method(method_name) do |*arguments|
foun...
sam.saffron (Sam Saffron)

05/15/2020

11:51 PM Misc #16895: Request for cooperation: Try your applications/libraries with master branch and debug options
Make first paragraph read a bit better. ioquatix (Samuel Williams)
11:47 PM Misc #16895: Request for cooperation: Try your applications/libraries with master branch and debug options
Updated from latest edits. ioquatix (Samuel Williams)
02:36 PM Misc #16895: Request for cooperation: Try your applications/libraries with master branch and debug options
Samuel and Eregon rewrote a description. Thank you! ko1 (Koichi Sasada)
09:13 AM Misc #16895 (Closed): Request for cooperation: Try your applications/libraries with master branch and debug options
## Summary
If you maintain a Ruby application or library, please consider testing with the Ruby `master` branch, including the *debug* build. This should be in addition to testing with all supported stable releases of Ruby.
To make...
ko1 (Koichi Sasada)
10:08 PM Feature #16894: Integer division for Ruby 3
IMHO this is completely unrealistic for compatibility, and very clearly not worth breaking all the code (even more so for floats which lose precision). Eregon (Benoit Daloze)
05:39 PM Feature #16894: Integer division for Ruby 3
> It'd be great if division in Ruby matched what we all learned in school.
In my time it was C++ or Java at school and in those language (like Ruby) if the two number are Integer, then the result is an Integer. 1 / 2 in those language...
NuriYuri (Youri Nouri)
03:34 PM Feature #16894: Integer division for Ruby 3
I was just pointing out that other languages recognized this issue and only fairly recently chose to make syntax changes to explicitly deal with it.
I think using ``//`` is probably the ``least worst`` choice because it's already being ...
jzakiya (Jabari Zakiya)
09:52 AM Feature #16894: Integer division for Ruby 3
Here's a good read on the thoughts and motivation behind Python changing it: https://www.python.org/dev/peps/pep-0238/ ankane (Andrew Kane)
09:22 AM Feature #16894: Integer division for Ruby 3
jzakiya (Jabari Zakiya) wrote in #note-7:
> Ruby already has ``a.div b`` for explicit integer division.
Thanks, I had forgotten about that. But while the remainder can be achieved by the infix operator `%`, it would be strange if there ...
sawa (Tsuyoshi Sawada)
08:43 AM Feature #16894: Integer division for Ruby 3
jzakiya (Jabari Zakiya) wrote in #note-7:
> Ruby already has ``a.div b`` for explicit integer division.
Also `a.quo b` for rational division, and `a.fdiv b` for float division.
nobu (Nobuyoshi Nakada)
06:38 AM Feature #16894: Integer division for Ruby 3
Ruby already has ``a.div b`` for explicit integer division.
Nim also uses ``a div b`` for integer division.
Crystal v0.31 switched to ``a // b``, so now ``9 // 2 = 4`` and ``9 / 2 = 4.5``.
Python, et al, also use ``//``.
jzakiya (Jabari Zakiya)
04:39 AM Feature #16894: Integer division for Ruby 3
Thanks for the responses!
Re 0.5 vs 1/2r: In my experience, developers use floats way more than rationals.
Re "is it worth the incompatibility?": I like to imagine it's not confusing new developers 20 years for now. If it's a chang...
ankane (Andrew Kane)
04:04 AM Feature #16894: Integer division for Ruby 3
What would you do when you want integer division? Have you thought of it? ~~`(a / b).round`~~ `(a / b).floor`is not a solution. That is like saying, "write `"a"[0, 0]` when you want an empty string." sawa (Tsuyoshi Sawada)
03:43 AM Feature #16894: Integer division for Ruby 3
> 1) Why 0.5 and not 1/2r
I'm for 1/2r.
naruse (Yui NARUSE)
03:42 AM Feature #16894: Integer division for Ruby 3
I would bet that a majority of Rubyists would agree that `1/2 == 0` is an unfortunate choice. Either `0.5` or `1/2r` would probably be a better solution.
Your proposal has at least two issues.
1) Why `0.5` and not `1/2r`
0) Much mor...
marcandre (Marc-Andre Lafortune)
03:29 AM Feature #16894: Integer division for Ruby 3
Sorry, for the edits, first issue! Changed normal to floating point. ankane (Andrew Kane)
03:20 AM Feature #16894 (Assigned): Integer division for Ruby 3
Hi Ruby team,
It'd be great if division in Ruby matched what we all learned in school.
``` ruby
1 / 2 == 0.5
```
New developers wouldn't immediately be confused when they try to do division and experienced developers could sto...
ankane (Andrew Kane)
09:14 PM Revision cc525d76 (git): [ci skip] Enhanced rdoc for String.new (#3067)
* Per @nobu review
* Enhanced rdoc for String.new
* Respond to review
burdettelamar (Burdette Lamar)
09:12 PM Revision 24739c62 (git): [ci skip] Rdoc enhancements for Array (#3063)
* Per @nobu review
* Rdoc enhancements for Array
* Responses to review
burdettelamar (Burdette Lamar)
09:12 PM Revision a3cd0152 (git): * 2020-05-16 [ci skip]
git[bot]
09:11 PM Revision d4698079 (git): [CI skip] Enhance rdoc intro for Hash (#3056)
* Per @nobu review
* [CI skip] Enhance rdoc intro for Hash
* Tweak call-seq for Hash.new
* Tweak call-seq for Hash.new
* Minor corrections
* Respond to review
* Respond to review
* Respond to review
* Respond to review
* Fix cha...
burdettelamar (Burdette Lamar)
08:26 PM Feature #16791: Shortcut for Process::Status.exitstatus
Dan0042 (Daniel DeLorme) wrote in #note-6:
> `exec` only works as a tail-call at the end of the script. Most of the time it's not applicable:
> ...
``` ruby
exec 'cmd1 && cmd2 && cmd3'
```
0x81000000 (/ /)
07:38 PM Bug #16896 (Closed): MakeMakefile methods should be private
Right now they are public, and since mkmf.rb does `include MakeMakefile` it defines a lot of public methods on all objects.
```
$ ruby -e 'a=1.public_methods; require "mkmf"; b=1.public_methods; puts (b-a).sort'
append_cflags
appen...
Eregon (Benoit Daloze)
03:06 PM Feature #16786: Light-weight scheduler for improved concurrency.
Hi, I am a Ruby user that would probably vote for
``` ruby
Fiber do
end
```
only if I see the poll back then.
The result should be taken as a grain of salt.
I second @ko1 on the point that the people who voted for the choice j...
midnight (Sarun R)
03:10 AM Feature #16786: Light-weight scheduler for improved concurrency.
@ioquatix I was well represented by Martin-sensei (@duerst).
The fiber created by `Fiber() do ...end` does context-switch on I/O operations. The traditional (or original) fibers don't.
So naming the function `Fiber` may indicate that *...
matz (Yukihiro Matsumoto)
02:41 PM Bug #16853: calling bla(hash, **kw) with a string-based hash passes the strings into **kw (worked < 2.7)
@sylvain.joyeux
Hi! I read [your comment in the discuss RubyOnRails](https://discuss.rubyonrails.org/t/new-2-7-3-0-keyword-argument-pain-point/74980/13). I'm sorry for bothering you about this change. Let me explain a bit.
Thi...
mame (Yusuke Endoh)
11:20 AM Feature #16891: Restore Positional Argument to Keyword Conversion
First of all, I'm really sorry for bothering many people about this change. And I'd like to really thank you @jeremyevans0 for the great work to this issue. Honestly, I'm sorry to see this change reverted because I still believe this c... mame (Yusuke Endoh)
04:03 AM Feature #16891: Restore Positional Argument to Keyword Conversion
Dan0042 (Daniel DeLorme) wrote in #note-1:
> Also I believe there's a fifth aspect that deserves consideration for reverting:
> ...
Totally agree. I probably missed that conversation, but I am very curious as to what the use-cases were...
marcandre (Marc-Andre Lafortune)
03:45 AM Feature #16891: Restore Positional Argument to Keyword Conversion
Dan0042 (Daniel DeLorme) wrote in #note-1:
> ## Non-Symbol Keyword Argument
> ...
The core of that problem actually has nothing to do with allowing non-symbol keyword argument. That developer ad hocly used string vs. symbol distinction i...
sawa (Tsuyoshi Sawada)
01:23 AM Feature #16891: Restore Positional Argument to Keyword Conversion
IMHO there's one consideration that's more important than all others. The following code _must_ work in ruby 2.8/3.0
```ruby
def foo(h={}, **kw)
[h, kw]
end
foo({x:1}) #=> [{x:1}, {}]
foo(x:1) #=> [{}, {x:1}]
```
This is ...
Dan0042 (Daniel DeLorme)
08:45 AM Revision a9b2014d (git): Fix a typo [ci skip]
znz (Kazuhiro NISHIYAMA)
07:35 AM Bug #16854 (Closed): Using (...) when the method name is a keyword generates error
Applied in changeset commit:git|71c166e11e761dcaaa943f9b94da38f86ada1bdb.
----------
Fixed argument forwarding in reserved word method [Bug #16854]
nobu (Nobuyoshi Nakada)
06:00 AM Bug #16854: Using (...) when the method name is a keyword generates error
It results in a syntax error, right?
https://github.com/ruby/ruby/pull/3112
nobu (Nobuyoshi Nakada)
05:59 AM Revision 71c166e1 (git): Fixed argument forwarding in reserved word method [Bug #16854]
nobu (Nobuyoshi Nakada)
05:54 AM Revision e89b8750 (git): fix for multi-run test.
TestAutoload#test_source_location can't run multiple test-run so
that use assert_separately().
repro command:
make yes-test-all TESTS='--repeat-count=50 ruby/test_autoload -n test_source_location'
ko1 (Koichi Sasada)
02:12 AM Misc #16893 (Closed): Create Rosetta Code page on website
I've been doing some [Rosetta Code](http://rosettacode.org/wiki/Rosetta_Code) tasks recently, and thought it would be a good idea to have a page/link to a list of all the Ruby done tasks on the website. These are good teaching aides, esp... jzakiya (Jabari Zakiya)
01:26 AM Bug #16892 (Closed): Reconsider the test directory name for scheduler
Applied in changeset commit:git|6fa8455ebbf457e5d8752295a8d6380146636c0c.
----------
Move `test/scheduler` -> `test/fiber` [Bug #16892][ruby-core:98366].
Anonymous
12:22 AM Bug #16892: Reconsider the test directory name for scheduler
I am happy to move it to `test/fiber`. ioquatix (Samuel Williams)
12:14 AM Bug #16892 (Closed): Reconsider the test directory name for scheduler
`test/scheduler` is broke the convention of test directory. We use only `class` or `module` name excepts `ruby` and `-ext-` for test/foo directory.
Should we use `test/fiber` or other?
hsbt (Hiroshi SHIBATA)
01:26 AM Revision 6fa8455e (git): Move `test/scheduler` -> `test/fiber` [Bug #16892][ruby-core:98366].
Samuel Williams
12:08 AM Misc #16890 (Rejected): [Ruby Keywords and Ruby 3.0 release] Feedback to matz and the ruby core team
You should comment it to https://discuss.rubyonrails.org/t/new-2-7-3-0-keyword-argument-pain-point/
We are going to propose the solution like [this](https://bugs.ruby-lang.org/issues/16891) after hearing pain points.
hsbt (Hiroshi SHIBATA)

05/14/2020

09:00 PM Feature #16851: Ruby hashing algorithm could be improved using Tabulation Hashing
@byroot
> I'd suggest running the hash related benchmarks included in ruby's repo: https://github.com/ruby/ruby/tree/master/benchmark
For most of the benchmarks, this changes doesn't make much of a different because they are either too...
ana06 (Ana Maria Martinez Gomez)
08:30 PM Feature #16891 (Rejected): Restore Positional Argument to Keyword Conversion
Based on feedback from Rails-core, Matz has decided to postpone full separation of keyword and positional arguments (see https://discuss.rubyonrails.org/t/new-2-7-3-0-keyword-argument-pain-point/74980). I think most Ruby-core developers... jeremyevans0 (Jeremy Evans)
07:28 PM Misc #16890: [Ruby Keywords and Ruby 3.0 release] Feedback to matz and the ruby core team
The discussion at https://discuss.rubyonrails.org/t/new-2-7-3-0-keyword-argument-pain-point/74980/2
is already quite long, and I do not intend to add to the discussion there, largely because I think
it may be difficult for matz and th...
shevegen (Robert A. Heiler)
07:20 PM Misc #16890 (Rejected): [Ruby Keywords and Ruby 3.0 release] Feedback to matz and the ruby core team
As some folks may already have read/heard, matz is asking for feedback.
He specifically asked this in regards to the rails devs, and the rails ecosystem
but this may be relevant to all ruby users.
You can read his ideas here:
h...
shevegen (Robert A. Heiler)
04:23 PM Bug #16787: [patch] allow Dir.home to work for non-login procs when $HOME not set
Attaching version "v7-rebased-2020-05-14" of the patch. This version corresponds to the **rebase-only** changes pushed to my [ads/b.r-l.o-issue-16787](https://github.com/salewski/ruby/tree/ads/b.r-l.o-issue-16787) branch for [PR 3034](ht... salewski (Alan Salewski)
04:22 PM Revision 39365b46 (git): Merge pull request #3047 from mame/suppress-backtrace
Add `--suppress-backtrace=num` option to limit the backtrace length mame (Yusuke Endoh)
04:22 PM Revision 531e4a35 (git): * 2020-05-15 [ci skip]
git[bot]
04:21 PM Revision 7f86ad61 (git): test/scheduler: suppress warnings
https://rubyci.s3.amazonaws.com/debian/ruby-master/log/20200514T123004Z.log.html.gz
```
/home/chkbuild/chkbuild/tmp/build/20200514T123004Z/ruby/test/scheduler/scheduler.rb:29: warning: assigned but unused variable - fiber
/home/chkbuild...
mame (Yusuke Endoh)
03:06 PM Feature #16254: MRI internal: Define built-in classes in Ruby with `__intrinsic__` syntax
An even better example, `dir.rb` could be used in TruffleRuby & other implementations easily:
https://github.com/ruby/ruby/blob/d7d0d01401a8082e514eb2cb3cec5410e7acba7d/dir.rb#L14-L25
There is already quite a bit of logic there.
All...
Eregon (Benoit Daloze)
02:57 PM Feature #16254: MRI internal: Define built-in classes in Ruby with `__intrinsic__` syntax
As an example, https://github.com/ruby/ruby/blob/d7d0d01401a8082e514eb2cb3cec5410e7acba7d/trace_point.rb could be used as-is in TruffleRuby if using the `Primitive.name` syntax.
It might not be a lot, but it's a start and it's already n...
Eregon (Benoit Daloze)
02:42 PM Feature #16254: MRI internal: Define built-in classes in Ruby with `__intrinsic__` syntax
Some examples of `Primitive.name` used in TruffleRuby:
https://github.com/oracle/truffleruby/blob/af97b03a55b757688a62455cd56672c53cd56d0d/lib/truffle/weakref.rb#L36
https://github.com/oracle/truffleruby/blob/af97b03a55b757688a62455cd56...
Eregon (Benoit Daloze)
01:44 PM Bug #16889: TracePoint.enable { ... } also activates the TracePoint for other threads, even outside the block
Maybe `enable(&block)` should behave like `enable(target: block); disable`? Eregon (Benoit Daloze)
01:37 PM Bug #16889 (Closed): TracePoint.enable { ... } also activates the TracePoint for other threads, even outside the block
```ruby
threads = []
inspects = []
trace = TracePoint.new(:line) do |tp|
threads << Thread.current
inspects << tp.inspect
end
done = false
thread = Thread.new do
Thread.pass until done
end
trace.enable do
line_eve...
Eregon (Benoit Daloze)
12:33 PM Feature #16827: C API for writing custom random number generator that can be used as Random objects
IMHO it's not nice to replace a nice Ruby-level API by a C API one.
Is there a benchmark of how much is it slower with `rb_funcallv_public`?
Also, will it still work when passing a custom object understanding `rand`?
If so, there ar...
Eregon (Benoit Daloze)
08:08 AM Feature #16827: C API for writing custom random number generator that can be used as Random objects
Sounds OK. Go ahead.
Matz.
matz (Yukihiro Matsumoto)
12:27 PM Misc #16803: Discussion: those internal macros reside in public API headers
ko1 (Koichi Sasada) wrote in #note-12:
> Please respect current convention `rb_`/`RB_` are called in ruby interpreter (such as `rb_str_new()`) and `ruby_`/`RUBY_` can be called from outside of ruby interpreter (such as `ruby_xmalloc()`)...
Eregon (Benoit Daloze)
10:58 AM Revision d7d0d014 (git): Endless method definition including `rescue` modifier
nobu (Nobuyoshi Nakada)
10:57 AM Revision 634eeb43 (git): Removed trailing spaces [ci skip]
nobu (Nobuyoshi Nakada)
10:51 AM Misc #16805: Coroutine's license is unclear
Are you happy adding the following to `LEGAL`:
```
coroutine::
Where specified, these files are licensed under the {MIT License}[rdoc-label:label-MIT+License].
```
ioquatix (Samuel Williams)
10:50 AM Bug #16814: Segmentation fault in GC while running test/ruby/test_fiber.rb on s390x
@mame I have merged the light weight concurrency patch, and it included some changes to these tests to make them less flaky, by putting it in separate test file. In my experience it seems much more reliable now. Just FYI. ioquatix (Samuel Williams)
10:44 AM Feature #16786: Light-weight scheduler for improved concurrency.
Using latest master:
```ruby
class Scheduler
def fiber(&block)
fiber = Fiber.new(blocking: false, &block)

fiber.resume

return fiber
end
end
Thread.current.scheduler = Scheduler.new
f1 = Fiber d...
ioquatix (Samuel Williams)
09:25 AM Feature #16786: Light-weight scheduler for improved concurrency.
ioquatix (Samuel Williams) wrote in #note-34:
> Thanks Matz.
> ...
I can't speak for Matz, but my guess is that he meant "not the original type of fiber", i.e. not the same as you'd get e.g. with `Fiber.new`.
duerst (Martin Dürst)
08:50 AM Feature #16786: Light-weight scheduler for improved concurrency.
Thanks Matz.
> since the fiber created by the method is not the original fiber at all.
Can you clarify "not the original fiber at all"? It's the same way `Integer(...)` creates instance of `class Integer`.
ioquatix (Samuel Williams)
07:22 AM Feature #16786: Light-weight scheduler for improved concurrency.
Accepted for experimentation.
We still have some concerns, for example, mixture with blocking and non-blocking fibers. @mame will describe the concern.
In addition, I don't like the method name `Fiber`, since the fiber created by the...
matz (Yukihiro Matsumoto)
07:16 AM Feature #16786: Light-weight scheduler for improved concurrency.
> I don't think we should refer this kind of result because the voted people does not know concerns.
I think you are underestimating the collective knowledge of the community. That poll had almost 300 responses. I've also been working o...
ioquatix (Samuel Williams)
10:10 AM Revision 0e3b0fcd (git): Thread scheduler for light weight concurrency.
Samuel Williams
09:32 AM Feature #16822 (Rejected): Array slicing: nils and edge cases
mrkn (Kenta Murata)
04:52 AM Feature #16822: Array slicing: nils and edge cases
I don't think the benefit of changing outweighs the pain of incompatibility. Rejected.
Matz.
matz (Yukihiro Matsumoto)
08:49 AM Feature #16847: Cache instruction sequences by default
Julia uses `~/.julia/compiled/vX.Y` directory to store precompiled cache files. mrkn (Kenta Murata)
02:58 AM Feature #16847: Cache instruction sequences by default
I think python changed that default mostly because it can be annoying to see all .py files give rise to .pyc
files in the very same working directory.
(I know way too little to comment on the content of the issue at hand here, so thi...
shevegen (Robert A. Heiler)
08:42 AM Feature #16832: Use #name rather than #inspect to build "uninitialized constant" error messages
Sounds OK. Let's see how it works.
Matz.
matz (Yukihiro Matsumoto)
08:41 AM Feature #8661: Add option to print backtrace in reverse order (stack frames first and error last)
LGTM (including `--backtrace-limit`).
Matz.
matz (Yukihiro Matsumoto)
08:19 AM Revision 336119df (git): extlibs.rb: fixed Downloader.cache_file call and return value
`cache_dir` is an optinal argument but not a keyword argument, and
the return value is a `Pathname`.
nobu (Nobuyoshi Nakada)
08:15 AM Revision 0a52015d (git): Constified code_loc_gen
nobu (Nobuyoshi Nakada)
04:51 AM Feature #16815: Implement Fiber#backtrace
Accepted.
Matz.
matz (Yukihiro Matsumoto)
04:36 AM Misc #16778 (Feedback): Should we stop vendoring default gems code?
We still wait for the PoC of this issue. hsbt (Hiroshi SHIBATA)
04:29 AM Feature #15921: R-assign (rightward-assignment) operator
hi.
I have summarized the expected behavior and the actual behavior with right assignment.
see: https://gist.github.com/osyo-manga/ef1db68fcb62a6fce7dace0f655c0b17
I think there is another issue of priority, apart from the fact th...
osyo (manga osyo)
03:27 AM Revision 4a620aff (git): Restore class variable setting for tests
aycabta (aycabta .)
03:27 AM Revision 03a492fe (git): Initialize Reline callbacks when test suit starts
aycabta (aycabta .)
03:27 AM Revision 68a7c8ad (git): Reline callbacks can take nil
aycabta (aycabta .)
03:27 AM Revision ca1f6b3e (git): Delete inner text buffer after tests
aycabta (aycabta .)
03:27 AM Revision 978e691c (git): Restore Readline.completion_case_fold in test
aycabta (aycabta .)
12:35 AM Feature #16855: Add a tracepoint for warnings
please write a specification of your proposal. there is only a code, test and motivation. ko1 (Koichi Sasada)
12:11 AM Revision 35bbbc75 (git): clean-up .bundle directory in bundled_app
hsbt (Hiroshi SHIBATA)
12:11 AM Revision d4acf254 (git): Use the gemspec in build_dir directly
hsbt (Hiroshi SHIBATA)

05/13/2020

09:17 PM Feature #16254: MRI internal: Define built-in classes in Ruby with `__intrinsic__` syntax
ko1 (Koichi Sasada) wrote in #note-10:
> * (1) how to manage the code?
> ...
Yes, that's fine, at least for now.
Maybe later we can share such code in a shared repository, but one step at a time, and probably not needed (other Rubies ...
Eregon (Benoit Daloze)
08:18 PM Bug #16853: calling bla(hash, **kw) with a string-based hash passes the strings into **kw (worked < 2.7)
> This change was deliberate and mentioned in the 2.7.0 release announcement:
I missed this specific implication of that change ... Sorry for the noise. Thanks.
sylvain.joyeux (Sylvain Joyeux)
03:39 PM Bug #16853 (Rejected): calling bla(hash, **kw) with a string-based hash passes the strings into **kw (worked < 2.7)
This change was deliberate and mentioned in the 2.7.0 release announcement:
```
Non-symbols are allowed as keyword argument keys if the method accepts arbitrary keywords. [Feature #14183]
def foo(**kw); p kw; end; foo("str" => 1) ...
jeremyevans0 (Jeremy Evans)
12:31 PM Bug #16853: calling bla(hash, **kw) with a string-based hash passes the strings into **kw (worked < 2.7)
Hmm. I am confused about the example though.
Isn't
bla "some" => "string"
actually

bla( { "some" => "string" } )
?
shevegen (Robert A. Heiler)
12:00 PM Bug #16853 (Rejected): calling bla(hash, **kw) with a string-based hash passes the strings into **kw (worked < 2.7)
The following code
~~~
def bla(hash = {}, **kw)
puts "H: #{hash}"
puts "K: #{kw}"
end
bla "some" => "string"
~~~
**silently** outputs the following (no warnings about deprecation of keyword parameters-from-hash)
...
sylvain.joyeux (Sylvain Joyeux)
07:41 PM Feature #16855: Add a tracepoint for warnings
Eregon (Benoit Daloze) wrote in #note-3:
> Maybe another angle for this would be to make the `instance variable @foobar not initialized` shown even with the default `$VERBOSE` being `false` (i.e. `rb_warn` instead of `rb_warning`).
> ....
jeremyevans0 (Jeremy Evans)
07:04 PM Feature #16855: Add a tracepoint for warnings
Maybe another angle for this would be to make the `instance variable @foobar not initialized` shown even with the default `$VERBOSE` being `false` (i.e. `rb_warn` instead of `rb_warning`).
Then people would likely be a lot more eager to...
Eregon (Benoit Daloze)
06:58 PM Feature #16855 (Rejected): Add a tracepoint for warnings
Eregon (Benoit Daloze) wrote in #note-1:
> I'm afraid I don't see the point of a TracePoint for this if warnings can already be hooked via `Warning.prepend SomeModuleWithWarn`.
> ...
Yep, I agree. I'm closing this :)
tenderlovemaking (Aaron Patterson)
06:57 PM Feature #16855: Add a tracepoint for warnings
I'm afraid I don't see the point of a TracePoint for this if warnings can already be hooked via `Warning.prepend SomeModuleWithWarn`.
Invoking the TracePoint regardless of $VERBOSE would be a large performance cost, and would prevent ...
Eregon (Benoit Daloze)
05:40 PM Feature #16855 (Rejected): Add a tracepoint for warnings
I would like to add a tracepoint for warnings. I want to do this so that DidYouMean can suggest fixes for instance variables. I noticed did you mean [has experimental support](https://github.com/ruby/did_you_mean/blob/master/lib/did_yo... tenderlovemaking (Aaron Patterson)
06:44 PM Feature #16786: Light-weight scheduler for improved concurrency.
Really looking forward to this API, it's _very_ promising.
What exactly are the implications of enter_blocking_region/exit_blocking_region? Does it mean the scheduler should not resume fibers even if IO is ready? Since the scheduler is ...
Dan0042 (Daniel DeLorme)
07:00 AM Feature #16786: Light-weight scheduler for improved concurrency.
note that I missed:
> If any mutex is acquired by a fiber, then a scheduler is not called; the same behaviour as blocking Fiber.
in description, so I agree there is no issue if Mutex is used correctly.
checking such situation (io ops ...
ko1 (Koichi Sasada)
06:58 AM Feature #16786: Light-weight scheduler for improved concurrency.
ioquatix (Samuel Williams) wrote in #note-26:
> > non-blocking fiber creation API
> ...
I don't think we should refer this kind of result because the voted people does not know concerns.
> > Scheduler class
> ...
It can be, Maybe we sho...
ko1 (Koichi Sasada)
06:25 AM Feature #16786: Light-weight scheduler for improved concurrency.
Add clarification about introducing new hooks. ioquatix (Samuel Williams)
04:47 AM Feature #16786: Light-weight scheduler for improved concurrency.
Specify the root fiber is also blocking. ioquatix (Samuel Williams)
04:46 AM Feature #16786: Light-weight scheduler for improved concurrency.
> non-blocking fiber creation API
It was voted by community, strongly in favour of `Fiber do ... end`. If you think your suggestion is better, we should confirm with community.
> ...
We can introduce `Fiber::Scheduler` however I don't ...
ioquatix (Samuel Williams)
06:36 PM Bug #16856 (Closed): Structs accepting keyword arguments issue a warning with Ruby 2.7
I believe this was fixed in #16801, which is already marked as required for backport to 2.7. With the master branch, there is no warning for the code. jeremyevans0 (Jeremy Evans)
06:11 PM Bug #16856 (Closed): Structs accepting keyword arguments issue a warning with Ruby 2.7
This code is issuing a warning with Ruby 2.7, but should not:
``` ruby
class NotFine < Struct.new(:x)
def initialize(x, arg:)
end
end
class Fine
def initialize(x, arg:)
end
end
NotFine.new(1, arg: 1) # This is cau...
iGEL (Johannes Barre)
05:32 PM Bug #16854: Using (...) when the method name is a keyword generates error
Interesting find and explanation. shevegen (Robert A. Heiler)
04:42 PM Bug #16854 (Closed): Using (...) when the method name is a keyword generates error
Although I wouldn't generally recommend it, naming a method `true` is allowed. However, in combination with the new argument forwarding keyword `...`, a syntax error is generated which does not occur with other argument choices.
This ...
jamesnakagawa (James Nakagawa)
05:22 PM Bug #16850: Object#hash doesn't behave as documented
Thanks for the insight into bypass vs deoptimization.
Of course if you override #hash and #eql? to return true for previously false cases then it wouldn't work, but anyway I don't see much use or reason for doing this on Integer or St...
Dan0042 (Daniel DeLorme)
01:35 AM Bug #16850: Object#hash doesn't behave as documented
Dan0042 (Daniel DeLorme) wrote in #note-4:
> Would it be feasible to raise some sort of error when trying to redefine Integer#hash ?
> ...
It's probably feasible, but I don't think it is a good idea. You can do it in pure Ruby if you ...
jeremyevans0 (Jeremy Evans)
01:14 AM Bug #16850 (Closed): Object#hash doesn't behave as documented
Applied in changeset commit:git|de29a022acb93691dfc50db852cb04f763565072.
----------
Document that #hash is not called for certain core classes [ci skip]
Fixes [Bug #16850]
jeremyevans (Jeremy Evans)
01:11 AM Bug #16850: Object#hash doesn't behave as documented
Would it be feasible to raise some sort of error when trying to redefine Integer#hash ?
Not just for this case, but I feel there were other cases where ruby bypasses the method call to use the built-in implementation directly. Can't rec...
Dan0042 (Daniel DeLorme)
12:46 AM Bug #16850: Object#hash doesn't behave as documented
+1 The updates LGTM.
Matz.
matz (Yukihiro Matsumoto)
03:51 PM Revision 65c5a395 (git): * 2020-05-14 [ci skip]
git[bot]
03:44 PM Revision 8bd27c54 (git): ext/json/parser/prereq.mk: remove type-limit warning if char is unsigned
Ragel generates a code `0 <= (*p)` where `*p` is char.
As char is unsigned by default on arm and RISC-V, it is warned by gcc:
```
compiling parser.c
parser.c: In function ‘JSON_parse_string’:
parser.c:1566:2: warning: comparison is alwa...
mame (Yusuke Endoh)
03:14 PM Bug #6087: How should inherited methods deal with return values of their own subclass?
> * A method that seems to return a new array that is directly related to the receiver, should return an instance of the receiver's class.
> ...
So this is the old thinking?
> I used to think methods should honor subclasses, but I ch...
Dan0042 (Daniel DeLorme)
03:06 PM Feature #15771: Add `String#split` option to set `split_type string` with a single space separator
That optimization is nice to have, but I think the point of this ticket is that it's currently not possible to have an arbitrary string separator.
```ruby
str = "aaabababbbabbabaabaaabbbabab"
sep = "x" #or anything except " "
str.g...
Dan0042 (Daniel DeLorme)
08:49 AM Feature #16847: Cache instruction sequences by default
Also I forgot to mention. Python 3 no longer store this cache alongside source files, but in a subdirectory.
Python 2 use to store `path/foo.py` cache as `path/foo.pyc`, Python 3 now stores it as `path/__pycache__/foo.pyc`.
byroot (Jean Boussier)
08:47 AM Feature #16847: Cache instruction sequences by default
> How cache is effective and how large cache storage is needed depend an application.
Of course there is some variance, but from my testing the improvement is relatively constant. The cache is approximately 1.5 times as large as the s...
byroot (Jean Boussier)
03:48 AM Feature #16847 (Feedback): Cache instruction sequences by default
How cache is effective and how large cache storage is needed depend an application.
But Ruby don't have enough example of such applications other than Rails.
naruse (Yui NARUSE)
06:47 AM Revision 87662134 (git): [ruby/openssl] Ruby/OpenSSL 2.2.0
https://github.com/ruby/openssl/commit/41587f69e1 rhenium (Kazuki Yamaguchi)
06:47 AM Revision cc26638c (git): [ruby/openssl] ssl: temporarily remove SSLContext#add_certificate_chain_file
Let's revert the changes for now, as it cannot be included in the 2.2.0
release.
My comment on #257:
> A blocker is OpenSSL::SSL::SSLContext#add_certificate_chain_file. It
> ...
This effectively reverts the following commits:
- dacd0...
rhenium (Kazuki Yamaguchi)
06:47 AM Revision 6f008c9d (git): [ruby/openssl] pkey: add PKey#inspect and #oid
Implement OpenSSL::PKey::PKey#oid as a wrapper around EVP_PKEY_id().
This allows user code to check the type of a PKey object.
EVP_PKEY can have a pkey type for which we do not provide a dedicated
subclass. In other words, an EVP_PKEY t...
rhenium (Kazuki Yamaguchi)
06:47 AM Revision a7145c3d (git): [ruby/openssl] Fix signing example to not use Digest instance
https://github.com/ruby/openssl/commit/033fb4fbe4 bdewater (Bart de Water)
06:47 AM Revision c85789f9 (git): [ruby/openssl] Look up cipher by name instead of constant
https://github.com/ruby/openssl/commit/b08ae7e73d bdewater (Bart de Water)
06:47 AM Revision b44cc9f0 (git): [ruby/openssl] Remove 'mapping between Digest class and sn/ln'
This is not present in the referenced files anymore, and not useful to most users
https://github.com/ruby/openssl/commit/eae30d2b96
bdewater (Bart de Water)
06:47 AM Revision 0b2c70ea (git): [ruby/openssl] Look up digest by name instead of constant
https://github.com/ruby/openssl/commit/b28fb2f05c bdewater (Bart de Water)
06:47 AM Revision 3f8665fe (git): [ruby/openssl] Add Marshal support to PKey objects
https://github.com/ruby/openssl/commit/c4374ff041 bdewater (Bart de Water)
05:50 AM Revision fcd25762 (git): Stop always inlining not-optimized get/setivar
As we have the optimization in _mjit_compile_ivar.erb, we don't use
these functions if we successfully optimize ivars. Therefore it's
consuming code size where we can't optimize it well.
To decrease code size, we'd better avoid inlining...
k0kubun (Takashi Kokubun)
04:49 AM Revision 61d451d6 (git): ext/bigdecimal/bigdecimal.c, ext/date/date_core.c: undef NDEBUG
`#define NDEBUG` produces "macro redefined" warnings when it is already
defined via cppflags
mame (Yusuke Endoh)
04:45 AM Revision 3bca1b6a (git): ext/openssl/ossl.h: Remove a variable that is used only in assert
It produces "unused variable" warnings in NDEBUG mode mame (Yusuke Endoh)
03:33 AM Misc #16805: Coroutine's license is unclear
Sure. ioquatix (Samuel Williams)
01:57 AM Revision b68dab86 (git): ext/fiddle/extconf.rb: Fix the condition of libffi <= 3.1
ver is [3, 1, 0] which is not less then or equal to [3, 1] mame (Yusuke Endoh)
01:48 AM Feature #16851: Ruby hashing algorithm could be improved using Tabulation Hashing
Interesting!! @ana06 Do you need any help?
Matz.
matz (Yukihiro Matsumoto)
01:01 AM Revision de29a022 (git): Document that #hash is not called for certain core classes [ci skip]
Fixes [Bug #16850] jeremyevans (Jeremy Evans)

05/12/2020

11:42 PM Revision 9cfa811b (git): Do not try ffi_closure_alloc if libffi is <= 3.1
Maybe due to e1855100e46040e73630b378974c17764e0cccee, CentOS, RHEL, and
Fedora CIs have started failing with SEGV. Try to avoid
ffi_closure_alloc on those environments.
https://rubyci.org/logs/rubyci.s3.amazonaws.com/centos8/ruby-mast...
mame (Yusuke Endoh)
10:54 PM Revision 777b5b4f (git): Bump version to use RSpec 3.8+
hsbt (Hiroshi SHIBATA)
10:54 PM Revision cecd3433 (git): Skip the examples for bundle exec with gem installation
hsbt (Hiroshi SHIBATA)
10:54 PM Revision f61dbb92 (git): Marked the some examples that are not working with the ruby repository
hsbt (Hiroshi SHIBATA)
10:54 PM Revision aecbb785 (git): Use relative path in ruby core repository
hsbt (Hiroshi SHIBATA)
10:54 PM Revision 143872bf (git): Unmask the some of examples with ruby_repo label
hsbt (Hiroshi SHIBATA)
10:54 PM Revision ca892e69 (git): Skip the example to use rake command
hsbt (Hiroshi SHIBATA)
10:54 PM Revision ea517cfe (git): skip lockfile_spec.rb:33 because it cleanup the .bundle repo
hsbt (Hiroshi SHIBATA)
10:54 PM Revision fcb5a9ee (git): Resolved the file path of gemspec for ruby core repository
hsbt (Hiroshi SHIBATA)
10:54 PM Revision cf961908 (git): Bump version to use Rake 13 in bundler examples
hsbt (Hiroshi SHIBATA)
10:54 PM Revision 5b634afe (git): Added test_gems.rb for setup dependencies
hsbt (Hiroshi SHIBATA)
10:54 PM Revision a7c1791c (git): Partly reverted bundler.gemspec for ruby core testing
hsbt (Hiroshi SHIBATA)
10:54 PM Revision 0e60b59d (git): Update the bundler version with master branch
hsbt (Hiroshi SHIBATA)
10:21 PM Feature #16792: Make Mutex held per Fiber instead of per Thread
I think it seems difficult to implement it.
If an interpreter manages everything, it is easy (at least I can image how to implement it).
(1) API
I'm not sure we can implement Mutex scheduling with the hooks introduced at #10.
If there ...
ko1 (Koichi Sasada)
10:00 PM Feature #16786: Light-weight scheduler for improved concurrency.
Sorry for late response.
First of all, I agree to merge it and try before next release (please wait Matz's comment for merging).
There are several considerations.
# non-blocking fiber creation API
For me, the name `Fiber()` is ...
ko1 (Koichi Sasada)
08:52 PM Bug #16852 (Closed): Refining Enumerable fails with ruby 2.7
When using [rspec](https://github.com/rspec/rspec-core) and ruby 2.7 I am unable to refine `Enumerable`. I have created an [issue in rspec](https://github.com/rspec/rspec-core/issues/2727) but I'm wondering if there's an underlying ruby ... parker (Parker Finch)
08:41 PM Misc #16803: Discussion: those internal macros reside in public API headers
Please respect current convention `rb_`/`RB_` are called in ruby interpreter (such as `rb_str_new()`) and `ruby_`/`RUBY_` can be called from outside of ruby interpreter (such as `ruby_xmalloc()`). `RUBY3_...` are already renamed, but I w... ko1 (Koichi Sasada)
07:18 PM Feature #16847: Cache instruction sequences by default
> This kind of technique can cause something strange behavior
Can you tell me what kind of behavior you are thinking of? I don't think that was ever a problem with bootsnap (it has a few corner cases, but none that I can think of for ...
byroot (Jean Boussier)
06:39 PM Feature #16847: Cache instruction sequences by default
isn't it enough to use libraries such as bootsnap for it?
This kind of technique can cause something strange behavior and users may know what they are doing. Using a library is good opt-in method, IMO.
ko1 (Koichi Sasada)
09:55 AM Feature #16847: Cache instruction sequences by default
> I mean, that can also be achieved when you compile your ruby script into an shared object ahead-of-time.
Sure, but then it's no longer "by-default", as in all users get it for free without having to configure anything nor changing ...
byroot (Jean Boussier)
08:39 AM Feature #16847: Cache instruction sequences by default
byroot (Jean Boussier) wrote in #note-4:
> > isn't that also true for instruction sequence caches?
> ...
I mean, that can also be achieved when you compile your ruby script into an shared object ahead-of-time. Basically there must be...
shyouhei (Shyouhei Urabe)
08:12 AM Feature #16847: Cache instruction sequences by default
> isn't that also true for instruction sequence caches?
No, caching instruction sequence can be done without any functional change for users.
> ...
That depend of the storage mechanism. But assuming you have 1 cache file for each ...
byroot (Jean Boussier)
07:54 AM Feature #16847: Cache instruction sequences by default
byroot (Jean Boussier) wrote in #note-2:
> @shyouhei that would be a radical change in how Ruby is deployed.
Agreed, however isn't that also true for instruction sequence caches?
> ...
This point is valid, and makes me wonder how ...
shyouhei (Shyouhei Urabe)
07:38 AM Feature #16847: Cache instruction sequences by default
@shyouhei that would be a radical change in how Ruby is deployed.
Also boot performance is particularly important during development, where AOT doesn't make sense.
byroot (Jean Boussier)
07:21 AM Feature #16847: Cache instruction sequences by default
Why not compile into native binary then? I have recently learnt that Emacs is moving from its .elc bitecodes to .eln native shared object https://arxiv.org/abs/2004.02504
Because we already have JIT it seems now possible for us to AOT.
shyouhei (Shyouhei Urabe)
06:46 PM Feature #16848: Allow callables in $LOAD_PATH
> How to implement the gem_path_resolver?
By simply walking down the directories in the loadpath.
In the context of Bundler/Rubygems it could directly be done post install, in the case of Bootsnap it's done on the fly on cache mis...
byroot (Jean Boussier)
06:30 PM Feature #16848: Allow callables in $LOAD_PATH
Just curious:
How to implement the `gem_path_resolver`? `gem_path_resolver` should know the set of existing files in the gem install directories.
What happens if a new file is created in a gem directory after installation? I understand...
ko1 (Koichi Sasada)
06:23 PM Feature #16848: Allow callables in $LOAD_PATH
@mame yes, your example fits my proposal.
But note that I'm also open to other solutions, as long as it allows to resolve paths of the `$LOAD_PATH`.
byroot (Jean Boussier)
02:15 PM Feature #16848: Allow callables in $LOAD_PATH
As far as my understanding, this is a self-contained simple example to demonstrate the proposal (to make dev-meeting discussion easy)
```ruby
gem_path_resolver = -> feature do
case feature
when "bar" then "/gems/bar/bar.rb"
...
mame (Yusuke Endoh)
10:06 AM Feature #16848: Allow callables in $LOAD_PATH
@nobu indeed. I initially only focused on solving the performance problem of having a large `$LOAD_PATH`, but maybe it's the occasion to also allow for alternative storage mechanisms.
In such case it can be interesting to look at how ...
byroot (Jean Boussier)
02:52 AM Feature #16848: Allow callables in $LOAD_PATH
byroot (Jean Boussier) wrote:
> ### Proposal
> ...
This seems similar to my proposal in several years ago, to allow loading from archived libraries.
It was not callable but calling a particular method, I don't remember accurately now ...
nobu (Nobuyoshi Nakada)
06:26 PM Feature #16832: Use #name rather than #inspect to build "uninitialized constant" error messages
> But it doesn't seem right for other NameError
@eregon Absolutely, but my ticket is only about `uninitialized constant`. If my description or my PR made you think otherwise, it's a misunderstanding and / or a bug in my PR.
byroot (Jean Boussier)
04:04 PM Feature #16832: Use #name rather than #inspect to build "uninitialized constant" error messages
Right, I agree it makes sense for missing constants NameError's, since the user expect a "constant path" including the missing constant.
But it doesn't seem right for other NameError such as:
```
$ ruby -e foobar
Traceback (most re...
Eregon (Benoit Daloze)
03:33 PM Feature #16832: Use #name rather than #inspect to build "uninitialized constant" error messages
+1 for using #name and falling back to #inspect
Rails is correct in extending inspect to return more useful human-readable information, and a NameError should tell you about the problem name (including namespace), not about extra info...
Dan0042 (Daniel DeLorme)
09:53 AM Feature #16832: Use #name rather than #inspect to build "uninitialized constant" error messages
> (also #name can be nil, and calling #name on arbitrary objects could easily be worse than #inspect).
So the issue title is no longer relevant. Since then I dug more into this issue, and I think the behavior should be similar to `rb_...
byroot (Jean Boussier)
09:39 AM Feature #16832: Use #name rather than #inspect to build "uninitialized constant" error messages
Nice work on that PR :)
I think whoever overrides `#inspect` should make sure it's easy to identify which object it is.
In other words, I don't think we should special-case here for Module & Class (also #name can be `nil`, and callin...
Eregon (Benoit Daloze)
07:01 AM Feature #16832: Use #name rather than #inspect to build "uninitialized constant" error messages
https://github.com/ruby/ruby/pull/3090 is simply a weird limitation I discovered while studying that behavior.
I still think we should try to display the actual class path.
byroot (Jean Boussier)
03:29 AM Feature #16832: Use #name rather than #inspect to build "uninitialized constant" error messages
https://github.com/ruby/ruby/pull/3090 was merged. Can we close this ticket? (using `#name` instead of `#inspect`). ko1 (Koichi Sasada)
06:19 PM Feature #16851: Ruby hashing algorithm could be improved using Tabulation Hashing
This seems interesting. I'd suggest running the hash related benchmarks included in ruby's repo: https://github.com/ruby/ruby/tree/master/benchmark
byroot (Jean Boussier)
05:55 PM Feature #16851 (Feedback): Ruby hashing algorithm could be improved using Tabulation Hashing
I have implemented Linear Probing and Simple tabulation in Ruby: https://github.com/Ana06/ruby/compare/master...Ana06:tabulation
I tested it using the following code:
https://github.com/Ana06/ruby-tabulation/blob/master/benchmark_tab...
ana06 (Ana Maria Martinez Gomez)
06:17 PM Bug #16850: Object#hash doesn't behave as documented
That looks good to me :+1: I may add String as well (such as Integer and String). ana06 (Ana Maria Martinez Gomez)
05:48 PM Bug #16850: Object#hash doesn't behave as documented
I consider this an implementation detail. It never makes sense to override the hash calculation for the cases where Ruby uses the built-in calculation instead of calling #hash, so I don't think Ruby should change behavior to increase con... jeremyevans0 (Jeremy Evans)
05:25 PM Bug #16850 (Closed): Object#hash doesn't behave as documented
From [Ruby 2.7 Object class documentation](https://ruby-doc.org/core-2.7.0/Object.html#method-i-hash):
>The hash value is used along with eql? by the Hash class to determine if two objects reference the same hash key.
From this I exp...
ana06 (Ana Maria Martinez Gomez)
04:24 PM Revision 68224651 (git): * 2020-05-13 [ci skip]
git[bot]
04:17 PM Revision e1855100 (git): ext/fiddle/extconf.rb: check if ffi_closure_alloc is available
to define HAVE_FFI_CLOSURE_ALLOC.
The macro is used in closure.c, so have_func check is needed.
If pkg-config is not installed, extconf.rb fails to detect the version
of libffi, and does not add "-DUSE_FFI_CLOSURE_ALLOC=1" even when sys...
mame (Yusuke Endoh)
02:19 PM Revision 1c4eb706 (git): Build auxiliary program files early
nobu (Nobuyoshi Nakada)
02:07 PM Revision 2383cdab (git): builtin_binary.inc: should be updated even if no changes [ci skip]
As this rule does not use a separate timestamp file, the target
will be rebuilt every time once it is outdated.
nobu (Nobuyoshi Nakada)
01:59 PM Revision 02cb643d (git): Added String#split benchmark for empty regexp
| |compare-ruby|built-ruby|
|:--------------|-----------:|---------:|
|re_chars-1 | 169.230k| 973.855k|
| | -| 5.75x|
|re_chars-10 | 25.536k| 107.598k|
| | ...
nobu (Nobuyoshi Nakada)
10:58 AM Revision 693f7ab3 (git): Optimize String#split
Optimized `String#split` with `/ /` (single space regexp) as
simple string splitting. [ruby-core:98272]
| |compare-ruby|built-ruby|
|:--------------|-----------:|---------:|
|re_space-1 | 432.786k| 1.539M|
| ...
nobu (Nobuyoshi Nakada)
08:48 AM Revision 2e7d8863 (git): test/lib/jit_support.rb: Let JIT tests skip on centos8
It has the same issue as RHEL 8. k0kubun said he will fix later mame (Yusuke Endoh)
08:15 AM Revision b16acf8b (git): .github: use actions/checkout@v2 again
shyouhei (Shyouhei Urabe)
07:35 AM Feature #15771: Add `String#split` option to set `split_type string` with a single space separator
znz (Kazuhiro NISHIYAMA) wrote in #note-8:
> How about optimization `split(/ /)` (when regexp is single space only) instead of changing `split(" ")`?
Sounds nice. https://github.com/ruby/ruby/pull/3103
nobu (Nobuyoshi Nakada)
03:21 AM Feature #15771: Add `String#split` option to set `split_type string` with a single space separator
How about optimization `split(/ /)` (when regexp is single space only) instead of changing `split(" ")`? znz (Kazuhiro NISHIYAMA)
12:23 AM Feature #15771: Add `String#split` option to set `split_type string` with a single space separator
My guess is that, perhaps, even now, it is very rare to use a single space string argument with the expectation to match single or multiple spaces. In such use cases, normally, `split` is used without an argument, or with a regex argumen... sawa (Tsuyoshi Sawada)
07:34 AM Feature #16837: Can we make Ruby 3.0 as fast as Ruby 2.7 with the new assertions?
naruse (Yui NARUSE) wrote in #note-12:
> NDEBUG is not acceptable.
NDEBUG is not my invention. Please file a bug report to upstream (ISO/IEC JTC1/SC22/WG14).
I'm not against defining it by default, though.
shyouhei (Shyouhei Urabe)
07:27 AM Revision ee518cf0 (git): Revert "Sync did_you_mean"
This reverts commit 946dadd3f479198e87873a863d15c7660a8e2b56,
which broke `TestGemRequire` and others.
nobu (Nobuyoshi Nakada)
06:57 AM Revision 317fdd6d (git): fiddle: share the same config tools
nobu (Nobuyoshi Nakada)
06:57 AM Revision 3150b97d (git): extlibs.rb: links in extracted directory
Allow to create symbolic links (if available) to share same or
updated files.
nobu (Nobuyoshi Nakada)
06:57 AM Revision d1748484 (git): extlibs.rb: added variable references
Reduce duplicate parts such as package name and version numbers. nobu (Nobuyoshi Nakada)
04:58 AM Misc #16747 (Assigned): Repository reorganization request
`mainsrc` is WIP name for migrating this issue. nobu said we can rename `src` from `mainsrc` after that. hsbt (Hiroshi SHIBATA)
04:25 AM Revision 1d2fc912 (git): Add missing `,`
znz (Kazuhiro NISHIYAMA)
03:56 AM Feature #9758 (Closed): Allow setting SSLContext#extra_chain_cert in Net::HTTP
Applied in changeset commit:git|31af0dafba6d3769d2a39617c0dddedb97883712.
----------
Expose SSLContext#extra_chain_cert in Net::HTTP
Currently, Net::HTTP can only send a single SSL certificate when it
establishes a connection. Some use...
Anonymous
03:55 AM Revision 31af0daf (git): Expose SSLContext#extra_chain_cert in Net::HTTP
Currently, Net::HTTP can only send a single SSL certificate when it
establishes a connection. Some use-cases involve sending an entire
certificate chain to the destination; for this, SSLContext supports
assigning to #extra_chain_cert=.
...
Stephen Touset
03:25 AM Revision 946dadd3 (git): Sync did_you_mean
yuki24 (Yuki Nishijima)
02:46 AM Revision 7cc55f4b (git): Thread#backtrace may return nil [ci skip]
znz (Kazuhiro NISHIYAMA)
02:30 AM Feature #16815: Implement Fiber#backtrace
+1 ko1 (Koichi Sasada)
01:23 AM Revision 237bee9d (git): Removed extra stringization
Argument of RUBY_ASSERT_FAIL is already stringized message, so no
more extra stringization should be applied.
nobu (Nobuyoshi Nakada)
01:02 AM Revision 3fcf7f02 (git): win32/mkexports.rb: do not export internal symbols
Functions using `rb_thread_t` and `rb_execution_context_t` are
internal use only.
nobu (Nobuyoshi Nakada)

05/11/2020

06:42 PM Feature #16848: Allow callables in $LOAD_PATH
Also alternatively the callable could be responsible for actually loading the code rather than return an absolute path.
This would allow for more flexibility in implementing alternative code loaders, e.g. read the source from an archi...
byroot (Jean Boussier)
06:27 PM Feature #16848: Allow callables in $LOAD_PATH
Right.
I always thought RubyGems should be smarter and when requiring `foo/bar.rb` it could look for a gem named `foo` first, and not look in all gems if the file exist.
This feature could help achieve some of that, instead of going ...
Eregon (Benoit Daloze)
02:50 PM Feature #16848: Allow callables in $LOAD_PATH
@eregon only if you did actually require it. My explanation is probably a bit confusing.
```ruby
$LOAD_PATH = [
"stdlib/"
]
Bootsnap.setup
# Bootsnap see `delegate.rb` in the stdlib, so cache as `{"delegate.rb" => "/stdlib/delegate.rb...
byroot (Jean Boussier)
01:58 PM Feature #16848: Allow callables in $LOAD_PATH
There is a now a spec for that as we replicated that caching in TruffleRuby:
https://github.com/oracle/truffleruby/commit/30024ed8c8f0900cf03bdc7fdf3fa7b4776837ac
Eregon (Benoit Daloze)
01:56 PM Feature #16848: Allow callables in $LOAD_PATH
> The other, more important difficulty, is that you also have to invalidate the cache whenever you add or delete a file in one of the $LOAD_PATH members, otherwise if you shadow or unshadow another file that is farther in the $LOAD_PATH,... Eregon (Benoit Daloze)
11:26 AM Feature #16848: Allow callables in $LOAD_PATH
I just realized I made a mistake in my benchmark, I also both instruction sequence and load path caching enabled.
With instruction sequence disabled, the speedup is only 17% for Redmine:
```
$ RAILS_ENV=production time bin/rails r...
byroot (Jean Boussier)
11:21 AM Feature #16848 (Feedback): Allow callables in $LOAD_PATH
Make it easier to implement `$LOAD_PATH` caching, and speed up application boot time.
I benchmarked it on Redmine's master using bootsnap with only the optimization enabled:
```ruby
if ENV['CACHE_LOAD_PATH']
require 'bootsnap'
...
byroot (Jean Boussier)
05:53 PM Revision 7a7854d8 (git): Some I/O in test doesn't have "position"
Just returns column 1 for ambiguous width because this I/O is not tty and can't
seek.
aycabta (aycabta .)
05:53 PM Revision d39be242 (git): Also use pipe for input in test
aycabta (aycabta .)
05:14 PM Revision 42abad24 (git): numeric.c: optimize `float ** 2` case by fastpath
It would be a relatively frequent case. It is still slower than
`float * float` because `*` has a dedicated VM instruction (opt_mult),
though.
mame (Yusuke Endoh)
04:46 PM Feature #16837: Can we make Ruby 3.0 as fast as Ruby 2.7 with the new assertions?
I want Ruby 2.8/3.0 is faster than 2.7 by default.
NDEBUG is not acceptable.
I think Microsoft's _DEBUG approach is more reasonable.
naruse (Yui NARUSE)
04:15 PM Revision 95ac2355 (git): * 2020-05-12 [ci skip]
git[bot]
04:15 PM Revision 1258a0fb (git): Remove the 65 size limit for name_err_mesg_to_str
This limit was introduced on Nov 20 1996
in 554b989ba1623b9f6a0b76f00824c83a23fbcbc1
Apparently to protect from a buffer overflow:
* eval.c (f_missing): オブジェクトの文字列表現が長すぎる時バッファ
を書き潰していた
However I tested that path with very ...
byroot (Jean Boussier)
04:07 PM Bug #16849 (Closed): ObjectSpace.trace_object_allocations_stop fails if called before ObjectSpace.trace_object_allocations_start
The error is easy to reproduce:
e.g. on Ruby 2.3:
```
$ ruby -robjspace -e 'ObjectSpace.trace_object_allocations_stop'
-e:1:in `trace_object_allocations_stop': wrong argument type false (expected tracepoint) (TypeError)
from -e...
byroot (Jean Boussier)
11:42 AM Misc #16775: DevelopersMeeting20200514Japan
* [Feature #16847] Cache instruction sequences by default (byroot)
* This make code loading about 30% faster.
* All it's needed is to agree on where and how to store the cache.
* [Feature #16848] Allow callables in `$LOAD_PATH` (b...
byroot (Jean Boussier)
12:55 AM Misc #16775: DevelopersMeeting20200514Japan
* [Misc #16803] Discussion: those internal macros reside in public API headers (ko1)
* confirm the discussion.
ko1 (Koichi Sasada)
10:16 AM Feature #16847 (Closed): Cache instruction sequences by default
Instruction sequence caching is available since Ruby 2.3, and on recent rubies it speeds up code loading by about 30%.
I just benchmarked it on Redmine's master, using bootsnap with only that optimization enabled:
```ruby
if ENV['...
byroot (Jean Boussier)
07:47 AM Revision 15e97734 (git): more on NULL versus functions
Function pointers are not void*. See also
115fec062ccf7c6d72c8d5f64b7a5d84c9fb2dd8
ce4ea956d24eab5089a143bba38126f2b11b55b6
8427fca49bd85205f5a8766292dd893f003c0e48
shyouhei (Shyouhei Urabe)
07:47 AM Revision 4fbb3441 (git): fix sunpro pragma
SunPro's #pragma does_not_return(...) needs an argument. That does not
fit the attribute syntax we employ.
shyouhei (Shyouhei Urabe)
05:56 AM Revision 233c2018 (git): drop varargs.h support
This header file is simply out of date (for decades since at least
1989). It's the 21st century. Just stop using it.
shyouhei (Shyouhei Urabe)
02:07 AM Revision 534277fa (git): rb_str_new: hoist RB_CONSTANT_P out of function
https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html says:
> GCC never returns 1 when you call the inline function with a string
> ...
Because rb_str_new and familiy take string constants, it was a bad idea
for them to contain RB_CONS...
shyouhei (Shyouhei Urabe)
12:24 AM Revision 9e41a752 (git): sed -i 's|ruby/impl|ruby/internal|'
To fix build failures. shyouhei (Shyouhei Urabe)
12:24 AM Revision b85fd1d6 (git): mv include/ruby/{impl,internal}
Devs do not love "impl". shyouhei (Shyouhei Urabe)
12:24 AM Revision 0d88fe3a (git): spaces in comments [ci skip]
shyouhei (Shyouhei Urabe)
12:24 AM Revision 122f96c3 (git): sed -i s/ruby3/rbimpl/g
shyouhei (Shyouhei Urabe)
12:24 AM Revision 97672f66 (git): sed -i s/RUBY3/RBIMPL/g
Devs do not love "3". The only exception is RUBY3_KEYWORDS in parse.y,
which seems unrelated to our interests.
shyouhei (Shyouhei Urabe)
12:24 AM Revision d7f4d732 (git): sed -i s|ruby/3|ruby/impl|g
This shall fix compile errors. shyouhei (Shyouhei Urabe)
12:24 AM Revision dca234a5 (git): mv include/ruby/{3,impl}
Devs do not love "3". shyouhei (Shyouhei Urabe)

05/10/2020

11:55 PM Bug #16844 (Third Party's Issue): I want to upgrade ruby for metasploit environment. Now Ruby version 2.5.0 .I want to upgrade 2.7.1 ..But i can’t. SO here is some bug ..It wants for rake 12.3.2 ..and i install it successfully..It has not been resolved yet...
The Ruby interpreter of metasploit framework is embedded package. So, you can ask your issue to the tracker of metasploit at first.
https://github.com/rapid7/metasploit-framework
hsbt (Hiroshi SHIBATA)
10:49 PM Bug #16844: I want to upgrade ruby for metasploit environment. Now Ruby version 2.5.0 .I want to upgrade 2.7.1 ..But i can’t. SO here is some bug ..It wants for rake 12.3.2 ..and i install it successfully..It has not been resolved yet...
How did you install ruby there? One-click installer? If so then I am not sure
why you attempt to install rvm. I don't think that is necessary; back when I
used ruby on windows sometimes, the one-click installer worked.
Either way, this ...
shevegen (Robert A. Heiler)
06:20 PM Bug #16845 (Closed): Building Ruby with system Ruby 1.8.7 results in make failing due to syntax error in ./tool/lib/vcs.rb
Applied in changeset commit:git|c89c3801b985916b6fb6726aab966d28371dfaaa.
----------
BASERUBY have to be 1.9 or later at least [Bug #16845]
Many tools under tool directory haven't worked with ruby 1.8.
nobu (Nobuyoshi Nakada)
06:20 PM Bug #16845: Building Ruby with system Ruby 1.8.7 results in make failing due to syntax error in ./tool/lib/vcs.rb
OK, since e1f62d7f0e3, if `HAVE_BASERUBY=yes` then `file2lastrev.rb` must succeed. nobu (Nobuyoshi Nakada)
03:58 PM Bug #16845: Building Ruby with system Ruby 1.8.7 results in make failing due to syntax error in ./tool/lib/vcs.rb
Maybe I am missing something, but I get the same result with `-p`. Log is attached.
The `tar` manpage suggests `-p` is about preserving permissions, not timestamps.
And it looks like the timestamps are preserved even if I don't u...
ErikSwan (Erik Swan)
03:09 PM Bug #16845: Building Ruby with system Ruby 1.8.7 results in make failing due to syntax error in ./tool/lib/vcs.rb
The timestamps in tarball are aligned to avoid to remake files which need BASERUBY.
But extracting **without** `-p` option disables it.
```
04:48 PM [eswan@rndssh1(RnD):/tmp/eswan]$ tar -xJvf ruby-2.7.1.tar.xz
```
nobu (Nobuyoshi Nakada)
07:56 AM Bug #16845: Building Ruby with system Ruby 1.8.7 results in make failing due to syntax error in ./tool/lib/vcs.rb
It sounds to me that the root cause of this problem is released tarball having BASERUBY dependency. shyouhei (Shyouhei Urabe)
12:33 AM Bug #16845: Building Ruby with system Ruby 1.8.7 results in make failing due to syntax error in ./tool/lib/vcs.rb
I have updated the title and description to correct where the syntax error is located. It is located in `./tool/lib/vcs.rb`, which is ***called*** by `./tool/file2lastrev.rb`.
From looking at the related issue that Shibata-san linked, i...
ErikSwan (Erik Swan)
06:19 PM Revision c89c3801 (git): BASERUBY have to be 1.9 or later at least [Bug #16845]
Many tools under tool directory haven't worked with ruby 1.8. nobu (Nobuyoshi Nakada)
05:41 PM Revision 4a24cd8e (git): Suppress probably impossible maybe-uninitialized warning
nobu (Nobuyoshi Nakada)
03:40 PM Revision 5d430c1b (git): Added more NORETURN declarations
nobu (Nobuyoshi Nakada)
03:40 PM Revision a1e1fdca (git): Fallback MAKE to make
nobu (Nobuyoshi Nakada)
03:22 PM Bug #16846 (Closed): Commit - win32ole: separate global variable declarations and definitions - backport?
The below commit fixes building win32ole using MinGW gcc 10.1.0. New Ruby releases (patch/teeny) are normally done with a current MSYS2 installation, so backporting this would be helpful for 2.5, 2.6, & 2.7. Not sure about the status o... MSP-Greg (Greg L)
03:19 PM Revision 27efe3f7 (git): * 2020-05-11 [ci skip]
git[bot]
03:18 PM Revision 3fa4fd47 (git): Pass MAKE value to configure for non-default name case
GNU make does not export it by default. nobu (Nobuyoshi Nakada)
02:17 PM Feature #16786: Light-weight scheduler for improved concurrency.
I recently did a deep dive into this approach and how it would fit into the Ruby ecosystem as part of my work on TruffleRuby.
I think what is being proposed here looks like a very practical idea for improving concurrency on Ruby, for ...
chrisseaton (Chris Seaton)
12:37 PM Revision f1699314 (git): win32ole: separate global variable declarations and definitions
https://gcc.gnu.org/gcc-10/changes.html#c
> * GCC now defaults to `-fno-common`. As a result, global
> ...
> silently merged during linking.
nobu (Nobuyoshi Nakada)
09:40 AM Revision dd830fab (git): Fixed a typo
nobu (Nobuyoshi Nakada)
08:28 AM Revision 42e8de8d (git): Fix for cross_compiling
`RubyVM.each_builtin` is not defined when cross compiling. nobu (Nobuyoshi Nakada)
07:59 AM Revision 967ae627 (git): Run rb_syswait on exec failure
not only when !w but also when w == WAITPID_LOCK_ONLY.
See also: f7c0cc36920a4ed14a3ab1ca6cfdf18ceff1e5d5 and a2264342063260d660b99872eaf5080f6ab08e81.
We thought this change was an oversight in the latter commit.
Without this change, t...
k0kubun (Takashi Kokubun)
07:51 AM Revision 50a6d292 (git): nmake doesn't understand $<
Fix MSVC build error. shyouhei (Shyouhei Urabe)
07:51 AM Revision 4fca592e (git): delete mk_builtin_binary.rb
To generate what is necessary via generic_erb.rb instead. shyouhei (Shyouhei Urabe)
07:51 AM Revision 191cfcc4 (git): delete mk_call_iseq_optimized.rb
To generate what is necessary via generic_erb.rb instead. shyouhei (Shyouhei Urabe)
05:36 AM Revision a6f85899 (git): Workaround a zombie process created by Open3
with MJIT worker enabled
The problem:
```
$ ruby -ropen3 --jit -e 'Open3.capture2e("cmake") rescue nil;binding.irb'
irb(main)[01:0]> Process.waitall
=> [[10656, #<Process::Status: pid 10656 exit 127>]]
$ ruby -ropen3 -e 'Open3.capture...
k0kubun (Takashi Kokubun)
05:19 AM Revision 18f22490 (git): * 2020-05-10 [ci skip]
git[bot]
05:18 AM Revision 3bf0d2bb (git): test/rubygems/test_gem_ext_cmake_builder.rb: make sure cmake available
just for a case. In addition, this change suppresses unused variable
warning.
mame (Yusuke Endoh)
01:53 AM Bug #16831: Running `Pathname#glob` with `File::FNM_DOTMATCH` option loses `.` and `..`
Thank you for your explanation. With your hint and reading [the implementation code](https://github.com/ruby/ruby/blob/761528e8aa7c54ec92c90335fe26a584b992918b/ext/pathname/pathname.c#L1131-L1161) solved my question.
Dan0042 (Daniel D...
jnchito (Junichi Ito)
12:34 AM Bug #16843: A bug with floating point multiplication
Just as an add-on:
Go has similar effects to those reported here for Ruby, see e.g. https://stackoverflow.com/questions/33640943/golang-float-arithmetic.
@FedorKK, if you can find out *why* e.g. `fmt.Println(0.29 * 100 == 29.0)` prints...
duerst (Martin Dürst)
12:27 AM Bug #16843 (Rejected): A bug with floating point multiplication
hsbt (Hiroshi SHIBATA)
12:22 AM Misc #16839: Unicode.org - downloads & tests
Additional information: Unicode is still recovering from a VM crash last month. Mirroring of the Unicode Character Database on github might eventually happen, but not direct hosting. duerst (Martin Dürst)
 

Also available in: Atom