| Age | Commit message (Collapse) | Author |
|
|
|
This pattern is extremely common across the ecosystem, I don't think
it's reasonable to deprecate it.
I understand the performance argument, but perhaps the dependency
resolution algorithm can use another method that is private API
and only works with two `Version` instance.
https://github.com/ruby/rubygems/commit/024b4b547a
|
|
|
|
No sense calling a C function.
|
|
|
|
|
|
|
|
This is good for protoboeuf and other binary parsing
|
|
Add `LoadEC` then it's just two `LoadField`.
|
|
|
|
Fix https://github.com/Shopify/ruby/issues/876
|
|
This lets us constant-fold common monomorphic cases.
|
|
Don't emit a CCall.
|
|
On some platoforms, 64bit atomic operations need the dedicated helper
library.
|
|
https://github.com/ruby/json/commit/2a4ebe8250
|
|
https://github.com/ruby/json/commit/305d3832db
|
|
https://github.com/ruby/json/commit/58d60d6b76
|
|
clang-18 has a bug that causes ruby_current_ec to sometimes be null when
using Ractors and crashes like this:
<internal:ractor>:700: [BUG] Segmentation fault at 0x0000000000000030
ruby 4.0.0dev (2025-11-21T06:49:14Z master bcc7b2049c) +PRISM [x86_64-linux]
-- Control frame information -----------------------------------------------
c:0004 p:0003 s:0015 e:000014 l:y b:0001 METHOD <internal:ractor>:700
me:
called_id: receive, type: iseq
owner class: 0x00007ff462dda500 T_CLASS/Ractor::Port
self: 0x00007ff46146d068 ractor/port/Ractor::Port ractor/port
c:0003 p:0008 s:0011 e:000010 l:y b:0001 METHOD <internal:ractor>:311
me:
called_id: receive, type: iseq
owner class: 0x00007ff462ddae60 T_CLASS/(anon)
self: 0x00007ff462ddaf00 T_CLASS/Ractor
c:0002 p:0010 s:0007 e:000006 l:n b:---- BLOCK bootstraptest.test_ractor.rb_2354_1323.rb:9 [FINISH]
self: 0x00007ff46146d090 ractor/Ractor r:68
lvars:
j: T_FIXNUM 66
c:0001 p:---- s:0003 e:000002 l:y b:---- DUMMY [FINISH]
self: T_NIL
-- Ruby level backtrace information ----------------------------------------
bootstraptest.test_ractor.rb_2354_1323.rb:9:in 'block (2 levels) in <main>'
<internal:ractor>:311:in 'receive'
<internal:ractor>:700:in 'receive'
-- Threading information ---------------------------------------------------
Total ractor count: 7
Ruby thread count for this ractor: 1
-- Machine register context ------------------------------------------------
RIP: 0x00007ff47c7df5f0 RBP: 0x000055d77ea5b4f0 RSP: 0x00007ff445fa3af0
RAX: 0x0000000000000000 RBX: 0x000055d77e9fd068 RCX: 0x000055d77e9fd040
RDX: 0x000055d77eb2ac40 RDI: 0x00007ff47cbe7700 RSI: 0x0000000000000000
R8: 0x0000000000000000 R9: 0x0000000000000000 R10: 0x000055d77e9fc830
R11: 0x93ba1054e59bfb14 R12: 0x000055d77ea5b4f0 R13: 0x00007ff445f82f20
R14: 0x00007ff4614cf668 R15: 0x000055d77e9fd040 EFL: 0x0000000000010246
-- C level backtrace information -------------------------------------------
libruby.so.4.0(rb_print_backtrace+0x14) [0x7ff47c8cbd18] vm_dump.c:1105
libruby.so.4.0(rb_vm_bugreport) vm_dump.c:1450
libruby.so.4.0(rb_bug_for_fatal_signal+0x162) [0x7ff47c70ce02] error.c:1131
libruby.so.4.0(sigsegv+0x4a) [0x7ff47c82f20a] signal.c:948
/lib/x86_64-linux-gnu/libc.so.6(0x7ff47c34a330) [0x7ff47c34a330]
libruby.so.4.0(rb_ec_thread_ptr+0x0) [0x7ff47c7df5f0] vm_core.h:2092
libruby.so.4.0(rb_ec_ractor_ptr) vm_core.h:2041
libruby.so.4.0(rb_current_execution_context) vm_core.h:2110
libruby.so.4.0(rb_current_ractor_raw) vm_core.h:2109
libruby.so.4.0(rb_current_ractor) vm_core.h:2117
libruby.so.4.0(ractor_unlock) ractor.c:110
libruby.so.4.0(ractor_unlock_self) ractor.c:125
libruby.so.4.0(ractor_wait) ractor_sync.c:1054
libruby.so.4.0(ractor_wait_receive) ractor_sync.c:1113
libruby.so.4.0(ractor_receive+0x25) [0x7ff47c7ded08] ractor_sync.c:1166
libruby.so.4.0(ractor_port_receive) ractor_sync.c:143
libruby.so.4.0(builtin_inline_class_700) ractor.rb:701
libruby.so.4.0(invoke_bf+0x4) [0x7ff47c8a2060] vm_insnhelper.c:7534
libruby.so.4.0(vm_invoke_builtin_delegate) vm_insnhelper.c:0
libruby.so.4.0(vm_exec_core) insns.def:1674
libruby.so.4.0(vm_exec_loop+0x0) [0x7ff47c89b868] vm.c:2784
libruby.so.4.0(rb_vm_exec) vm.c:2787
libruby.so.4.0(vm_invoke_proc+0x344) [0x7ff47c8b03f4] vm.c:1814
libruby.so.4.0(thread_do_start_proc+0x17a) [0x7ff47c870bba] thread.c:593
libruby.so.4.0(thread_do_start+0x162) [0x7ff47c87042f] thread.c:635
libruby.so.4.0(thread_start_func_2) thread.c:686
libruby.so.4.0(rb_native_mutex_lock+0x0) [0x7ff47c870fd1] thread_pthread.c:2238
libruby.so.4.0(thread_sched_lock_) thread_pthread.c:403
libruby.so.4.0(call_thread_start_func_2) thread_pthread_mn.c:466
libruby.so.4.0(co_start) thread_pthread_mn.c:464
|
|
This was failing on crossruby, likely because HAVE_GCC_ATOMIC_BUILTINS
was true, but HAVE_GCC_ATOMIC_BUILTINS_64 was false. We probably should
have feature detection of 64-bit stdatomics like we do for GCC, but for
now let's keep rbimpl_atomic_u64_fetch_add in sync with load/set.
|
|
Set the `TZ environment variable. `git log` does not recognize UTC
offset in `--before` option, unless full datetime is given.
|
|
`cmd.exe` splits the command line also by equal signs, not only by
space characters.
|
|
https://github.com/ruby/rubygems/commit/fbf6fb667e
|
|
|
|
|
|
(https://github.com/ruby/rubygems/pull/9095)
* Rescue when deleting a non-existent cached gem file
When a gem was in the cache, but another process deletes it first, this
delete command fails.
To work around this, I'm rescuing from Errno::ENOENT and swalling the
error. The file is gone, and we can move on.
* Apply suggestion from @kou
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
---------
https://github.com/ruby/rubygems/commit/b30bcbc648
Co-authored-by: Hiroshi SHIBATA <hsbt@ruby-lang.org>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
|
|
If we use "system" variable in BUNDLE_VERSION on Bundler configuration,
we can use bundler version provided by system installation.
But the current logic returns the first activated version of bundler
like 2.7.2. It makes to confuse users.
https://github.com/ruby/rubygems/commit/4eb66d9549
|
|
Comparing version objects is a huge bottleneck in dependency solvers
(like inside Bundler). I would like to make comparing version objects
cheaper. Right now we support comparing version objects with strings by
trying to coerce the string to a version. So for example:
```ruby
Gem::Version.new("1") <=> "12"
```
I would like to deprecate and remove support for this feature so that we
can reduce the overhead of `def <=>`.
I'm not sure what version of RubyGems we could remove this from though.
https://github.com/ruby/rubygems/commit/81b7602183
|
|
https://github.com/ruby/rubygems/commit/c1e3d4d63b
|
|
```
Offenses:
Rakefile:18:1: C: [Correctable] Layout/EmptyLines: Extra blank line detected.
Diff:
@@ -11,4 +11,5 @@
ext.lib_dir = "lib/test_gem"
end
+
task default: :compile
https://github.com/ruby/rubygems/commit/8c414729df
|
|
https://github.com/ruby/rubygems/commit/64f92d2da0
|
|
|
|
|
|
Going through a call to a C function just to read a bitfield was a
little extreme. We did it to be super conservative since bitfields
have historically been the trigger of many bugs and surprises. Let's
try directly accessing them with code from rust-bindgen. If this
ends up causing issues, we can use the FFI approach behind nicer
wrappers.
In any case, directly access regular struct fields such as `lead_num`
and `opt_num` to remove boilerplate.
|
|
This will make reading the parameters nicer for the JITs. Should be
no-op for the C side.
|
|
- Buffer's size did not account for offset when mapping the file, leading to possible crashes.
- Size and offset were not checked properly, leading to many situations raising EINVAL errors with generic messages.
- Documentation was wrong.
|
|
https://github.com/ruby/rubygems/commit/f360af8e3b
|
|
clang-18 has a bug that causes the latest Ractor btest to crash.
|
|
This was a test case for Ractors discovered that causes MMTk to deadlock.
There is a fix for it in https://github.com/ruby/mmtk/pull/49.
|
|
This specifies the lockfile location. This allows for easy support
of different lockfiles per Ruby version or platform.
https://github.com/ruby/rubygems/commit/b54d65bc0a
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Co-authored-by: Colby Swandale <996377+colby-swandale@users.noreply.github.com>
|
|
This allows for the same behavior as including `lockfile false`
in the Gemfile. This allows you to get the behavior without
modifying the Gemfile, which is useful if you do not control the
Gemfile.
This is similar to the --no-lock option already supported by
`gem install -g Gemfile`.
https://github.com/ruby/rubygems/commit/6c94623881
Co-authored-by: Colby Swandale <996377+colby-swandale@users.noreply.github.com>
|
|
This allows you to specify the lockfile to use. This is useful if
you want to use different lockfiles for different ruby versions or
platforms. You can also skip writing the lockfile by using a false
value.
https://github.com/ruby/rubygems/commit/2896aa3fc2
Co-authored-by: Colby Swandale <996377+colby-swandale@users.noreply.github.com>
|
|
definition is used
|
|
|
|
|
|
|
|
|
|
|
|
before_exec stops the timer thread, which requires locking the Ractor
scheduler lock. This may deadlock if rb_gc_before_fork locks the VM.
|
|
|
|
|