- Lavandula é um framework web leve baseado na linguagem C, projetado para o desenvolvimento de aplicações web modernas
- Oferece um ambiente de desenvolvimento intuitivo e rápido, com foco em produtividade e desempenho sem recursos desnecessários
- Inclui a maioria dos recursos essenciais, como sistema de controladores/roteamento, pipeline de middleware, framework de testes e bibliotecas SQLite/JSON
- No futuro, está prevista a expansão com recursos como ORM, cookies de sessão, serving de arquivos estáticos e integração com vários bancos de dados
- Maximiza a conveniência para desenvolvedores com criação rápida de projetos via CLI, testes unitários embutidos e suporte a variáveis de ambiente e logging
Lavandula: visão geral de um framework web leve e de alto desempenho em C
- Lavandula é um framework web leve em linguagem C projetado para permitir a criação de aplicações web modernas de forma rápida e simples
- Seus principais objetivos são simplicidade, alta velocidade e alta produtividade, focando no que é realmente necessário em vez de recursos complexos e reduzindo o excesso típico de frameworks pesados
Principais características e utilidade
- Foi desenvolvido com base em C, incluindo apenas o mínimo de dependências
- Oferece sistema de controladores e roteamento, permitindo configurar endpoints HTTP com facilidade
- Suporta métodos HTTP como GET e POST e inclui pipeline de middleware local/global
- Há suporte para criação e execução rápida de projetos por meio da ferramenta CLI (
lavu)
- Inclui framework de testes unitários embutido, tratamento de variáveis de ambiente, logging, integração com SQLite e biblioteca JSON
Recursos já concluídos
- Sistema de controladores/roteamento
- Suporte a endpoints por método HTTP (GET, POST etc.)
- Pipeline de middleware (local/global)
- Dependências mínimas (baseado em código C puro)
- Scaffolding simples de projetos via CLI
- Framework de testes unitários embutido
- Suporte a variáveis de ambiente, sistema de logging
- Integração com SQLite/biblioteca JSON embutida
Recursos em desenvolvimento
- Parsing de body JSON em HTTP
- Cookies de sessão
- Configuração de política de CORS
- Lavender ORM
- ELA (Embedded Lavandula) HTML template engine
Planos futuros (roadmap)
- Rate limiting
- Serving de arquivos estáticos
- Integração com PostgreSQL e MySQL
- Candidato a framework de injeção de dependência
- Automação da lista de endpoints/rotas registráveis
- Geração automática de modelos JSON e funções CRUD (usando o comando
'lavu model')
- Tratamento de parâmetros de URL e roteamento dinâmico
Visão geral de como criar e executar um projeto
- Comando CLI:
lavu new my-project cria automaticamente a pasta do projeto e a estrutura básica
- Arquivos gerados automaticamente:
- arquivo de configuração (
lavandula.yml)
- fontes principal/controlador/rotas
- makefile
- código de teste etc.
- Execução rápida: após entrar na pasta, é possível iniciar imediatamente o servidor local com
lavu run, na porta padrão http://localhost:3000/
Licença e outras informações
- Licença: MIT License
- Seguindo o espírito open source, qualquer pessoa pode melhorar ou participar do projeto
- Foi escrito com base em C (97,3%), com inclusão parcial de Makefile/Shell script
Resumo das vantagens que o Lavandula oferece
- Como um framework web completo extremamente raro no ecossistema da linguagem C, ele é excelente para ambientes com recursos limitados ou para implementar servidores ultrarrápidos
- É especializado em maior velocidade e menor overhead em comparação com frameworks populares
- Com CLI, ferramentas embutidas e estrutura minimalista, oferece curva de aprendizado curta e alta produtividade
1 comentários
Opiniões no Hacker News
#ifdefe muitos underscores, acho que é um ótimo exemplo para aprender o senso estético de C. Em especial, foi a primeira vez que vi testes escritos em C dessa forma. Belo trabalho. Aprendi C como minha primeira linguagem de programação quando estava no ensino fundamental e médio, e, ao instalar software livre no PC que havia em casa, descobri que a maioria dos programas era feita em C. Quando tive meu primeiro contato formal com ciência da computação na universidade, estudei estruturas de dados e algoritmos em C++, mas já entendia ponteiros e consegui me adaptar com facilidade. Se você evitar vários elementos complexos, dá para perceber que C é uma linguagem muito limpa e simples. Claro, o charme de C também está em poder acessar essa complexidade diretamente, mas acho importante manter um bom equilíbrio.snprintf,mallocetc. não são checados. Também existe um loop não utilizado. A parte de paralelismo ainda não parece ser suportada, então isso não é um problema imediato, mas, pela natureza de um servidor web, introduzir threading no futuro seria vantajoso. Ao considerar a implementação, recomendo usar uma biblioteca como libuv.Pessoalmente, gosto da simplicidade de C puro, mas a combinação de código de rede em C escrito por IA me assusta um pouco.
appRouteobscurece o tipo e a assinatura e introduz indireção desnecessária. Parece melhor removê-lo. E o tipoAppContextna verdade mistura funções de App + requisição HTTP + DB etc., então algo comoRequestContextouControllerContexttalvez fosse mais adequado. Fora isso, como os outros, fiquei impressionado com a limpeza do código. Foi um esforço realmente muito bacana.