-
Notifications
You must be signed in to change notification settings - Fork 114
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Treat encodings in exception correctly #237
Merged
aycabta
merged 1 commit into
ruby:master
from
aycabta:treat-encodings-in-exception-correctly
May 11, 2021
Merged
Treat encodings in exception correctly #237
aycabta
merged 1 commit into
ruby:master
from
aycabta:treat-encodings-in-exception-correctly
May 11, 2021
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
6782dda
to
4452adb
Compare
koic
added a commit
to koic/irb
that referenced
this pull request
May 11, 2021
Follow ruby#237. This PR fixes the following `Encoding::ConverterNotFoundError`. ```console % bin/spring stop && bin/rails c Spring stopped. Running via Spring preloader in process 58395 Loading development environment (Rails 6.0.3.7) irb(main):001:0> "こんにちは".do_something Traceback (most recent call last): (snip) 12: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:547:in `eval_input' 11: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:232:in `each_top_level_statement' 10: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:232:in `catch' 9: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:233:in `block in each_top_level_statement' 8: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:233:in `loop' 7: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:251:in `block (2 levels) in each_top_level_statement' 6: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:548:in `block in eval_input' 5: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:758:in `signal_status' 4: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:586:in `block (2 levels) in eval_input' 3: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:650:in `handle_exception' 2: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:601:in `encode_with_invalid_byte_sequence' 1: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:601:in `new' /Users/koic/src/github.com/ruby/irb/lib/irb.rb:601:in `initialize': code converter not found (UTF-8 to UTF-8) (Encoding::ConverterNotFoundError) ``` First, this patch skips `Encoding::Converter.new` for the same encoding. https://github.com/ruby/irb/blob/170531df19bce289444afe97360480efed5f27f0/lib/irb.rb#L601 Next, this is a talk about the condition for skipping. `IRB.conf[:LC_MESSAGES].encoding` becomes `"UTF-8"` string when `Reline.encoding_system_needs.name` is set in the below. https://github.com/ruby/irb/blob/170531df19bce289444afe97360480efed5f27f0/lib/irb/input-method.rb#L269 OTOH, `message.encoding` is `Encoding::UTF_8`, so these are compared as a string by this patch.
matzbot
pushed a commit
to ruby/ruby
that referenced
this pull request
May 11, 2021
Follow ruby/irb#237. This PR fixes the following `Encoding::ConverterNotFoundError`. ```console % bin/spring stop && bin/rails c Spring stopped. Running via Spring preloader in process 58395 Loading development environment (Rails 6.0.3.7) irb(main):001:0> "こんにちは".do_something Traceback (most recent call last): (snip) 12: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:547:in `eval_input' 11: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:232:in `each_top_level_statement' 10: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:232:in `catch' 9: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:233:in `block in each_top_level_statement' 8: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:233:in `loop' 7: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:251:in `block (2 levels) in each_top_level_statement' 6: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:548:in `block in eval_input' 5: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:758:in `signal_status' 4: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:586:in `block (2 levels) in eval_input' 3: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:650:in `handle_exception' 2: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:601:in `encode_with_invalid_byte_sequence' 1: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:601:in `new' /Users/koic/src/github.com/ruby/irb/lib/irb.rb:601:in `initialize': code converter not found (UTF-8 to UTF-8) (Encoding::ConverterNotFoundError) ``` First, this patch skips `Encoding::Converter.new` for the same encoding. https://github.com/ruby/irb/blob/170531df19bce289444afe97360480efed5f27f0/lib/irb.rb#L601 Next, this is a talk about the condition for skipping. `IRB.conf[:LC_MESSAGES].encoding` becomes `"UTF-8"` string when `Reline.encoding_system_needs.name` is set in the below. https://github.com/ruby/irb/blob/170531df19bce289444afe97360480efed5f27f0/lib/irb/input-method.rb#L269 OTOH, `message.encoding` is `Encoding::UTF_8`, so these are compared as a string by this patch. ruby/irb@6df6e76cfc
maximecb
added a commit
to Shopify/yjit
that referenced
this pull request
May 14, 2021
* compile.c: Pass node instead of nd_line(node) to ADD_INSN* functions ... then, new_insn_core extracts nd_line(node). Also, if a macro "EXPERIMENTAL_ISEQ_NODE_ID" is defined, this changeset keeps nd_node_id(node) for each instruction. This is intended for TypeProf to identify what AST::Node corresponds to each instruction. This patch is originally authored by @yui-knk for showing which column a NoMethodError occurred. ruby/ruby@master...yui-knk:feature/node_id Co-Authored-By: Yuichiro Kaneko <yui-knk@ruby-lang.org> * Fixed shorten-64-to-32 errors when USE_COMBINATION_EXPLOSION_CHECK * What's Here for class File (#4460) What's Here for class File * * 2021-05-08 [ci skip] * What's Here for class Dir (#4472) What's Here for class Dir * Shrink timev.rb iseq size * [ruby/irb] Dump ancestors' methods by ls command ruby/irb@73edff287c * [ruby/irb] Deal with different screen sizes ruby/irb@7118b3322f * Fix example code in Array#max doc `[0, 1, 2, 3].max(6)` actually returns `[3, 2, 1, 0]`, but the doc said it returns `[3, 2, 1]`. * Enhanced RDoc for Enumerable (#4473) Enhanced RDoc for Enumerable: #grep and #grep_v. * * 2021-05-09 [ci skip] * Fix Math.cbrt(0.0) on glibc This should return 0, but on glibc it returned NaN. Fixes [Bug #17804] * rb_fiber_new_kw: doesn't exist Not against having such thing but currently we lack one. * * 2021-05-10 [ci skip] * LEGAL: Remove entries that no longer exist lib/bundler.gemspec and man/bundle-*,gemfile.* are now under the directory lib/bundler/. * Removed missing/dup2.c This function should be always available, as POSIX-compliant or Windows platform are required since 1.9. Also the code in this file is MT-unsafe. * [ruby/set] Adding section: What's Here ruby/set@ab81354de1 * [ruby/set] Adding section: What's Here ruby/set@254d927c8c * [ruby/set] Adding section: What's Here ruby/set@8f4c62768d * [ruby/set] Adding section: What's Here ruby/set@257dc452a7 * Add a space to separate sentences in the error message * [ruby/set] set is also dual licenses ruby/set@fc24457e53 * [ruby/psych] Use test-unit instead of minitest ruby/psych@01e7310dd3 * [ruby/psych] Use Ractor constant for ignoreing condition ruby/psych@cc5f957327 * [ruby/psych] Fixed test-case for NaN ruby/psych@f85a008263 * [ruby/psych] Use pend instead of skip ruby/psych@efd2a62c9a * [ruby/psych] Use assert_raise instead of assert_raises ruby/psych@e6ad12b4e1 * [ruby/psych] Cache access to Psych.load_tags in Visitor::ToRuby ruby/psych@58223f0426 * [ruby/psych] Cache dispatch cache in an instance variable ruby/psych@285c461cd2 * [ruby/psych] Fix custom marshalization with symbolize_names: true ruby/psych@ee26f26ab5 * [ruby/psych] Update to latest SnakeYAML Fixes jruby/jruby#6365 ruby/psych@a88ff77f02 * [ruby/psych] docs: fix simple typo, expessed -> expressed There is a small typo in ext/psych/yaml/yaml.h. Should read `expressed` rather than `expessed`. ruby/psych@1150d669cb * [ruby/psych] bump version ruby/psych@091cd46b1f * [ruby/psych] Fix some typos [ci skip] ruby/psych@98617e55a1 * Enhanced RDoc for Enumerable (#4479) Methods treated: #count #find #find_index #select #filter_map #reject #map #flat_map * * 2021-05-11 [ci skip] * .github/compilers/workflows.yml: support GCC-11 GCC 11.1 was released. https://gcc.gnu.org/pipermail/gcc/2021-April/235922.html See also ruby/ruby-ci-image#1 * [ruby/irb] Treat encodings in exception correctly ruby/irb@4452adbe04 * Simplify syncing bundler These files no longer exist upstream, so they don't need to be synced. * Properly synchronize bundler gemspec too By making the necessary modifications automatically. * Sync bundler & rubygems at the same time * Sync bundler & rubygems * [ruby/resolv] Fix confusion of received response message This is a follow up for commit 33fb966197f1 ("Remove sender/message_id pair after response received in resolv", 2020-09-11). As the @senders instance variable is also used for tracking transaction ID allocation, simply removing an entry without releasing the ID would eventually deplete the ID space and cause Resolv::DNS.allocate_request_id to hang. It seems the intention of the code was to check that the received DNS message is actually the response for the question made within the method earlier. Let's have it actually do so. [Bug #12838] https://bugs.ruby-lang.org/issues/12838 [Bug #17748] https://bugs.ruby-lang.org/issues/17748 ruby/resolv@53ca9c9209 * [ruby/irb] Skip the new IRB test on Windows for now It's not passing from the beginning https://github.com/ruby/ruby/runs/2550929220 https://ci.appveyor.com/project/ruby/ruby/builds/39100747 ruby/irb@71fc180018 * Retry choco install by using a wrapper provided by GitHub Actions actions/runner-images#721 to address failures like https://github.com/ruby/ruby/runs/2551980671 * Try running Choco-Install with powershell https://github.com/ruby/ruby/runs/2552047430 * test/irb/test_raise_no_backtrace_exception.rb: UTF-8 is expected ... for the output of assert_in_out_err. This will fix the following failure on many CI machines http://rubyci.s3.amazonaws.com/arch/ruby-master/log/20210511T030005Z.fail.html.gz ``` 1) Failure: TestIRB::TestRaiseNoBacktraceException#test_raise_exception_with_different_encoding_containing_invalid_byte_sequence [/home/chkbuild/chkbuild/tmp/build/20210511T030005Z/ruby/test/irb/test_raise_no_backtrace_exception.rb:41]: pid 221531 exit 0. 1. [1/2] Assertion for "stdout" | invalid byte sequence in US-ASCII. ``` * Split a Choco-Install command In https://github.com/ruby/ruby/runs/2552065052, while it failed to install winflexbison3, it exited the retry loop because openssl was installed successfully. https://github.com/actions/virtual-environments/blob/a5ee51f72dcbc3879a91a74c63f95737e2d4a292/images/win/scripts/ImageHelpers/ChocoHelpers.ps1 * Explicitly specify encoding for another test as well Same as e2ccc33 https://ci.appveyor.com/project/ruby/ruby/builds/39102539/job/k8m1yrrjesxbgvtq * [ruby/irb] Skip test_raise_exception_with_invalid_byte_sequence on Windows for now. It seems like we haven't figured this out yet. ruby/irb@ecf5a1ace1 * [ruby/irb] Fix `Encoding::ConverterNotFoundError` Follow ruby/irb#237. This PR fixes the following `Encoding::ConverterNotFoundError`. ```console % bin/spring stop && bin/rails c Spring stopped. Running via Spring preloader in process 58395 Loading development environment (Rails 6.0.3.7) irb(main):001:0> "こんにちは".do_something Traceback (most recent call last): (snip) 12: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:547:in `eval_input' 11: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:232:in `each_top_level_statement' 10: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:232:in `catch' 9: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:233:in `block in each_top_level_statement' 8: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:233:in `loop' 7: from /Users/koic/src/github.com/ruby/irb/lib/irb/ruby-lex.rb:251:in `block (2 levels) in each_top_level_statement' 6: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:548:in `block in eval_input' 5: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:758:in `signal_status' 4: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:586:in `block (2 levels) in eval_input' 3: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:650:in `handle_exception' 2: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:601:in `encode_with_invalid_byte_sequence' 1: from /Users/koic/src/github.com/ruby/irb/lib/irb.rb:601:in `new' /Users/koic/src/github.com/ruby/irb/lib/irb.rb:601:in `initialize': code converter not found (UTF-8 to UTF-8) (Encoding::ConverterNotFoundError) ``` First, this patch skips `Encoding::Converter.new` for the same encoding. https://github.com/ruby/irb/blob/170531df19bce289444afe97360480efed5f27f0/lib/irb.rb#L601 Next, this is a talk about the condition for skipping. `IRB.conf[:LC_MESSAGES].encoding` becomes `"UTF-8"` string when `Reline.encoding_system_needs.name` is set in the below. https://github.com/ruby/irb/blob/170531df19bce289444afe97360480efed5f27f0/lib/irb/input-method.rb#L269 OTOH, `message.encoding` is `Encoding::UTF_8`, so these are compared as a string by this patch. ruby/irb@6df6e76cfc * Alias assert/refute_path_exists for test-unit gem. It's required at rubygems/rubygems#3141 * test/irb/test_raise_no_backtrace_exception.rb: Set LC_MESSAGES as UTF-8 * Fix a typo of c6a11b8 It failed to define `refute_path_not_exist` * Workaround for make test-tool * Method cache: fix refinement entry handling To invalidate some callable method entries, we replace the entry in the class. Most types of method entries are on the method table of the origin class, but refinement entries without an orig_me are housed in the method table of the class itself. They are there because refinements take priority over prepended methods. By unconditionally inserting a copy of the refinement entry into the origin class, clearing the method cache created situations where there are refinement entry duplicates in the lookup chain, leading to infinite loops and other problems. Update the replacement logic to use the right class that houses the method entry. Also, be more selective about cache invalidation when moving refinement entries for prepend. This avoids calling clear_method_cache_by_id_in_class() before refinement entries are in the place it expects. [Bug #17806] * * 2021-05-12 [ci skip] * Add a cache for class variables This change implements a cache for class variables. Previously there was no cache for cvars. Cvar access is slow due to needing to travel all the way up th ancestor tree before returning the cvar value. The deeper the ancestor tree the slower cvar access will be. The benefits of the cache are more visible with a higher number of included modules due to the way Ruby looks up class variables. The benchmark here includes 26 modules and shows with the cache, this branch is 6.5x faster when accessing class variables. ``` compare-ruby: ruby 3.1.0dev (2021-03-15T06:22:34Z master 9e5105c) [x86_64-darwin19] built-ruby: ruby 3.1.0dev (2021-03-15T12:12:44Z add-cache-for-clas.. c6be0093ae) [x86_64-darwin19] | |compare-ruby|built-ruby| |:--------|-----------:|---------:| |vm_cvar | 5.681M| 36.980M| | | -| 6.51x| ``` Benchmark.ips calling `ActiveRecord::Base.logger` from within a Rails application. ActiveRecord::Base.logger has 71 ancestors. The more ancestors a tree has, the more clear the speed increase. IE if Base had only one ancestor we'd see no improvement. This benchmark is run on a vanilla Rails application. Benchmark code: ```ruby require "benchmark/ips" require_relative "config/environment" Benchmark.ips do |x| x.report "logger" do ActiveRecord::Base.logger end end ``` Ruby 3.0 master / Rails 6.1: ``` Warming up -------------------------------------- logger 155.251k i/100ms Calculating ------------------------------------- ``` Ruby 3.0 with cvar cache / Rails 6.1: ``` Warming up -------------------------------------- logger 1.546M i/100ms Calculating ------------------------------------- logger 14.857M (± 4.8%) i/s - 74.198M in 5.006202s ``` Lastly we ran a benchmark to demonstate the difference between master and our cache when the number of modules increases. This benchmark measures 1 ancestor, 30 ancestors, and 100 ancestors. Ruby 3.0 master: ``` Warming up -------------------------------------- 1 module 1.231M i/100ms 30 modules 432.020k i/100ms 100 modules 145.399k i/100ms Calculating ------------------------------------- 1 module 12.210M (± 2.1%) i/s - 61.553M in 5.043400s 30 modules 4.354M (± 2.7%) i/s - 22.033M in 5.063839s 100 modules 1.434M (± 2.9%) i/s - 7.270M in 5.072531s Comparison: 1 module: 12209958.3 i/s 30 modules: 4354217.8 i/s - 2.80x (± 0.00) slower 100 modules: 1434447.3 i/s - 8.51x (± 0.00) slower ``` Ruby 3.0 with cvar cache: ``` Warming up -------------------------------------- 1 module 1.641M i/100ms 30 modules 1.655M i/100ms 100 modules 1.620M i/100ms Calculating ------------------------------------- 1 module 16.279M (± 3.8%) i/s - 82.038M in 5.046923s 30 modules 15.891M (± 3.9%) i/s - 79.459M in 5.007958s 100 modules 16.087M (± 3.6%) i/s - 81.005M in 5.041931s Comparison: 1 module: 16279458.0 i/s 100 modules: 16087484.6 i/s - same-ish: difference falls within error 30 modules: 15891406.2 i/s - same-ish: difference falls within error ``` Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org> * Filling cache values on cvar write Instead of on read. Once it's in the inline cache we never have to make one again. We want to eventually put the value into the cache, and the best opportunity to do that is when you write the value. * Revert "Filling cache values on cvar write" This reverts commit 08de37f. This reverts commit e8ae922. * Run nmake check on Actions (#4487) * Run nmake check on Actions * Skip tests not working in mswin GitHub Actions * Override TEMP * Revert "Skip tests not working in mswin GitHub Actions" This reverts commit 544d2575fcdf23ae63cd25aa03fce10c28b259f2. * Revert "Revert "Skip tests not working in mswin GitHub Actions"" This reverts commit e1f8ad7862c9c4be52dc6e1031a004621eb07e6e. * Fix timeouts * Skip some more broken tests * Update windows.yml * Add a guard for rbasic_spec * Revert "Update windows.yml" This reverts commit bc9694b6b3b9594d406378d15ca11723fb052bc8. * Skip the ensure clause * Simplify the ensure * Update keyword argument description in method syntax guide Remove discussion of Ruby 2.7 specific handling of keyword argument separation. Add a small example of keyword to positional hash conversion for methods not accepting keyword arguments. * [ruby/net-ftp] Bump version to 0.1.2 ruby/net-ftp@895ba44b3c * cdhash_cmp: can take rational literals Rational literals are those integers suffixed with `r`. They tend to be a part of more complex expressions like `123/456r`, but in theory they can live alone. When such "bare" rational literals are passed to case-when branch, we have to take care of them. Fixes [Bug #17854] * cdhash_cmp: rational literals with fractions Nobu kindly pointed out that rational literals can have fractions. * cdhash_cmp: can also take complex There are complex literals `123i`, which can also be a case condition. * cdhash_cmp: recursively apply For instance a rational's numerator can be a bignum. Comparison using C's == can be insufficient. * cdhash_cmp: should use || cf: ruby/ruby#4469 (comment) * test_cdhash: refactor change class It is now strange to test Complex in a class named Rational_Test. * suppress warnings on repeat tests. Constant definitions are affect on outer namespace of an anonymous module. To define constants on the anonymous module, this patch uses Module#class_eval(str). * skip test for debug. test_memsize_of_iseq fails on repeat tests and it seems to difficult to solve immediately. Now this test is skipped. It seems that the result of `memsize_of(Object.new)` are increased. Why...? * [rubygems/rubygems] Use test-unit instead of minitest rubygems/rubygems@a8571524ad * [rubygems/rubygems] Use capture_output instead of capture_io. rubygems/rubygems@ad9206d4d0 * [rubygems/rubygems] Also use capture_output instead of capture_io rubygems/rubygems@229858ea56 * [rubygems/rubygems] Use Regexp with refute_match rubygems/rubygems@51fdbe53bc * [rubygems/rubygems] Extract assert_output to assert_empty and assert_equal with capture_output rubygems/rubygems@f6759440a4 * [rubygems/rubygems] Use assert_path_exist and assert_path_not_exist instead of assert_path_exists and refute_path_exists rubygems/rubygems@a7c93558c3 * [rubygems/rubygems] Use capture_output instead of capture_io for test-unit rubygems/rubygems@ab9c80d4cb * [rubygems/rubygems] Use capture_output instead of assert_silent rubygems/rubygems@3225aab7f8 * [rubygems/rubygems] Use dummy assertion for assert_https rubygems/rubygems@64d843fe17 * [rubygems/rubygems] Use assert_raise instead of assert_raises rubygems/rubygems@769e87f011 * [rubygems/rubygems] Use capture_output instead of capture_io rubygems/rubygems@c46185abe3 * [rubygems/rubygems] Rewrite with capture_output rubygems/rubygems@a091004ded * [rubygems/rubygems] Import capture_subprocess_io from minitest rubygems/rubygems@8b2ca6df3a * [rubygems/rubygems] Fixed variable scope at test_silent_system rubygems/rubygems@bfcdf79657 * [rubygems/rubygems] capture_output will return empty string, not nil rubygems/rubygems@3fa93f6144 * [rubygems/rubygems] Removed minitest/mock from test_gem_package_tar_writer.rb rubygems/rubygems@45464bfcbd * [rubygems/rubygems] Removed minitest/mock from test/rubygems/test_gem_remote_fetcher.rb rubygems/rubygems@f1af59fe02 * [rubygems/rubygems] Don't use Minitest::Mock rubygems/rubygems@d3fa893597 * [rubygems/rubygems] util/rubocop -a rubygems/rubygems@a10ff97830 * [rubygems/rubygems] Replace skip to pend rubygems/rubygems@0b145135c7 * [rubygems/rubygems] Added comment for Minitest::Mock rubygems/rubygems@ae44b68d57 * [rubygems/rubygems] Fixed an intentional blank-line rubygems/rubygems@795b572ac2 * [rubygems/rubygems] Removed the related code for minitest-bisect rubygems/rubygems@83ebdec27a * [rubygems/rubygems] Update the link of minitest code with the commit hash. rubygems/rubygems@e7280f8d30 * [rubygems/rubygems] Added begin-end block for java platform Because pend of test-unit raises exception. rubygems/rubygems@b5e2d0855a * Revert 924ce2c5ba4d1c1dc781a6a06682204d358421bb Because test-unit didn't provide the benchmark test. And This test is fragile with the several environments. * Use assert_raise instead of assert_raises * Use another class for the comparison. `memsize_of(Object.new)` can be changed with past ivar creation history for Object instances (another Object instance has 4 or more ivars, next created Object instance has the area for the ivars). So use antoher class for the comparison. * * remove trailing spaces. [ci skip] * parse.y: Allow "command" syntax in endless method definition This change allows `def hello = puts "Hello"` without parentheses. Note that `private def hello = puts "Hello"` does not parse for technical reason. [Feature #17398] * * 2021-05-13 [ci skip] * [rubygems/rubygems] Use `Time.stub :now` to avoid a random failure Essentially this reverts 45464bfcbdf9f9cfb440950bc57a27d237627a17. The commit removed a mock of Time.now, which caused a random failure. http://rubyci.s3.amazonaws.com/ubuntu1804/ruby-master/log/20210512T123004Z.fail.html.gz ``` 1) Failure: TestGemPackageTarWriter#test_add_file_signer [/home/chkbuild/chkbuild/tmp/build/20210512T123004Z/ruby/test/rubygems/test_gem_package_tar_writer.rb:117]: Field mtime of the tar header differs.. <"14046746312\u0000"> expected but was <"14046746311\x00">. ``` Object#stub is defined at f1af59fe02ef2cc58f13e2742e4cc6cf8c2a1a20, so now `Time.stub :now` works. rubygems/rubygems@85f60a9ed0 * Fix handling of control/meta escapes in literal regexps Ruby uses a recursive algorithm for handling control/meta escapes in strings (read_escape). However, the equivalent code for regexps (tokadd_escape) in did not use a recursive algorithm. Due to this, Handling of control/meta escapes in regexp did not have the same behavior as in strings, leading to behavior such as the following returning nil: ```ruby /\c\xFF/ =~ "\c\xFF" ``` Switch the code for handling \c, \C and \M in literal regexps to use the same code as for strings (read_escape), to keep behavior consistent between the two. Fixes [Bug #14367] * Avoid improper optimization of case statements mixed integer/rational/complex Fixes [Bug #17857] * Also `\U` after control/meta is invalid [Bug #17861] As well as `\u`, `\U` should be invalid there too. And highlight including `u`/`U` not only the backslash before it. * Try to fix MJIT symbol clash with cargo cult Co-authored-by: Yusuke Endoh <mame@ruby-lang.org> Co-authored-by: Yuichiro Kaneko <yui-knk@ruby-lang.org> Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Co-authored-by: Burdette Lamar <BurdetteLamar@Yahoo.com> Co-authored-by: git <svn-admin@ruby-lang.org> Co-authored-by: Masataka Pocke Kuwabara <kuwabara@pocke.me> Co-authored-by: Jeremy Evans <code@jeremyevans.net> Co-authored-by: 卜部昌平 <shyouhei@ruby-lang.org> Co-authored-by: Andrei Beliankou <arbox@yandex.ru> Co-authored-by: Hiroshi SHIBATA <hsbt@ruby-lang.org> Co-authored-by: Jean Boussier <jean.boussier@gmail.com> Co-authored-by: Charles Oliver Nutter <headius@headius.com> Co-authored-by: Tim Gates <tim.gates@iress.com> Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org> Co-authored-by: Ryuta Kamizono <kamipo@gmail.com> Co-authored-by: aycabta <aycabta@gmail.com> Co-authored-by: David Rodríguez <deivid.rodriguez@riseup.net> Co-authored-by: Kazuki Yamaguchi <k@rhe.jp> Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com> Co-authored-by: Koichi ITO <koic.ito@gmail.com> Co-authored-by: Alan Wu <XrXr@users.noreply.github.com> Co-authored-by: eileencodes <eileencodes@gmail.com> Co-authored-by: Shugo Maeda <shugo@ruby-lang.org> Co-authored-by: Koichi Sasada <ko1@atdot.net>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This fixes #229.