Una implementación transparente de memoria transaccional en un lenguaje dinámico orientado a objetos - Leveroni, Luciano (2017)
Memoria Transaccional (de ahora en adelante, STM) emerge como una alternativa a técnicas tradicionales de control de concurrencia, basadas principalmente en la idea de locks y sus variantes (semáforos, monitores, etc). En los últimos años la investigación sobre este tema se encuentra en auge. Este trabajo describe una implementación transparente de STM sobre el lenguaje Ruby. Entendemos por transparente a una implementación que, a diferencia de otras implementaciones existentes, no resulta intrusiva para el programador-usuario de esta extensión del lenguaje. La implementación realizada es compatible con MRI, la implementación oficial de Ruby, así como Rubinius, una implementación alternativa realizada sobre Ruby mismo. La técnica utilizada se basa en la generación dinámica de código, en tiempo de ejecución, fuertemente basada en el trabajo Transactional Memory for Smalltalk [7] (2008, Lukas Renggli et. al). La investigación se centra en exhibir las ventajas y limitaciones del lenguaje Ruby al momento de implementar STM, así como los obstáculos y beneficios particulares de las dos implementaciones de Ruby mencionadas. Se muestra como las distintas capacidades reflexivas, características del meta-modelo y de meta-programación del lenguaje inciden en la posibilidad de implementar esta técnica sin modificaciones necesarias a las VMs asociadas (salvo algunas excepciones). Como conclusión, Ruby como lenguaje ofrece en principio las herramientas para lograr una de STM robusta y completa. Sin embargo, la problemática de las primitivas de lenguaje junto con algunas deficiencias de implementación y limitaciones del meta-modelo, derivaron en una implementación más compleja y acoplada a particularidades implementativas. No obstante, se logró una implementación funcional que requiere modificaciones a nivel implementación del lenguaje / VM para solventar las limitaciones expuestas.