LuaRocks - A Declarative and Extensible Package Management System for Lua

  • Hisham Muhammad
  • Fabio Mascarenhas
  • Roberto Ierusalimschy
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8129)

Abstract

While sometimes dismissed as an operating systems issue, or even a matter of systems administration, module management is deeply linked to programming language design. The main issues are how to instruct the build and runtime environments to find modules and handle their dependencies; how to package modules into redistributable units; how to manage interaction of code written in different languages; and how to map modules to files. These issues are either handled by the language itself or delegated to external tools. Language-specific package managers have risen as a solution to these problems, as they can perform module management portably and in a manner suited to the overall design of the language. This paper presents LuaRocks, a package manager for Lua modules. LuaRocks adopts a declarative approach for specifications using Lua itself as a description language and features an extensible build system that copes with the heterogeneity of the Lua ecosystem.

Keywords

programming language environments scripting languages modules and libraries package management 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Adler, J.: R in a Nutshell, pp. 37–47. O’Reilly Media (October 2012) ISBN 144931208XGoogle Scholar
  2. 2.
    Apache Software Foundation. Apache Maven Project, https://maven.apache.org/
  3. 3.
    Bailey, E.: Maximum RPM, p. 450. Sams (August 1997) ISBN 0672311054Google Scholar
  4. 4.
    Balbaert, I.: The Way To Go: A Thorough Introduction to the Go Programming Language, pp. 203–223. iUniverse (March 2012) ISBN 1469769166Google Scholar
  5. 5.
    Barzilay, E., Orlovsky, D.: Foreign Interface for PLT Scheme. In: Fifth Workshop on Scheme and Functional Programming, Snowbird Utah, USA (September 22, 2004)Google Scholar
  6. 6.
    Beane, Z.: Quicklisp, http://www.quicklisp.org/
  7. 7.
    Berube, D.: Practical Ruby Gems. Apress (April 2007) ISBN 1590598113Google Scholar
  8. 8.
    Christiansen, T., Foy, B.D., Wall, L., Orwant, J.: Programming Perl, 4th edn., pp. 629–644. O’Reilly Media, ISBN 0596004923Google Scholar
  9. 9.
  10. 10.
    Corcoran, L.: MoonRocks, http://rocks.moonscript.org/
  11. 11.
    Gift, N., Jones, J.: Python for Unix and Linux System Administration, pp. 279–283. O’Reilly Media (August 2008) ISBN 0596515820Google Scholar
  12. 12.
    Hagelberg, P., et al.: Leiningen, http://leiningen.org/
  13. 13.
    Hatcher, E., Loughran, S.: Java Development with Ant, p. 672. Manning Publications (August 2002) ISBN 1930110588Google Scholar
  14. 14.
    Heller, T., et al.: Python CTypes, http://docs.python.org/3/library/ctypes.html
  15. 15.
    Ierusalimschy, R., Figueiredo, L.H., Celes, W.: The evolution of Lua. In: History of Programming Languages III, San Diego, USA (June 2007)Google Scholar
  16. 16.
    ISO/IEC 23271:2012. Information Technology — Common Language Infrastructure (CLI)Google Scholar
  17. 17.
    Jones, I., Peyton Jones, S., Marlow, S., Wallace, M., Patterson, R.: The Haskell Cabal: A Common Architecture for Building Applications and Tools. In: Haskell Workshop (2005)Google Scholar
  18. 18.
    Kepler Project. LuaJava — A script tool for Java, http://keplerproject.org/luajava/
  19. 19.
    Krafft, M.: The Debian System: Concepts and Techniques, p. 608. No Starch Press (September 2005) ISBN 1593270690Google Scholar
  20. 20.
    Lehey, G.: The Complete FreeBSD: Documentation from the Source, 4th edn., pp. 167–180. O’Reilly Media (April 2003) ISBN 0596005164Google Scholar
  21. 21.
    Muhammad, H., Ierusalimschy, R.: C APIs in extension and extensible languages. Journal of Universal Computer Science 13(6)Google Scholar
  22. 22.
    Mascarenhas, F.: Alien — Pure Lua extensions, http://mascarenhas.github.com/alien/
  23. 23.
    Microsoft, MSDN Library, Side-by-side Assemblies (Windows) (August 2010), http://msdn.microsoft.com/en-us/library/aa376307.aspx
  24. 24.
    Osterhout, J.: Scripting: Higher Level Programming for the 21st Century. IEEE Computer 31(3), 23–30 (1998)CrossRefGoogle Scholar
  25. 25.
    Outercurve Foundation. NuGet Gallery, https://nuget.org/
  26. 26.
  27. 27.
    PLaneT Package Repository, http://planet.racket-lang.org/
  28. 28.
    Powers, S.: Learning Node, pp. 63–79. O’Reilly Media (October 2012) ISBN 1449323073Google Scholar
  29. 29.
    Python Package Index, https://pypi.python.org/pypi
  30. 30.
    Ruby Version Manager, https://rvm.io/
  31. 31.
  32. 32.
    Sonatype Inc. The Central Repository, https://search.maven.org
  33. 33.
    Spinellis, D.: Package Management Systems. IEEE Software 29(2), 84–86 (2012), doi:10.1109/MS.2012.38CrossRefGoogle Scholar
  34. 34.
    Worthmuller, S.: No End to DLL Hell! Dr. Dobb’s Journal (September 2010), http://www.drdobbs.com/windows/no-end-to-dll-hell/227300037
  35. 35.
    Ziadć, T.: Chronology of Packaging, http://ziade.org/2012/11/17/chronology-of-packaging/

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Hisham Muhammad
    • 1
  • Fabio Mascarenhas
    • 2
  • Roberto Ierusalimschy
    • 1
  1. 1.Department of Computer SciencePUC-RioRio de JaneiroBrazil
  2. 2.Department of Computer ScienceUFRJRio de JaneiroBrazil

Personalised recommendations