Dear Charles, I have no intensions of changing the language APIs for it really does not matter to a VM Implementation. All the components that inherently affects the VM implementations are those that VM uses natively like File, Strings, Numbers and Threads. I surprisingly found Symbols are exactly not Immutable...., they are just like any other class irb(main):001:0> foo = :foo => :foo irb(main):002:0> class Symbol irb(main):003:1> def bar=(value) irb(main):004:2> @bar = value irb(main):005:2> end irb(main):006:1> def printbar irb(main):007:2> print @bar irb(main):008:2> end irb(main):009:1> end => nil irb(main):010:0> foo.bar = "eee" => "eee" irb(main):011:0> foo.printbar eee=> nil irb(main):012:0> zoo = :foo => :foo irb(main):013:0> zoo.printbar eee=> nil irb(main):014:0> We can think that keys that are strings of the Symbol table are immutable, while the values which are objects of the instances Symbol are mutable. I had thought that symbol table was a hash_set but it turns out that it is a hash_map. In that case it appears immutable strings are be called as symbols and Ruby has Immutable strings. of course, by implementing additional methods. Regards, Mystifier