Skip to content
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

Split docker images #1

Merged
merged 2 commits into from
May 11, 2021
Merged

Split docker images #1

merged 2 commits into from
May 11, 2021

Conversation

shyouhei
Copy link
Member

@shyouhei shyouhei commented May 7, 2021

GCC 11 was released. However Ubuntu bionic no longer ships it. Newer versions lack LLVM 3.9. We have to split the image into each compilers.

GCC 11 was released.  However Ubuntu bionic no longer ships it.  Newer
versions lack LLVM 3.9.  We have to split the image into each compilers.
@shyouhei shyouhei marked this pull request as ready for review May 10, 2021 03:40
@@ -0,0 +1,15 @@
deb http://ppa.launchpad.net/ubuntu-toolchain-r/ppa/ubuntu focal main
deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal main
Copy link
Member

@junaruga junaruga May 10, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see the ubuntu-toolchain-r repository is used to download gcc-11 on focal, right? I think that's a good idea!

I wondered why ruby/ruby's .github/workflows/compilers.yml did not use it before while we had used the repository in .travis.yml in the past.

@junaruga
Copy link
Member

I found tailing spaces. Could you remove it?

$ grep -rn ' $' assets/
assets/99bionic.list:1:deb http://ppa.launchpad.net/ubuntu-toolchain-r/ppa/ubuntu bionic main 
assets/99bionic.list:2:deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic  main 
assets/99bionic.list:8:deb-src http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic main 
assets/99focal.list:1:deb http://ppa.launchpad.net/ubuntu-toolchain-r/ppa/ubuntu focal main 
assets/99focal.list:2:deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal  main 
assets/99focal.list:10:deb-src http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal main

key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- uses: docker/setup-buildx-action@v1
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is great to see that we start to use the docker/setup-buildx-action. At the moment, the published platform is only amd64 right? I could not find other platform's info for example on this page.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No other packages at this moment but I'm open to add one if necessary.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK. I might suggest to add other platforms arm64, ppc64le, s390x with a PR in near future. These platforms could be used in Travis.

deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-11 main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-12 main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal main
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose the deb-src repositories are not necessary only to download the deb binary packages, right? But seeing for example the LLVM's deb packages pages where the deb-src repositories are documented, and I see the benefits of using deb-src repository is we can have a choice to build the packages by ourselves in the containers. So, I agree it's better to add the deb-src repositories here. 👍🏼

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah I found the deb-src repositories were used in the assets/99llvm.list. Okay.

@junaruga junaruga self-requested a review May 10, 2021 08:24
Copy link
Member

@junaruga junaruga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found tailing spaces. Could you remove it?

It looks amazing! There is only a small issue. Could you remove tailing spaces? Thanks.

@shyouhei
Copy link
Member Author

Mmm? I see no trailing whitespaces...

$ cd /tmp
$ git clone git@github.com:ruby/ruby-ci-image.git
Cloning into 'ruby-ci-image'...
remote: Enumerating objects: 93, done.
remote: Counting objects: 100% (93/93), done.
remote: Compressing objects: 100% (54/54), done.
remote: Total 93 (delta 28), reused 88 (delta 23), pack-reused 0
Receiving objects: 100% (93/93), 11.96 KiB | 90.00 KiB/s, done.
Resolving deltas: 100% (28/28), done.
$ cd ruby-ci-image
$ git checkout GCC-11
Branch 'GCC-11' set up to track remote branch 'GCC-11' from 'origin'.
Switched to a new branch 'GCC-11'
$ head -n 1 assets/99bionic.list | hexdump -C
00000000  64 65 62 20 68 74 74 70  3a 2f 2f 70 70 61 2e 6c  |deb http://ppa.l|
00000010  61 75 6e 63 68 70 61 64  2e 6e 65 74 2f 75 62 75  |aunchpad.net/ubu|
00000020  6e 74 75 2d 74 6f 6f 6c  63 68 61 69 6e 2d 72 2f  |ntu-toolchain-r/|
00000030  70 70 61 2f 75 62 75 6e  74 75 20 62 69 6f 6e 69  |ppa/ubuntu bioni|
00000040  63 20 6d 61 69 6e 0a                              |c main.|
00000047
$ /bin/grep -rn ' $' assets
[1]    470 exit 1     /bin/grep -rn ' $' assets
$ 

@junaruga
Copy link
Member

junaruga commented May 10, 2021

Mmm? I see no trailing whitespaces...

Sorry you are right. There are no tailing spaces. I was checking old GCC-11 branch on my local. On the old GCC-11 branch, the hirsute gcc-11 was used in .github/workflows/publish.yml. After the refreshing the branch, the changes and the tailing spaces were gone.

Copy link
Member

@junaruga junaruga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I approved!

@shyouhei
Copy link
Member Author

Thanks!

@shyouhei shyouhei merged commit 0e7f5e4 into master May 11, 2021
shyouhei added a commit to ruby/ruby that referenced this pull request May 11, 2021
@kou kou deleted the GCC-11 branch May 11, 2021 01:50
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
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants