LuaRocks 2.0

Lua Workshop 2009

Hisham Muhammad
http://www.luarocks.org
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.
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
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
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
Recepção
Boa, mas não ideal
Usuários desconfortáveis com o módulo
 luarocks.require
  Wrapper da função require()
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
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
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
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
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
Obrigado!
●   Perguntas?
●   Contato: hisham@gobolinux.org

Luarocks 2.0 - talk at Lua Workshop 2009

  • 1.
    LuaRocks 2.0 Lua Workshop2009 Hisham Muhammad http://www.luarocks.org
  • 2.
    Gerência de módulosem 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 gerenciamentoe 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çãode 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 empacotadoscomo “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ãoideal Usuários desconfortáveis com o módulo luarocks.require Wrapper da função require()
  • 7.
    LuaRocks 2.0 Não precisade 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ódulosno 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últiplasversõ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 rockscompatí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
  • 12.
    Obrigado! ● Perguntas? ● Contato: hisham@gobolinux.org