- Lavandula es un framework web ligero basado en C, diseñado para el desarrollo de aplicaciones web modernas
- Ofrece un entorno de desarrollo intuitivo y rápido, y se enfoca en la productividad y el rendimiento sin funciones innecesarias
- Incluye la mayoría de las funciones esenciales, como sistema de controladores/enrutamiento, pipeline de middleware, framework de pruebas y bibliotecas de SQLite/JSON
- En el futuro está previsto ampliar sus capacidades con funciones como ORM, cookies de sesión, servicio de archivos estáticos e integración con varias bases de datos
- Maximiza la comodidad para desarrolladores con creación rápida de proyectos basada en CLI, pruebas unitarias integradas y soporte para variables de entorno y logging
Lavandula: visión general de un framework web ligero y de alto rendimiento en C
- Lavandula es un framework web ligero en C diseñado para crear aplicaciones web modernas de forma rápida y sencilla
- Sus objetivos principales son la simplicidad, la velocidad y la alta productividad; en lugar de funciones complejas, se concentra en lo esencial y reduce lo innecesario de los frameworks pesados
Características principales y utilidad
- Está construido sobre C, por lo que incluye dependencias mínimas
- Ofrece un sistema de controladores y enrutamiento que permite configurar endpoints HTTP con facilidad
- Incluye soporte para métodos HTTP como GET y POST y un pipeline de middleware local/global
- Permite crear y ejecutar proyectos rápidamente mediante la herramienta CLI (
lavu)
- Integra framework de pruebas unitarias, manejo de variables de entorno, logging, integración con SQLite y una biblioteca JSON
Funciones ya completadas
- Sistema de controladores/enrutamiento
- Soporte para endpoints por método HTTP (GET, POST, etc.)
- Pipeline de middleware (local/global)
- Dependencias mínimas (basado en código C puro)
- Scaffolding sencillo de proyectos mediante CLI
- Framework de pruebas unitarias integrado
- Soporte para variables de entorno y sistema de logging
- Integración con SQLite/biblioteca JSON integrada
Funciones en desarrollo
- Parsing de cuerpos JSON en HTTP
- Cookies de sesión
- Configuración de políticas CORS
- Lavender ORM
- Motor de plantillas HTML ELA (Embedded Lavandula)
Planes futuros (roadmap)
- Rate limiting
- Servicio de archivos estáticos
- Integración con PostgreSQL y MySQL
- Posible framework de inyección de dependencias
- Automatización de la lista de endpoints/rutas registrables
- Generación automática de modelos JSON y funciones CRUD (usando el comando
lavu model)
- Manejo de parámetros de URL y enrutamiento dinámico
Resumen de cómo crear y ejecutar un proyecto
- Comando CLI:
lavu new my-project crea automáticamente la carpeta del proyecto y la estructura base
- Archivos generados automáticamente:
- archivo de configuración (lavandula.yml)
- código fuente principal/controladores/rutas
- makefile
- código de pruebas, etc.
- Ejecución rápida: después de entrar a la carpeta, se puede iniciar de inmediato el servidor local con
lavu run, puerto predeterminado http://localhost:3000/
Licencia y otra información
- Licencia: MIT License
- De acuerdo con el espíritu open source, cualquiera puede mejorar el proyecto o participar
- Está escrito principalmente en C (97.3%) e incluye algunas partes en Makefile/Shell script
Resumen de las ventajas de Lavandula
- Como framework web completo, algo muy poco común en el ecosistema de C, destaca en entornos con recursos limitados o en la implementación de servidores ultrarrápidos
- Frente a frameworks populares, está especializado en mayor velocidad y menor overhead
- Gracias a su CLI, herramientas integradas y estructura minimalista, tiene una curva de aprendizaje corta y alta productividad
1 comentarios
Comentarios de Hacker News
#ifdefy montones de guiones bajos, creo que más bien es un buen ejemplo para aprender el sentido estético de C. En particular, es la primera vez que veo código de pruebas escrito en C de esta manera; es un gran trabajo. En la secundaria y preparatoria aprendí C como mi primer lenguaje de programación, y al instalar software libre en la PC que tenía en casa me di cuenta de que la mayoría de los programas estaban hechos en C. Cuando conocí formalmente ciencias de la computación en la universidad, vi estructuras de datos y algoritmos con C++, pero como ya entendía los punteros pude adaptarme fácilmente. Si evitas varios elementos complejos, te das cuenta de que C es un lenguaje muy limpio y simple. Claro, poder acceder directamente a esa complejidad también es parte del atractivo de C, pero creo que lo importante es el equilibrio adecuadoerror checking, así que en muchas partes no se revisan los valores de retorno desnprintf,malloc, etc. También existe un bucle sin usar. La parte de procesamiento paralelo todavía no parece estar soportada, así que no es un problema inmediato, pero por la naturaleza de un servidor web convendría introducirthreadingmás adelante. Si llegas a considerar la implementación, recomiendo usar una biblioteca como libuvEn lo personal me gusta la simplicidad de C puro, pero la combinación de código de red en C escrito por IA sí me da algo de miedo
appRoutevuelve ambiguos el tipo y la firma, e introduce una indirección innecesaria. Me parece mejor quitarla. Y el tipoAppContexten realidad mezcla funciones de App + HTTP Request + DB, así que algo comoRequestContextoControllerContextsería más apropiado. Fuera de eso, como varios otros, también me impresionó lo limpio del código. De verdad es un esfuerzo excelente