LuaRocks 2.0 é um sistema de gerenciamento e distribuição de módulos para a linguagem Lua que não requer o módulo luarocks.require. Ele instala módulos em uma árvore padrão do Lua e usa arquivos de manifesto para controlar versões de módulos. LuaRocks 2.0 é compatível com servidores de módulos LuaRocks 1.0, mas usa um novo formato de instalação local.
2. Gerência de módulos em Lua
Lua 5.1 introduziu um sistema de módulos
require(), module()
Reuso de módulos
Perl tem CPAN, Ruby tem RubyGems, etc.
3. LuaRocks
Sistema de gerenciamento e distribuição
de módulos para a linguagem Lua
Portável: Linux, BSD, OSX, Windows
Licença MIT/X11
Similar ao RubyGems
4. Recursos
Download e instalação de módulos
luarocks build luasocket
luarocks list, luarocks search curl...
Um gerenciador de módulos dinâmico para
uma linguagem dinâmica
Suporte a resolução de cadeias de
dependências em tempo de execução
Instalação em paralelo de múltiplas versões de
um módulo
5. LuaRocks 1.0
Módulos empacotados como “rocks”
Árvore local de rocks
Cada rock contém sua própria sub-árvore:
bin
lib
lua
...
Módulo luarocks.require realiza a resolução
em runtime
6. Recepção
Boa, mas não ideal
Usuários desconfortáveis com o módulo
luarocks.require
Wrapper da função require()
7. LuaRocks 2.0
Não precisa de luarocks.require
Instala módulos em uma árvore Lua padrão
.../share/lua/5.1
.../lib/lua/5.1
Basta incluir estes caminhos no
package.path e package.cpath
Instalação default usa /usr/local
8. Controle de módulos no LR2
Cada rock instalado possui um arquivo
rock_manifest
Contém a lista de arquivos e os seus MD5
LuaRocks compila módulos como de
costume
Realiza fase de “deployment” baseado no
rock_manifest
9. Suporte a múltiplas versões
Usa mecanismo de Lua
Versões antigas instaladas ganham um prefixo
no nome do arquivo
md5/core.so
md5/md5_1.0.2_1-core.so
Para usar versões antigas transparentemente,
o LuaRocks 2.0 inclui um package loader
extra (require “luarocks.loader”) que faz a
seleção baseado na árvore de dependências
10. Compatibilidade
Servidores de rocks compatíveis com
LuaRocks 1.0:
Formato rockspec mantido
Formato de manifest de servidores de rocks
mantido
Instalações locais não:
Formato de manifest local alterado
Árvore de diretórios alterada
11. Conclusões
● LR2: Novo formato de instalação local
● Compatibilidade de rockspecs com LR1
– Sem disrupção na comunidade
● Melhor compatibilidade com vanilla Lua
– Menor barreira de entrada
● Maior dependência em arquivos de
controle
– Mecanismos de verificação