Project

General

Profile

Activity

From 05/24/2018 to 05/30/2018

05/30/2018

11:01 PM Misc #14798 (Closed): [PATCH] gc.c: reduce parameters for gc_start and garbage_collect
```
Every time I look at gc.c, I get confused by argument ordering:
gc_start(..., TRUE, TRUE, FALSE, ...)
gc_s...
normalperson (Eric Wong)
10:04 PM Feature #14757: [PATCH] thread_pthread.c: enable thread cache by default
ko1 brought up a good point: this may interact badly with
3rd-party libraries which use thread-local storage via
...
normalperson (Eric Wong)
08:24 PM Feature #14546: Hash#delete!
duerst (Martin Dürst) wrote:
> it would be a bad idea to use a bang method in a context (such as delete) where it ca...
janosch-x (Janosch Müller)
01:58 PM Feature #14794: Primitive arrays (Ruby 3x3)
btw: 40% of arrays on my rails app contains only primitive elements ahorek (Pavel Rosický)
01:27 PM Feature #14794: Primitive arrays (Ruby 3x3)
I'm interested to improve Ruby array's performance without specifying custom types or C extensions, it should just wo... ahorek (Pavel Rosický)
02:26 AM Feature #14794: Primitive arrays (Ruby 3x3)
Use numo-narray or nmatrix for homogeneous numeric arrays.
https://github.com/ruby-numo/numo-narray
https://git...
mrkn (Kenta Murata)
01:03 PM Revision b9212a77 (git): Ignore bundler assertions on ruby core test suite.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e hsbt (Hiroshi SHIBATA)
01:01 PM Revision af9b1c95 (git): * properties.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63530 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
01:01 PM Revision 50181419 (git): * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
01:01 PM Revision 8da8d4b0 (git): Merge RubyGems 3.0.0.beta1.
* It drop to support < Ruby 2.2
* Cleanup deprecated methods and classes.
* Mark obsoleted methods to deprecate.
...
hsbt (Hiroshi SHIBATA)
11:49 AM Revision c5cb386e (git): NEWS: clarify item about built-in thread cache
[Feature #14757]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Eric Wong
11:33 AM Bug #14795: Should 'net/http' require 'net/http/status' ?
[email protected] wrote:
> I think it would make sense, given how important http status codes
> are in general (a...
normalperson (Eric Wong)
07:15 AM Bug #14795: Should 'net/http' require 'net/http/status' ?
I think it would make sense, given how important http status codes
are in general (and people who use net/http may a...
shevegen (Robert A. Heiler)
09:13 AM Revision 162adb82 (git): Workaround for old LibreSSL
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e nobu (Nobuyoshi Nakada)
08:25 AM Feature #14594 (Closed): Rethink yield_self's name
Applied in changeset trunk|r63525.
----------
object.c: Add a new alias `then` to `Kernel#yield_self`; [Feature #14594]
matz (Yukihiro Matsumoto)
08:24 AM Revision d53ee008 (git): object.c: Add a new alias `then` to `Kernel#yield_self`; [Feature #14594]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e matz (Yukihiro Matsumoto)
07:14 AM Bug #14796 (Closed): improper passing of &block - causes crash on MacOS 10.13.4 (17E202) with Ruby 2.5.0 within Rbenv
Situation confirmed in 2.5.0, but seems fixed in 2.5.1. Try a newer version. shyouhei (Shyouhei Urabe)
06:42 AM Bug #14796 (Closed): improper passing of &block - causes crash on MacOS 10.13.4 (17E202) with Ruby 2.5.0 within Rbenv
offending code:
```ruby
def assert(message="", &block)
raise ArgumentError, "#{message} invalid" unles...
btihen (Bill Tihen)

05/29/2018

11:28 PM Revision 47f9dd84 (git): * 2018-05-30
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63524 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
11:28 PM Revision 9fd0858c (git): fake.rb: fix RUBY_DESCRIPTION for MJIT
* template/fake.rb.in: switch RUBY_DESCRIPTION at runtime
depending on the MJIT status.
git-svn-id: svn+ssh://ci.r...
nobu (Nobuyoshi Nakada)
10:02 PM Bug #14795 (Closed): Should 'net/http' require 'net/http/status' ?
net/http/status.rb has been added (#12935) but it is [not required from net/http.rb](https://github.com/ruby/ruby/blo... sakuro (Sakuro OZAWA)
08:34 PM Feature #14718: Use jemalloc by default?
bluz71 (Dennis B) wrote:
> Redis ships jemalloc 4.0.3 (or near to) as seen here:
>
> https://github.com/antirez/r...
Ksec (E C)
03:29 PM Feature #14794 (Feedback): Primitive arrays (Ruby 3x3)
dynamic arrays in ruby can contain various object types:
```ruby
[1, 1.0, 'text', Object.new]
```
however if I ...
ahorek (Pavel Rosický)
03:12 PM Feature #14792: Multiple RubyVM in one process to make real multi-threading.
Ksec (Ed Chick) wrote:
> HfCloud (Xiangyu Shi) wrote:
> > shyouhei (Shyouhei Urabe) wrote:
> > > This is what we c...
HfCloud (Xiangyu Shi)
09:12 AM Feature #14792: Multiple RubyVM in one process to make real multi-threading.
HfCloud (Xiangyu Shi) wrote:
> shyouhei (Shyouhei Urabe) wrote:
> > This is what we call the MVM feature. There ha...
Ksec (E C)
07:33 AM Feature #14792 (Feedback): Multiple RubyVM in one process to make real multi-threading.
naruse (Yui NARUSE)
05:56 AM Feature #14792: Multiple RubyVM in one process to make real multi-threading.
shyouhei (Shyouhei Urabe) wrote:
> HfCloud (Xiangyu Shi) wrote:
> > shyouhei (Shyouhei Urabe) wrote:
> > > This is...
HfCloud (Xiangyu Shi)
05:46 AM Feature #14792: Multiple RubyVM in one process to make real multi-threading.
HfCloud (Xiangyu Shi) wrote:
> shyouhei (Shyouhei Urabe) wrote:
> > This is what we call the MVM feature. There ha...
shyouhei (Shyouhei Urabe)
05:28 AM Feature #14792: Multiple RubyVM in one process to make real multi-threading.
shyouhei (Shyouhei Urabe) wrote:
> This is what we call the MVM feature. There has been rich amount of efforts to m...
HfCloud (Xiangyu Shi)
05:26 AM Feature #14792: Multiple RubyVM in one process to make real multi-threading.
This is what we call the MVM feature. There has been rich amount of efforts to make it possible and still not availa... shyouhei (Shyouhei Urabe)
05:11 AM Feature #14792 (Closed): Multiple RubyVM in one process to make real multi-threading.
This is an old problem, maybe running multiple RubyVM is a good way, which can really run ruby code in parallel in ... HfCloud (Xiangyu Shi)
11:35 AM Feature #12732: An option to pass to `Integer`, `Float`, to return `nil` instead of raise an exception
rbjl (Jan Lelis) wrote:
> Although it does not solve Aaron's use case, I would suggest to have a `Integer.try_conver...
m_s__santos (Matheus Silva)
09:41 AM Bug #14791: String.sub wrong parsing of replacement with capturing group
Thanks for help!
I don't unterstand, why five backslahes are required in single quotes. My understanding was that ...
churib (Timo Grodzinski)
05:17 AM Bug #14791 (Rejected): String.sub wrong parsing of replacement with capturing group
Let me reject; this is not a bug. shyouhei (Shyouhei Urabe)
08:47 AM Revision 0342fcbd (git): fake.rb: fix RUBY_DESCRIPTION for MJIT
* template/fake.rb.in: reflect MJIT to RUBY_DESCRIPTION.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63522 b2d...
nobu (Nobuyoshi Nakada)
08:46 AM Revision 2df80d30 (git): spec/ruby: revert r63503 and r63508
When RUBY_DESCRIPTION has `+JIT` already, it will be doubled.
Just fake.rb.in always has copied `RUBY_DESCRIPTION`, r...
nobu (Nobuyoshi Nakada)
05:49 AM Bug #14793: Hash returned from CGI.parse has [] as default value
My mistake, it looks like all CGI values are always returned as arrays:
~~~
CGI.parse("x=y")
#=> {"x"=>["y"]}
~...
avit (Andrew Vit)
05:39 AM Bug #14793 (Closed): Hash returned from CGI.parse has [] as default value
Is there a valid reason for this behaviour? It looks like a bug to me:
~~~
require 'cgi'
params = CGI.parse(""...
avit (Andrew Vit)
02:48 AM Revision d2c6ed6b (git): mjit_compile.c: drop catch table handling
The loop for `vm_exce_handle_exception` doesn't trigger `mjit_exec`, so
I don't think this code is no longer needed.
...
k0kubun (Takashi Kokubun)
01:58 AM Revision 8b9e877b (git): Unused macro and field
* node.h (nd_cnt, struct RNode): nd_cnt has been unused
since r60239, and also cnt field.
* .gdbinit (nd_cnt): ditt...
yui-knk (Kaneko Yuichiro)
01:40 AM Revision 7db2db67 (git): Unused macro
* node.h (nd_noex): nd_noex has been unused since r24128.
* .gdbinit (nd_noex): ditto
git-svn-id: svn+ssh://ci.ruby-...
yui-knk (Kaneko Yuichiro)
01:19 AM Revision 3d1a523d (git): Unused macro
* node.h (nd_frml): nd_frml has been unused since r34134.
* .gdbinit (nd_frml): ditto
git-svn-id: svn+ssh://ci.ruby-...
yui-knk (Kaneko Yuichiro)
01:18 AM Revision 9e5354eb (git): NEWS: add item about built-in thread cache
This change may impact design of future programs and obviate
thread pools in many cases, so it's worth a mention.
Any...
Eric Wong
01:00 AM Revision d6d130c1 (git): Unused macro
* node.h (nd_argc): nd_argc has been unused since r24128.
* .gdbinit (nd_argc): ditto
git-svn-id: svn+ssh://ci.ruby-...
yui-knk (Kaneko Yuichiro)
12:14 AM Bug #14789 (Feedback): Debian 9, ARM, rails 5.2.0 not works.
> /home/tivgres/.rvm/gems/ruby-2.4.1/gems/bootsnap-1.3.0/lib/bootsnap/compile_cache/iseq.rb:18: [BUG] Bus Error at 0x... shyouhei (Shyouhei Urabe)

05/28/2018

07:42 PM Misc #14769: DevelopersMeeting20180621Japan
> I'm sorry again.
Don't worry - took us all a little to adapt to the new format. :)
shevegen (Robert A. Heiler)
02:02 AM Misc #14769: DevelopersMeeting20180621Japan
shyouhei (Shyouhei Urabe) wrote:
> wanabe (_ wanabe) wrote:
> > * CRuby uses `pthread_getattr_np()` result for st...
wanabe (_ wanabe)
01:18 AM Misc #14769: DevelopersMeeting20180621Japan
(sorry for the last message. was a mistake, deleted)
wanabe (_ wanabe) wrote:
> * CRuby uses `pthread_getattr_...
shyouhei (Shyouhei Urabe)
07:06 PM Bug #14790: DateTime.iso8601 parses incorrect ISO8601
Yes, you are right. It was a bug after all but not in the way I originally thought :D.
Hanmac (Hans Mackowiak) wro...
Quintasan (Michał Zając)
03:19 PM Bug #14790 (Closed): DateTime.iso8601 parses incorrect ISO8601
Applied in changeset trunk|r63512.
----------
time.rb: fix parsing time zone in iso8601
* lib/time.rb (Time.xmlsche...
nobu (Nobuyoshi Nakada)
01:36 PM Bug #14790: DateTime.iso8601 parses incorrect ISO8601
you mean the offset right?
https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators says that "±hhmm" is valid...
Hanmac (Hans Mackowiak)
01:20 PM Bug #14790 (Closed): DateTime.iso8601 parses incorrect ISO8601
I noticed it today when migrating to Time in my library but DateTime somehow parses incorrect ISO8601 dates. Technica... Quintasan (Michał Zając)
04:04 PM Feature #14788: `Hash#keys` Could Accept a Block
How about `each_key`?
```ruby
{ 1 => '1', 2 => '2', 3 => '3', 4 => '4' }.each_key.select(&:odd?) # => [1, 3]
```
znz (Kazuhiro NISHIYAMA)
12:25 PM Feature #14788: `Hash#keys` Could Accept a Block
I personally understand what Ryan suggested and meant; the example shows that he
can integrate the ".select" step .k...
shevegen (Robert A. Heiler)
07:35 AM Feature #14788: `Hash#keys` Could Accept a Block
If I were you, I would rather request a new method named `Hash#select_keys` for that purpose. sawa (Tsuyoshi Sawada)
06:19 AM Feature #14788: `Hash#keys` Could Accept a Block
I don't like it.
From `keys {|k| k.something }` I wouldn't know what it does with the keys, if they would select o...
Hanmac (Hans Mackowiak)
03:35 PM Revision dc2a979b (git): time.rb: fix parsing time zone in iso8601
* lib/time.rb (Time.xmlschema): the minute in time zone designator
can be omitted together with the preceding colon...
nobu (Nobuyoshi Nakada)
03:25 PM Bug #14791: String.sub wrong parsing of replacement with capturing group
need 5 or 6 (6 when using ")
~~~ ruby
"abc".sub(/(b)/, '\\\\\1') #=> "a\\bc"
"abc".sub(/(b)/, "\\\\\1") #=> "a\\...
Hanmac (Hans Mackowiak)
02:28 PM Bug #14791: String.sub wrong parsing of replacement with capturing group
Can you give a solution for my second example?
~~~ ruby
"abc".sub(/(b)/, '\\1') # doesn't works, should be "a\bc"
...
churib (Timo Grodzinski)
02:01 PM Bug #14791: String.sub wrong parsing of replacement with capturing group
read the Docs:
~~~
If replacement is a String it will be substituted for the matched text. It may contain back-re...
Hanmac (Hans Mackowiak)
01:44 PM Bug #14791 (Rejected): String.sub wrong parsing of replacement with capturing group
~~~ ruby
irb(main):001:0> "abc".sub(/(b)/, '#\1#') # works
=> "a#b#c"
irb(main):002:0> "abc".sub(/(b)/, '\\1') # d...
churib (Timo Grodzinski)
03:19 PM Revision 7b4671f0 (git): * 2018-05-29
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63513 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
03:19 PM Revision 71fed537 (git): time.rb: fix parsing time zone in iso8601
* lib/time.rb (Time.xmlschema): a colon in time zone designator
can be omitted. [ruby-core:87277] [Bug #14790]
gi...
nobu (Nobuyoshi Nakada)
02:24 PM Revision 3e2ff59f (git): Unused macro and field
* node.h (nd_cfnc, struct RNode): nd_cfnc has been unused
since r49938, and also cfunc field.
* .gdbinit (nd_cfnc):...
yui-knk (Kaneko Yuichiro)
12:22 PM Bug #14789 (Third Party's Issue): Debian 9, ARM, rails 5.2.0 not works.
Hello, I try to use rails at orange pi board on armbian (debian 9 for ARM), but it's have a bug?
ruby -v
ruby 2.4...
Tivgres (Sergey D)
12:00 PM Feature #12906: do/end blocks work with ensure/rescue/else
Old issue, but still perhaps the right place to mention this: the new syntax ONLY works in do/end, not in {} blocks (... perlun (Per Lundberg)
12:42 AM Revision dceecfb6 (git): * 2018-05-28
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63510 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
12:42 AM Revision 1f4796a1 (git): Merge etc gemspec from github repository.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e hsbt (Hiroshi SHIBATA)

05/27/2018

10:13 PM Misc #14769: DevelopersMeeting20180621Japan
* [Bug #14387] Ruby 2.5 を Alpine Linux で実行すると比較的浅めで SystemStackError 例外になる (koshigoe)
* CRuby uses `pthread_getatt...
wanabe (_ wanabe)
08:07 PM Feature #14788 (Open): `Hash#keys` Could Accept a Block
Sometimes I only need to fetch *some* of the keys from a Hash. With the current `Hash#keys` implementation, this requ... rringler (Ryan Ringler)
02:49 PM Bug #14464: MJIT & MinGW / gcc 7.3.0 seemed ok as of 62337, fail or skip after
@k0kubun,
> Thanks for letting me know that
Not being a c type, it's the least I can do. I often feel like a...
MSP-Greg (Greg L)
09:52 AM Revision 96e6eb38 (git): Specs must keep working on older versions and other implementations
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e Eregon (Benoit Daloze)
07:33 AM Revision f13b0fd8 (git): jit_support.rb: debug check_support stderr
rubyci freebsd11zfs doesn't pass this check. I want to know the stderr.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/...
k0kubun (Takashi Kokubun)
05:52 AM Revision 783e2b57 (git): st.c: remove redundant export declaration
rb_hash_bulk_insert is added to official C API in r63488. It's no longer
exported only for MJIT.
git-svn-id: svn+ssh...
k0kubun (Takashi Kokubun)
05:47 AM Revision 9aefa90c (git): * 2018-05-27
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
05:47 AM Revision 6d389356 (git): jit_support.rb: cahce JIT support check
* Before
make test-all -C .ruby-svn TESTS="../test/ruby/test_jit.rb" 22.40s user 5.38s system 91% cpu 30.196 total
...
k0kubun (Takashi Kokubun)

05/26/2018

12:56 PM Bug #14464: MJIT & MinGW / gcc 7.3.0 seemed ok as of 62337, fail or skip after
Thanks for letting me know that. I also confirmed r63479 doesn't pass the tests but r63480 does. So somehow r63480 fi... k0kubun (Takashi Kokubun)

05/25/2018

10:57 PM Feature #14787: Show documents when completion
I am fine with the suggestion.
If possible, a configuration option for IRB would be nice for people
to decide on ...
shevegen (Robert A. Heiler)
10:44 PM Feature #14787 (Closed): Show documents when completion
The "irb/completion" provides completion for classes, modules, symbols, and methods. This patch provides a new featur... aycabta (aycabta .)
08:48 PM Misc #12474: Wishlist for Windows Unix compatibility features
> Remove a file which is opened by another process
Fall Creators Update added FILE_DISPOSITION_POSIX_SEMANTICS.
h...
emk (Masatoshi Kimura)
04:09 PM Bug #14742: Deadlock when autoloading different constants in the same file from multiple threads
It looks like the fix was un-reverted in r63392. Thank you for working on this, Eric! eugeneius (Eugene Kenny)
05:46 AM Feature #14785: Parse guard statements like regular conditionals
```ruby
def test
result = calculate_result and return result
# ...
end
```
nobu (Nobuyoshi Nakada)

05/24/2018

07:33 PM Feature #14097: Add union and difference to Array
I cannot say that I am a fan of this proposal. To be fair, I'm not a fan of #|.
Arrays are not sets. Trying to t...
Student (Nathan Zook)
12:08 AM Feature #14097: Add union and difference to Array
and this is not necessarily related to Feature #14105. I would say that they are two different topics even if both of... ana06 (Ana Maria Martinez Gomez)
12:06 AM Feature #14097: Add union and difference to Array
@matz
> I am not sure your real intention. Do you want mutating variation of or-operator?
> Or just more readable...
ana06 (Ana Maria Martinez Gomez)
04:46 PM Feature #14785: Parse guard statements like regular conditionals
Ah you're right Jeremy, I hadn't thought about that case. I still think it's unexpected though that in your example t... jacobevelyn (Jacob Evelyn)
02:12 PM Feature #14785: Parse guard statements like regular conditionals
jacobevelyn (Jacob Evelyn) wrote:
> I agree the `did_you_mean` message is not good, but I would rather change the be...
jeremyevans0 (Jeremy Evans)
01:34 PM Feature #14785: Parse guard statements like regular conditionals
I agree the `did_you_mean` message is not good, but I would rather change the behavior so that line of code works and... jacobevelyn (Jacob Evelyn)
05:47 AM Feature #14785: Parse guard statements like regular conditionals
Seems the recent `did_you_mean` omits `result` in that case.
It may be able to improve the message, I guess.
nobu (Nobuyoshi Nakada)
02:32 PM Revision 506512c0 (git): spec/ruby: fix RUBY_DESCRIPTION check with JIT enabled
`make test-spec` adds `-r./$(arch)-fake` to pass header options.
But the $(arch)-fake.rb unexpectedly modifies RUBY_D...
k0kubun (Takashi Kokubun)
01:25 PM Revision 34d56255 (git): test_rubyoptions.rb: RbConfig::CONFIG['cppflags'] can be nil
not '' at least on AppVeyor
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63502 b2dd03c8-39d4-4d8f-98ff-823fe69b...
k0kubun (Takashi Kokubun)
01:22 PM Feature #2631: Allow IO#reopen to take a block
The idea of temporary intercepting any output to another IO is worth considering. Though I doubt to name that featur... Bookgoogleflights (google flights)
01:18 PM Feature #14783: String#chars_at / String#bytes_at
Is the frequency of #bytes_at common? I understand the use case
stated by Stefan (extract multiple indices via one m...
shevegen (Robert A. Heiler)
05:04 AM Feature #14783: String#chars_at / String#bytes_at
sos4nt (Stefan Schüßler) wrote:
> Because `String#[]` also returns a string in such case:
It's a different, singl...
nobu (Nobuyoshi Nakada)
12:57 PM Revision 8d988784 (git): test_rubyoptions.rb: allow passing test_verbose
with -DMJIT_FORCE_ENABLE. With -DMJIT_FORCE_ENABLE, absence of --jit
doesn't mean JIT disabled.
git-svn-id: svn+ssh:...
k0kubun (Takashi Kokubun)
08:39 AM Feature #14784: Comparable#clamp with a range
@nobu
> Why not `[chain.of.calculations, 0].max`?
Because this `chain.of.calculations` in reality could be some...
zverok (Victor Shepelev)
04:55 AM Feature #14784: Comparable#clamp with a range
zverok (Victor Shepelev) wrote:
> 3. Why do you need one-sided clamp at all? Because alternatives is much more wordy...
nobu (Nobuyoshi Nakada)
06:15 AM Revision 9fa4766e (git): mjit.c: use remove_file in clean_so_file too
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e nobu (Nobuyoshi Nakada)
02:52 AM Revision 72ad0811 (git): thread_pthread.c: avoid reading th pointer for thread cache
I suspect GC may free the rb_thread_t (th) pointer by the time
we call register_cached_thread_and_wait.
git-svn-id: ...
Eric Wong
 

Also available in: Atom