El NYI de LuaJIT que envenenó en silencio un bucle caliente sin relación

LuaJIT, el compilador JIT del lenguaje de scripting Lua —usado en juegos como Factorio y World of Warcraft y en herramientas como Neovim u OpenResty—, presume de velocidad, pero puede estrangular el rendimiento de forma inadvertida cuando el código activa uno de sus NYI (Not Yet Implemented): operac

La comunidad Lua debe aprender a dejar atrás las versiones antiguas

Hisham Mubarak, mantenedor de LuaRocks y autor de Teal, urge a la comunidad de programadores de Lua a abandonar la práctica de mantener compatibilidad indefinida con versiones obsoletas del lenguaje. El detonante fue la decisión de Mike Pall, creador de LuaJIT, de borrar en su repositorio las etique

Mapeo de bytecode a código fuente: técnicas y rendimiento

Cuando una máquina virtual basada en bytecode genera un error en tiempo de ejecución, necesita traducir el desplazamiento del bytecode a la línea del código fuente que lo produjo. Este artículo, surgido de los retos del capítulo 14 del libro 'Crafting Interpreters' de Robert Nystrom, analiza de form

Sistemas de compilación y el gestor de paquetes propuesto para civ

Este artículo examina qué debe ofrecer un sistema de compilación y expone el enfoque del proyecto civ, una herramienta escrita en alrededor de mil líneas de código que invoca un proceso de Lua en sandbox para interpretar configuraciones. El autor parte de una idea central: un sistema de compilación

Por qué log no es monótona en PHP y Lua: el caso base que rompe la intuición

Una falla silenciosa en la intuición matemática del cómputo En el mundo del software, una función tan aparentemente inocente como el logaritmo esconde trampas que rompen las expectativas más básicas de los programadores. Un análisis publicado por el desarrollador conocido como purplesyringa revela

clx: un compilador ahead-of-time de Lua con ejecutables nativos en C++20

clx es un compilador y runtime de Lua multiplataforma que genera ejecutables nativos independientes a partir de código Lua mediante cadenas de herramientas modernas de C++. Su objetivo no es competir por ser la implementación más rápida de Lua en todos los escenarios, sino ofrecer compilación ahead-

Trucos con literales de cadena en Lua para ahorrar 400 bytes

Este artículo describe las técnicas de compresión de código Lua empleadas en un proyecto de software para CC: Tweaked, una extensión de Minecraft que permite programar dentro del juego. Los autores explican cómo adaptaron bzip2 para reducir el tamaño de sus programas, ya que la suma de todo el códig

Cómo C++20 simplificó el bucle for con inicializador

El estándar C++20 introdujo una pequeña mejora sintáctica que acerca la forma de escribir bucles for en C++ a la de lenguajes como Python o Lua: la posibilidad de declarar variables en el propio encabezado del range-based for. Hasta C++17, recorrer un contenedor conservando el índice del elemento ex

Dos casos de estudio sobre los efectos inesperados de NaN en Python y Lua

NaN, el valor especial que representa «no es un número», infringe una de las reglas más asumidas en programación: que todo objeto es igual a sí mismo. Esa peculiaridad, definida en el estándar IEEE-754, se cuela en el diseño de lenguajes que dan por buena esa misma regla y produce comportamientos di

Filtros Lua en Pandoc: manipulación del AST sin dependencias externas

Los filtros de Pandoc son programas que permiten transformar el árbol de sintaxis abstracta (AST) del documento entre las fases de análisis y escritura. Los filtros tradicionales trabajan con una representación en JSON y pueden escribirse en cualquier lenguaje, pero presentan dos inconvenientes clar

LuaJIT 3.0 abre el debate sobre sus extensiones sintácticas

Mike Pall, responsable de LuaJIT, ha abierto el issue #1475 en el repositorio oficial del proyecto como punto central para definir las extensiones de sintaxis que incluirá la futura versión 3.0 del compilador. El hilo funcionará como documento vivo: la descripción recoge la propuesta inicial y un co

Brume: instrumento multitímbro de escritorio con cuatro motores de síntesis

Brume es un instrumento musical multitímbro de escritorio que reúne cuatro motores de síntesis en una sola unidad y se integra con un DAW mediante un único cable USB. Funciona sobre una placa Raspberry Pi Compute Module 5 con Raspberry Pi OS Lite, arranca en pocos segundos y emplea un motor de audio

Lo que comenzó como un pasatiempo se volvió un desafío técnico para PICO-8

El autor Michael Martin decidió tomar un descanso después de semanas de artículos intensivos y optar por hacer algo 'simple y sin complicaciones' en un lenguaje de alto nivel: un port del simulador 'Simulated Evolution' para PICO-8, una 'consola fantasia' que usa un dialecto de Lua. Sin embargo, est

Ciberataque 'fast16': Precedió a Stuxnet por 5 años

Investigadores de SentinelLabs han descubierto un sofisticado marco de ciber sabotaje llamado 'fast16', cuyos componentes centrales datan de 2005. Este marco, que precede a Stuxnet por al menos cinco años, se caracteriza por la modificación selectiva del código en memoria de software de cálculo de a

C se acelera: Nuevo sistema añade JIT a intérpretes

Investigadores han desarrollado un sistema llamado 'yk' que permite transformar intérpretes de código C en máquinas virtuales (VM) con compiladores JIT (Just-In-Time) con una mínima modificación del código existente. Esto abre la posibilidad de mejorar el rendimiento de lenguajes como Lua, Ruby y Py

Firefox más rápido: optimización acelera compilaciones

Mozilla ha logrado acelerar las compilaciones de Firefox en un 17% gracias a la optimización del sistema de caché de compilación (buildcache), según anunció Andreas Farre en su blog. La mejora se consiguió integrando un plugin Lua en buildcache para almacenar en caché el código generado a partir de

ClojureFnl: Compilador une Clojure y Fennel

Un desarrollador ha creado 'ClojureFnl', un compilador que traduce código Clojure a Fennel, un lenguaje Lisp inspirado en Clojure y que se ejecuta en Lua. El proyecto surgió inicialmente como una biblioteca llamada 'fennel-cljlib' en 2019, cuyo objetivo era incorporar características de Clojure en F

Wesnoth: estrategia de código abierto que sigue creciendo

The Battle for Wesnoth, un juego de estrategia por turnos de código abierto con temática de alta fantasía, ha estado disponible para descarga durante años y continúa evolucionando. Desarrollado por una comunidad global de voluntarios, el juego ofrece una amplia variedad de contenido, incluyendo 17 c

Hoja de cálculo en terminal: así es sc-im

sc-im es una calculadora de hojas de cálculo innovadora, diseñada para funcionar directamente en la terminal. Inspirada en el proyecto original 'sc' de James Gosling y Mark Weiser, y con mejoras de Chuck Martin, sc-im ofrece una alternativa potente y flexible a las hojas de cálculo tradicionales, es

Crea juegos 2D con LÖVE: framework sencillo y multiplataforma

LÖVE es un framework de código abierto diseñado para facilitar la creación de juegos 2D. Su principal atractivo reside en su simplicidad y portabilidad, permitiendo a los desarrolladores crear juegos que funcionen en una amplia gama de plataformas, incluyendo Windows, macOS, Linux, Android e iOS. L

Neovim 0.12.0: Nuevo motor Lua y mejoras

El equipo de Neovim ha anunciado la disponibilidad de la versión 0.12.0 de su editor de texto, NVIM, a través de su repositorio de GitHub. Esta nueva versión incluye el motor de scripting LuaJIT 2.1.1774638290 y está disponible para descarga e instalación en Windows (tanto para arquitecturas x86_64

ksynth: sintetizador de audio impulsado por Kubernetes

## ksynth: Un sintetizador de audio impulsado por Kubernetes para la experimentación y la automatización **1. Introducción: ¿Qué es ksynth y por qué es útil?** kSynth (abreviatura de Kubernetes Synth) es una herramienta innovadora que combina la potencia de la orquestación de contenedores Kubernete

bzip: el algoritmo de compresión que deberías conocer

Este artículo explora el algoritmo de compresión bzip, a menudo pasado por alto en favor de alternativas más populares como zstd o xz, pero que ofrece ventajas significativas en ciertos escenarios, particularmente cuando se trata de comprimir código fuente. El autor, enfrentando la necesidad de redu

Emacs y Vim: ¿amenaza o aliado de la IA?

El artículo de Bozhidar Batsov explora el futuro de Emacs y Vim en la era de la inteligencia artificial (IA), un tema crucial considerando su pasión de más de 20 años por Emacs y su creciente interés en Vim. Contrario a la idea de que la IA condenará estos editores de texto, Batsov argumenta que la

Hammerspoon: Automatiza macOS con scripts Lua

Hammerspoon es una herramienta de automatización de escritorio para macOS impulsada por el lenguaje de programación Lua. Desarrollada por Hammerspoon en GitHub, la aplicación actúa como un puente entre el sistema operativo y el motor de scripting Lua, permitiendo a los usuarios controlar diversos as

Lobster: Nuevo lenguaje de programación combina potencia y sencillez

Un nuevo lenguaje de programación llamado Lobster ha sido anunciado, buscando combinar lo mejor de la tipificación estática y la gestión de memoria en tiempo de compilación con una sintaxis ligera y amigable. Desarrollado por el equipo detrás de aardappel, Lobster es de código abierto (licencia Apac

Moongate v2: Nuevo emulador de Ultima Online

Un equipo de desarrolladores ha lanzado Moongate v2, un nuevo emulador de código abierto para el popular juego online Ultima Online. Construido con .NET y AOT (Ahead-of-Time compilation), el proyecto busca ofrecer una base sólida y modular para un servidor de UO, inspirándose en proyectos anteriores

Textadept: editor de texto rápido y abierto para programadores

Un nuevo editor de texto multiplataforma llamado Textadept ha sido lanzado recientemente, dirigido a programadores que buscan una herramienta rápida, minimalista y altamente extensible. El proyecto, de código abierto bajo la licencia MIT, ofrece versiones precompiladas para Windows, macOS y Linux, a

Arcan Project: Nuevo navegador 'Desktop Engine' toma protagonismo

Arcan Project ha reorientado su enfoque hacia la implementación de un novedoso 'Desktop Engine' que funciona como un navegador web. El proyecto, que comenzó con la visión de crear un sistema operativo alternativo, ahora se centra en desarrollar un navegador que se sitúa en el punto intermedio entre