Feature #9614

Updated by nobu (Nobuyoshi Nakada) about 6 years ago

Hi matz, I would like your permission to remove the order preservation from 
 any or all of the following currently implemented using `st_table`: st_table: 

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

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

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

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

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

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