nelua.io
Nelua (representa la lua de los sistemas ntensibles) es un lenguaje de programación de sistemas mínimo, eficiente, con metaprogramación y metaprogramable muy inspirado en LUA, que compila a C y código nativo.
Nota: El lenguaje está en estado alfa y aún evoluciona.
#showcase en el servidor Discord.Después de instalar, es posible que desee ver el ejemplo destacado, un juego de serpiente que aprovecha la famosa biblioteca SDL2:
nelua examples/snakesdl.neluaNelua es un lenguaje de programación de sistemas para aplicaciones sensibles al rendimiento donde LUA no sería eficiente, como los sistemas operativos, las aplicaciones en tiempo real y los motores de juego. Si bien tiene sintaxis y semántica similar a LUA, se centra principalmente en generar un código C eficiente y proporcionar soporte para una programación de bajo nivel altamente optimizable. El uso de modismos de Nelua, como registros, matrices, gestión de memoria manual y punteros, debería dar como resultado un rendimiento tan eficiente como la C pura; Por otro lado, cuando se usa modismos de Lua, como tablas, metatizables y variables sin tipo, el compilador horneará una biblioteca de tiempo de ejecución para este tipo de funcionalidad dinámica en el programa, lo que podría incurrir en algunas sobrecargas de tiempo de ejecución.
Nelua puede hacer meta programación en el tiempo de compilación a través de construcciones preprocesador escritas en Lua; Dado que el compilador en sí también está escrito en LUA, significa que el código preprocesador proporcionado por el usuario puede interactuar en cualquier momento con las partes internas del compilador y el AST del código fuente. Dicho sistema permite la implementación ad-hoc de construcciones de alto nivel, como clases, genéricos y polimorfismo, todo sin tener que agregarlos a la especificación central, manteniendo así el lenguaje simple, extensible y compacto. La misma forma en que los patrones orientados a objetos de Lua no están integrados en el lenguaje, pero que, sin embargo, se pueden lograr a través de metatibles, en Nelua podría implementar una funcionalidad similar que se decide completamente en el momento de la compilación o se envía dinámicamente en tiempo de ejecución.
Nelua puede hacer una programación extensible ya que el programador puede agregar extensiones al lenguaje, como nuevas gramáticas, definiciones AST, semánticas, verificadores de tipo, generación de códigos y comportamientos al compilador en el tiempo de compilación a través del preprocesador.
Nelua brinda soporte para la gestión de la memoria recolectada de basura y manual de una manera que el desarrollador puede elegir fácilmente entre el uso de la recolección de basura, o deshabilitar por completo la recolección de basura, o mezclar ambos.
Nelua primero se compila a C, luego ejecuta un compilador C para producir código nativo. De esta manera, se pueden aprovechar el código C y las bibliotecas existentes y se pueden crear nuevas bibliotecas C. Otro beneficio es que Nelua puede alcanzar las mismas plataformas objetivo que los compiladores C99, tales GCC o Clang, al tiempo que disfrutan de las optimizaciones de compiladores de última generación proporcionadas por ellos.
La motivación inicial para su creación fue reemplazar las partes C/C ++ de los proyectos que actualmente usan LUA con un lenguaje que tiene sintaxis y semántica similar a LUA, pero permite optimizaciones de rendimiento de grano fino y no pierde la capacidad de ir de bajo nivel, unificando así la sintaxis y la semántica en los idiomas compilados y dinámicos.
Puede apoyar o contribuir a Nelua de muchas maneras, dando al proyecto una estrella en GitHub, probando sus características, informar errores, discutir ideas, ayudar a otros usuarios, difundir al mundo, compartir proyectos hechos con él en Github, crear tutoriales o publicaciones de blog, mejorar su documentación o mediante una donación o un biblioteca.
Nelua es de código abierto, pero no muy abierto a contribuciones en forma de solicitudes de extracción, si desea algo arreglado o implementado en el lenguaje central, intente enviar primero un informe de errores o abrir una discusión en lugar de hacer un PR. Los autores lo prefieren de esta manera, de modo que la solución ideal siempre se proporciona, sin consecuencias no deseadas en el proyecto, manteniendo así la calidad del software.
Lea más sobre cómo contribuir en la página contribuyente.
Licencia de MIT