summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-09-25Describe resolv_timeout in NEWSMasaki Matsushita
2020-09-25Add comments for resolv_timeoutMasaki Matsushita
2020-09-25Add resolve_timeout to TCPSocket [Feature #17134]Masaki Matsushita
2020-09-25[ruby/psych] Forward keyword arguments in load_file and load_streamJean Boussier
https://github.com/ruby/psych/commit/4e1dd37f09
2020-09-25[ruby/psych] Bump version to 3.2.0Hiroshi SHIBATA
https://github.com/ruby/psych/commit/181a727c90
2020-09-25[ruby/psych] Revert psych versionSzymonKowalczyk
https://github.com/ruby/psych/commit/55a294fcd0
2020-09-25[ruby/psych] Update SNAKEYAML CVE-2017-18640SzymonKowalczyk
to version 1.26 https://github.com/ruby/psych/commit/b2802135e7
2020-09-25Remove private_iv_getCharles Oliver Nutter
The only remaining use of this function was to get the internal message object from an exception's hidden `mesg` instance variable to allow it to be dumped wiithout converting to a string. As discussed in #103, this exposes internal implementation details of CRuby, and ultimately does not provide any real utility to the user since they can't directly inspect this hidden variable. The test change here is to reflect CRuby behavior that denies equality if the internal message objects do not match, as is the case after the exception has been loaded and now has a simple String value. The impact to users is that exceptions with special hidden message objects will convert those objects to String during marshaling through YAML. I believe this only affects NameError and its descendants, since users can't set this field directly on their own exception types. Fixes #103.
2020-09-25refactoring a test code.Koichi Sasada
make a test more clear.
2020-09-25Ractor.yield should raise if out-port is closedKoichi Sasada
Ractor.yield should raise Ractor::ClosedError if current Ractor's outgoing-port is closed. Notes: Merged: https://github.com/ruby/ruby/pull/3578
2020-09-25frozen T_OBJECT can be shareable.Koichi Sasada
If an T_OBJECT object is frozen and all ivars are shareable, the object should be shareable. Notes: Merged: https://github.com/ruby/ruby/pull/3575
2020-09-25should not check taint flag on rubyspec.Koichi Sasada
Now taint flag is obsolete and it is used fro shareaable flag. So we should not check this flag. Notes: Merged: https://github.com/ruby/ruby/pull/3575
2020-09-25enrich comment卜部昌平
Added description and URL about nested flexible array member. Notes: Merged: https://github.com/ruby/ruby/pull/3570
2020-09-25ext/-test-/RUBY_ALIGNOF: skip C++ when no compiler卜部昌平
C++ compilers are optional. Skip C++ tests when they are absent. Notes: Merged: https://github.com/ruby/ruby/pull/3570
2020-09-25RBIMPL_ALIGNOF: do not use constexpr卜部昌平
Was definitely a bad idea to use constexpr. It is not ubiquitous. Notes: Merged: https://github.com/ruby/ruby/pull/3570
2020-09-25ext/-test-/RUBY_ALIGNOF: add minimalistic test卜部昌平
Check if RUBY_ALIGNOF(double) is the alignment to store a double inside of a struct. Notes: Merged: https://github.com/ruby/ruby/pull/3570
2020-09-25ALLOCA_N: do not use RUBY_ALIGNOF卜部昌平
Now that RUBY_ALIGNOF behaves like C11's _Alignof. This is not necessarily the best stack arrangement. We can just give up using __builtin_alloca_with_align(), and let alloca choose what is optimal. Notes: Merged: https://github.com/ruby/ruby/pull/3570
2020-09-25RBIMPL_ALIGNOF: do not use __alignof__卜部昌平
It is reported that on a system of i386 System V ABI, GCC returns 8 for __alignof__(double). OTOH the ABI defines alignments of double to be 4, and ISO/IEC 9899:2011 reads that _Alignof(double) shall return 4 on such machine. What we want in ruby is 4 instead of 8 there. We cannot use __alignof__. Additionally, both old GCC / old clang return 8 for _Alignof(double) on such platforms. They are their bugs, and already fixed in recent versions. But we have to support older compilers for a while. Shall check sanity of _Alignof. Notes: Merged: https://github.com/ruby/ruby/pull/3570
2020-09-25rb_cv_have_alignas: not used any longer卜部昌平
Availability of `alignas` is checked in include/ruby/internal/stdalign.h now. That does not need this configure check. Also as commented in the header, we see `_Alignas` being inadequate for our purpose. Notes: Merged: https://github.com/ruby/ruby/pull/3570
2020-09-25Disable deprecation warning by the default [Feature #16345]Nobuyoshi Nakada
And `-w` option turns it on. Notes: Merged: https://github.com/ruby/ruby/pull/3481
2020-09-24Enhanced RDoc for String#match? (#3576)Burdette Lamar
* Enhanced RDoc for String#match? Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-09-25Revert "[ruby/webrick] Add test for shutdown_pipe"Hiroshi SHIBATA
This reverts commit c06eab13290757fc326bb2a6e3ac25cd53e00894.
2020-09-25Revert "[ruby/webrick] Fix shutdown_pipe test issue"Hiroshi SHIBATA
This reverts commit b8fdd38b2e01abcfd4cc8d007a3b3afb285f5ddb.
2020-09-24Enhanced RDoc for String (#3574)Burdette Lamar
Methods: =~ match Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-09-24Enhanced RDoc for String (#3569)Burdette Lamar
Makes some methods doc compliant with https://github.com/ruby/ruby/blob/master/doc/method_documentation.rdoc. Also, other minor revisions to make more consistent. Methods: == === eql? <=> casecmp casecmp? index rindex Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-09-25* 2020-09-25 [ci skip]git
2020-09-25Ractor#close_outgoping cancel Ractor.yieldKoichi Sasada
Ractor#close_outgoing should cancel waiting Ractor.yield. However, yield a value by the Ractor's block should not cancel (to recognize terminating Ractor, introduce rb_ractor_t::yield_atexit flag). Notes: Merged: https://github.com/ruby/ruby/pull/3572
2020-09-24Revert "[ruby/webrick] Allow empty POST and PUT requests without content length"Hiroshi SHIBATA
This reverts commit ed12019ce6abe87aac87ec77ac081d37b25180a2. https://github.com/ruby/ruby/runs/1160423667?check_suite_focus=true#step:14:752
2020-09-24[ruby/webrick] Manually pick commit from upstream repoHiroshi SHIBATA
Fix test when run with US-ASCII encoding https://github.com/ruby/webrick/commit/f402aafb36bbd43be54621405da550643a1a1a4c
2020-09-24[ruby/webrick] Allow shutdown_pipe to be passed in via @configJohn W Higgins
https://github.com/ruby/webrick/commit/30152b4bf9
2020-09-24[ruby/webrick] Only run test_big_bodies test on Ruby 2.5+Jeremy Evans
It was added after Ruby 2.5, and it looks like it never ran correctly on Ruby <2.5. https://github.com/ruby/webrick/commit/65fb03cb6a
2020-09-24[ruby/webrick] Allow empty POST and PUT requests without content lengthJeremy Evans
RFC 7230 section 3.3.3 allows for this. Fixes #30 https://github.com/ruby/webrick/commit/069e9b1908
2020-09-24[ruby/webrick] Allow EPROTOTYPE error when writing junk to a socketJeremy Evans
MacOS seems to raise this error in some cases. https://github.com/ruby/webrick/commit/0f0c9f1e61
2020-09-24[ruby/webrick] Fix shutdown_pipe test issueJohn W Higgins
https://github.com/ruby/webrick/commit/9676704c60
2020-09-24[ruby/webrick] Ensure server port numbers are numeric and ensure they are ↵John W Higgins
stored as integers https://github.com/ruby/webrick/commit/86ed621e11
2020-09-24[ruby/webrick] Add test for shutdown_pipeJohn W Higgins
https://github.com/ruby/webrick/commit/1daacc1849
2020-09-24[ruby/webrick] Do not use ensure in a block without beginJeremy Evans
This syntax is not supported until Ruby 2.5, and Webrick still targets Ruby 2.3+. https://github.com/ruby/webrick/commit/fbe85b885f
2020-09-24[ruby/webrick] Make readpartial limit chunk to appropriate sizeJohn W Higgins
https://github.com/ruby/webrick/commit/e693f501bd
2020-09-24[ruby/webrick] Skip env-locale-sensitive CGI test on the "java" platformCharles Oliver Nutter
JRuby's environment variables are provided by the Java Development Kit's (JDK's) classes, which present them as a map from string to string. In order to do this, those environment variable names and values must be decoded into characters, which breaks any variables that are intended to be "raw" bytes not necessarily decodable with the default system encoding. This issue is detailed in jruby/jruby#6248. The only solution on the JRuby side will be to bypass the JDK environment variable API and go directly to the native getenv/setenv system calls. This is not likely to happen in the near future, due to the complexity of such a change and the rarity of undecodable environment values. The exclude here was added due to the Windows platform also having a similar sensitivity to character encodings when working with environment variables. It seems appropriate to expand this skip to the "java" platform, as the root issue is largely the same. https://github.com/ruby/webrick/commit/dc453e5c3c
2020-09-24test/net/http/test_https.rb: The test logic was buggyYusuke Endoh
The expected certs must be `[CA_CERT, SERVER_CERT]` before 1.1.1g and `[SERVER_CERT]` after 1.1.1h.
2020-09-24test/net/http/test_https.rb: the order of verify_callback seems to varyYusuke Endoh
... depending upon the environment.
2020-09-24test/ostruct/test_ostruct.rb: Prevent "method redefined; discarding old foo"Yusuke Endoh
2020-09-24test/fiber/scheduler.rb: Prevent "instance variable @urgent not initialized"Yusuke Endoh
2020-09-24test/net/http/test_https.rb: Stop the error due to openssl 1.1.1hYusuke Endoh
On some environments that uses OpenSSL 1.1.1h, the two tests now fail. http://rubyci.s3.amazonaws.com/android29-x86_64/ruby-master/log/20200924T062352Z.fail.html.gz https://github.com/ruby/ruby/runs/1159288773?check_suite_focus=true ``` 1) Failure: TestNetHTTPS#test_get [/data/data/com.termux/files/home/cb/tmp/build/20200924T062352Z/ruby/test/net/http/test_https.rb:47]: <"0\x82\x03\xED0\x82\x02\xD5\xA0\x03..."> expected but was <"0\x82\x03\xE30\x82\x02\xCB\xA0\x03...">. ``` Not sure why, but verify_callback now seems to receive only SERVER_CERT but not CA_CERT. It would be good to investigate the issue furthermore, but tentatively, I want to stop the failures.
2020-09-24add GC_GUARDKoichi Sasada
We observed mark miss on this point so we add RB_GC_GUARD() to avoid wrong free.
2020-09-24sync rb_gc_register_mark_object()Koichi Sasada
rb_vm_t::mark_object_ary is global resource so we need to synchronize to access it.
2020-09-24Remove test for putiseq insnMichael Lindley
putiseq was removed from instruction set in 2b5bb8a0 Notes: Merged: https://github.com/ruby/ruby/pull/3491
2020-09-23Document difference between Thread::Backtrace::Location#{,absolute_}pathJeremy Evans
They are usually the same, except for locations in the main script.
2020-09-24* 2020-09-24 [ci skip]git
2020-09-23Improve the performance of supereileencodes
This PR improves the performance of `super` calls. While working on some Rails optimizations jhawthorn discovered that `super` calls were slower than expected. The changes here do the following: 1) Adds a check for whether the call frame is not equal to the method entry iseq. This avoids the `rb_obj_is_kind_of` check on the next line which is quite slow. If the current call frame is equal to the method entry we know we can't have an instance eval, etc. 2) Changes `FL_TEST` to `FL_TEST_RAW`. This is safe because we've already done the check for `T_ICLASS` above. 3) Adds a benchmark for `T_ICLASS` super calls. 4) Note: makes a chage for `method_entry_cref` to use `const`. On master the benchmarks showed that `super` is 1.76x slower. Our changes improved the performance so that it is now only 1.36x slower. Benchmark IPS: ``` Warming up -------------------------------------- super 244.918k i/100ms method call 383.007k i/100ms Calculating ------------------------------------- super 2.280M (± 6.7%) i/s - 11.511M in 5.071758s method call 3.834M (± 4.9%) i/s - 19.150M in 5.008444s Comparison: method call: 3833648.3 i/s super: 2279837.9 i/s - 1.68x (± 0.00) slower ``` With changes: ``` Warming up -------------------------------------- super 308.777k i/100ms method call 375.051k i/100ms Calculating ------------------------------------- super 2.951M (± 5.4%) i/s - 14.821M in 5.039592s method call 3.551M (± 4.9%) i/s - 18.002M in 5.081695s Comparison: method call: 3551372.7 i/s super: 2950557.9 i/s - 1.20x (± 0.00) slower ``` Ruby VM benchmarks also showed an improvement: Existing `vm_super` benchmark`. ``` $ make benchmark ITEM=vm_super | |compare-ruby|built-ruby| |:---------|-----------:|---------:| |vm_super | 21.555M| 37.819M| | | -| 1.75x| ``` New `vm_iclass_super` benchmark: ``` $ make benchmark ITEM=vm_iclass_super | |compare-ruby|built-ruby| |:----------------|-----------:|---------:| |vm_iclass_super | 1.669M| 3.683M| | | -| 2.21x| ``` This is the benchmark script used for the benchmark-ips benchmarks: ```ruby require "benchmark/ips" class Foo def zuper; end def top; end last_method = "top" ("A".."M").each do |module_name| eval <<-EOM module #{module_name} def zuper; super; end def #{module_name.downcase} #{last_method} end end prepend #{module_name} EOM last_method = module_name.downcase end end foo = Foo.new Benchmark.ips do |x| x.report "super" do foo.zuper end x.report "method call" do foo.m end x.compare! end ``` Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org> Co-authored-by: John Hawthorn <john@hawthorn.email> Notes: Merged: https://github.com/ruby/ruby/pull/3545