Project

General

Profile

Activity

From 08/11/2020 to 08/17/2020

08/17/2020

09:18 PM Feature #16984 (Closed): Remove write barrier exemption for T_ICLASS
Applied in changeset commit:git|264e4cd04fbcdcb739a1ff9a84e19afe66005cb2.
----------
Remove write barrier exemption for T_ICLASS
Before this commit, iclasses were "shady", or not protected by write
barriers. Because of that, the GC nee...
alanwu (Alan Wu)
09:17 PM Revision 264e4cd0 (git): Remove write barrier exemption for T_ICLASS
Before this commit, iclasses were "shady", or not protected by write
barriers. Because of that, the GC needs to spend more time marking these
objects than otherwise.
Applications that make heavy use of modules should see reduction in GC...
alanwu (Alan Wu)
06:08 PM Bug #15856: Performance of redundant `Kernel.require` is slow when many gems are activated
So we've been shipping this patch for 8 months now and not seen any bug reports.
Not sure why we haven't seen any issues around sha2/sha256, but either we get sha256 from the openssl api and not digest or that's been working, because we...
lamont (Lamont Granquist)
05:37 PM Feature #17059 (Rejected): epoll as the backend of IO.select on Linux
> Since the scheduler now have other registration control including rb_io_wait_readable and rb_io_wait_writable are introduced in the current Scheduler.
> ...
I'm not sure what is your idea, but at least I reject this ticket because `IO...
ko1 (Koichi Sasada)
12:00 PM Feature #17059: epoll as the backend of IO.select on Linux
The benchmark looks good. I've tested with similar code, and it's 46x slower on my machine.
It looks like `epoll` is highly depended on the time that `epoll_ctl` engaged.
Since the scheduler now have other registration control includ...
dsh0416 (Delton Ding)
09:53 AM Feature #17059: epoll as the backend of IO.select on Linux
I understand `epoll` will help by introducing new event handling APIs.
But not sure why `IO.select` can improve the performance with `epoll`.
This is my question by first comment and maybe https://bugs.ruby-lang.org/issues/17059#note-1...
ko1 (Koichi Sasada)
09:49 AM Feature #17059: epoll as the backend of IO.select on Linux
I want to know the general idea how to use `epoll` for `IO.select` backend.
```C
#include <stdlib.h>
#include <stdio.h>
#define _GNU_SOURCE
#include <unistd.h>
#include <sys/resource.h>
#include <poll.h>
#define N 2000 // 1...
ko1 (Koichi Sasada)
09:40 AM Feature #17059: epoll as the backend of IO.select on Linux
I'm unclear how using `epoll` can help for the user calling `IO.select`.
With the API of select(), I'd expect `epoll` is no faster than `select()`.
Regarding the Fiber scheduler, then I think a new event would be needed, calling epoll()...
Eregon (Benoit Daloze)
07:37 AM Feature #17059: epoll as the backend of IO.select on Linux
Thanks for advice.
To separate the process of registration and wait is a good idea for performance.
Since even the `select` itself could also take advantages from this,
and simplify the whole I/O multiplexing process.
dsh0416 (Delton Ding)
05:23 PM Revision bc00e6aa (git): Disable debugging test.
```
1) Failure:
TestObjSpace#test_trace_object_allocations [/tmp/ruby/v3/src/trunk-gc_compact/test/objspace/test_objspace.rb:175]:
<nil> expected but was
<"/tmp/ruby/v3/src/trunk-gc_compact/test/objspace/test_objspace.rb">.
```
@tende...
ko1 (Koichi Sasada)
04:48 PM Revision 1b347534 (git): * 2020-08-18 [ci skip]
git[bot]
04:47 PM Revision 971857c3 (git): Fix method name escaping in ObjectSpace.dump
It's possible to define methods with any name, even if the parser
doesn't support it and it can only be used with ex. send.
This fixes an issue where invalid JSON was output from ObjectSpace.dump
when a method name needed escaping.
jhawthorn (John Hawthorn)
01:57 PM Revision b52a501c (git): Ensure the shortcut cached in the class
As well as the other places using RCLASS_IV_INDEX_TBL.
`IO#reopen` seems the only case that the class of an object can be
changed.
nobu (Nobuyoshi Nakada)
01:36 PM Revision 27f7b047 (git): Also escape DEL code
nobu (Nobuyoshi Nakada)
01:30 PM Revision 7b4b5e08 (git): Fixed the radix for control chars
nobu (Nobuyoshi Nakada)
12:56 PM Feature #16815 (Closed): Implement Fiber#backtrace
Okay, it was merged. ioquatix (Samuel Williams)
12:56 PM Revision 0a218a97 (git): Expose ec -> backtrace (internal) and use it to implement fiber backtrace.
See <https://bugs.ruby-lang.org/issues/16815> for more details. Samuel Williams
11:35 AM Feature #16786: Light-weight scheduler for improved concurrency.
Proposed updated scheduler interface, including some experimental parts from Mutex proposal:
```ruby
class Scheduler
# Wait for the given file descriptor to match the specified events within
# the specified timeout.
# @parameter e...
ioquatix (Samuel Williams)
11:09 AM Feature #16786: Light-weight scheduler for improved concurrency.
## Mutex Implementation
I wanted to give a brief update on this given that the work is happening on a [separate ticket](https://bugs.ruby-lang.org/issues/16792#change-87084).
@eregon and myself have been working on how to handle Mutex....
ioquatix (Samuel Williams)
11:02 AM Feature #16786: Light-weight scheduler for improved concurrency.
There has been some discussion about the interface of the Scheduler.
## C Interface Exposure
It was largely copied from the existing Ruby and C interfaces where it seemed to make sense. For example `rb_wait_for_single_fd` -> `wait_...
ioquatix (Samuel Williams)
08:57 AM Revision c45f5ff2 (git): Clarify coroutine implementation license.
<https://bugs.ruby-lang.org/issues/16805> Samuel Williams
08:48 AM Misc #16805: Coroutine's license is unclear
I have merged the license changes as discussed, but we still need to check the license of the code contributed by @ReiOdaira. ioquatix (Samuel Williams)
07:16 AM Feature #16986: Anonymous Struct literal
nobu (Nobuyoshi Nakada) wrote in #note-31:
> Do you mean `a:` by "two characters"?
> ...
I think he meant the characters `{` and `a` (or even `:`). I think his point is that having them in succession causes a syntax error, which means th...
sawa (Tsuyoshi Sawada)
06:09 AM Feature #16986: Anonymous Struct literal
okuramasafumi (Masafumi OKURA) wrote in #note-30:
> What about `?{a: 1, b: 2}`?
> ...
Do you mean `a:` by "two characters"?
As `{` is a punctuation, the `a` cannot be the part of that character literal.
nobu (Nobuyoshi Nakada)
05:27 AM Revision a90f29eb (git): procnames-start-lines [ci skip]
nobu (Nobuyoshi Nakada)
05:25 AM Revision 352e9232 (git): Revisit "Refactor to reduce "swap" instruction of pattern matching"
Just moved "case base" after allocating cache space. nobu (Nobuyoshi Nakada)
03:17 AM Feature #16792: Make Mutex held per Fiber instead of per Thread
I have played around with this and I see the most basic operation is a way to tell the scheduler that a fiber can make progress. We can use a generic approach - in a loop, you may call `Fiber.yield`. When that fiber is ready to proceed (... ioquatix (Samuel Williams)
12:29 AM Revision 86260ee9 (git): * 2020-08-17 [ci skip]
git[bot]
12:28 AM Revision 5849309c (git): Revert "Refactor to reduce "swap" instruction of pattern matching"
This reverts commit 3a4be429b50062122d1616256de38649464d3146.
To fix following warning:
```
compiling ../compile.c
../compile.c:6336:20: warning: variable 'line' is uninitialized when used here [-Wuninitialized]
ADD_INSN(head, line...
znz (Kazuhiro NISHIYAMA)

08/16/2020

11:49 PM Feature #17059: epoll as the backend of IO.select on Linux
This is a nice idea, and I've considered exposing `wait_select` on the scheduler interface.
I'd suggest we try to go down this route.
The scheduler interface can cache the I/O registration... so in theory it addresses @ko1's concerns.
ioquatix (Samuel Williams)
09:08 PM Feature #17059: epoll as the backend of IO.select on Linux
Update the WIP implementation dsh0416 (Delton Ding)
10:24 AM Feature #17059: epoll as the backend of IO.select on Linux
In general, event handling gems like nio4r could provide a similar `select` interface with multiple backends including select, kqueue and epoll support.
On the side of Ruby meta-programming, this part is easy to be implemented, and coul...
dsh0416 (Delton Ding)
09:02 AM Feature #17059: epoll as the backend of IO.select on Linux
@ko1 is not talking about efficiency of epoll in general, but questioning that of your patch. shyouhei (Shyouhei Urabe)
01:12 AM Feature #17059: epoll as the backend of IO.select on Linux
It should greatly improve the performance.
Advanced registration is a feature of `epoll`,
but the performance is also an important part for it.
The benchmark from libevent shows the performance of epoll and poll or select,
are on a t...
dsh0416 (Delton Ding)
02:41 PM Revision a73b5cc5 (git): Remove the deprecated override of Kernel#open in open-uri
This was deprecated in 2.7 to resolve [Misc #15893]. jeremyevans (Jeremy Evans)
09:53 AM Revision 3a4be429 (git): Refactor to reduce "swap" instruction of pattern matching
wanabe (_ wanabe)
09:39 AM Revision 5c40c88a (git): Adjust sp for `case ... in a: 0 ... end`
wanabe (_ wanabe)
09:39 AM Revision 691f10dd (git): Adjust sp for `case ... in *, a, * end`
wanabe (_ wanabe)
09:39 AM Revision 6c407b36 (git): Adjust sp for `case ... in *v end`/`case ... in v1, v2 end`
wanabe (_ wanabe)
09:39 AM Revision c866d656 (git): Adjust sp for `case ... in v1 ... in v2 end`
wanabe (_ wanabe)
09:39 AM Revision d5940784 (git): Adjust sp for `case ... in v1, v2 ... end`
wanabe (_ wanabe)
09:39 AM Revision 2bbb7c3d (git): Adjust sp for `case ... in pat => var ... end`
wanabe (_ wanabe)
09:39 AM Revision 6bc0c6c1 (git): Adjust sp for `case ... in pat1 | pat2 ... end`
wanabe (_ wanabe)
09:39 AM Revision 07598624 (git): Adjust sp for pattern matching implicit/explicit "else"
wanabe (_ wanabe)

08/15/2020

11:43 PM Revision c1e7f0c7 (git): * 2020-08-16 [ci skip]
git[bot]
11:43 PM Revision a7bd0ec5 (git): Warn sp overwriting on compile time
wanabe (_ wanabe)
11:43 PM Revision ac399c2c (git): Show hidden object and TS_BUILTIN for halfbaked insn data
wanabe (_ wanabe)
04:59 PM Bug #17123 (Third Party's Issue): seg fault with nokogiri and ews
jreidthompson (Reid Thompson) wrote in #note-2:
> Works fine with libxlm2 v 2.9.9
jeremyevans0 (Jeremy Evans)
04:47 PM Bug #17123: seg fault with nokogiri and ews
Works fine with libxlm2 v 2.9.9 jreidthompson (Reid Thompson)
02:30 AM Bug #17123: seg fault with nokogiri and ews
libxml2 is 2.9.10 jreidthompson (Reid Thompson)
02:28 AM Bug #17123 (Third Party's Issue): seg fault with nokogiri and ews
This is a script that utilizes Ruby-EWS to query an exchange server:
```
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://github.co...
jreidthompson (Reid Thompson)
03:42 PM Feature #17055: Allow suppressing uninitialized instance variable and method redefined verbose mode warnings
Eregon (Benoit Daloze) wrote in #note-18:
> I ran the measurements on both CRuby master and 2.6.6, with `sqlite3` for convenience.
> ...
I ran it using Ruby 2.7.1 on OpenBSD, using the OpenBSD package, which builds with `-O2`. This is ...
jeremyevans0 (Jeremy Evans)
12:23 PM Feature #17055: Allow suppressing uninitialized instance variable and method redefined verbose mode warnings
I tried on TruffleRuby and there I can't see a significant difference (at least for the noplugin case):
https://gist.github.com/eregon/e552bf55d42ce128a9d89f41d57b637f
TruffleRuby uses inline caches for almost all metaprogramming operat...
Eregon (Benoit Daloze)
10:54 AM Feature #17055: Allow suppressing uninitialized instance variable and method redefined verbose mode warnings
I ran the measurements on both CRuby master and 2.6.6, with `sqlite3` for convenience.
I see smaller differences, but also my results are about 6 times faster.
It's still a larger difference than I expect so I'll try to dig deeper.
...
Eregon (Benoit Daloze)
10:20 AM Feature #15752: A dedicated module for experimental features
mame (Yusuke Endoh) wrote in #note-21:
> FYI: [Type-profiler](https://github.com/mame/ruby-type-profiler), which I'm developing for an experimental type inference tool for Ruby 3 types, heavily depends upon `RubyVM::InstructionSequence...
Eregon (Benoit Daloze)
05:17 AM Revision d75433ae (git): [DOC] fixed a missing markup
nobu (Nobuyoshi Nakada)
03:39 AM Feature #16815: Implement Fiber#backtrace
https://github.com/ruby/ruby/pull/3422 ioquatix (Samuel Williams)
03:09 AM Revision 4d7818a2 (git): tool/update-deps --fix
shyouhei (Shyouhei Urabe)
03:09 AM Revision ff30358d (git): RARRAY_AREF: convert into an inline function
RARRAY_AREF has been a macro for reasons. We might not be able to
change that for public APIs, but why not relax the situation internally
to make it an inline function.
shyouhei (Shyouhei Urabe)

08/14/2020

11:55 PM Revision 72d0f2f0 (git): * 2020-08-15 [ci skip]
git[bot]
11:55 PM Revision c84ccf1a (git): Fix links to Dig Methods document (#3421)
* Fix links to Dig Methods document
* Fix links to Dig Methods document
burdettelamar (Burdette Lamar)
05:54 PM Bug #17017: Range#max & Range#minmax incorrectly use Float end as max
Dan0042 (Daniel DeLorme) wrote in #note-22:
> jeremyevans0 (Jeremy Evans) wrote in #note-18:
> ...
`integer..float` is currently treated as a integer range in all other respects. For example:
```ruby
(1.0..2.1).to_a # TypeError (ca...
jeremyevans0 (Jeremy Evans)
04:09 PM Bug #17017: Range#max & Range#minmax incorrectly use Float end as max
jeremyevans0 (Jeremy Evans) wrote in #note-18:
> The behavior change in this issue is to fix an obvious bug, which is that `(1..2.1).max` returned `2.1` instead of `2`.
FWIW I consider the previous behavior correct. Intuitively I see...
Dan0042 (Daniel DeLorme)
03:14 PM Feature #17115: Optimize String#casecmp? for ASCII strings
In the benchmark you'd need to change the regexp from `/\Afoo\Z/i` to `/\Aconnection\z/i`; if you do so you'll find the regexp performance is similar to `casecmp?`
+1 for special-casing ASCII strings though.
Related: #13750, #14055
Dan0042 (Daniel DeLorme)
07:33 AM Revision fee1b98f (git): [DOC] fixed the method name
nobu (Nobuyoshi Nakada)
07:12 AM Revision e6580402 (git): RSTRING_LEN was not used
nobu (Nobuyoshi Nakada)
05:17 AM Feature #16986: Anonymous Struct literal
> hoge {{a: 1, b: 2}} is not syntax error. {{a: 1, b: 2}} is block argument.
> ...
Thank you for pointing it out. Obviously it doesn't work.
What about `?{a: 1, b: 2}`?
Question mark (`?`) is not be able to be a method by itself.
Chara...
okuramasafumi (Masafumi OKURA)
02:39 AM Feature #17122: Add category to Warning#warn
I guess we want to revisit #11588 . shyouhei (Shyouhei Urabe)
01:48 AM Feature #13893: Add Fiber#[] and Fiber#[]= and restore Thread#[] and Thread#[]= to their original behavior
Just one more potential interface:
```
class Fiber
attr_accessor :my_fiber_local
end
class Thread
attr_accessor :my_thread_local
end
```
To me, this actually seems like it should be the most logical way to add well d...
ioquatix (Samuel Williams)

08/13/2020

11:51 PM Revision 4318aba9 (git): re.c: prevent "warning: variable 'n' set but not used"
by adding MAYBE_UNUSED. mame (Yusuke Endoh)
09:23 PM Feature #17122: Add category to Warning#warn
jeremyevans0 (Jeremy Evans) wrote in #note-1:
> I don't think we should add a category keyword if the only usage is for deprecation warnings. If we are going to do this, I think:
> ...
I think we have category symbols already:
* h...
tenderlovemaking (Aaron Patterson)
09:06 PM Feature #17122: Add category to Warning#warn
I don't think we should add a category keyword if the only usage is for deprecation warnings. If we are going to do this, I think:
* All warning messages emitted by the core and the stdlib should have a category added
* This requir...
jeremyevans0 (Jeremy Evans)
08:42 PM Feature #17122 (Closed): Add category to Warning#warn
Deprecation warnings and other warnings in Ruby have a category (:deprecated, etc) but those categories aren't exposed or accessible. In the most recent Ruby 2.7 upgrade at GitHub we monkey patched `Warning#warn` to be able to turn warni... eileencodes (Eileen Uchitelle)
06:16 PM Revision 22fd617a (git): Adding doc/dig_methods.rdoc and links to it (#3416)
Adds a full discussion of #dig, along with links from Array, Hash, Struct, and OpenStruct.
CSV::Table and CSV::Row are over in ruby/csv. I'll get to them soon.
The art to the thing is to figure out how much (or how little) to say at ea...
burdettelamar (Burdette Lamar)
05:16 PM Revision cead77d8 (git): * 2020-08-14 [ci skip]
git[bot]
05:15 PM Revision 511b55bc (git): Enable arm64 optimizations that exist for power/x86 (#3393)
* Enable unaligned accesses on arm64
64-bit Arm platforms support unaligned accesses.
Running the string benchmarks this change improves performance
by an average of 1.04x, min .96x, max 1.21x, median 1.01x
* arm64 enable gc optimizat...
AGSaidi
05:10 PM Bug #17120: String#start_with? return wrong result for Regexp patterns containing /\K/
Patch: https://github.com/ruby/ruby/pull/3417 hanazuki (Kasumi Hanazuki)
08:17 AM Bug #17120 (Rejected): String#start_with? return wrong result for Regexp patterns containing /\K/
`String#start_with?` unexpectedly reports true when the pattern Regexp contains `/\K/` (lookbehind) operator and the lookbehind pattern matches the beginning of `self`.
```ruby
"hello".start_with?(/h\Ke/) # => true (unexpected)
```...
hanazuki (Kasumi Hanazuki)
11:56 AM Revision 787cb0fd (git): Replace repeated RSTRING_PTR and RSTRING_LEN with RSTRING_GETMEM
As now RSTRING_PTR and RSTRING_LEN are functions, they very bother
stepping in/out during debugging.
nobu (Nobuyoshi Nakada)
11:54 AM Bug #17118 (Closed): String#index and #rindex return wrong result for Regexp patterns containing /\K/
Applied in changeset commit:git|014a4fda54cb6897ed54ea9c44376db3459fc46e.
----------
rb_str_{index,rindex}_m: Handle /\K/ in pattern
When the pattern Regexp given to String#index and String#rindex
contain a /\K/ (lookbehind) operator, ...
hanazuki (Kasumi Hanazuki)
07:26 AM Bug #17118: String#index and #rindex return wrong result for Regexp patterns containing /\K/
Patch: https://github.com/ruby/ruby/pull/3414 hanazuki (Kasumi Hanazuki)
07:21 AM Bug #17118 (Closed): String#index and #rindex return wrong result for Regexp patterns containing /\K/
When the pattern Regexp given to `String#index` and `String#rindex` contain a `/\K/` (lookbehind) operator, these methods return the position where the beginning of the lookbehind pattern matches, while they are expected to return the po... hanazuki (Kasumi Hanazuki)
11:54 AM Revision 014a4fda (git): rb_str_{index,rindex}_m: Handle /\K/ in pattern
When the pattern Regexp given to String#index and String#rindex
contain a /\K/ (lookbehind) operator, these methods return the
position where the beginning of the lookbehind pattern matches, while
they are expected to return the position...
hanazuki (Kasumi Hanazuki)
11:51 AM Bug #17119 (Closed): String#partition and #rpartition return wrong result for Regexp patterns containing /\K/
Applied in changeset commit:git|5d71eed1a7f0a70db013de59cd7e95bdca0d5c0e.
----------
rb_str_{partition,rpartition}_m: Handle /\K/ in pattern
When the pattern given to String#partition and String#rpartition
contain a /\K/ (lookbehind) o...
hanazuki (Kasumi Hanazuki)
07:26 AM Bug #17119: String#partition and #rpartition return wrong result for Regexp patterns containing /\K/
Patch: https://github.com/ruby/ruby/pull/3413 hanazuki (Kasumi Hanazuki)
07:23 AM Bug #17119 (Closed): String#partition and #rpartition return wrong result for Regexp patterns containing /\K/
When the Regexp pattern given to `String#partition` and `String#rpartition` contain a `/\K/` (lookbehind) operator, the methods return strings sliced at incorrect positions.
```ruby
# expected -- partitioned at "c" following "b"
"ab...
hanazuki (Kasumi Hanazuki)
11:50 AM Revision 5d71eed1 (git): rb_str_{partition,rpartition}_m: Handle /\K/ in pattern
When the pattern given to String#partition and String#rpartition
contain a /\K/ (lookbehind) operator, the methods return strings
sliced at incorrect positions.
```
# without patch
"abcdbce".partition(/b\Kc/) # => ["a", "c", "cdbce"]
"...
hanazuki (Kasumi Hanazuki)
09:58 AM Feature #17121: Remove ENV#index
Sorry, `ENV#index` is will be remove this pull request(https://github.com/ruby/ruby/pull/3412) S_H_ (Shun Hiraoka)
09:52 AM Feature #17121 (Open): Remove ENV#index
`ENV#index` is deprecated since `ruby-1.9.0-0`.
So, remove it.
```bash
root@8785b339158a:/all-ruby# env ALL_RUBY_SINCE=ruby-1.8 ./all-ruby -e 'ENV.index("RUBY")'
ruby-1.8.0
...
ruby-1.8.7-p374
ruby-1.9.0-0 -e:1: warn...
S_H_ (Shun Hiraoka)
05:56 AM Feature #16986: Anonymous Struct literal
okuramasafumi (Masafumi OKURA) wrote in #note-27:
> I found that
> ...
Read the error message.
```
$ ruby -e '{{a: 1, b: 2}}'
-e:1: syntax error, unexpected '}', expecting =>
{{a: 1, b: 2}}
^
```
That means `{{`...
nobu (Nobuyoshi Nakada)
01:14 AM Revision 69b5241c (git): ruby_debug_log: suppress warning
Old gcc (< 5 maybe?) warns that this variable is not initialized:
debug.c: In function 'ruby_debug_log':
debug.c:441:13: warning: 'r' may be used uninitialized in this function [-Wmaybe-uninitialized]
if (r && len <...
shyouhei (Shyouhei Urabe)
01:14 AM Revision 1f9e25cd (git): MAYBE_UNUSED should just suffice
This reverts commit c355fa72d4e356378a8b03a67432b52bafcc308b. shyouhei (Shyouhei Urabe)

08/12/2020

09:29 PM Bug #17105: A single `return` can return to two different places in a proc inside a lambda inside a method
Just to be clear I am +1 on single return target, as described here: https://github.com/jruby/jruby/issues/6350#issuecomment-669603740
In addition to the confusing (and possibly inefficient) behavior that results from having two possi...
headius (Charles Nutter)
07:48 PM Feature #16986: Anonymous Struct literal
okuramasafumi (Masafumi OKURA) wrote in #note-27:
> I found that
> ...
hi.
`hoge {{a: 1, b: 2}}` is not syntax error. `{{a: 1, b: 2}}` is block argument.
```ruby
def hoge(&block)
block.call
end
# OK
hoge {{a: 1, b: 2}}
# => {:a=>1, :...
osyo (manga osyo)
05:56 PM Feature #16986: Anonymous Struct literal
I found that
``` ruby
{{a: 1, b: 2}}
```
is a syntax error and could be a good candidate for this feature.
okuramasafumi (Masafumi OKURA)
06:50 PM Bug #17031 (Open): `Kernel#caller_locations(m, n)` should be optimized
Reopening this as the commit had to be reverted as CI showed issues in `backtrace_mark`. I can't work on debugging this right away, so someone is welcome to look into fixing this in the meantime. jeremyevans0 (Jeremy Evans)
06:03 PM Bug #17031 (Closed): `Kernel#caller_locations(m, n)` should be optimized
Applied in changeset commit:git|f2d7461e85053cb084e10999b0b8019b0c29e66e.
----------
Improve performance of partial backtraces
Previously, backtrace_each fully populated the rb_backtrace_t with all
backtrace frames, even if caller only...
jeremyevans (Jeremy Evans)
07:14 AM Bug #17031: `Kernel#caller_locations(m, n)` should be optimized
Thank you Jeremy!
Great patch!
ko1 (Koichi Sasada)
06:43 PM Revision 4fc6cfbe (git): Revert "Improve performance of partial backtraces"
This reverts commit f2d7461e85053cb084e10999b0b8019b0c29e66e.
Some CI machines are reporting issues with backtrace_mark, so I'm
going to revert this for now.
jeremyevans (Jeremy Evans)
06:03 PM Revision 6dfd7ad4 (git): * 2020-08-13 [ci skip]
git[bot]
06:03 PM Revision f2d7461e (git): Improve performance of partial backtraces
Previously, backtrace_each fully populated the rb_backtrace_t with all
backtrace frames, even if caller only requested a partial backtrace
(e.g. Kernel#caller_locations(1, 1)). This changes backtrace_each to
only add the requested frame...
jeremyevans (Jeremy Evans)
12:31 PM Feature #17103: Add a :since option to ObjectSpace.dump_all
@ko1 this parameter allow to do partial heap dumps. e.g. `dump_all(since: 42)`, means to only dump objects of the 42th generation and later. Basically like adding a `if ObjectSpace.allocation_generation(obj) >= 42`.
This would be very...
byroot (Jean Boussier)
07:55 AM Feature #17103: Add a :since option to ObjectSpace.dump_all
sorry I can't understand the specification.
also https://github.com/ruby/ruby/pull/3368/files doesn't have a doc.
could you explain more?
ko1 (Koichi Sasada)
09:47 AM Bug #17117 (Closed): Corruption in ARGF.inplace
nobu (Nobuyoshi Nakada)
08:54 AM Revision 166cacc5 (git): Fix corruption in ARGF.inplace
Extension string stored in `ARGF.inplace` is created using an api
designed for C string constants to create a Ruby string that
points at another Ruby string. When the original string is swept,
the extension string gets corrupted.
Reprod...
peterzhu2118 (Peter Zhu)
07:38 AM Feature #17059: epoll as the backend of IO.select on Linux
does it improve the performance?
My understanding is the advantage of `epoll` is advanced registration.
However, `select` wrapping interface can not use it.
I have no experience to use `epoll`, so correct me it is wrong.
Thanks,
...
ko1 (Koichi Sasada)
07:30 AM Bug #17048: Calling initialize_copy on live modules leads to crashes
sorry I didn't check all threads, but nobu's patch can close it? ko1 (Koichi Sasada)
07:16 AM Misc #17050 (Feedback): profiler gem
Sorry for late response.
I have a plan to remake current profile library with recent APIs.
ko1 (Koichi Sasada)
06:36 AM Feature #13381: [PATCH] Expose rb_fstring and its family to C extensions
> However that terminology is already used for symbols (rb_str_intern).
Yes. This is why we didn't propose it.
ko1 (Koichi Sasada)
06:28 AM Feature #16984: Remove write barrier exemption for T_ICLASS
sorry I didn't check it.
Thank you, ~10 MB in "B's 250 MiB." is not problem I think.
Could you merge it if you don't have any trouble more?
ko1 (Koichi Sasada)
02:42 AM Bug #17108 (Rejected): error: initialization of ‘long unsigned int’ from ‘void *’ makes integer from pointer without a cast
`rb_funcall` expects a list of `VALUE`s after the number of arguments.
I think you'll want to write:
```C
MQ_INT arity = VAL2INT(rb_funcall(val,NS(id_arity),0));
```
or use `rb_funcallv` instead of `rb_funcall`:
```C
MQ_...
nobu (Nobuyoshi Nakada)
01:02 AM Bug #17113 (Closed): /\K/ in separator for String#split behaves differently than /(?<=)/
Applied in changeset commit:git|e79cdcf61b0665d8a9bb309a607227de43e95673.
----------
string.c(rb_str_split_m): Handle /\K/ correctly
Use BEG(0) instead of the result of rb_reg_search to handle the cases
when the separator Regexp contai...
hanazuki (Kasumi Hanazuki)
01:01 AM Revision e79cdcf6 (git): string.c(rb_str_split_m): Handle /\K/ correctly
Use BEG(0) instead of the result of rb_reg_search to handle the cases
when the separator Regexp contains /\K/ (lookbehind) operator.
Fixes [Bug #17113]
hanazuki (Kasumi Hanazuki)

08/11/2020

08:02 PM Bug #17117 (Closed): Corruption in ARGF.inplace
Extension string stored in `ARGF.inplace` is created using an api designed for C string constants to create a Ruby string that points at another Ruby string. When the original string is swept, the extension string gets corrupted.
Repr...
peterzhu2118 (Peter Zhu)
04:10 PM Feature #17116 (Closed): raise ArgumentError in Enumerator#new in no given blocks
Currently, `Enumerator#new` allows this code (no block given):
```ruby
obj = Object.new
Enumerator.new(obj)
```
with a warning (since ruby-2.0.0-preview2):
```bash
-e:1: warning: Enumerator.new without a block is deprecated;...
S_H_ (Shun Hiraoka)
04:02 PM Revision 66efe373 (git): * 2020-08-12 [ci skip]
git[bot]
04:01 PM Revision 7930a352 (git): Test out fix for OpenSSL test flakiness
`OpenSSL::TestX509Store#test_verify` has been failing intermittently on
CI about once a day:
- http://ci.rvm.jp/results/trunk-random2@phosphorus-docker/3121244
- http://ci.rvm.jp/results/trunk-random1@phosphorus-docker/3117661
- ht...
alanwu (Alan Wu)
03:57 PM Feature #17104: Do not freeze interpolated strings when using frozen-string-literal
> another reason is avoidance of alias effects
What you've shown is not another reason for freezing.
`a = b = "My string"`
both a and b refer to the same string object regardless of interning/freezing
there's no expectation t...
bughit (bug hit)
06:22 AM Feature #17104: Do not freeze interpolated strings when using frozen-string-literal
bughit (bug hit) wrote in #note-11:
> > However in my view what defines a literal, is the use of a specific syntax, so ""
> ...
My understanding is that another reason is avoidance of alias effects. It's easy to write code that when cu...
duerst (Martin Dürst)
03:16 PM Feature #17115 (Open): Optimize String#casecmp? for ASCII strings
Patch: https://github.com/ruby/ruby/pull/3369
`casecmp?` is a kind of performance trap as it's much slower than using a case insensitive regexp or just `casecmp == 0`.
```
str = "Connection"
cmp = "connection"
Benchmark.ips do |...
byroot (Jean Boussier)
03:14 PM Bug #17114: Float is not properly kept as integer when integer is added without space
Hello,
my fault. Thank you for clarification.
Best regards,
Tammo
tammo (tammo tjarks)
02:40 PM Bug #17114: Float is not properly kept as integer when integer is added without space
Hi, it's not a bug. +-1 is a precision argument.
```
irb> 12.34.floor(-1)
=> 10
irb> 12.34.floor(+1)
=> 12.3
```
take a look at the documentation, it describes this exact behavior well.
https://ruby-doc.org/core-2.7.1/Float....
ahorek (Pavel Rosický)
02:38 PM Bug #17114 (Rejected): Float is not properly kept as integer when integer is added without space
This is expected. `1.0.floor + 1` is parsed as `((1.0).floor).+(1)`. `1.0.floor +1` is parsed as `(1.0).floor(+1)`. This is also true for `-1`, it's just that `((1.0).floor).-(1)` and `(1.0).floor(-1)` are both `0`, since `(floor).flo... jeremyevans0 (Jeremy Evans)
02:25 PM Bug #17114 (Rejected): Float is not properly kept as integer when integer is added without space
Hello dear ruby community,
I observed the following behaviour:
``` ruby
1.0.floor +1 # => 1.0
(1.0).floor +1 # => 1.0
(1.0.floor) +1 # => 2
1.0.floor + 1 # => 2
```
I think this is due to `+1` being taken as an argument to `f...
tammo (tammo tjarks)
01:49 PM Revision 42725e3a (git): Enable s390x invokebuiltin JIT test again
k0kubun (Takashi Kokubun)
10:03 AM Bug #17113: /\K/ in separator for String#split behaves differently than /(?<=)/
Patch: https://github.com/ruby/ruby/pull/3407 hanazuki (Kasumi Hanazuki)
09:59 AM Bug #17113 (Closed): /\K/ in separator for String#split behaves differently than /(?<=)/
When a String is `#split`ted with a pattern containing /\K/ (lookbehind) operator,
the portion that matches the lookbehind pattern will not appear in the result.
```ruby
"abcd".split(/b\Kc/) # => ["a", "d"]
"abcd".split(/(?<=b)c/)...
hanazuki (Kasumi Hanazuki)
09:35 AM Revision 7806b2e2 (git): Use colorize.rb for non-capable terminals
nobu (Nobuyoshi Nakada)
09:35 AM Revision 2e7fe3b6 (git): Add default color for each instance
nobu (Nobuyoshi Nakada)
08:34 AM Bug #17112: Resolv.getaddress fails with IPv6 link-local addresses
After some experiments I noticed that changing `use_ipv6?` isn't the whole story.
In `Resolv#each_address` there seems to be a check for IP addresses. In case an IP address is given no actual resolving is performed.
```ruby
if AddressR...
daniel-rikowski (Daniel Rikowski)
07:51 AM Revision 5af983af (git): template/prelude.c.tmpl: suppress clang-12 warning
Clang 12 warns "suspicious concatenation of string literals in an array
initialization", which is rather annoying than useful in this context.
shyouhei (Shyouhei Urabe)
07:51 AM Revision ef2b785b (git): .github/workflows/compilers.yml: clang-12
LLVM made release/11.x branch. Its master is now version 12. shyouhei (Shyouhei Urabe)
07:51 AM Revision acd8ee8d (git): tool/prelude.c.tmpl: use RubyVM::CEscape
Do not repeat yourself. shyouhei (Shyouhei Urabe)
07:51 AM Revision b0eb5aa3 (git): RubyVM::CEscape#rstring2cstr: do not escape '
A single quote "is representable either by itself or by the escape
sequence", according to ISO/IEC 9899 (checked all versions). So this is
not a bug fix. But the generated output is a bit readable without
backslashes.
shyouhei (Shyouhei Urabe)
02:43 AM Feature #15281: Speed up Set#intersect with size check.
Apparently the linked PR has been merged last december 31st.
I note there's no NEWS entry.
marcandre (Marc-Andre Lafortune)
12:23 AM Feature #17000: 2.7.2 turns off deprecation warnings by default
I think deprecation warnings are necessary if, and only if, a feature or behaviour is going away in the lifespan of the minor (2.x) versions.
I also believe you can make any breaking change without prior warning in a major version (i....
inopinatus (Joshua GOODALL)
12:16 AM Bug #17106: Build ruby 2.6.6 from git source
47720e2255f34ecad49763c66a7ea02a55a3f60a will fix the error.
But I don't know if it won't cause a regression.
`ruby_2_7` doesn't have the issue because of b971bad49b95d4c1f68bb2242d4267355f1cd497.
wanabe (_ wanabe)
 

Also available in: Atom