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.

DevCycle image

Ship Faster, Stay Flexible.

DevCycle is the first feature flag platform with OpenFeature built-in to every open source SDK, designed to help developers ship faster while avoiding vendor-lock in.

Start shipping

Top comments (0)

Dev Diairies image

User Feedback & The Pivot That Saved The Project ↪️

We’re following the journey of a dev team building on the Stellar Network as they go from hackathon idea to funded startup, testing their product in the real world and adapting as they go.

Watch full video 🎥

👋 Kindness is contagious

Delve into a trove of insights in this thoughtful post, celebrated by the welcoming DEV Community. Programmers of every stripe are invited to share their viewpoints and enrich our collective expertise.

A simple “thank you” can brighten someone’s day—drop yours in the comments below!

On DEV, exchanging knowledge lightens our path and forges deeper connections. Found this valuable? A quick note of gratitude to the author can make all the difference.

Get Started