Optimización del Lexer de Purple Garden: Un aumento de velocidad de 0 a 580 MB/s

2025-07-14

Esta publicación de blog detalla el proceso del autor para optimizar el lexer del lenguaje Purple Garden, alcanzando una velocidad impresionante de 580 MB/s. Las técnicas empleadas incluyen gotos computados, cadenas de cero copias y cero asignaciones, una interfaz de asignador, internamiento de tokens y hashes de palabras clave precomputados, mejorando significativamente el rendimiento del lexer. Otras optimizaciones incluyeron mejoras arquitectónicas y el uso de mmap para una lectura de archivos más rápida. Estas optimizaciones resultaron en un aumento dramático en la velocidad, transformando el tiempo de procesamiento de decenas de milisegundos a meros milisegundos, un verdadero salto en la velocidad.

Leer más
Desarrollo

Un analizador JSON robusto y eficiente en C puro

2025-03-01

Este artículo detalla un analizador JSON implementado completamente en C. Empleando un enfoque orientado a objetos con funciones adjuntas a structs, se caracteriza por una mejor legibilidad y mantenibilidad. Priorizando la seguridad, evita las fugas de memoria y los errores de segmentación comunes. Se proporciona una API limpia y ergonómica, junto con instrucciones de compilación, ejemplos de uso y mejores prácticas para el desarrollo en C, incluidas las flags del compilador para un código robusto. El autor demuestra el uso de macros variádicas para la generación de JSON en línea y técnicas eficientes de gestión de memoria.

Leer más
Desarrollo Análisis JSON

Resaltar Bash en Lua con Neovim y Treesitter

2025-01-28

El autor creó una herramienta para sincronizar paquetes en varias máquinas, utilizando un archivo de configuración Lua. Para mejorar la legibilidad y edición de scripts Bash incrustados en la configuración Lua, utilizó Neovim y el plugin Treesitter. Treesitter, a través de su función de inyección, identifica el campo `script` en las tablas Lua y resalta su contenido como Bash basado en una consulta personalizada. Esto mejora significativamente la legibilidad y el mantenimiento del código. La publicación detalla la configuración de Neovim y Treesitter, junto con la consulta personalizada para lograr el resaltado de Bash.

Leer más
Desarrollo

Incorporación de Lua en Rust para el análisis estático de SQL configurable en sqleibniz

2024-12-19

sqleibniz, una herramienta de análisis estático de SQL para el dialecto SQLite, se ha mejorado con scripts Lua para una mayor capacidad de configuración y extensibilidad. El autor detalla la integración usando la biblioteca mlua en Rust, cubriendo la conversión de estructuras de datos, las llamadas a funciones Lua y el manejo de errores. Los scripts Lua permiten a los usuarios definir reglas y ganchos personalizados, permitiendo un análisis estático flexible, como diagnósticos personalizados y comprobaciones de estilo. Esto mejora significativamente la extensibilidad y la experiencia del usuario de sqleibniz.

Leer más
Desarrollo Análisis estático