Altenwald Blog
Blog sobre programación, software libre, redes, servidores, ...
Menú
Acerca de... ¿Quiénes somos? RSS
Categorías
sistemas (70) desarrollo (128) historias (25) productividad (49) seguridad (10) libros (25) noticias (45) opinión (35) humor (3)
Etiquetas
programación (111) desarrollo de software (79) erlang (75) opinión (37) noticia (36) libros (28) servidores (26) desarrollo web (24) base de datos (24) administración de sistemas (23) php (22) desarrollo ágil (22) empresa (21) otp (20) ruby (19) ingeniería de negocio (18) elixir (18) desarrollo profesional (16) redes (16) seguridad (14)
2019-01-30
6 min noticias
Erlang/OTP 21
[ noticia ]  [ erlang ]  [ liberación ]  [ otp ] 

En junio de 2016 fue la última vez que hablé sobre una liberación de Erlang y desde ese momento (hace ya 2 años y medio) ha llovido bastante. El equipo de Elixir ha ayudado a Ericsson con las últimas liberaciones así que, ¿qué tal si vemos qué mejoras han integrado en OTP 21?

Antes de nada, como también se me olvidó comentar las mejoras introducidas en OTP 20 voy a realizar aquí un resumen de todas las mejoras y después iremos profundizando en las más importantes. Hay otras como las mejoras en SSL a las que no entraré muy en detalle, solo comentar que se han realizado para ir mejorando el soporte de seguridad y eliminar protocolos o algoritmos de cifrado desfasados o marcados como inseguros.

OTP 20

Además de la publicación oficial de los cambios (en inglés) me ha gustado leer la lista alternativa de nuevas mejoras que se introducen en OTP 20 de la mano de Brujo Benavides en My Erlang/OTP 20 Highlights. Puedo simplificar las mejoras como:

En la lista de Brujo podemos ver además otras mejoras interesantes como:

Atom Emoji

Hay otras muchas mejoras como adición de funciones a módulos para el tratamiento de árboles, diccionarios o tablas ETS así como mejoras en el sistema de pruebas common_test (o ct) pero quiero centrarme principalmente en funcionalidades generales.

OTP 21

Sobre los cambios y mejoras en OTP 21 me gustaría señalar las siguientes que veo más importantes:

Además de estas mejoras se ha seguido profundizando en otras como la adición de más guardas para el uso de mapas como erlang:is_map_key/2 o erlang:map_get/2 que permiten obtener un valor o una clave de un mapa para emplearlo en las guardas.

¿Qué es lo mejor?

Realmente podría decir que lo mejor es ver el impulso hacia las mejoras de rendimiento para BEAM. Esto no solo beneficia a Erlang sino también a Elixir. Muchas de estas mejoras han sido propuestas desde los equipos de desarrollo de Elixir que han trabajado codo con codo con los equipos de soporte y desarrollo de Erlang en Ericsson.

Lukas Larsson explicaba en este artículo (en inglés) todos los cambios realizados en la versión OTP 21 en base a mejorar el rendimiento de la capa de E/S para ficheros, red e incluso la entrada y salida estándar del sistema. También todas las mejoras que comenté antes. En este otro artículo de Michał Muskała (desarrollador de Elixir) que hace un repaso a esas mejoras desde código escrito en Elixir empleando esa versión de BEAM.

Además vemos que los comportamientos siguen evolucionando de forma positiva. No solo ya podemos (y debemos) olvidarnos de gen_fsm sino que gen_statem ha traído mejoras que se están propagando al resto de comportamientos y seguiremos viendo mejoras en las próximas versiones de Erlang.

¿Qué es lo siguiente?

El equipo de Ericsson está trabajando activamente en OTP 22 y ya han señalado algunas mejoras que incluirá OTP 22 apuntando de nuevo a optimizaciones de rendimiento y las constantes mejoras y cambios en las capas de TLS y SSL. No obstante no se ha desvelado aún nada nuevo a ser incluido de momento en esta liberación. Esperaremos a ver qué nos depara BEAM con las siguientes comunicaciones de su equipo de desarrollo.

¿Crees que Erlang está consiguiendo más movimiento gracias a estas liberaciones? ¿Has considerado lanzarte a usarlo? ¿Consideras que quizás estas mejoras pueden ser más producto de Elixir y su tracción? ¡Déjanos un comentario!

Autor
Manuel Rubio
Programación Concurrente & Erlanger