From: SASADA Koichi Date: 2015-12-24T16:16:54+09:00 Subject: [ruby-core:72467] Re: Ruby 2.3.0-preview2 Released Thank you for your summary. I added entries in NEWS (r53268). For release announcement like that https://www.ruby-lang.org/en/news/2015/12/11/ruby-2-3-0-preview2-released/ I'm afraid that your summary is too long. So that I tried to summarize typical achievements. <2.3.0preview2> Ruby 2.3 includes many performance tuning fixes. For example, optimizing Proc#call, reconsidering method entry data structure, introducing new table data structure, machine code level tuning for object allocation and method calling code, and many other optimizations. <2.3.0> Ruby 2.3 includes many performance tuning fixes. For example, optimizing Proc#call, reconsidering method entry data structure, introducing new table data structure, machine code level tuning for object allocation and method calling code, smarter instance variable data structure, Socket and I/O allow to use "exception:" keywords for high-performance non-blocking I/O and so on. Check NEWS (Implementation improvements section) for details. Corrections are welcome. (Proc#call is too trivial?) https://github.com/ruby/www.ruby-lang.org/pull/1250 is prepared announcement by naruse-san. On 2015/12/23 12:12, Eric Wong wrote: > OK. I will try (maybe Zachary and others can help edit)... > > Case dispatch is now optimized for all special constant literals > including nil, true, and false. Previously, only literal strings, > symbols, integers and floats compiled to optimized case dispatch. > https://bugs.ruby-lang.org/issues/11769 > (ed. I'm really not noticing this) > > Instance variables on non-pure Ruby classes (T_DATA, T_FILE, > etc..) is less expensive to store than before. > https://bugs.ruby-lang.org/issues/11170 > > All accesses to members of big Struct objects are performed in > constant-time. Previously, Struct elements beyond the first 10 > 10 elements used a linear scan. > https://bugs.ruby-lang.org/issues/10585 > > Fiddle::Function#call releases the GVL, allowing parallel execution > when calling 3rd-party libraries. This may expose threading bugs > in existing code using Fiddle, but Fiddle usage is currently uncommon. > https://bugs.ruby-lang.org/issues/11607 > > The Set class got several speedps: r52591 and > https://bugs.ruby-lang.org/issues/10754 > > > == Socket and I/O related changes: > > All non-blocking I/O (including socket) methods allow > `exception: false' to suppress expensive and noisy exceptions > in common usage: > https://bugs.ruby-lang.org/issues/10532 > https://bugs.ruby-lang.org/issues/11229 > > Furthermore, calling overhead of most of these keyword-using I/O > methods is reduced by avoiding the inefficient C API to parse keywords: > https://bugs.ruby-lang.org/issues/11339 > > Finally, the standard library is updated to use the improved > exception-free non-blocking I/O. This has the additional > benefit of quieter $DEBUG output in addition to reducing expensive > exceptions. > https://bugs.ruby-lang.org/issues/11044 > > Additionally, the Socket#recv* methods allow an optional > destination buffer to reduce GC pressure, based on the > existing behavior of IO#read* methods. > https://bugs.ruby-lang.org/issues/11242 > > > > (Linux-only) waiting on a single FD anywhere in the stdlib no longer > uses select(2), making it immune to slowdowns with high-numbered FDs > https://bugs.ruby-lang.org/issues/11081 > https://bugs.ruby-lang.org/issues/11377 > (probably not worth mentioning since it's Linux-only) > > Unsubscribe: > > -- // SASADA Koichi at atdot dot net Unsubscribe: