ruby/internal
Jean Boussier 85c52079aa set.c: Store set_table->bins at the end of set_table->entries
This saves one pointer in `struct set_table`, which would allow
`Set` objects to still fit in 80B TypedData slots even if RTypedData
goes from 32B to 40B large.

The existing set benchmark seem to show this doesn't have a very
significant impact. Smaller sets are a bit faster, larger sets
a bit slower.

It seem consistent over multiple runs, but it's unclear how much
of that is just error margin.

```
compare-ruby: ruby 3.5.0dev (2025-08-12T02:14:57Z master 428937a536) +YJIT +PRISM [arm64-darwin24]
built-ruby: ruby 3.5.0dev (2025-08-12T07:22:26Z set-entries-bounds da30024fdc) +YJIT +PRISM [arm64-darwin24]
warming up........

|                         |compare-ruby|built-ruby|
|:------------------------|-----------:|---------:|
|new_0                    |     15.459M|   15.823M|
|                         |           -|     1.02x|
|new_10                   |      3.484M|    3.574M|
|                         |           -|     1.03x|
|new_100                  |    546.992k|  564.679k|
|                         |           -|     1.03x|
|new_1000                 |     49.391k|   48.169k|
|                         |       1.03x|         -|
|aref_0                   |     18.643M|   19.350M|
|                         |           -|     1.04x|
|aref_10                  |      5.941M|    6.006M|
|                         |           -|     1.01x|
|aref_100                 |    822.197k|  814.219k|
|                         |       1.01x|         -|
|aref_1000                |     83.230k|   79.411k|
|                         |       1.05x|         -|
```
2025-08-12 21:56:57 +02:00
..
array.h Optimized instruction for Array#freeze 2024-09-05 12:46:02 +02:00
basic_operators.h Optimize instructions when creating an array just to call include? (#12123) 2024-11-26 14:31:08 -05:00
bignum.h Improve performance of bignum[beg, len] (#14007) 2025-07-29 16:34:13 +00:00
bits.h Add integer overflow check macros for add/sub as well as mul 2024-11-09 00:08:03 +09:00
class.h Make RClass.cc_table a managed object 2025-08-01 10:42:04 +02:00
cmdlineopt.h ZJIT: Prepare for sharing JIT hooks with ZJIT (#14044) 2025-07-30 10:11:10 -07:00
compar.h
compile.h Move the PC regardless of the leaf flag (#8232) 2023-08-16 20:28:33 -07:00
compilers.h
complex.h
concurrent_set.h Introduce free function to rb_concurrent_set_funcs 2025-07-21 10:58:30 -04:00
cont.h Free everything at shutdown 2023-12-07 15:52:35 -05:00
dir.h
enc.h
encoding.h Make rb_enc_autoload_p atomic 2025-07-10 17:18:20 +02:00
enum.h
enumerator.h
error.h Make the critical level an enum 2025-06-23 20:03:48 +09:00
eval.h Support cause: in Thread#raise and Fiber#raise. (#13967) 2025-07-24 14:45:43 +12:00
file.h Revert "reuse open(2) from rb_file_load_ok on POSIX-like system" 2023-02-27 09:24:45 -08:00
fixnum.h rb_fix_mul_fix needs internal/bits.h for MUL_OVERFLOW_FIXNUM_P 2024-10-08 23:29:49 +09:00
gc.h imemo_fields_set: save copying when reassigning a variable 2025-07-03 09:20:22 +02:00
hash.h Support Marshal.{dump,load} for core Set 2025-04-28 08:38:35 -07:00
imemo.h Make RClass.cc_table a managed object 2025-08-01 10:42:04 +02:00
inits.h Optimize rb_namespace_available 2025-06-23 10:04:58 +01:00
io.h rb_io_blocking_operation_exit should not execute with pending interrupts. 2025-06-06 13:13:16 +09:00
load.h namespace on read 2025-05-11 23:32:50 +09:00
loadpath.h
math.h
missing.h Free environ when RUBY_FREE_AT_EXIT 2024-01-11 10:09:53 -05:00
namespace.h Mark RClass instance that may be namespaced with RCLASS_NAMESPACEABLE 2025-06-23 10:04:58 +01:00
numeric.h Improve performance of bignum[beg, len] (#14007) 2025-07-29 16:34:13 +00:00
object.h Remove unused RBASIC_RESET_FLAGS 2025-06-02 09:52:25 -04:00
parse.h [Bug #20989] Ripper: Pass compile_error 2024-12-28 11:25:57 +09:00
proc.h Remove dead function rb_func_proc_new 2025-01-20 10:31:36 -05:00
process.h Put rb_fork back into process.c 2023-05-21 23:00:27 +09:00
ractor.h Fix shared GC with -DRUBY_DEBUG 2024-10-24 16:08:46 +01:00
random.h Free everything at shutdown 2023-12-07 15:52:35 -05:00
range.h Implement Struct on VWA 2023-06-05 15:47:16 -04:00
rational.h Don't redefine RB_OBJ_WRITE 2023-01-18 08:49:32 -05:00
re.h String#gsub! Elide MatchData allocation when we know it can't escape 2025-02-24 18:32:46 +01:00
ruby_parser.h Change return value of gets function to be rb_parser_string_t * instead of VALUE 2024-05-04 11:59:10 +09:00
sanitizers.h Disable TSAN for rb_gc_mark_machine_context 2025-07-24 16:35:42 -07:00
serial.h
set_table.h set.c: Store set_table->bins at the end of set_table->entries 2025-08-12 21:56:57 +02:00
signal.h Fix race condition in signal handler query (#13712) 2025-06-28 13:55:59 +09:00
st.h Move internal ST functions to internal/st.h 2023-12-25 10:41:12 -05:00
static_assert.h
string.h Add SHAPE_ID_HAS_IVAR_MASK for quick ivar check 2025-06-13 19:46:29 +02:00
struct.h Struct: keep direct reference to IMEMO/fields when space allows 2025-08-06 17:07:49 +02:00
symbol.h symbol.c: use rb_gc_mark_and_move over rb_gc_location 2025-08-07 21:00:00 +02:00
thread.h Fix blocking operation cancellation. (#13614) 2025-06-14 12:32:51 +09:00
time.h [Bug #21144] Win32: Use Windows time zone ID if TZ is not set 2025-02-19 18:27:32 +09:00
transcode.h Free everything at shutdown 2023-12-07 15:52:35 -05:00
util.h
variable.h variable.c: refactor accesses to the generic_fields_tbl 2025-08-06 12:33:44 +02:00
vm.h ZJIT: Add --zjit-stats (#14034) 2025-07-29 10:00:15 -07:00
warnings.h