DEV Community

João Neto
João Neto

Posted on

libuv e Lua

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.

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay