Issue #9614 has been updated by Koichi Sasada.


Just a comment.

I think it should be another parameter of st_table.

Now all st_tables have order.
But most of case, it doesn't needed.

I think it is fine for me that st_table user can select.

----------------------------------------
Feature #9614: ordering of non-Hash items which use st_ internally
https://bugs.ruby-lang.org/issues/9614#change-46717

* Author: Eric Wong
* Status: Open
* Priority: Normal
* Assignee: Yukihiro Matsumoto
* Category: core
* Target version: current: 2.2.0
----------------------------------------
Hi matz, I would like your permission to remove the order preservation from
any or all of the following currently implemented using st_table:

* method tables
* global symbols (Symbol.all_symbols)
* constant tables
* instance variable tables
* global_variables method
* Thread#keys
* anything besides the Hash class

I am currently working on a patch series to reduce internal memory usage,
so far I have only converted three pieces:

1) method tables (~200K reduction)
2) symbol table (global_symbols.{id_str,sym_id}) (~200K)
3) frozen_strings (~100K)

n.b. frozen_strings ordering is never exposed to users, so I expect
it to be OK.

Memory reduction is just based on "ruby -e exit" (which loads RubyGems);
bigger programs with more methods/symbols will save more memory.

Work-in-progress patches attached (0002 describes implementation details)


---Files--------------------------------
0001-adjust-tests-to-account-for-unsorted-methods.patch (1.87 KB)
0002-ihash-initial-implementation-method-table-conversion.patch (32.8 KB)
0004-ihash-implement-rb_ihash_update-to-support-rb_fstrin.patch (7.84 KB)
0003-parse.y-switch-to-ihash-saves-200K-out-of-the-box.patch (9.51 KB)


-- 
https://bugs.ruby-lang.org/