aboutsummaryrefslogtreecommitdiffstats
path: root/common.mk
Commit message (Collapse)AuthorAgeFilesLines
* Check ruby-related includes only [ci skip]Nobuyoshi Nakada2021-09-111-1/+1
|
* Removed minitest dir from make taskHiroshi SHIBATA2021-09-111-1/+1
|
* common.mk: update dependencies卜部昌平2021-09-101-0/+6
|
* Update the list of replacing objects under missingNobuyoshi Nakada2021-08-271-4/+10
|
* Use C99-defined macros to classify a floating-point numberNobuyoshi Nakada2021-08-271-1/+0
|
* tool/test-bundled-gems.rb: Use the bundled RBS code to test TypeProfYusuke Endoh2021-08-251-1/+1
| | | | | | | | | Formerly, TypeProf was tested with the latest RBS code during `make test-bundled-gems`. However, when a new version of rbs is released, and if it is incompatible with TypeProf, `make test-bundled-gems` starts failing, which was annoying. By this change, TypeProf is tested with the bundled version of RBS.
* Revert "tool/test-bundled-gems.rb: Use the bundled RBS code to test TypeProf"Yusuke Endoh2021-08-241-1/+1
| | | | | | This reverts commit 22deda43cb98aa3cee48d0bebbff7c4db1d7652a. It was incomplete. Sorry!
* tool/test-bundled-gems.rb: Use the bundled RBS code to test TypeProfYusuke Endoh2021-08-241-1/+1
| | | | | | | | | Formerly, TypeProf was tested with the latest RBS code during `make test-bundled-gems`. However, when a new version of rbs is released, and if it is incompatible with TypeProf, `make test-bundled-gems` starts failing, which was annoying. By this change, TypeProf is tested with the bundled version of RBS.
* Moved exported symbols in internal/util.h to ruby/util.hNobuyoshi Nakada2021-08-241-7/+4
| | | | [Feature #18051]
* ruby/spec no longer needs webrick to runBenoit Daloze2021-08-131-1/+1
|
* Group commands on GitHub ActionsNobuyoshi Nakada2021-08-071-0/+22
|
* Change Unicode Emoji Version from 13.0 to 13.1Martin Dürst2021-07-271-1/+1
|
* Remove unneeded quotes [ci skip]Nobuyoshi Nakada2021-07-191-1/+1
|
* Add debug assertion in `rb_funcall*` that the current thread has the gvl.Samuel Williams2021-07-161-0/+1
|
* Update common.mk to deal with Unicode version 13.0.0Martin Dürst2021-07-081-6/+22
| | | | | | | | - Change Unicode version to 13.0.0 - Change Emoji version to 13.0 - Adjust to moved locations of emoji-data.txt and emoji-variation-sequences.txt by splitting these files from $(UNICODE_EMOJI_FILES) and putting them into a new group $(UNICODE_UCD_EMOJI_FILES)
* programs will be made from extsNobuyoshi Nakada2021-07-051-1/+1
| | | | | `programs` after `exts` overwrites programs built with extension libraries when static-linked-ext.
* goruby.c: include golf_prelude.c to get rid of overwriting EXTOBJSNobuyoshi Nakada2021-07-031-185/+26
|
* "nodoc" needs to exclude "doc" [ci skip]Nobuyoshi Nakada2021-06-301-1/+1
|
* Add a cache for class variableseileencodes2021-06-181-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Redo of 34a2acdac788602c14bf05fb616215187badd504 and 931138b00696419945dc03e10f033b1f53cd50f3 which were reverted. GitHub PR #4340. 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.. c6be009) [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>
* Make ext directory before extinit.c when out-of-place buildNobuyoshi Nakada2021-06-161-0/+1
|
* Add missing dependenciesTakashi Kokubun2021-06-101-1/+2
| | | | https://github.com/ruby/ruby/runs/2791163586?check_suite_focus=true
* Avoid enqueueing the same ISeq twiceTakashi Kokubun2021-06-101-0/+1
| | | | | | | | | | by a race condition by multiple Ractors. Atmically incrementing body->total_calls may have its own cost, so for now we intentionally leave the unreliable total_calls. So we allow an ISeq to be never pushed when you use multiple Ractors. However, if you enqueue a single ccan node twice, get_from_list loops infinitely. Thus this patch takes care of such a situation.
* Implemented some NilClass method in Ruby code is faster [Feature #17054] (#3366)S.H2021-06-021-0/+4
|
* Mark inlined ISeqs during MJIT compilation (#4539)Takashi Kokubun2021-05-301-0/+6
| | | [Bug #17584]
* cdhash_cmp: can take rational literals卜部昌平2021-05-121-0/+1
| | | | | | | 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]
* Revert "Filling cache values on cvar write"Aaron Patterson2021-05-111-1/+0
| | | | | This reverts commit 08de37f9fa3469365e6b5c964689ae2bae0eb9f3. This reverts commit e8ae922b62adb00a80d3d4c49f7d7b0e6026eaba.
* Add a cache for class variableseileencodes2021-05-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 9e5105ca45) [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>
* Split revision.h ruleNobuyoshi Nakada2021-04-181-2/+3
| | | | GNU-make specific rule is defined in defs/gmake.mk.
* dependency updates卜部昌平2021-04-131-79/+0
|
* Make String#crypt ractor-safeNobuyoshi Nakada2021-04-131-0/+2
|
* mac: ignore SDKROOT at installationNobuyoshi Nakada2021-04-101-1/+1
|
* Stop downloading Unicode files twiceNobuyoshi Nakada2021-03-261-1/+1
| | | | These files should have been downloaded in update-remote.
* Use XRUBY to expand path instead of platform dependentKazuhiro NISHIYAMA2021-03-251-3/+5
|
* Generate encoding header before enc.mkNobuyoshi Nakada2021-03-251-2/+3
| | | | As some encodings need the corresponding header.
* Keep unicode_normalize/tables.rb as-isNobuyoshi Nakada2021-03-251-3/+3
| | | | | Define no dependency unless ALWAYS_UPDATE_UNICODE is set to yes, so that `make prog` works in a just-checkedout working directory.
* Fix test-bundler-parallel errors when out-of-place buildKazuhiro NISHIYAMA2021-03-251-1/+2
|
* Make the commit of updated bundled_gems fileNobuyoshi Nakada2021-02-161-0/+2
|
* Added Thread::Backtrace.limit [Feature #17479]Nobuyoshi Nakada2021-02-151-0/+2
|
* Add a benchmark-driver runner for Ractor (#4172)Takashi Kokubun2021-02-101-1/+1
| | | | | | | | | | | | | * Add a benchmark-driver runner for Ractor * Process.clock_gettime(Process:CLOCK_MONOTONIC) could be slow in Ruby 3.0 Ractor * Fetching Time could also be slow * Fix a comment * Assert overriding a private method
* Expose scheduler as public interface & bug fixes. (#3945)Samuel Williams2021-02-091-7/+13
| | | | | | | | | * Rename `rb_scheduler` to `rb_fiber_scheduler`. * Use public interface if available. * Use `rb_check_funcall` where possible. * Don't use `unblock` unless the fiber was non-blocking.
* Ignore warnings when transforming preprocessed headerNobuyoshi Nakada2021-02-011-1/+1
| | | | | For already preprocessed header, -Werror=misleading-indentation doesn't make sense.
* CFLAGS includes ARCH_FLAGNobuyoshi Nakada2021-01-261-1/+1
|
* Sort autogenerated dependencies [ci skip]Nobuyoshi Nakada2021-01-231-1/+1
|
* Remove common output directoryNobuyoshi Nakada2021-01-221-1/+1
|
* Skip updating exts in also test-spec to reduce the turnaround time (#4089)Takashi Kokubun2021-01-181-1/+1
| | | | | | Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Partially reversing a4f3e1762aa195969ace000ac0dc8d300dda85cb like 21df4dce5308bb0e04e09dc654cdc92af000caf6. We usually run them through make check which has the dependency, and test-all and test-spec without the dependency are useful for running only individual tests.
* dtoa.c: make thread-safe by using atomic CASNobuyoshi Nakada2021-01-101-0/+2
|
* set RUBY_ON_BUG on runruby rule.Koichi Sasada2021-01-051-1/+1
| | | | | set RUBY_ON_BUG='gdb -x $(srcdir)/.gdbinit -p' to catch SEGV on `make runruby` rule.
* Commented out the sh-specific code, in cmd.exeNobuyoshi Nakada2021-01-051-1/+2
|
* Add a missing dependencyTakashi Kokubun2021-01-031-1/+1
|
* Add -v to make benchmarkTakashi Kokubun2021-01-011-1/+1
| | | | I simply can't tell which of compare-ruby and built-ruby is what.