Age | Commit message (Collapse) | Author | |
---|---|---|---|
3 days | Optimize `str_casecmp` length check using pointer end | Erim Icel | |
9 days | [DOC] Tweaks for String#gsub! | BurdetteLamar | |
9 days | [DOC] Tweaks for String#gsub | Burdette Lamar | |
2025-07-31 | [DOC] Tweaks for String#getbyte | BurdetteLamar | |
2025-07-31 | [DOC] Tweaks for String#eql? | BurdetteLamar | |
2025-07-23 | [DOC] Tweaks for String#each_grapheme_cluster (#13981) | Burdette Lamar | |
2025-07-23 | [DOC] Tweaks for String#empty? | Burdette Lamar | |
2025-07-23 | [DOC] Tweaks for String#each_line | BurdetteLamar | |
2025-07-23 | [DOC] Tweaks for String#each_codepoint | BurdetteLamar | |
2025-07-23 | [DOC] Tweaks for String#each_char | BurdetteLamar | |
2025-07-21 | [DOC] Docs for String#dump | Peter Zhu | |
2025-07-21 | Introduce free function to rb_concurrent_set_funcs | Peter Zhu | |
If we create a key but don't insert it (due to other Ractor winning the race), then it would leak memory if we don't free it. This introduces a new function to free that memory for this case. | |||
2025-07-16 | Alphabetize concurrent_set.h in string.c | Peter Zhu | |
2025-07-15 | [DOC] Tweaks for String#downcase | Burdette Lamar | |
2025-07-15 | [DOC] Tweaks for String#downcase! | BurdetteLamar | |
2025-07-15 | Make rb_concurrent_set_funcs const | Peter Zhu | |
We should never modify rb_concurrent_set_funcs during runtime, so we can make it const. | |||
2025-07-14 | [DOC] Tweaks for String#delete_suffix! (#13872) | Burdette Lamar | |
2025-07-14 | [DOC] Tweaks for String#delete_prefix! | BurdetteLamar | |
2025-07-12 | [DOC] TWeaks for String#delete! | BurdetteLamar | |
2025-07-12 | [DOC] Tweaks for String#delete | BurdetteLamar | |
2025-07-12 | [DOC] Tweaks for String#count | Burdette Lamar | |
2025-07-10 | [DOC] Tweaks for String#concat (#13836) | Burdette Lamar | |
2025-07-09 | [DOC] Tweaks for String#clear | BurdetteLamar | |
2025-07-09 | [DOC] Tweaks for String#chop | BurdetteLamar | |
2025-07-09 | [DOC] Tweaks for String#chr | BurdetteLamar | |
2025-07-09 | [DOC] Tweaks for String#chomp! | BurdetteLamar | |
2025-07-08 | [DOC] Tweaks for String#center | BurdetteLamar | |
2025-07-07 | [DOC] Tweaks for String#casecmp? (#13810) | Burdette Lamar | |
2025-07-07 | [DOC] Tweaks for String#casecmp | BurdetteLamar | |
2025-07-07 | Rename `ractor_safe_set` into `concurrent_set` | Jean Boussier | |
There's nothing ractor related in them, and the classic terminology for these sort of data structures is `concurrent-*`, e.g. concurrent hash. | |||
2025-07-07 | [DOC] Tweaks for String#capitalize! | BurdetteLamar | |
2025-07-07 | [DOC] Tweaks for String#capitalize | Burdette Lamar | |
2025-07-04 | [DOC] Tweaks for Case Mapping doc | Burdette Lamar | |
2025-06-30 | [DOC] Tweaks for String#bytesplice | Burdette Lamar | |
2025-06-30 | [DOC] Tweaks for Strings#byteslice | BurdetteLamar | |
2025-06-27 | Extract Ractor safe table used for frozen strings | Peter Zhu | |
This commit extracts the Ractor safe table used for frozen strings into ractor_safe_table.c, which will allow it to be used elsewhere, including for the global symbol table. | |||
2025-06-25 | Get String#crypt working with multi-ractor in cases where !HAVE_CRYPT_R | Luke Gruber | |
In commit 12f7ba5ed4a, ractor safety was added to String#crypt, however in certain cases it can cause a deadlock. When we lock a native mutex, we cannot allocate ruby objects because they might trigger GC which starts a VM barrier. If the barrier is triggered and other native threads are waiting on this mutex, they will not be able to be woken up in order to join the barrier. To fix this, we don't allocate ruby objects when we hold the lock. The following could reproduce the problem: ```ruby strings = [] 10_000.times do |i| strings << "my string #{i}" end STRINGS = Ractor.make_shareable(strings) rs = [] 100.times do rs << Ractor.new do STRINGS.each do |s| s.dup.crypt(s.dup) end end end while rs.any? r, obj = Ractor.select(*rs) rs.delete(r) end ``` I will not be adding tests because I am almost finished a PR to enable running test-all test cases inside many ractors at once, which is how I found the issue. Co-authored-by: jhawthorn <john@hawthorn.email> | |||
2025-06-25 | Move RUBY_ATOMIC_VALUE_LOAD to ruby_atomic.h | Peter Zhu | |
Deduplicates RUBY_ATOMIC_VALUE_LOAD by moving it to ruby_atomic.h. | |||
2025-06-25 | [DOC] Tweaks for String#byterindex (#13485) | Burdette Lamar | |
2025-06-24 | Reduce exposure of FL_FREEZE | Jean Boussier | |
The `FL_FREEZE` flag is redundant with `SHAPE_ID_FL_FROZEN`, so ideally it should be eliminated in favor of the later. Doing so would eliminate the risk of desync between the two, but also solve the problem of the frozen status being global in namespace context (See Bug #21330). | |||
2025-06-16 | [Bug #20998] Check if the string is frozen in rb_str_locktmp() & ↵ | Benoit Daloze | |
rb_str_unlocktmp() Notes: Merged: https://github.com/ruby/ruby/pull/13615 | |||
2025-06-13 | Get rid of FL_EXIVAR | Jean Boussier | |
Now that the shape_id gives us all the same information, it's no longer needed. Notes: Merged: https://github.com/ruby/ruby/pull/13612 | |||
2025-06-13 | Use the `shape_id` rather than `FL_EXIVAR` | Jean Boussier | |
We still keep setting `FL_EXIVAR` so that `rb_shape_verify_consistency` can detect discrepancies. Notes: Merged: https://github.com/ruby/ruby/pull/13612 | |||
2025-06-13 | Add SHAPE_ID_HAS_IVAR_MASK for quick ivar check | Jean Boussier | |
This allow checking if an object has ivars with just a shape_id mask. Notes: Merged: https://github.com/ruby/ruby/pull/13606 | |||
2025-05-29 | [Bug #21380] Prohibit modification in String#split block | Nobuyoshi Nakada | |
Reported at https://hackerone.com/reports/3163876 Notes: Merged: https://github.com/ruby/ruby/pull/13462 | |||
2025-05-27 | Rename `rb_shape_set_shape_id` in `rb_obj_set_shape_id` | Jean Boussier | |
Notes: Merged: https://github.com/ruby/ruby/pull/13450 | |||
2025-05-26 | [DOC] More tweaks for String#byteindex | BurdetteLamar | |
Notes: Merged: https://github.com/ruby/ruby/pull/13440 | |||
2025-05-26 | Add shape_id to RBasic under 32 bit | John Hawthorn | |
This makes `RBobject` `4B` larger on 32 bit systems but simplifies the implementation a lot. [Feature #21353] Co-authored-by: Jean Boussier <byroot@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/13341 | |||
2025-05-25 | Use RB_VM_LOCKING | Nobuyoshi Nakada | |
Notes: Merged: https://github.com/ruby/ruby/pull/13439 | |||
2025-05-22 | [DOC] Tweaks for String#byteindex | BurdetteLamar | |
Notes: Merged: https://github.com/ruby/ruby/pull/13365 |