Reducir a 16 bytes un nodo AST en C++: optimizando un parser de Markdown

Un programador documenta el proceso seguido para reducir drásticamente el consumo de memoria de un parser de Markdown escrito en C++, portado desde la librería Rust markdown-rs como parte del proyecto gpui-cpp. La partida fue un struct Node de 232 bytes generado por una IA; el resultado final es un

Un programador construye su propio compilador de Markdown a HTML en Rust

Andrea, programador novel en Rust, presenta un compilador propio de Markdown a HTML desarrollado tras 12-13 horas de trabajo en su tiempo libre, sin recurrir a herramientas de inteligencia artificial generativa. El proyecto nació como una alternativa minimalista al generador de sitios estáticos Hugo

Sighthound: el escáner SAST basado en reglas de Corgea para código fuente

Sighthound es un escáner SAST (Static Application Security Testing) de código abierto basado en reglas, publicado por Corgea en GitHub, que analiza el código fuente en busca de vulnerabilidades de seguridad mediante reglas conscientes del AST (árbol de sintaxis abstracta). La herramienta admite dos

kparser: un parser pedagógico en C para el lenguaje K

kparser es un pequeño parser escrito en un único fichero en C (unas 570 líneas con comentarios) para el lenguaje de programación K, pensado como referencia pedagógica. Su objetivo es hacer legible la gramática de K, uno de los lenguajes con la gramática estructural más compacta: apenas cinco producc

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

Un compilador mínimo para entender cómo se paralelizan los kernels de datos

El artículo describe un compilador experimental de unas 180 líneas de Python, disponible en GitHub, que realiza una fase de "lowering" sobre kernels: transforma bucles `for` convencionales en bucles `vector_for` en los que el paralelismo de datos queda explícito. La entrada es un AST pequeño escrito

Cómo conseguir que ast.walk de Python sea 220 veces más rápido

El equipo de ingeniería de Reflex, plataforma de creación de aplicaciones web con Python, ha publicado en su blog técnico un análisis detallado de cómo logró acelerar la función ast.walk de la biblioteca estándar de Python hasta 220 veces. La motivación surgió de su constructor de aplicaciones basad

Linter casero soluciona error de transacción en código

Este artículo describe un problema común en el desarrollo de software backend, específicamente en el manejo de transacciones de bases de datos, y cómo el autor lo resolvió creando un linter personalizado. El problema surge cuando, al envolver código existente en una transacción, se olvida de usar el

Kotlin: análisis de código, la clave para evitar errores

Este artículo del blog de Allegro.tech explora el análisis estático de código en Kotlin, una técnica crucial para mantener la calidad, consistencia y seguridad del código. El análisis estático examina el código fuente sin ejecutarlo, identificando problemas potenciales como errores, violaciones de e

Google lanza JSIR: nueva herramienta para JavaScript

JSIR (JavaScript Intermediate Representation) es una nueva herramienta de Google, ahora de código abierto, que representa JavaScript a un nivel más bajo que el Abstract Syntax Tree (AST) tradicional, pero aún lo suficientemente alto como para ser comprensible y manipulable. En esencia, JSIR busca ll

nvim-treesitter: ¿por qué no hay versiones estables?

El plugin `nvim-treesitter` para Neovim, que proporciona análisis sintáctico avanzado para mejorar la experiencia de edición, ha generado una discusión interesante sobre la ausencia de versiones estables y la dependencia de actualizaciones continuas. La pregunta central es por qué no se utilizan las

Loreline: nuevo lenguaje facilita narrativas interactivas

Loreline es un nuevo lenguaje de narrativa diseñado para facilitar la creación de historias interactivas y juegos. Desarrollado por Jeremyfa, el lenguaje busca equilibrar la facilidad de uso para escritores con la complejidad de la ingeniería de software. Su diseño prioriza una sintaxis intuitiva qu

Smalltalk facilita reescrituras con nuevo motor

El motor de reescritura (Rewrite Engine) de Smalltalk, originalmente introducido con el Refactoring Browser, es una herramienta poderosa para realizar modificaciones a nivel de árbol de sintaxis abstracta (AST). Sin embargo, su sintaxis es notoriamente compleja y difícil de recordar, incluso para ta

IA aprueba pruebas, pero código fallido: un error crítico

Doodledapp, una empresa que convierte diagramas visuales en código Solidity, descubrió un problema crítico al intentar validar su convertidor con inteligencia artificial. Inicialmente, un sistema automatizado generó pruebas que pasaron para 17 contratos de uso común, lo que parecía un éxito. Sin emb

Git en riesgo: LLMs desafían el control de versiones

El desarrollo de software está evolucionando rápidamente, y las herramientas tradicionales, como los IDEs, están perdiendo relevancia a medida que los desarrolladores pasan más tiempo explorando código y interactuando con modelos de lenguaje grandes (LLMs). El sistema de control de versiones Git, qu