| Age | Commit message (Collapse) | Author |
|
|
|
bcb3247072e6973d0f6b50ca5fed238d5824bd28,fe0225ff4d5af8b1f54009727b39d0d9b821eea3: [Backport #19778]
[Bug #19778] Pass additional include options to INCFLAGS in common.mk
---
common.mk | 2 +-
configure.ac | 1 +
template/Makefile.in | 1 +
3 files changed, 3 insertions(+), 1 deletion(-)
[Bug #19778] Add `-I` options for opt-dir to `$INCFLAGS`
These options have been separated from `$CFLAGS` already in the
other places.
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
* Copy cvar table on clone
When a class with a class variable is cloned we need to also copy the
cvar cache table from the original table to the clone. I found this bug
while working on fixing [Bug #19379]. While this does not fix that bug
directly it is still a required change to fix another bug revealed by
the fix in https://github.com/ruby/ruby/pull/7265
This needs to be backported to 3.2.x and 3.1.x.
Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
* Fix cvar caching when class is cloned
The class variable cache that was added in
https://github.com/ruby/ruby/pull/4544 changed the behavior of class
variables on cloned classes. As reported when a class is cloned AND a
class variable was set, and the class variable was read from the
original class, reading a class variable from the cloned class would
return the value from the original class.
This was happening because the IC (inline cache) is stored on the ISEQ
which is shared between the original and cloned class, therefore they
share the cache too.
To fix this we are now storing the `cref` in the cache so that we can
check if it's equal to the current `cref`. If it's different we don't
want to read from the cache. If it's the same we do. Cloned classes
don't share the same cref with their original class.
This will need to be backported to 3.1 in addition to 3.2 since the bug
exists in both versions.
We also added a marking function which was missing.
Fixes [Bug #19379]
Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
* Add missing write barrier
We were missing the write barrier for class_value to cref. This should
fix the segv we were seeing in http://ci.rvm.jp/logfiles/brlog.trunk-gc-asserts.20230601-165052
Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
---------
Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
|
|
* pry is not needed for test-bundled-gems
* Run test-unit test without rake task to avoid yard dependency
* Try to skip Prime_test.rb
|
|
hoe-4.0.0 causes test failure in minitest.
https://github.com/ruby/actions/actions/runs/3715629538
|
|
Extract bundled gems by BASERUBY
---
common.mk | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
Move to tool/lib/bundled_gem.rb
---
common.mk | 6 +++---
defs/gmake.mk | 4 ++--
tool/gem-unpack.rb | 53 -----------------------------------------------
tool/lib/bundled_gem.rb | 55 +++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 60 insertions(+), 58 deletions(-)
delete mode 100644 tool/gem-unpack.rb
create mode 100644 tool/lib/bundled_gem.rb
|
|
Remove github and git related files from extracted bundled gems
---
common.mk | 3 ++-
defs/gmake.mk | 1 +
2 files changed, 3 insertions(+), 1 deletion(-)
|
|
Exclude LIBPATHENV wrapper from PREP
---
common.mk | 4 ++--
configure.ac | 2 +-
template/Makefile.in | 2 ++
3 files changed, 5 insertions(+), 3 deletions(-)
|
|
Move duplicate dependencies
---
common.mk | 2 ++
template/Makefile.in | 5 -----
win32/Makefile.sub | 2 --
3 files changed, 2 insertions(+), 7 deletions(-)
|
|
Load fake.rb at `BTESTRUBY`
So that `mkmf` checks work from `make run`, and also remove
duplicate `$(MINIRUBYOPT)` which is used in `$(MINIRUBY)`.
---
common.mk | 8 ++++----
template/Makefile.in | 3 +--
template/fake.rb.in | 2 ++
win32/Makefile.sub | 2 +-
4 files changed, 8 insertions(+), 7 deletions(-)
|
|
Kill bundled gem tests when interrupted
---
common.mk | 2 +-
tool/test-bundled-gems.rb | 12 ++++++++++--
2 files changed, 11 insertions(+), 3 deletions(-)
|
|
Copy from bundled gem source for test
---
common.mk | 13 +++++++----
defs/gmake.mk | 4 ++++
tool/gem-unpack.rb | 63 +++++++++++++++++++++++++++++++++++-------------------
3 files changed, 54 insertions(+), 26 deletions(-)
|
|
Use configured GIT
---
common.mk | 4 ++--
defs/gmake.mk | 68 +++++++++++++++++++++++++++++------------------------------
2 files changed, 36 insertions(+), 36 deletions(-)
|
|
Get rid of building main again when test-bundled-gems
---
.github/workflows/ubuntu.yml | 1 +
.github/workflows/yjit-ubuntu.yml | 1 +
common.mk | 3 ++-
defs/gmake.mk | 2 +-
4 files changed, 5 insertions(+), 2 deletions(-)
|
|
Run the prerequisites of test-bundled-gems in order
---
common.mk | 6 +++++-
defs/gmake.mk | 7 ++++++-
2 files changed, 11 insertions(+), 2 deletions(-)
|
|
Define BOOTSTRAPRUBY from HAVE_BASERUBY
---
common.mk | 1 +
configure.ac | 8 --------
template/Makefile.in | 7 +++++--
win32/Makefile.sub | 6 ++++--
4 files changed, 10 insertions(+), 12 deletions(-)
|
|
Use BOOTSTRAPRUBY_COMMAND instead of fake.rb directly
---
common.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
builtin.c includes mini_builtin.c when cross-compiling
---
common.mk | 3 +++
1 file changed, 3 insertions(+)
|
|
Ignore fake.rb for snapshot
---
common.mk | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
fake.rb needs id.h
---
common.mk | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
Fix potential target type confliction [ci skip]
---
common.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
Make sources by BASERUBY if available instead of miniruby
---
common.mk | 25 +++++++++++++++----------
configure.ac | 6 +++++-
cygwin/GNUmakefile.in | 4 ++--
template/Makefile.in | 2 +-
win32/Makefile.sub | 10 ++++++++--
5 files changed, 31 insertions(+), 16 deletions(-)
|
|
exts.mk.tmpl: propagate MINIRUBY to enc.mk even though invoking from
exts.mk
This is another attempt to fix out-of-src build with
--with-static-linked-ext. The first attempt was
4f1888bda70981d9f5b1bf55ab692e0ce18e79f4 but reverted because it broke
out-of-src build from pre-generated sources via `make dist`.
This patch fixes the second trans C source gen, mentioned in the
previous commit message, by passing MINIRUBY as well as when invoking
from common.mk
---
common.mk | 2 +-
template/exts.mk.tmpl | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
|
|
`Gem.unpack` extracts gems so able to execute
Creates simple bin stubs to load the extracted executable files.
After only extracted under `gems` directory, the gems are considered
installed but the executable scripts are not found.
Also the second argument is now the parent of the previous second and
third arguments.
---
common.mk | 6 ++----
defs/gmake.mk | 3 +--
tool/gem-unpack.rb | 30 +++++++++++++++++++-----------
3 files changed, 22 insertions(+), 17 deletions(-)
|
|
The "gems" build directory was rename as ".bundle"
---
common.mk | 12 ++++++------
template/Makefile.in | 10 +++++-----
2 files changed, 11 insertions(+), 11 deletions(-)
|
|
Obey spec file locations to rubygems
---
common.mk | 3 ++-
defs/gmake.mk | 2 +-
tool/gem-unpack.rb | 5 +++--
3 files changed, 6 insertions(+), 4 deletions(-)
|
|
035978d7be9bc3819f42f964fe6193d983cce63f,2e324b645e16e67c14de80ea34b1d61165045f22,b6a9e683917745df2822a611fce64df9ae8090a7:
Pass job-server FDs to bundler tests
---
common.mk | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Manage paths for bundler tests
---
common.mk | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
Add noarch-fake.rb target
`yes-fake` depends on it when `arch=noarch` is given, but the rule to
generate it from fake.rb.in is ignored now.
---
common.mk | 3 +++
1 file changed, 3 insertions(+)
|
|
Now test-bundler nees fake.rb
---
common.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
Merge RubyGems 3.3.x and Bundler 2.3.x
|
|
This reverts commit a042043487eb4c7d39307b8e784ede1856455c3e.
(cherry picked from commit 8325094177de60d365b2b5507488f0b53d11c736)
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/5249
Merged-By: ioquatix <samuel@codeotaku.com>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/5314
Merged-By: ioquatix <samuel@codeotaku.com>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/5297
|
|
We found that we need to make Ruby objects while locking the environ
to ENV operation atomically, so we decided to use `RB_VM_LOCK_ENTER()`
instead of `env_lock`.
Notes:
Merged: https://github.com/ruby/ruby/pull/5263
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/5263
|
|
* YJIT: Implement optimized_method_struct_aref
* YJIT: Implement struct_aref without method call
Struct member reads can be compiled directly into a memory read (with
either one or two levels of indirection).
* YJIT: Implement optimized struct aset
* YJIT: Update tests for struct access
* YJIT: Add counters for remaining optimized methods
* Check for INT32_MAX overflow
It only takes a struct with 0x7fffffff/8+1 members. Also add some
cheap compile time checks.
* Add tests for non-embedded struct aref/aset
Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
Notes:
Merged-By: jhawthorn <john@hawthorn.email>
|
|
|
|
The implementation of a local variable tables was represented as `ID*`,
but it was very hacky: the first element is not an ID but the size of
the table, and, the last element is (sometimes) a link to the next local
table only when the id tables are a linked list.
This change converts the hacky implementation to a normal struct.
Notes:
Merged: https://github.com/ruby/ruby/pull/5136
|
|
Introduce new optimized method type
`OPTIMIZED_METHOD_TYPE_STRUCT_AREF/ASET` with index information.
Notes:
Merged: https://github.com/ruby/ruby/pull/5131
|
|
* `GC.measure_total_time = true` enables total time measurement (default: true)
* `GC.measure_total_time` returns current flag.
* `GC.total_time` returns measured total time in nano seconds.
* `GC.stat(:time)` (and Hash) returns measured total time in milli seconds.
Notes:
Merged: https://github.com/ruby/ruby/pull/4757
|
|
This provides a significant speedup for symbol, true, false,
nil, and 0-9, class/module, and a small speedup in most other cases.
Speedups (using included benchmarks):
:symbol :: 60%
0-9 :: 50%
Class/Module :: 50%
nil/true/false :: 20%
integer :: 10%
[] :: 10%
"" :: 3%
One reason this approach is faster is it reduces the number of
VM instructions for each interpolated value.
Initial idea, approach, and benchmarks from Eric Wong. I applied
the same approach against the master branch, updating it to handle
the significant internal changes since this was first proposed 4
years ago (such as CALL_INFO/CALL_CACHE -> CALL_DATA). I also
expanded it to optimize true/false/nil/0-9/class/module, and added
handling of missing methods, refined methods, and RUBY_DEBUG.
This renames the tostring insn to anytostring, and adds an
objtostring insn that implements the optimization. This requires
making a few functions non-static, and adding some non-static
functions.
This disables 4 YJIT tests. Those tests should be reenabled after
YJIT optimizes the new objtostring insn.
Implements [Feature #13715]
Co-authored-by: Eric Wong <e@80x24.org>
Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
Co-authored-by: Yusuke Endoh <mame@ruby-lang.org>
Co-authored-by: Koichi Sasada <ko1@atdot.net>
Notes:
Merged: https://github.com/ruby/ruby/pull/5002
Merged-By: jeremyevans <code@jeremyevans.net>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/5084
Merged-By: nobu <nobu@ruby-lang.org>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4621
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4621
|
|
it's start irb on built ruby (not installed ruby).
|
|
`duphash` showed up in the top-20 most frequent exit ops for @jhawthorn's benchmark that renders github.com/about
The implementation was almost exactly the same as `duparray`
Co-authored-by: John Hawthorn <john@hawthorn.email>
Co-authored-by: John Hawthorn <john@hawthorn.email>
Notes:
Merged-By: maximecb <maximecb@ruby-lang.org>
|
|
* process.c: Add Process._fork
This API is supposed for application monitoring libraries to hook fork
event.
[Feature #17795]
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
Notes:
Merged-By: mame <mame@ruby-lang.org>
|
|
For extra options from the `make` command line.
Also add explicit `--install` option to install-nodoc.
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4913
|