Criei um projeto chamado lua-libuv e gostaria de compartilhar minha experiência. A ideia inicial era testar as possibilidades de usar a biblioteca libuv (uma biblioteca de I/O assíncrono escrita em C) para criar um servidor HTTP extremamente simples, sem utilizar todo o poder da libuv, já que não sei nada da linguagem C.
Com a ajuda do ChatGPT, gerei a base do que atualmente é o http.c
e, com um pouco de perseverança, consegui fechar as conexões e liberar memória na hora certa, pois enfrentei vários problemas, como o servidor simplesmente fechar a conexão e quebrar o programa principal. Tentei criar um streaming para enviar chunks, que funcionou (mas esse foi o ponto que quebrava a thread principal hehehe), só que acabei abandonando para chegar a um fim, pois meu objetivo não era me aprofundar em C.
Acabei criando um ambiente onde é possível executar scripts Lua dentro de um servidor HTTP, utilizando a libuv para gerenciar as operações assíncronas. O objetivo inicial era apenas criar o servidor HTTP, mas acabei criando uma estrutura para rodar scripts Lua, o que foi uma boa evolução do projeto.
Ainda não testei no Linux, então não sei se funcionará com apenas o comando make
, mas, de qualquer forma, é muito satisfatório ver o progresso e o objetivo alcançado até aqui. Além disso, o projeto pode servir como um ponto de partida para quem quiser construir algo mais elaborado utilizando libuv e Lua.
Se alguém se interessar ou quiser colaborar, sinta-se à vontade para testar ou dar sugestões. A ideia é ajudar quem quer explorar mais essas tecnologias.
O código está disponível no repositório.
[update]
Corrigido build e execução dos scripts lua para ambiente linux, testado no Ubuntu.
Top comments (0)