Project

General

Profile

Feature #9614

ordering of non-Hash items which use st_ internally

Added by normalperson (Eric Wong) about 6 years ago. Updated over 2 years ago.

Status:
Open
Priority:
Normal
Target version:
-
[ruby-core:61383]

Description

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

Also available in: Atom PDF