Files
mruby-mruby/mrbgems/mruby-symbol-ext
Yukihiro "Matz" Matsumoto 71cb3c2e3a class.c: allocate ROM table wrappers per mrb_state
ROM method tables used static mrb_mt_tbl variables shared
across the process. The next pointer in each wrapper was
mutated by mrb_mt_init_rom(), causing cross-state
contamination when multiple mrb_state instances existed.

Allocate mrb_mt_tbl wrappers per-state via mrb_malloc().
The const mrb_mt_entry[] arrays remain static and shared.
Wrappers are tracked in mrb->rom_mt and freed at mrb_close().

Remove MRB_MT_ROM_TAB macro; add MRB_MT_INIT_ROM macro that
auto-computes size and calls the new mrb_mt_init_rom().

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-20 22:24:31 +09:00
..
2025-06-10 11:25:45 +09:00

mruby-symbol-ext

This gem extends mruby's Symbol class with additional useful methods.

Methods

Here are the methods added to the Symbol class:

capitalize

  • call-seq: sym.capitalize -> symbol
  • Returns a new symbol with the first character converted to uppercase and the remainder to lowercase. Equivalent to sym.to_s.capitalize.intern.

downcase

  • call-seq: sym.downcase -> symbol
  • Returns a new symbol with all characters converted to lowercase. Equivalent to sym.to_s.downcase.intern.

upcase

  • call-seq: sym.upcase -> symbol
  • Returns a new symbol with all characters converted to uppercase. Equivalent to sym.to_s.upcase.intern.

casecmp(other_symbol)

  • call-seq: sym.casecmp(other) -> -1, 0, +1 or nil
  • Performs a case-insensitive comparison between two symbols. Returns -1, 0, or +1 if other_symbol is a symbol. Returns nil if other_symbol is not a symbol.

casecmp?(other_symbol)

  • call-seq: sym.casecmp?(other) -> true, false, or nil
  • Returns true if the receiver and other_symbol are equal after case folding, false if they are not equal. Returns nil if other_symbol is not a symbol.

empty?

  • call-seq: sym.empty? -> true or false
  • Returns true if the symbol's string representation is empty (i.e., :""), false otherwise.

length / size

  • call-seq:
    • sym.length -> integer
    • sym.size -> integer
  • Returns the length of the symbol's string representation. size is an alias for length.

Symbol.all_symbols (Conditional)

  • call-seq: Symbol.all_symbols => array
  • Returns an array of all symbols currently in mruby's symbol table.
  • Note: This method is only available if mruby is compiled with the MRB_USE_ALL_SYMBOLS define.