Project

General

Profile

Activity

From 01/23/2019 to 01/29/2019

01/29/2019

09:25 PM Bug #15572 (Closed): `RubyVM::InstructionSequence` doesn't work with `extend`.
For some reason,`RubyVM::InstructionSequence.extend` doesn't seem to work as expected.
```ruby
module Loader
def load_iseq(path)
puts path
return compile_file(path)
end
end
# This doesn't work?
# RubyVM::Instruct...
ioquatix (Samuel Williams)
09:21 PM Feature #15567: Allow ensure to match specific situations
So, @jeremyevans0, I agree with everything you say.
That being said, this proposal goes beyond just that single case. For example, there is no easy way to capture `retry` or `redo` exiting a block.
Looking at your example, e.g.
...
ioquatix (Samuel Williams)
06:46 PM Feature #10370: [PATCH] We don't need to check whether rb_block_call exists
Been a while but Hiroshi put it on the next upcoming developer meeting so I
guess this may be discussed in a few days.
shevegen (Robert A. Heiler)
05:35 PM Feature #15571 (Open): Add methods: iroot, root, and roots
**Proposal**
The rubygem `roots` provides a few methods to find the numerical roots
of real, complex, and integer numbers. This proposal requests including the
following three (3) methods into Ruby.
https://rubygems.org/gems/roots...
jzakiya (Jabari Zakiya)
01:57 PM Bug #14972: Net::HTTP inconsistently raises EOFError when peer closes the connection
I checked the code again and I noticed I wrote a code which depends current behavior before.
It is to resume with the partially downloaded result.
I consider something like this code with a option or changing the behavior with migrat...
naruse (Yui NARUSE)
12:05 PM Bug #15570 (Closed): rb_int2big signature change #14036 breaks VIM on 32b arches
It was recently pointed out by VIM maintainer in Fedora [1], that VIM fails to build with Ruby 2.6 with the following error:
~~~
gcc -c -I. -DDYNAMIC_RUBY_DLL=\"libruby.so.2.6\" -DDYNAMIC_RUBY_VER=26 -I/usr/include -I/usr/include -DR...
vo.x (Vit Ondruch)
10:42 AM Feature #11076: Enumerable method count_by
For this kind of method, I wish we would implement it in Ruby even in MRI: it's much simpler, more readable, and every Ruby implementation could use it. Eregon (Benoit Daloze)
02:52 AM Feature #11076: Enumerable method count_by
https://github.com/nobu/ruby/pull/new/feature/11076-Enumerable%23tally
As `Hash#[]=` copies string keys, the `object_id` will be unique unless the item is frozen.
nobu (Nobuyoshi Nakada)
01:04 AM Feature #11076: Enumerable method count_by
mame (Yusuke Endoh) wrote:
> I have learnt the word "tally" in this thread. Thank you. It looks good to me, a non-native speaker. I have put this on the agenda of the next developers' meeting.
> ...
Answer 1: I would say the first, b...
baweaver (Brandon Weaver)
09:19 AM Bug #15555: Dir.mktmpdir checks permissions and raise ArgumentError after yielding to block (ensure) & leaks allocated tempdir
ruby_2_6 r66941 merged revision(s) 66909. naruse (Yui NARUSE)
09:19 AM Revision fdca654c (git): merge revision(s) 66909: [Backport #15555]
tmpdir.rb: permission of user given directory
* lib/tmpdir.rb (Dir.mktmpdir): check if the permission of the
parent directory only when using the default temporary
directory, and no check against user given d...
naruse (Yui NARUSE)
05:36 AM Bug #15499: Breaking behavior on ruby 2.6: rb_thread_call_without_gvl doesn't invoke unblock_function when used on the main thread
ruby_2_6 r66940 merged revision(s) 66708. naruse (Yui NARUSE)
05:31 AM Bug #15499 (Closed): Breaking behavior on ruby 2.6: rb_thread_call_without_gvl doesn't invoke unblock_function when used on the main thread
Applied in changeset ruby_2_6|r66940.
----------
merge revision(s) 66708: [Backport #15499]
thread.c (call_without_gvl): spawn thread for UBF iff single-threaded
We need another native thread to call some unblocking functions
which...
naruse (Yui NARUSE)
05:31 AM Revision fbad5b97 (git): merge revision(s) 66708: [Backport #15499]
thread.c (call_without_gvl): spawn thread for UBF iff single-threaded
We need another native thread to call some unblocking functions
which aren't RUBY_UBF_IO or RUBY_UBF_PROCESS. Instead of a
permanent thread i...
naruse (Yui NARUSE)
05:00 AM Bug #15488: const_defined?("File::NULL") の挙動
ruby_2_6 r66939 merged revision(s) 66938. naruse (Yui NARUSE)
04:39 AM Revision bf8cc37b (git): merge revision(s) 66938: [Backport #15488]
Fix `Module#const_defined?` on inherited constants
[Fix GH-2061]
From: manga_osyo <manga.osyo@gmail.com>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@66939 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
naruse (Yui NARUSE)

01/28/2019

07:22 PM Bug #15499: Breaking behavior on ruby 2.6: rb_thread_call_without_gvl doesn't invoke unblock_function when used on the main thread
I recommend to backport only r66708 for ruby 2.6.1 now.
Honestly speaking I don't understand why it is needed, but eric should know more so I want to believe.
r66712 has several problem so we need discuss more.
ko1 (Koichi Sasada)
07:20 PM Bug #15499: Breaking behavior on ruby 2.6: rb_thread_call_without_gvl doesn't invoke unblock_function when used on the main thread
Sorry I didn't check this ticket (because it seems difficult).
> r66708
I'm not sure why another thread is needed. could you explain about it?
> ...
`rb_nogvl` seems not good name.
Maybe Microsoft will name it `rb_thread_call_w...
ko1 (Koichi Sasada)
06:38 PM Feature #5653: "I strongly discourage the use of autoload in any standard libraries" (Re: autoload will be dead)
I think you missed an important point here. Like @fxn said above:
> First and foremost, I'd like to be very straightforward saying that if Kernel#autoload is killed tomorrow, that would be fine with me. I'd shutdown Zeitwerk and Rails...
rafaelfranca (Rafael França)
04:22 PM Feature #5653: "I strongly discourage the use of autoload in any standard libraries" (Re: autoload will be dead)
Hi, this is a discussion which I'm pretty much interested in and I'd like to add a few comments.
It seems to me that there are basically two reasons why people rely on autoload:
1. to achieve fast boot;
2. for convenience (not hav...
rosenfeld (Rodrigo Rosenfeld Rosas)
05:06 PM Feature #15563: #dig that throws an exception if a key doesn't exist
My scenario would be similar to k0kubuns scenario.
```Ruby
# The connection translates the request to JSON and parses the response
# from JSON into the correct objects. In this case a nested hash structure.
response = connection.se...
3limin4t0r (Johan Wentholt)
03:15 PM Bug #15569 (Closed): TestResolvDNS#test_no_server always fails on usa's mswin environment
Every week @usa reports a test failure on his mswin environment like this:
```
[ 9/135] TestResolvDNS#test_no_server = 5.00 s
1) Error:
TestResolvDNS#test_no_server:
Timeout::Error: execution expired
C:/Users/usa/develop/r...
k0kubun (Takashi Kokubun)
01:52 PM Feature #15373 (Closed): Proposal: Enable refinements to `#method` and `#instance_method`
nobu (Nobuyoshi Nakada)
01:49 PM Bug #15488 (Closed): const_defined?("File::NULL") の挙動
nobu (Nobuyoshi Nakada)
01:32 PM Revision 7fa16fd9 (git): Fix `Module#const_defined?` on inherited constants
[Fix GH-2061]
From: manga_osyo <manga.osyo@gmail.com>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
11:53 AM Revision dd4fdb32 (git): added assertion with method ref operator
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e nobu (Nobuyoshi Nakada)
11:45 AM Revision b5f90613 (git): * expand tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
11:45 AM Revision 2a4c87dc (git): Add refinements support to method/instance_method.
[Fix GH-2034]
From: manga_osyo <manga.osyo@gmail.com>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
05:04 AM Revision 2210709b (git): io.c: use fcopyfile(3) in IO.copy_stream if available
fixed r66930.
* io.c (nogvl_copy_stream_func): use fcopyfile(3) in IO.copy_stream if available
* configure.ac: check copyfile.h and fcopyfile(3)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66934 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Glass_saga (Masaki Matsushita)
03:32 AM Feature #15562: `String#split` option to suppress the initial empty substring
I believe an initial empty string should often be useful and significant, so it is a reasonable default to include one. String#split is used for splitting strings like `key=value` and `/path/components`, not to mention CSV, where `key=`... knu (Akinori MUSHA)
02:46 AM Feature #15562: `String#split` option to suppress the initial empty substring
> (shevegen (Robert A. Heiler):) This reminds me a bit of Dir['*'] versus Dir.entries(Dir.pwd). The latter
also has . and .. entries
Actually, I had the same thing in mind. I have never felt the initial `""` in `String#split` useful ...
sawa (Tsuyoshi Sawada)

01/27/2019

09:46 PM Revision 774c6095 (git): Revert "io.c: use fcopyfile(3) in IO.copy_stream if available"
This reverts commit bd670062c4e3a3c9fdfaaaf7bd3c232442a26a4c.
It fails on rubyspec.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66933 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Glass_saga (Masaki Matsushita)
08:55 PM Revision 0c7768e6 (git): * 2019-01-28
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66932 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
08:55 PM Revision f1a3be35 (git): * expand tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66931 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
08:55 PM Revision bd670062 (git): io.c: use fcopyfile(3) in IO.copy_stream if available
* io.c (nogvl_copy_stream_func): use fcopyfile(3) in IO.copy_stream if available
* configure.ac: check copyfile.h and fcopyfile(3)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Glass_saga (Masaki Matsushita)
08:28 PM Feature #13821: Allow fibers to be resumed across threads
bascule (Tony Arcieri) wrote:
> There's a simple solution to this: track if a given fiber is holding mutexes (e.g. keep a count of them) and if it is, make Fiber#resume raise an exception if it is resumed in a different thread from the ...
shan (Shannon Skipper)
04:12 PM Feature #15330: autoload_relative
I think `autoload_relative` should be added.
At present, opinion seems to be that `autoload` cannot be removed.
Additionally (and a separate discussion), if `autoload_relative` is added to 2.7, might it provide a path to deprecatin...
MSP-Greg (Greg L)
01:12 PM Revision 42921458 (git): Update to ruby/spec@e57f49c
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66929 b2dd03c8-39d4-4d8f-98ff-823fe69b080e Eregon (Benoit Daloze)
05:22 AM Feature #15557: A new class that stores a condition and the previous receiver
zverok (Victor Shepelev) wrote:
> > `Enumerable#grep`
> ...
I meant an example of condition and processing by one method.
```ruby
something.grep(->(x) { x.odd? }) {|x| do_odd_thing(x)}
```
> ...because they write
> ...
`Enumerab...
nobu (Nobuyoshi Nakada)
02:42 AM Feature #15567: Allow ensure to match specific situations
ioquatix (Samuel Williams) wrote:
> One more thing to bear in mind is that you can avoid this feature if you don't like it. Because it's for some very specific situations. It doesn't affect existing code in any way. But for situations l...
jeremyevans0 (Jeremy Evans)
02:42 AM Misc #10233: iseq.cのget_line_info()でバイナリサーチを使うように修正するか
このチケットを全く知りませんでした(すみません)が、2.5 で二分探索にしました。さらにその後 2.6 では簡潔ビットベクトルで O(1) にしました。 mame (Yusuke Endoh)
12:02 AM Misc #15568: TracePoint(:raise)#parameters raises RuntimeError
> Having the ability to get the parameters in a raise context would be very useful for debugging.
I agree. I can't say whether this means that trace.parameters exist but I agree that it may be
useful in debugging/introspection.
> ...
shevegen (Robert A. Heiler)

01/26/2019

11:43 PM Feature #15456: Adopt some kind of consistent versioning mechanism
Ok, maybe I'm not confused.
Assume gem a-1.8 exists with a lower Ruby version constraint of >= 2.0, and a-1.9 exists with a lower Ruby version constraint of >= 2.2.
If one has pessimistic versioning of major.minor, RubyGems will ...
MSP-Greg (Greg L)
11:25 PM Feature #15456: Adopt some kind of consistent versioning mechanism
I'm confused. I'll use major.minor.teeny
> Next year, Mr.A drops Ruby 2.0 support and released a1.gem as 2.0.
> ...
No mention as to whether the releases contain breaking API changes. If not, why a new 'major' release, vs a 'mino...
MSP-Greg (Greg L)
10:05 PM Feature #15456: Adopt some kind of consistent versioning mechanism
Just one example where a popular gem was basically forced to keep compatibility with older versions, or needs a major version increase:
https://github.com/ruby-concurrency/concurrent-ruby/issues/768
I'd guess there are many other sim...
Eregon (Benoit Daloze)
11:05 AM Feature #15456: Adopt some kind of consistent versioning mechanism
My understanding of semantic versioning is that what you depend on is not part of your public API. So, if you drop versions of Ruby, you can release new minor version, it's good enough. ioquatix (Samuel Williams)
11:30 PM Feature #15567: Allow ensure to match specific situations
One more thing to bear in mind is that you can avoid this feature if you don't like it. Because it's for some very specific situations. It doesn't affect existing code in any way. But for situations like mine where I have a handful of us... ioquatix (Samuel Williams)
11:26 PM Feature #15567: Allow ensure to match specific situations
@shevegen - thanks for your feedback.
> The reason why I dislike it is partially due to the syntax verbosity
With regards to syntax, it should use existing keywords, otherwise it can cause more problems. The reason for `not` is alr...
ioquatix (Samuel Williams)
12:03 PM Feature #15567: Allow ensure to match specific situations
I was about to write a long comment, but then I noticed that my reply would be too long, so I shortened
this. So just a few key statements:
I don't like the proposed syntax suggestion here in particular:
```ruby
ensure when not r...
shevegen (Robert A. Heiler)
10:59 AM Feature #15567: Allow ensure to match specific situations
@eregon - thanks for your response.
> `Ensure` should always be executed no matter the circumstances IMHO, so I don't like to make it conditional with extra syntax.
This isn't about not executing `ensure`, but allowing user to hand...
ioquatix (Samuel Williams)
09:51 AM Feature #15567: Allow ensure to match specific situations
I think the workaround using a variable set after `yield` (`success = true`) is not too bad, and clear enough. And the performance would be fine in this case (i.e. there would be no overhead if the JIT profiles the branch and only one br... Eregon (Benoit Daloze)
08:31 AM Feature #15567 (Rejected): Allow ensure to match specific situations
There are some situations where `rescue Exception` or `ensure` are not sufficient to correctly, efficiently and easily handle abnormal flow control.
Take the following program for example:
```
def doot
yield
ensure
# Did the ...
ioquatix (Samuel Williams)
09:10 PM Misc #15568 (Open): TracePoint(:raise)#parameters raises RuntimeError
Currently trying to get the `trace.parameters` of a method in a `raise` event will lead to a RuntimeError. I would contend that it should not, and that it would be perfectly valid to ask for the parameters in the case of an exception.
...
baweaver (Brandon Weaver)
09:03 PM Feature #14915: Deprecate String#crypt
eregontp@gmail.com wrote:
> If we want to remove a feature, we deprecate and warn first, that has always been the case in MRI.

I prefer no removals.

> @normalperson If you disagree, please start a general discussion about warning...
normalperson (Eric Wong)
02:35 PM Feature #15563: #dig that throws an exception if a key doesn't exist
Personally I've hit a real-world use-case of this feature many times.
I often manage structured configs with nested YAML files and load them from Ruby. With current Ruby, to avoid an unhelpful exception `NoMethodError`, I assert the e...
k0kubun (Takashi Kokubun)
01:54 PM Feature #15563: #dig that throws an exception if a key doesn't exist
I am against `dig!` for this purpose. When we have two versions of a method (`foo` and `foo!`), the bang version should be more dangerous than the non-bang version. `dig!` is not the case.
And with whatever name, we need the real-worl...
matz (Yukihiro Matsumoto)
01:14 PM Feature #15563: #dig that throws an exception if a key doesn't exist
shevegen (Robert A. Heiler) wrote:
> I have no particular pro or con against the feature itself as such; I myself do not use or need .dig so I
> ...
There is a well-established convention in Ruby, when you have a pair of methods that d...
jwmittag (Jörg W Mittag)
01:43 PM Revision a53ee213 (git): * 2019-01-26
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66928 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
01:43 PM Revision 60023cf4 (git): parse.y: trim newline in erred code
* parse.y (parser_yyerror): trim a newline at the end of the erred
code which was replaced with an extra space in the succeeding
cursor line.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
11:06 AM Feature #14844: Future of RubyVM::AST?
I started playing around with `parser` gem, and I actually found it really great too. I think I'll use the parser gem going forward, since it works on many versions of Ruby. That being said, exposing Ruby's AST is also really fun. ioquatix (Samuel Williams)
11:02 AM Feature #14975: String#append without changing receiver's encoding
@naruse do you think we can make some progress on this issue for 2.7 or not? ioquatix (Samuel Williams)
11:01 AM Feature #15560: Add support for read/write offsets.
Also, rather than using a keyword argument, it could be a 3rd argument after buffer, since buffer must be supplied in order for this to work. ioquatix (Samuel Williams)
08:30 AM Feature #15560: Add support for read/write offsets.
It is useful for read when user wants to read some data, and it wasn't enough (e.g. implementing `gets`) so you need to read some more at the end of what you already have. ioquatix (Samuel Williams)
08:35 AM Misc #15546: DevelopersMeeting20190207Japan
* [Feature #15567] Allow ensure to match specific situations. (ioquatix)
* Could we discuss whether this is a good idea or not?
* [Feature #15560] Add support for read/write offsets. (ioquatix)
* Can we get consensus on whether we...
ioquatix (Samuel Williams)
08:02 AM Bug #15521: encoding is missed when using `CSV.generate`
ruby_2_6 r66926 merged revision(s) 66922. naruse (Yui NARUSE)
08:02 AM Revision df7ac8af (git): merge revision(s) 66922: [Backport #15521]
Upgrade CSV to 3.0.4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@66926 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
naruse (Yui NARUSE)
07:59 AM Bug #15489: SEGV when using refinements and `&:` syntax
ruby_2_6 r66925 merged revision(s) 66658. naruse (Yui NARUSE)
07:59 AM Revision eb1d5ab5 (git): merge revision(s) 66658: [Backport #15489]
vm_args.c: search symbol proc in super classes
* vm_args.c (refine_sym_proc_call): traverse ancestors to search
inherited methods for symbol proc.
[ruby-dev:50741] [Bug #15489]
git-svn-id: svn+ssh://ci.ruby-...
naruse (Yui NARUSE)
07:59 AM Bug #15548: Fix MJIT on OpenBSD when GCC is used to compile
ruby_2_6 r66924 merged revision(s) 66823,66869. naruse (Yui NARUSE)
07:59 AM Revision 66be165f (git): merge revision(s) 66823,66869: [Backport #15548]
Revert "mjit_worker.c: try passing -nostdlib to AIX"
This reverts commit b32fb23083912c37a2601c66531ed786a7c9f3e5.
This didn't work on AIX.
mjit_worker.c: do not use GCC_NOSTDLIB_FLAGS for OpenBSD
Open...
naruse (Yui NARUSE)

01/25/2019

11:36 PM Feature #15565: Circular dependency warnings - suggestions/ideas to improve the output from ruby
(The output here on redmine is a bit different to how I wrote it in a local editor - sorry for some of the
overflowing lines; I tried to align it to ~80 characters. I am not sure how to edit the first thread, only
replies to an issue.)
shevegen (Robert A. Heiler)
11:33 PM Feature #15565 (Open): Circular dependency warnings - suggestions/ideas to improve the output from ruby
Hello ruby folks (and everyone else) reading this suggestion.
I will start with a mini-summary first, a TL;DR - this proposal suggests
to "make it easier/better for us ruby users to solve/resolve/handle
circular dependency warnings"...
shevegen (Robert A. Heiler)
08:16 PM Bug #15564: Pathname#+(pathpart) returns pathpart when pathpart is absolute
Also affects #/
Also affects #join
Malakai97 (Bryan Hockey)
08:11 PM Bug #15564 (Rejected): Pathname#+(pathpart) returns pathpart when pathpart is absolute
```
abs = Pathname.new("/abs/dir")
my = Pathname.new("/my/path")
# actual
my/abs # => #<Pathname:/abs/dir>
# expected
my/abs # => #<Pathname:/my/dir/abs/dir>
```
While this behavior is desirable in #expand_path, here I beli...
Malakai97 (Bryan Hockey)
07:35 PM Feature #15563: #dig that throws an exception if a key doesn't exist
I have no particular pro or con against the feature itself as such; I myself do not use or need .dig so I
can not speak much about it. But I believe one problem with the proposal here is the name.
I think a name such as "dig_e" would...
shevegen (Robert A. Heiler)
05:48 PM Feature #15563: #dig that throws an exception if a key doesn't exist
I just discovered that `#dig` also call private methods. I updated the provided examples to do the same.
```Ruby
hash = { b: 'b' }
hash.singleton_class.send(:private, :dig)
{ a: hash }.dig(:a, :b)
#=> 'b'
```
3limin4t0r (Johan Wentholt)
05:07 PM Feature #15563 (Open): #dig that throws an exception if a key doesn't exist
Ruby 2.3.0 introduced `#dig` for `Array`, `Hash` and `Struct`. Both `Array` and `Hash` have `#fetch`, which works the same way as `#[]`, but instead of returning the default value, raises an exception (unless a second argument or block i... 3limin4t0r (Johan Wentholt)
04:03 PM Feature #15557: A new class that stores a condition and the previous receiver
> `Enumerable#grep`
Well, it is not "it accepts callable", it is a part of "it accepts any pattern (including Proc)", and passing Proc into `grep` makes sense only in "polymorphic pattern situation" (we have a pattern variable, which ...
zverok (Victor Shepelev)
03:47 PM Feature #15557: A new class that stores a condition and the previous receiver
zverok (Victor Shepelev) wrote:
> The problem with @nobu's one, though, that it is pretty rarely seen in core Ruby to pass callable object instead of just a block (though, it exists, like @nobu pointed in another ticket, for example in ...
nobu (Nobuyoshi Nakada)
02:09 PM Revision 0a5b4c13 (git): vm.inc now in C99
This changeset modifies the VM generator so that vm.inc is written in
C99. Also added some comments in _insn_entry.erb so that the
intention of each parts to be made more clear. I think this improves
overall readability of the generate...
shyouhei (Shyouhei Urabe)
01:36 PM Misc #10233 (Closed): iseq.cのget_line_info()でバイナリサーチを使うように修正するか
たまたまGitHubで見かけて、現状のtrunkには適用できない状態になっていたので、closeします。 k0kubun (Takashi Kokubun)
12:07 PM Feature #15562: `String#split` option to suppress the initial empty substring
> Isn't the new option name too long? I'd use .drop_while(&:empty?).
I personally agree with your observation here; but I think that
.drop_while(&:empty?) is also not ideal. I'd then actually prefer
sawa's longer variant than the co...
shevegen (Robert A. Heiler)
12:06 PM Feature #15562: `String#split` option to suppress the initial empty substring
This reminds me a bit of Dir['*'] versus Dir.entries(Dir.pwd). The latter
also has . and .. entries such as:
=> ["foobar.md", "..", "."]
To me the . and .. entries were never useful. I ended up switching to Dir[]
consistently...
shevegen (Robert A. Heiler)
11:33 AM Feature #15562: `String#split` option to suppress the initial empty substring
Isn't the new option name too long? I'd use `.drop_while(&:empty?)`. knu (Akinori MUSHA)
11:08 AM Feature #15562: `String#split` option to suppress the initial empty substring
An example of a frequent use case of `split("a", initial_empty_string: false)` is when we have a text like `text` in the following, and want to extract the paragraphs that follow `SECTION`:
```ruby
text = <<~_
SECTION
Lorem ips...
sawa (Tsuyoshi Sawada)
09:51 AM Feature #15562: `String#split` option to suppress the initial empty substring
znz (Kazuhiro NISHIYAMA) wrote:
> `String#split` with `-1` does not remove empty strings.
> ...
I (particularly) want `["b"]`.
sawa (Tsuyoshi Sawada)
09:04 AM Feature #15562: `String#split` option to suppress the initial empty substring
`String#split` with `-1` does not remove empty strings.
```
>> "aba".split("a", -1)
=> ["", "b", ""]
> ...
=> ["", "b", "", ""]
```
znz (Kazuhiro NISHIYAMA)
07:19 AM Feature #15562 (Open): `String#split` option to suppress the initial empty substring
`String#split` returns an empty substring if any at the beginning of the original string, even though it does not return an empty substring at the end of the original string:
```ruby
"aba".split("a") # => ["", "b"]
```
This is pr...
sawa (Tsuyoshi Sawada)
06:52 AM Bug #15521: encoding is missed when using `CSV.generate`
I've updated `lib/csv` in r66922.
@naruse Could you backport the revision?
kou (Kouhei Sutou)
06:49 AM Revision 24b57b10 (git): Upgrade CSV to 3.0.4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e Sutou Kouhei
06:35 AM Revision cdca14e7 (git): * 2019-01-25
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66921 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
06:35 AM Revision cee0c36a (git): Upgrade RSS to 0.2.8
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66920 b2dd03c8-39d4-4d8f-98ff-823fe69b080e Sutou Kouhei
04:14 AM Feature #15559: Logical XOR (^^) operator
Unlike `&&` and `||`, which involve short-circuit evaluation, and hence are keywords rather than methods, the proposed `^^` will not involve short-circuit evaluation. Which is the intended proposal: as a keyword, or as a method? sawa (Tsuyoshi Sawada)
12:11 AM Feature #11076: Enumerable method count_by
enumerable-statistics provides `value_counts` method.
https://github.com/mrkn/enumerable-statistics/blob/master/ext/enumerable/statistics/extension/statistics.c#L1651-L1668
It is designed to follow pandas’s `Series.value_counts`.
mrkn (Kenta Murata)

01/24/2019

08:04 PM Misc #15546: DevelopersMeeting20190207Japan
* [Feature [#14344](/issues/14344)] refine at class level (kddeisz)
* Shorter refinement syntax proposed based on common use cases. Proposed either `refine_class` or `using` blocks for shorthand. What do you think?
* [Feature [#14680...
kddnewton (Kevin Newton)
02:08 PM Misc #15546: DevelopersMeeting20190207Japan
* [Feature #11076] Enumerable method count_by
* A new name "tally" is proposed. "Tally" is: | → || → ||| → |||| → ~~||||~~. Looks good to me. What do you think?
mame (Yusuke Endoh)
04:22 PM Bug #15561 (Rejected): What is Keto Tone? This result of keto tone
sorah (Sorah Fukumori)
07:44 AM Bug #15561 (Rejected): What is Keto Tone? This result of keto tone
What is Keto Tone? This result of keto tone is an enhancement that is exceptionally detailed to copy the fat consuming impacts of real ketosis for brief timeframes. Thusly, it permits you (in principle) to appreciate the advantages of ke... varusiteke (Keto Tone)
02:21 PM Feature #11076: Enumerable method count_by
I have learnt the word "tally" in this thread. Thank you. It looks good to me, a non-native speaker. I have put this on the agenda of the next developers' meeting.
By the way, what is the precise semantics of the method?
Question...
mame (Yusuke Endoh)
04:22 AM Feature #11076: Enumerable method count_by
A histogram refers to counts of items in ranges of otherwise continuous data. But this function is more general than that, so I think `histogram` is too specific a term.
For this native English speaker, `tally` is the most precisely f...
inopinatus (Joshua GOODALL)
12:36 PM Feature #15538: Erb indenting / unindenting
Most of "foo"-"bar" examples seem to be indented strangely. I guess you meant the following one for all like this ("f" and "b" start with the same column), right?
```
3: foo
bar
```
Now, you introduced 4 different new tokens ...
k0kubun (Takashi Kokubun)
12:04 PM Feature #15538: Erb indenting / unindenting
Fixed the 2 -> 4 indentation in the bad example and added the "stop indenting" closing tag `|%>` which would be fine by me.
`<%|=` inside `<%|` would result in:
example code:
```
1
<%|- (2..3).each do |num| -%>
<%= num %>: <%...
kke (Kimmo Lehto)
12:36 PM Revision 6375c68f (git): parse.y: function parser_mixed_error & parser_mixed_escape
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66919 b2dd03c8-39d4-4d8f-98ff-823fe69b080e nobu (Nobuyoshi Nakada)
12:21 PM Feature #15549: Enumerable#to_reader (or anything enumerable, Enumerator, lazy enums, enum_for results)
I'm open for other names (#to_readable_stream perhaps?). Important is to acknowledge the validity of this use-case, as there are some constraints depending of where it is used.
For instance, responding to #read is a sufficient require...
chucke (Tiago Cardoso)
11:43 AM Revision 7e68efbc (git): parse.y: remove an extra error message
* parse.y (parse_string): bail out when word-list meets end of
input not to show an extra "unexpected" error message after the
preceding error.
$ ruby -e "%w["
-e:1: unterminated string meets end of file
-e:1: synt...
nobu (Nobuyoshi Nakada)
10:19 AM Feature #5653: "I strongly discourage the use of autoload in any standard libraries" (Re: autoload will be dead)
Let me add a couple of things.
In case const_missing is discussed, these are the reasons why implementing autoloading based on const_missing doesn't fly (from memory):
1) The nesting is unknown.
2) Whether the missing constant was...
fxn (Xavier Noria)
10:10 AM Revision c6fb7c1f (git): eval_error.c: should not escapce newline and tab
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e nobu (Nobuyoshi Nakada)
06:06 AM Bug #15500: Behavior of require method in 2.5 is different from 2.4 and 2.6
@hsbt
I've confirmed that Ruby 2.5 with r66867 loads bigdecimal installed by gem, correctly.
mrkn (Kenta Murata)
01:00 AM Bug #15500: Behavior of require method in 2.5 is different from 2.4 and 2.6
ruby_2_6 r66913 merged revision(s) 66867. naruse (Yui NARUSE)
05:30 AM Bug #15537 (Closed): Numeric#step doesn't iterate under some conditions
Applied in changeset trunk|r66914.
----------
numeric.c: Fix negative step with float components
* numeric.c (ruby_float_step): fix negative step with float components.
* test/ruby/test_numeric.c (test_step_bug15537): add tests.
* te...
mrkn (Kenta Murata)
02:22 AM Bug #15537 (Assigned): Numeric#step doesn't iterate under some conditions
mrkn (Kenta Murata)
05:30 AM Revision e6084020 (git): * 2019-01-24
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
05:30 AM Revision 4bcfccdd (git): * expand tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66915 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
05:30 AM Revision 161ece47 (git): numeric.c: Fix negative step with float components
* numeric.c (ruby_float_step): fix negative step with float components.
* test/ruby/test_numeric.c (test_step_bug15537): add tests.
* test/ruby/test_range.c (test_step_bug15537): add tests.
[Bug #15537] [ruby-core:91101]
From: shuuji...
Kenta Murata
02:26 AM Feature #15559: Logical XOR (^^) operator
> Would it be possible to have logical ^^ in addition to the bitwise ^ for XOR?
I think it is possible, but we need a good reason to do so. Do you have any use case?
mame (Yusuke Endoh)
02:20 AM Feature #15559: Logical XOR (^^) operator
I think `!=` is easier to understand than `^^`. mrkn (Kenta Murata)
02:18 AM Feature #15559: Logical XOR (^^) operator
You can write `expr1 ^^ expr2` as `!expr1 != !expr2` in the current Ruby.
If both `expr1` and `expr2` are boolean, you can write `expr1 != expr2`.
I think `^^` can be useful for the case that both `expr1` and `expr2` are not boolean....
mrkn (Kenta Murata)
01:29 AM Feature #15560: Add support for read/write offsets.
I can imagine it is useful for TCPSocket#write to accept only a part of a buffer crafted by somebody else. But I cannot think of any actual use case when #read is useful with that extension. Do you have one? shyouhei (Shyouhei Urabe)
01:00 AM Revision ad6e91de (git): merge revision(s) 66867: [Backport #15500]
Revert r58345 and r58371.
These changes break the behavior of default gems. Bug #13428 says
r58345 is reasonable because gemspec file is installed by `to_ruby_for_cache`
method. But I revert `to_ruby_for_ca...
naruse (Yui NARUSE)

01/23/2019

10:31 PM Bug #15469: Ruby2.6 included `bundler` does not handle specified `csv` gem.
Should Bundler be a bundled gem (and not a default gem)?
I think this would help a lot, and allow uninstalling the preinstalled bundler if needed.
As mentioned above, it would also keep the Bundler implementation simple by being able...
Eregon (Benoit Daloze)
02:46 PM Bug #15469: Ruby2.6 included `bundler` does not handle specified `csv` gem.
I have found out the root cause of this.
# Root Cause
* Bundler has become a built-in gem since Ruby 2.6.
* `$LOAD_PATH` required for bundler is moved from custom gem path ( e.g. `lib/ruby/gems/2.5.0/gems/bundler-1.17.2/lib` ) to ...
aeroastro (Takumasa Ochi)
09:47 PM Feature #15553: Addrinfo.getaddrinfo supports timeout
> Why hrtime.h is included?
It's unnecessary. I'll remove it.
Glass_saga (Masaki Matsushita)
02:13 PM Feature #15553: Addrinfo.getaddrinfo supports timeout
Why hrtime.h is included? naruse (Yui NARUSE)
09:41 PM Bug #15468: Net::Protocol::BufferedIO#write raises NoMethodError when sending large multi-byte string
Can we please fast track the release of this? It's breaking a ton of stuff.
Stepping back a little bit from this issue, I think we see a picture of Ruby where:
- Handling binary data can cause bugs like this (mismatch between binar...
ioquatix (Samuel Williams)
09:39 PM Feature #15560 (Closed): Add support for read/write offsets.
It would be nice if read/write/send/recv/etc methods could accept an offset argument.
e.g.
```
socket = Socket.new(...)
buffer = String.b
socket.read(1024, buffer)
socket.read(1024, buffer, offset: buffer.bytesize)
```
Th...
ioquatix (Samuel Williams)
05:17 PM Feature #15559 (Open): Logical XOR (^^) operator
Currently we have bitwise `&` and logical `&&`, and bitwise `|` and logical `||`. Would it be possible to have logical `^^` in addition to the bitwise `^` for XOR? baweaver (Brandon Weaver)
05:10 PM Feature #15541: Add alias symbolize_keys for symbolize_names kwarg for JSON.parse
shevegen (Robert A. Heiler) wrote:
> Personally I think that alias name would make sense. With a new alias the backwards
> ...
An alias would probably be best as otherwise it would cause breaking changes, and I think we'd rather avoid ...
baweaver (Brandon Weaver)
04:18 PM Bug #15558 (Closed): Should Exception#exception copy the backtrace?
Currently it does not on MRI:
```
ruby -e 'begin raise "foo"; rescue => e; c=e.exception "bar"; p c.backtrace; end'
nil
```
But it does on JRuby 9.2.5.0 and TruffleRuby 1.0.0-rc11:
```
truffleruby -e 'begin raise "foo"; rescue =...
Eregon (Benoit Daloze)
02:14 PM Bug #14634: Queue#push seems to crash after fork
ruby_2_5 r66912 merged revision(s) 62934,63210,63215,63309. nagachika (Tomoyuki Chikanaga)
02:14 PM Revision 63d9ab33 (git): merge revision(s) 62934,63210,63215,63309: [Backport #14634]
thread_sync.c: avoid reaching across stacks of dead threads
rb_ensure is insufficient cleanup for fork and we must
reinitialize all waitqueues in the child process.
Unfortunately this increases the footprint of ...
nagachika (Tomoyuki Chikanaga)
01:39 PM Feature #5653: "I strongly discourage the use of autoload in any standard libraries" (Re: autoload will be dead)
Hey! I am the author of Zeitwerk, let me do a quick followup here.
First and foremost, I'd like to be very straightforward saying that if Kernel#autoload is killed tomorrow, that would be fine with me. I'd shutdown Zeitwerk and Rails ...
fxn (Xavier Noria)
10:55 AM Feature #5653: "I strongly discourage the use of autoload in any standard libraries" (Re: autoload will be dead)
It would be good to have a definite choice on this thread, I'll add it to the developer meeting (#15546).
I think at the last RubyKaigi during the Q/A, it was becoming clear removing #autoload would be a huge breaking change and there a...
Eregon (Benoit Daloze)
10:19 AM Feature #5653: "I strongly discourage the use of autoload in any standard libraries" (Re: autoload will be dead)
rafaelfranca (Rafael França) wrote:
> @matz when taking in consideration deprecation/removal of autoload I'd like you to consider that Rails built and plan to use a thread-safe code loader based on `autoload`. See https://medium.com/@fx...
shyouhei (Shyouhei Urabe)
10:24 AM Feature #15557: A new class that stores a condition and the previous receiver
Normally I love sawa's suggestions. :)
However had, in this case, I am a little bit biased, which I may explain.
First, I should start here by agreeing with sawa in regards to the use case noted on top is quite common -
I use it m...
shevegen (Robert A. Heiler)
10:21 AM Feature #15557: A new class that stores a condition and the previous receiver
I played a bit with idea similar to @nobu's, with this syntax:
```ruby
then_if(condition) { action }
then_if(-> { condition }) { action }
```
Explanations:
* boolean vs callable: sometimes, static conditions are useful, sligtly r...
zverok (Victor Shepelev)
09:27 AM Feature #15557: A new class that stores a condition and the previous receiver
What about:
```ruby
foo = default_definition
.when(->(foo) {some_condition(foo)}) {|foo| some_method(foo)}
.when(->(foo) {another_condition(foo)}) {|foo| another_method(foo)}
```
nobu (Nobuyoshi Nakada)
09:15 AM Feature #15557 (Open): A new class that stores a condition and the previous receiver
I often see code like this:
```ruby
foo = default_definition
foo = some_method(foo) if some_condition(foo)
foo = another_method(foo) if another_condition(foo)
...
```
It would be nice if we can write this as a method chain. S...
sawa (Tsuyoshi Sawada)
09:39 AM Revision c56f6116 (git): parse.y: token name of tSTRING_DEND
* parse.y (rb_yytnamerr): show single-quoted single char as-is, to
show a quoted closing brace as tSTRING_DEND. e.g.:
$ ./ruby -e '"#{true'
-e:1: syntax error, unexpected end-of-input, expecting '}'
git-svn-id: svn+ssh:/...
nobu (Nobuyoshi Nakada)
09:33 AM Feature #13807 (Closed): A method to filter the receiver against some condition
nagachika (Tomoyuki Chikanaga)
09:18 AM Feature #13807: A method to filter the receiver against some condition
I came up with an idea better than this (https://bugs.ruby-lang.org/issues/15557).
So I withdraw this proposal. Please close it.
sawa (Tsuyoshi Sawada)
09:25 AM Bug #14353: $SAFE should stay at least thread-local for compatibility
Just FTR, as per this discussion:
https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/V234THAZ2ETTFVLJZXJYPH2QO5W7A3KL/
The global $SAFE breaks gettext testsuite:
https://github.com/ruby-gettex...
vo.x (Vit Ondruch)
09:08 AM Revision 71342a46 (git): parse.y: token names
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66910 b2dd03c8-39d4-4d8f-98ff-823fe69b080e nobu (Nobuyoshi Nakada)
06:06 AM Bug #15555 (Closed): Dir.mktmpdir checks permissions and raise ArgumentError after yielding to block (ensure) & leaks allocated tempdir
Applied in changeset trunk|r66909.
----------
tmpdir.rb: permission of user given directory
* lib/tmpdir.rb (Dir.mktmpdir): check if the permission of the
parent directory only when using the default temporary
directory, and no che...
nobu (Nobuyoshi Nakada)
06:06 AM Revision 1fae154c (git): tmpdir.rb: permission of user given directory
* lib/tmpdir.rb (Dir.mktmpdir): check if the permission of the
parent directory only when using the default temporary
directory, and no check against user given directory. the
security is the user's responsibility in that case.
...
nobu (Nobuyoshi Nakada)
 

Also available in: Atom