Llegamos a ustedes gracias a:



Noticias

Creador de Ruby presenta nuevo modelo de concurrencia

[14/09/2016] Los desarrolladores que utilizan el lenguaje dinámico Ruby de código abierto van a ver algunos grandes cambios. El lenguaje va a presentar un nuevo modelo de concurrencia y paralelismo, llamado Guild, en el upgrade Ruby 3 tentativamente programado para llegar antes del 2020.

Los planes que se detallaron en una conferencia técnica en Kioto, Japón, esta semana señalan las intenciones de equipar a Ruby para un panorama de programación que cada vez más se ha movido hacia el procesamiento multinúcleo. Actualmente, Ruby soporta la concurrencia a través de subprocesos, pero hacer que los programas sean seguros en los subprocesos es difícil debido a la necesidad de gestionar las mutaciones de los objetos. Guild supera este problema mediante un modelo de concurrencia que permite la ejecución en paralelo.

"Puesto que los subprocesos no proporcionan ninguna protección de datos, es muy difícil escribir programas correctos, afirmó Yukihiro Matsumoto, fundador de Ruby. "Los Guilds se encuentran aislados unos de otros y no comparten estados mutables, básicamente como el modelo de actor que muchos otros lenguajes tienen. Ruby necesita un nuevo modelo de concurrencia porque ya tiene un modelo de subprocesos que no puede eliminarse, ya que mantiene la compatibilidad en el lenguaje, afirmó Matsumoto.

La presentación de la conferencia de Koichi Sasada de Heroku, uno de los contribuyentes principales de Ruby, ofrece un mapa de lo que se quiere con Guild, que se describe como una "nueva abstracción de concurrencia. Cada Guild tiene al menos un subproceso; los subprocesos en diferentes Guilds pueden ejecutarse en paralelo, pero los subprocesos en el mismo Guild no pueden hacerlo debido a la capacidad Giant Guild Block. Los objetos mutables deberían pertenecer a un Guild, pero puede haber comunicación entre Guilds.

La programación con múltiples subprocesos es difícil, entre los riesgos se encuentran las condiciones de carrera entre los subprocesos, señaló Sasada. Puede haber intercambios entre el rendimiento y la seguridad, es difícil de afinar el rendimiento, los objetos mutables deben compartirse correctamente y la depuración de errores es difícil.

"Guild es parte de nuestro experimento Ruby 3, afirmó Matsumoto, pero también señaló que el nombre, Guild, así como su comportamiento podrían cambiar para cuando lleguen.