Há muito pouco tempo atrás um amigo meu me sugeriu dar atenção a MoonScript. Admito que eu via a linguagem com preconceito, mesmo assim resolvi dar uma olhada.
Resultado: todos os meus códigos em Lua acabaram migrados para MoonScript. 😋
A linguagem é extremamente enxuta, limpa e poderosa. Para lidar com oparadigma funcional, a sintaxe de MoonScript é bem mais concisa e que a de Lua. O mesmo vale para orientação a objetos. Não vou entrar em detalhes, se estiver curioso, leia o guia da linguagem.
LuaJIT é uma implementação alternativa JIT de Lua, com suporte a FFI nativo.
Colocar MoonScript para trabalhar com LuaJIT não é trivial. É preciso uma série de pequenos hacks pra funcionar.
Vamos começar pelas dependências.
MoonScript depende de quatro outros módulos para funcionar:
alt-getopt
Instale alt-getopt
normalmente no LUA_PATH
de seu LuaJIT. Aqui para mim é /usr/share/lua/jit
.
Para instalar LuaFileSystem, clone o repositório do GitHUB e não se esqueça de editar o arquivo config
. As mudanças
principais são:
PREFIX=/usr
LUA_LIBDIR=$(PREFIX)/lib/lua/jit
LUA_INC=$(PREFIX)/include/luajit-2.0
Isso considerando que seu LUA_CPATH
esteja em /usr/lib/lua/jit
.
Compile e instale normalmente.
Já LPeg merece uma atenção extra, já que ele não funciona com LuaJIT. No lugar, use LPegLJ.
Clone e instale LPegLJ no seu LUA_PATH
, depois execute o seguinte comando:
cd $LUA_PATH
sudo ln -s lpeglj.lua lpeg.lua
Isso fará com que MoonScript pense tratar-se do LPeg original.
Com as três dependências instaladas, clone o projeto do GitHUB. Edite o Makefile
, substituindo as ocorrências de lua5.1
e
lua
por luajit
.
Remova as entradas local
e global
do Makefile
.
Edite o hashbang dos arquivos bin/moon
e bin/moonc
, trocando lua
por luajit
.
Execute make compile
Copie os diretórios moon/
e moonscript/
para seu LUA_PATH
.
Copie os arquivos bin/moon
e bin/moonc
para o diretório /usr/bin/
do sistema.
E pronto! Já deve estar funcionando! Qualquer dúvida, me avisem pra eurevisar o texto.