This heavily improves the case where multiple threads are generating random numbers with for example Kernel.rand() and they are contending over the lock inside the randomizer. By using a randomizer per thread, we don't have this locking overhead.
Fix typo in Array#isort_block!
fixes platforms that are missing the hostname executable by providing for an array of fallback commands that return equivalent information
Abstracting slot access wins again! One place to change for all code that changes the size and data to go through! PARTY!
Clean up changes introduced in 9e0c903 by removing duplication
Add a Rubinius.convert_to_name method and use it to unify the definitions of Exception#to_yaml_properties. Also remove Rubinius.convert_to_names from kernel/bootstrap/rubinius.rb, since there seems to be no reason for it to exist. Unfortunately Rubinius.convert_to_name duplicates the knowledge of how method and constant names are represented under 1.8 and 1.9, since Rubinius.convert_to_names hasn't been changed to call convert_to_name. However I believe this is the right choice, especially if we factor in the performance hit of potentially calling Rubinius.convert_to_name thousands of times inside the map! block.
See #1539. This likely fixes it, but I wasn't able to reproduce it to begin with.
This fixes the previous commit's spec, but diverges from from MRI's Encoding.compatible? behavior, which I believe to be buggy: https://bugs.ruby-lang.org/issues/5968