Lanzamiento de Elixir v1.17: tipos teóricos de conjuntos, duración de calendario y compatibilidad con Erlang/OTP 27
Advertencias graduales de tipos teóricos de conjuntos
- Elixir v1.17 introduce tipos teóricos de conjuntos que infieren tipos a partir de patrones y los usan para verificar tipos en el programa.
- Este sistema de tipos permite encontrar errores y bugs en una base de código sin necesidad de modificar el software existente.
- Por ahora, los desarrolladores solo pueden interactuar con este sistema de tipos mediante advertencias.
- Advertencias principales:
- pattern matching sobre claves que no existen
- acceso a claves que no existen
- llamada de funciones en algo que no es un módulo
- al invocar una función anónima, llamar algo que no es una función
- comparación entre structs
- comparación entre tipos que no se superponen
- pattern matching binario incorrecto
- intento de rescatar un struct de excepción no definido
- acceso a campos no definidos en una excepción rescatada
Compatibilidad con Erlang/OTP
- Elixir v1.17 es compatible con Erlang/OTP 27 y deja de dar soporte a Erlang/OTP 24.
- Los desarrolladores de Elixir recomiendan migrar a Erlang/OTP 26 o superior.
- Funciones principales de Erlang/OTP 27:
- se agregó el módulo
json
- se agregaron etiquetas de proceso (
proc_lib:set_label/1)
Nuevo tipo de dato Duration y funciones para desplazar fechas
Otros cambios importantes
- Se agregaron las nuevas funciones
Keyword.intersect/2,3.
- Se agregó el nuevo profiler de Mix
mix profile.tprof.
- Se agregó la guarda
Kernel.is_non_struct_map/1.
- El Logger de Elixir formatea reportes de
gen_statem e incluye etiquetas de proceso de Erlang/OTP 27.
Opinión de GN⁺
- Tipos teóricos de conjuntos: este sistema de tipos puede ser de gran ayuda para mejorar la estabilidad y confiabilidad del código. En especial, resulta útil en proyectos grandes.
- Compatibilidad con Erlang/OTP 27: al dar soporte a la versión más reciente de Erlang/OTP, ofrece muchas ventajas en rendimiento y funcionalidades.
- Tipo de dato Duration: la capacidad de desplazar fechas teniendo en cuenta zonas horarias y calendarios es muy útil en aplicaciones como las de gestión de agendas.
- Límites del sistema de tipos: por ahora no es posible analizar tipos más allá de los límites entre funciones, así que este aspecto deberá mejorar en futuras actualizaciones.
- Productos competidores: al compararlo con otros lenguajes que ofrecen sistemas de tipos estáticos, como TypeScript, el enfoque de Elixir brinda seguridad de tipos sin perder la flexibilidad de un lenguaje dinámico.
1 comentarios
Comentarios en Hacker News
Los equipos de Elixir y Erlang han logrado resultados sobresalientes en los últimos años. También han sido muy importantes las contribuciones de autores de librerías y libros. Da gusto seguir los commits de Elixir y OTP. Gracias a todas las personas involucradas.
En un proyecto paralelo que usó Elixir como backend, la experiencia fue productiva y agradable. Valoro mucho la productividad de LiveView, pero no es adecuado cuando la conexión de red es inestable. Elixir sigue siendo muy disfrutable de usar incluso separado de LiveView.
Estoy desarrollando una startup full stack con Elixir, y hasta ahora es lo mejor que he usado. Les estoy contando a mis amigos las ventajas de Elixir. Ojalá RabbitMQ y el cliente funcionen en OTP 27.
Gracias por el gran trabajo de los desarrolladores de Elixir y Erlang. Espero que desaparezca la excusa de que "no tiene tipos" para una adopción más amplia de Elixir. Ojalá sigan dando tan buenos resultados.
Llevo 10 años leyendo sobre Elixir y me encanta el lenguaje. Pero desistí de buscar trabajo relacionado con Elixir por los salarios más bajos frente a lenguajes más mainstream. El sueldo y un producto atractivo importan más que el stack tecnológico. Aun así, sigue siendo divertido observar Elixir desde lejos.
Una gran función de esta versión es la incorporación de
get_in/1. Por ejemplo, enget_in(struct.foo.bar), sifoodevuelvenil, no se produce un error al intentar acceder abar.Esta versión era la última pieza que estaba esperando. Me entusiasman los próximos pasos. Creo que el lenguaje ya está 100% completo en cuanto a funcionalidades.
Tengo muchas expectativas sobre el sistema de tipos. Recuerdo que José lo describió como un "sistema de tipos gradual". Eso se irá incorporando por etapas. Me pregunto si en la siguiente etapa aparecerán nuevas funciones relacionadas con el nuevo sistema de tipos. En particular, espero nuevas optimizaciones del compilador.
Estoy muy emocionado por esta versión. Ojalá se inviertan recursos en el plugin de Elixir para IntelliJ. No disfruto usar VSCode.
Me pregunto si alguien sabe qué significa "tipos de teoría de conjuntos". Me interesan mucho los lenguajes de programación, pero es la primera vez que escucho ese término.