Keita graduated from the Department of Integrated Information Technology, College of Science and Engineering, Aoyama Gakuin University, in March 2018. He is currently a Master Course Student in the Intelligence and Information Course, Graduate School of Science and Engineering, Aoyama Gakuin University. His main research interest is design and implementation of programming languages.
Martin is a Professor of Computer Science at Aoyama Gakuin University in Japan. He has been one of the main drivers of Internationalization (I18N) and the use of Unicode on the Web and the Internet. He published the first proposals for DNS I18N and for NFC character normalization, and is the main author of the W3C Character Model and the IRI specification (RFC 3987). Since 2007, he and his students have contributed to the implementation of Ruby, mostly in the area of I18N.
Grow and Shrink - Dynamically Extending the Ruby VM Stack
Currently, MRI (the reference implementation of Ruby) allocates 1MB of stack space for each thread. This is clearly sub-optimal, in particular for highly multi-threaded applications.
We have successfully implemented dynamical stack extension for MRI, starting with a very small stack size and growing each stack only when needed. We will present two different implementations, one very close to the current stack structure, and one with a different stack structure. We will also explain how we made sure that our implementation is stable. On Linux, we achieve a memory reduction per thread of up to 30%, at the cost of an average speed increase (measured across all Ruby benchmarks) of 6%.