Luarocks Fostering an Ecosystem of Lua Modules

Total Page:16

File Type:pdf, Size:1020Kb

Luarocks Fostering an Ecosystem of Lua Modules LuaRocks fostering an ecosystem of Lua modules Hisham Muhammad [email protected] @hisham_hm FOSDEM !"# $russels% $elgium &hat is LuaRocks 'ackage manager... like d(kg (a(t*get+% RPM% etc. like Ruby-ems, Python eggs, npm% C'/0% etc. ...for Lua e1tension modules written in Lua (.lua files) or ,inary modules (.so4.dll files) Fostering an ecosystem of Lua modules Some uni5ue challenges ...related to Lua as a language ...related to Lua as a community Lessons learned ...on building an ecosystem / one*slide introduction to Lua function process(filename, fn, ...) local f = io.open(filename) local rets = {} for line in f:lines() do rets[#rets+1] = { fn(line, ...) } end f:close() return rets end matches = process("file.txt", string.find, "foo") for i, match in ipairs(matches) do print(i, table.concat(match, ", ")) end / one*slide introduction to Lua function process(filename, fn, ...) local f = io.open(filename) local rets = {} o,6ects for line in f:lines() do rets[#rets+1] = { fn(line, ...) } end f:close() return rets end matches = process("file.txt", string.find, "foo") for i, match in ipairs(matches) do print(i, table.concat(match, ", ")) end / one*slide introduction to Lua function process(filename, fn, ...) local f = io.open(filename) local rets = {} for line in f:lines() do rets[#rets+1] = { fn(line, ...) } end f:close() return rets 3rst*class functions end matches = process("file.txt", string.find, "foo") for i, match in ipairs(matches) do print(i, table.concat(match, ", ")) end / one*slide introduction to Lua function process(filename, fn, ...) local f = io.open(filename) local rets = {} for line in f:lines() do rets[#rets+1] = { fn(line, ...) } end f:close() return rets iterators end matches = process("file.txt", string.find, "foo") for i, match in ipairs(matches) do print(i, table.concat(match, ", ")) end / one*slide introduction to Lua function process(filename, fn, ...) local f = io.open(filename) local rets = {} for line in f:lines() do rets[#rets+1] = { fn(line, ...) } end f:close() return rets ta,les% ta,les e7ery2here8 end matches = process("file.txt", string.find, "foo") for i, match in ipairs(matches) do print(i, table.concat(match, ", ")) end Lua9 a (eculiar free soft2are (ro6ect Lua9 created at ':.*Rio in $razil, de7elo(ed ,y uni7ersity (rofessors 20 year history M<=4>"1 licensed ?o(en source% closed de7elo(ment" Lua9 a (eculiar community Successful as an em,edded language LuaTe>% &iki(edia, etc. 7ery custom en7ironments 'o(ular in the game industry e7ery2here from /ngry $irds to &o& one-shot (ro6ects% mostly (ro(rietary Lua9 a (eculiar language Su(er light2eight Designed for em,edding (.tar.gz is 272Ki,+ /da(ts itself to your (ro6ect's /'< Doesn't pro7ide many /'<s of its o2n Modules 3ll this gap8 $ut 2here are the modulesC Side*eDects of a minimalistic language9 no standard ,uild system modules 2ere scattered around so*called ?D<E culture? (Lua only got modules in 7ersion 5.0, after "! years of existence8+ /ttem(ting to ,roaden LuaBs hori;ons Ae(ler 'ro6ect% 2006 on2ards research pro6ect to de7elo( a platform for 2e, de7 WSAPI Xavante Orbit Sputnik Copas Cosmo Coxpcall LFS Rings LuaProfiler RemDebug LuaExpat LuaSQL CGILua ... Enter LuaRocks The missing link: a (ackage manager8 <nitial goal: build4de(loy Ke(ler modules on Unix and &indows ...and it gre2 from there 0.4.1 0.5.2 0.4 0.5.1 2.0.7 0.3.2 0.5 2.0.4.1 2.0.6 2.0.8 2.0.10 0.10.2 0.3.1 0.4.3 1.0 2.02.0.1 2.0.4 2.0.7.1 2.0.12 2.1.1 2.1 2.2.0 0.1 0.3 0.4.2 0.6 1.0 1.0.1 2.0 2.0.2 2.0.3 2.0.5 2.0.9 2.0.11 2.0.13 2.1.0 2.1.2 2.2 2007 2008 2009 2010 2011 2012 2013 2014 2015 2007 2008 2009 2010 2011 2012 2013 2014 20 :( and running in one slide8 ~$ wget http://lua.org/ftp/lua-5.3.0.tar.gz ~$ tar zxpf lua-5.3.0.tar.gz ~$ cd lua-5.3.0 ~$ make linux; sudo make install; cd .. ~$ wget http://luarocks.org/releases/luarocks-2.2.0.tar.gz ~$ tar zxpf luarocks-2.2.0.tar.gz ~$ cd luarocks-2.2.0 ~$ ./configure; sudo make bootstrap; cd .. ~$ sudo luarocks install luasocket ~$ lua Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio > require "socket" Rocks and rocks(ecs / rock file contains sources or binaries... luafilesystem-1.5.0-2.src.rock lpeg-0.10-2.win32-x86.rock lxsh-0.8.6-1.all.rock ...plus a rocks(ec% 2hich is a specification file9 package = "midialsa"; version = "1.21-0" source = { url = "http://www.pjb.com.au/comp/lua/midialsa-1.21.tar.gz", md5 = "072844348e66c04cee42a5b489784453" } description = { summary = "Provides access to the ALSA sequencer", detailed = "...", homepage = "http://www.pjb.com.au/comp/lua/midialsa.html", license = "MIT/X11" } dependencies = { "lua >= 5.1" } external_dependencies = { ALSA = { header = "alsa/asoundlib.h", library = "asound" } } -- ... /ddressing the lack of standards $uild systems a(lenty9 nothing at all — cmake G autoconf — make G etc. SolutionC $e like Lua9 ada(t to the de7elo(ers' en7ironment $uild ,ack*ends build = { type = "make", LuaRocks can use variables = { PREFIX = "$(PREFIX)", diDerent ,ack*ends for LUALIB = "$(LUA_LIBDIR)", different modules: }, } make% cmake% autoconf... build = { type = "builtin", modules = { &e also added a ["midialsa"] = "midialsa.lua", ["C-midialsa"] = { ,uilt*in ,uild tool sources = { "C-midialsa.c" }, libraries = { "asound" }, incdirs = { "$(ALSA_INCDIR)" }, libdirs = { "$(ALSA_LIBDIR)" }, } }, @#H of all rocks use it! copy_directories = { "doc", "test" } } =he module re(ository Mo7ing to a "re(ository? model aDects9 de7elo(ers it changes the 2orkIo2 for releasing code and it changes ho2 users users setu( their en7ironment our users are de7elo(ers too8 $ootstra((ing a re(ository 'hase "9 .urated re(ository submissions through mailing list help out early ado(ters le7erage LuaRocks via Aepler modules 'hase 9 'u,lic re(ository MoonRocks htt(944rocks.moonscri(t.org greater de7elo(er autonomy Recent gro2th of the re(ository 700 MoonRocks 600 500 400 300 200 100 0 'Sep 2009 'Mar 2010 'Sep 2010 'Mar 2011 'Sep 2011 'Mar 2012 'Sep 2012 'Mar 2013 'Sep 2013 'Mar 2014 'Sep 2014 'Feb 2015 2009 2010 2011 2012 2013 2014 2015 / 7irtuous circle luahue ↳penlight ↳luafilesystem ↳luasocket ↳luajson $reaking the ↳lunit DIY (0<HC) culture ↳lpeg sailor ↳datafile ↳luafilesystem ↳valua ↳lbase64 De7elo(ers are ↳cgilua also users8 lua-jet ↳xavante ↳lua-cjson ↳luasocket ↳lua-websockets ↳copas ↳luabitop ↳coxpcall Less rein7ention ↳copas ↳wsapi-xavante ↳coxpcall ↳wsapi of the wheel ↳luasocket ↳rings ↳lua-ev ↳lpack Latest "! J/00K from lua*l ● J/00K LuaExec ● J/00K .ompat*5.L 0.1 ?luarocks install compat53" ● J/00K lua*fcgi v1.0 ?Eou can install it 2ith luarocks" ● J/00K lua*arc4random 1.0 ?it's on ,oth luarocks and -ithub8? ● J/00K lua*symmetric ?not comforta,le to release it as 1.0 yet% hence it is not on luarocks" ● J/00K lua(osix L3.2." ?<nstall it 2ith LuaRocks" ● J/00K Stack=racePlus !.1.2 ?Eou can install it simply ,y doing9 luarocks install stacktrace(lus" ● J/00K luacheck 0.8.0 ?<t can ,e installed using LuaRocks? ● J/00K Firestr 0.# ● J/00K lua*llu7 ?<nstall current master: luarocks install llu7...? &hat 2e achie7ed The entry ,arrier for Lua as an a((lication de7elopment language is no2 much lo2er: a sim(le% (o(ular ,uild system a one*sto( sho( re(ository a culture of code reuse )/nd those who donBt 2ant it can still do things the old hard 2ay8+ Fostering an ecosystem9 lessons learned 0.4.1 0.5.2 0.4 0.5.1 2.0.7 It takes time 0.3.2 0.5 2.0.4.1 2.0.6 2.0.8 2.0.10 0.2 0.3.1 0.4.3 2.0.1 2.0.4 2.0.7.1 2.0.12 2.1.1 0.10.10.3 0.4.2 0.6 1.0 1.0.1 2.02.0.2 2.0.3 2.0.5 2.0.9 2.0.11 2.0.13 2.1.02.12.1.2 2.2.0 2007 2008 2009 2010 2011 2012 2013 2014 2.22015 Eou may need to ?,ootstra(2007 2008? it 2009 2010 2011 2012 2013 2014 20 to get it oD the ground Identify your audience =hey are those 2ho are listening to you% listen ,ack! $e ,old and share control8 <tBs riskier% ,ut itBs the only 2ay to ,uild a team in FOSS 'Mar 2010 'Mar 2011 'Mar 2012 'Mar 2013 'Mar 2014 'Feb 2015 'Sep 2009 'Sep 2010 'Sep 2011 'Sep 2012 'Sep 2013 'Sep 2014 =hank you8 htt(944luarocks.org .ontact: htt(944hisham.hm/ [email protected] @hisham_hm /,out these slides Feel free to share this presentation and to use parts of it in your o2n material Licensed under the Creati7e Commons CC BY 4.0: htt(s:/4creati7ecommons.org4licenses4,y44.0/ $onus slide * future ideas )Olua2sho("M+ E1tensi,le rockspecs: luarocks.addon.youraddon Using9 using={"foo"} loads luarocks.addon.foo Lots of details to decide% ,ut no2 LuaRocks can u(grade itself so 2e can e7olve the rockspec_format =he future could look like this: rockspec_format = "3.0" using = { "build_dependencies", -- adds support for build-only dependencies "busted", -- ensures Busted is installed, runs tests "ldoc", -- generates docs using LDoc "build.ext >= 2.0", -- example build type extending builtin } build_dependencies = { "bin2c >= 1.2" } build = { type = "ext", modules = { ["foo"] = { language = "c99", sources = "foo.c" } }, } doc = { --[[ ldoc specific flags ]] }.
Recommended publications
  • What If What I Need Is Not in Powerai (Yet)? What You Need to Know to Build from Scratch?
    IBM Systems What if what I need is not in PowerAI (yet)? What you need to know to build from scratch? Jean-Armand Broyelle June 2018 IBM Systems – Cognitive Era Things to consider when you have to rebuild a framework © 2017 International Business Machines Corporation 2 IBM Systems – Cognitive Era CUDA Downloads © 2017 International Business Machines Corporation 3 IBM Systems – Cognitive Era CUDA 8 – under Legacy Releases © 2017 International Business Machines Corporation 4 IBM Systems – Cognitive Era CUDA 8 Install Steps © 2017 International Business Machines Corporation 5 IBM Systems – Cognitive Era cuDNN and NVIDIA drivers © 2017 International Business Machines Corporation 6 IBM Systems – Cognitive Era cuDNN v6.0 for CUDA 8.0 © 2017 International Business Machines Corporation 7 IBM Systems – Cognitive Era cuDNN and NVIDIA drivers © 2017 International Business Machines Corporation 8 IBM Systems – Cognitive Era © 2017 International Business Machines Corporation 9 IBM Systems – Cognitive Era © 2017 International Business Machines Corporation 10 IBM Systems – Cognitive Era cuDNN and NVIDIA drivers © 2017 International Business Machines Corporation 11 IBM Systems – Cognitive Era Prepare your environment • When something goes wrong it’s better to Remove local anaconda installation $ cd ~; rm –rf anaconda2 .conda • Reinstall anaconda $ cd /tmp; wget https://repo.anaconda.com/archive/Anaconda2-5.1.0-Linux- ppc64le.sh $ bash /tmp/Anaconda2-5.1.0-Linux-ppc64le.sh • Activate PowerAI $ source /opt/DL/tensorflow/bin/tensorflow-activate • When you
    [Show full text]
  • Tarantool Выпуск 1.7.2
    Tarantool Выпуск 1.7.2 мар. 14, 2019 Оглавление 1 Что нового? 1 1.1 Что нового в Tarantool 1.7?....................................1 2 Общие сведения 2 2.1 Сервер приложений + СУБД...................................2 2.2 Возможности СУБД........................................3 3 Практикум 5 3.1 Практические задания на Lua..................................5 3.2 Практическое задание на C.................................... 17 4 Руководство пользователя 21 4.1 Предисловие............................................. 21 4.2 Начало работы........................................... 22 4.3 Функционал СУБД......................................... 25 4.4 Сервер приложений........................................ 58 4.5 Администрирование серверной части.............................. 72 4.6 Коннекторы............................................. 108 4.7 Вопросы и ответы......................................... 120 5 Справочники 121 5.1 Справочник по встроенной библиотеке............................. 121 5.2 Справочник по сторонним библиотекам............................. 228 5.3 Справочник по настройке..................................... 247 6 Руководство участника проекта 257 6.1 Справочник по C API....................................... 257 6.2 Детали реализации......................................... 280 6.3 Сборка и участие в проекте.................................... 293 6.4 Соглашения по разработке.................................... 298 Lua Module Index 329 i ГЛАВА 1 Что нового? Здесь собрана информация о существенных изменениях, которые
    [Show full text]
  • Conda-Build Documentation Release 3.21.5+15.G174ed200.Dirty
    conda-build Documentation Release 3.21.5+15.g174ed200.dirty Anaconda, Inc. Sep 27, 2021 CONTENTS 1 Installing and updating conda-build3 2 Concepts 5 3 User guide 17 4 Resources 49 5 Release notes 115 Index 127 i ii conda-build Documentation, Release 3.21.5+15.g174ed200.dirty Conda-build contains commands and tools to use conda to build your own packages. It also provides helpful tools to constrain or pin versions in recipes. Building a conda package requires installing conda-build and creating a conda recipe. You then use the conda build command to build the conda package from the conda recipe. You can build conda packages from a variety of source code projects, most notably Python. For help packing a Python project, see the Setuptools documentation. OPTIONAL: If you are planning to upload your packages to Anaconda Cloud, you will need an Anaconda Cloud account and client. CONTENTS 1 conda-build Documentation, Release 3.21.5+15.g174ed200.dirty 2 CONTENTS CHAPTER ONE INSTALLING AND UPDATING CONDA-BUILD To enable building conda packages: • install conda • install conda-build • update conda and conda-build 1.1 Installing conda-build To install conda-build, in your terminal window or an Anaconda Prompt, run: conda install conda-build 1.2 Updating conda and conda-build Keep your versions of conda and conda-build up to date to take advantage of bug fixes and new features. To update conda and conda-build, in your terminal window or an Anaconda Prompt, run: conda update conda conda update conda-build For release notes, see the conda-build GitHub page.
    [Show full text]
  • Luarocks Past, Present and Future
    LuaRocks past, present and future Hisham Muhammad Prologue: what is LuaRocks? ● A package manager for Lua modules ● Modules written in Lua (.lua), binary Lua modules (.so/.dll) and Lua scripts ● Usual features you would expect from a package manager ○ luarocks install <module> ○ luarocks remove <module> ○ ... Rocks and rockspecs ● Rock: a LuaRocks package ○ archive files (actually .zip files) ○ *.src.rock - contains source code ○ *.win32-x86.rock - “binary rock”, contains compiled binaries for a given platform ● Rockspec: a package specification file ○ A declarative Lua script, with rules on how to build and package rocks ○ *.rockspec - a Lua file containing some tables A rockspec Part I The past: a short history of LuaRocks Origins ● Kepler Project: research project to develop a platform for web development using Lua ○ combining modules that already existed (LuaSocket, CGILua) and adding the missing pieces ○ For more of the story, read Yuri Takhteyev’s book, “Coding Places” :) ● I started (re)writing Unix makefiles to automate the packaging/install process ● Common patterns emerged LuaRocks 0.x-1.x: a bumpy start ● 0.x was a gradual evolution ○ the goal for 1.0 was for it to be able to build all Kepler modules ● The rockspec format is unchanged since 1.0 ○ We really care about compatibility ○ Learning the format and writing a rockspec are not disposable efforts ● We got many things right, but we also got some of them wrong... Annoyances in LuaRocks 1.x ● LuaRocks 1.0 did not use the standard Lua layout for modules ○ It wasn’t clear that
    [Show full text]
  • Tarantool Выпуск 1.7.4
    Tarantool Выпуск 1.7.4 мар. 14, 2019 Оглавление 1 Что нового в Tarantool 1.7?2 2 What’s new in Tarantool 1.6.9 after February 15, 2017?4 3 What’s new in Tarantool 1.6?5 4 Общие сведения 6 4.1 Сервер приложений + СУБД...................................6 4.2 Возможности СУБД........................................7 5 Руководство пользователя8 5.1 Предисловие.............................................8 5.2 Начало работы...........................................9 5.3 Функционал СУБД......................................... 13 5.4 Сервер приложений........................................ 30 5.5 Администрирование серверной части.............................. 58 5.6 Репликация............................................. 76 5.7 Коннекторы............................................. 96 5.8 Вопросы и ответы......................................... 107 6 Справочники 109 6.1 Built-in modules reference..................................... 109 6.2 Справочник по сторонним библиотекам............................. 244 6.3 Справочник по настройке..................................... 263 6.4 Utility tarantoolctl .......................................... 280 6.5 Tips on Lua syntax......................................... 280 7 Практикум 282 7.1 Практические задания на Lua.................................. 282 7.2 Практическое задание на C.................................... 294 7.3 libslave tutorial........................................... 299 8 Contributor’s Guide 303 8.1 Справочник по C API....................................... 303 8.2 Internals..............................................
    [Show full text]
  • An Efficient Algorithm for Type-Directed Structural Diffing
    An Efficient Algorithm for Type-Directed Structural Diffing VICTOR CACCIARI MIRALDO, Utrecht University, The Netherlands WOUTER SWIERSTRA, Utrecht University, The Netherlands Effectively computing the difference between two version of a source file has become an indispensable part of software development. The de facto standard tool used by most version control systems is the UNIX diff utility, that compares two files on a line-by-line basis without any regard forthe structure of the data stored in these files. This paper presents an alternative datatype generic algorithm for computing the difference between two values of any algebraic datatype. This algorithm maximizes sharing between the source and target trees, while still running in linear time. Finally, this paper demonstrates that by instantiating this algorithm to the Lua abstract syntax tree and mining the commit history of repositories found on GitHub, the resulting patches can often be merged automatically, even when existing technology has failed. Additional Key Words and Phrases: Generic Programming, diff, Version Control, Haskell 1 INTRODUCTION The UNIX diff [13] is an essential tool in modern software development. It has seen a number of use cases ever since it was created and lies at the heart of today’s Software Version Control Systems. Tools such as git, mercurial and darcs, that enable multiple developers to collaborate effectively, are all built around the UNIX diff utility, which is used to compute a patch between two versions of a file. It compares files on a line-by-line basis attempting to share as many lines as possible between the source and the destination files.
    [Show full text]
  • Enrico Tassi Lua Workshop 2013 [email protected]
    LuaLua and Enrico Tassi Lua workshop 2013 [email protected] Toulouse – 23 Nov Roadmap ● Debian: an opportunity for Lua ● Packaging Lua ● Packaging Lua batteries ● It's not all a bed of roses Who am I? ● Daily job: researcher in CS @ Inria ● completely unrelated topics (type theory, interactive provers, Coq, …) ● I love developing software! ● and I used Lua for some of my projects ● I support free software ● Debian developer since 2006 ● I read lua-l, but I don't post very often What is Debian? ● A project that builds a free OS ● A long tradition in assembling components ● QA: written policies, automatic checks, ... ● An opportunity for Lua: ● Debian is popular with many derivatives ● It supports “exotic” architectures ● It is huge (30K packages, 17K match “^lib”) ● It is tested (compilation & installation time) The beginning lua40 (4.0-1) unstable; urgency=low * Initial Release. * Added support for shared libraries -- Daniel Silverstone <[email protected]> Mon, 11 Feb 2002 Where are we now? Which packages depend on Lua 5.1 aegisub geany-plugin-lua libtolua++5.1-dev pax-britannica apache2-bin genometools libwreport2 pdns-backend-lua aqualung gimp-gluas lighttpd-mod-cml pepper asc gnuplot-x11 love postgresql-9.3-pllua asterisk-modules grafx2 lsyncd premake awesome gringo lua-augeas prosody bam hedgewars luakit python-lua blobby highlight megaglest qcontrol boswars httest monotone radare-common btanks ibus-pinyin mpv ruby-luabridge celestia-gnome instead mudlet simgrid conky-std kamailio-lua-modules mysql-proxy syncmaildir crawl
    [Show full text]
  • Étendre Lua Avec Luarocks
    ) n o i t i d é e 2 ( e g a s s i t R n e e k nouveaux rocksnouveaux tous :nousprofitons del'enrichissement del'écosystème Lua ! de développer à aussi mais LuaRocks, essayer à seulement non encouragera vous cela vous puissiez l'utiliser comme point de départ pour vos propres projets. J'espère que complet de un sorteexemple nous développerons à ce quede LuaRocks, et paramètre construire et installer ses propres modules. Plutôt que de détailler chaque commande le dépôt, puis nous aborderons l'une des fonctions les plus puissantes de Dans ce chapitre, nous LuaRocksallons voir comment utiliser des modules : tiers disponibles dans besoin,dansl'esprit deLua. vraiment avez uniquement lesmodulesdont vous fonctionnalités disponibles à partir du dépôt LuaRocks et un système léger contenant et de LuaRocks, vous pouvez ainsi avoir le meilleur des deux mondes : la variété des sont ajoutés chaque jour dans le dépôt sur types de librairies (GUI, graphisme, calcul scientifique, web, etc.). De nouveaux rocks toutes les fonctionnalités mentionnées ci-dessus, mais aussi des appelés LuaRocks, paquets des existe Il mande. com- simple une par accessibles sont besoin avez vous dont supplémentaires tionnalités LuaRocks, le gestionnaire de paquets Lua. Une fois LuaRocks installé, toutes les fonc- vous pouvez facilement télécharger et intégrer à votre environnement avec l'aide de Heureusement, ces "piles" sont disponibles : ce sont des modules d'extension Lua, que besoin. complet, adapté detravail àvotre un environnement productif avec Lua, vous aurez souvent à inclure les "piles" qui manquent pour obtenir être gadgetspour de Ainsi, emballages incluses". les non sur écrit"piles : souvent est qui ce dire de l'habitude avons nous répertoires des propos, manipulation ce la À même ! et sont simplement pas là :le les SQL, sockets, le support formats de pour fichiers...divers ne langages d'autres dans défaut par présentes fonctionnalités de beaucoup que signifie cela Cependant, surchargé.
    [Show full text]
  • Lua Web Programming
    LLUUAA -- WWEEBB PPRROOGGRRAAMMMMIINNGG http://www.tutorialspoint.com/lua/lua_web_programming.htm Copyright © tutorialspoint.com Lua is a highly flexible language and it is often used in multiple platforms including web applications. The Kepler community that was formed in 2004 to provide open source web components in Lua. Even though, there are other web frameworks using Lua that have been developed, we will be primarily focusing on the components provided by Kepler community. Applications and Frameworks Orbit is an MVC web framework for Lua, based on WSAPI. WSAPI is the API that abstracts the web host server from Lua web applications and is the base for many projects. Xavante is a Lua Web server that offers a WSAPI interface. Sputnik is a wiki/CMS developed over WSAPI on Kepler Project used for humor and entertainment. CGILua offers LuaPages and LuaScripts web page creation, based on WSAPI but no longer supported. Use Orbit, Sputnik or WSAPI instead. In this tutorial, we will try to make you understand what Lua can do and to know more about its installation and usage, refer kepler the website Orbit Orbit is an MVC web framework for Lua. It completely abandons the CGILua model of "scripts" in favor of applications, where each Orbit application can fit in a single file, but you can split it into multiple files if you want. All Orbit applications follow the WSAPI protocol, so they currently work with Xavante, CGI and Fastcgi. It includes a launcher that makes it easy to launch a Xavante instance for development. The easiest way to install Orbit is using LuaRocks.
    [Show full text]
  • Knot Resolver Release 5.4.1
    Knot Resolver Release 5.4.1 CZ.NIC Labs Aug 19, 2021 QUICK START 1 Installation 3 2 Startup 5 3 Configuration 7 4 Configuration Overview 11 5 Networking and protocols 15 6 Performance and resiliency 27 7 Policy, access control, data manipulation 41 8 Logging, monitoring, diagnostics 63 9 DNSSEC, data verification 83 10 Experimental features 87 11 Usage without systemd 99 12 Upgrading 103 13 Release notes 109 14 Building from sources 137 15 Custom HTTP services 143 16 Knot Resolver library 147 17 Modules API reference 215 18 Worker API reference 221 19 Indices and tables 225 Python Module Index 227 Index 229 i ii Knot Resolver, Release 5.4.1 Knot Resolver is a minimalistic implementation of a caching validating DNS resolver. Modular architecture keeps the core tiny and efficient, and it provides a state-machine like API for extensions. Welcome to Knot Resolver QuickStart Guide! This chapter will guide you through first installation and basic setup recommended for your use-case. Before we start let us explain basic conventions used in this text: This is Linux/Unix shell command to be executed and an output from this command: $ echo "This is output!" This is output! $ echo "We use sudo to execute commands as root:" We use sudo to execute commands as root: $ sudo id uid=0(root) gid=0(root) groups=0(root) Snippets from Knot Resolver’s configuration file do not start with $ sign and look like this: -- this is a comment -- following line will start listening on IP address 192.0.2.1 port 53 net.listen('192.0.2.1') QUICK START 1 Knot Resolver, Release 5.4.1 2 QUICK START CHAPTER ONE INSTALLATION As a first step, configure your system to use upstream repositories which havethe latest version of Knot Resolver.
    [Show full text]
  • Luaunit Documentation Release 3.3
    LuaUnit Documentation Release 3.3 Philippe Fremy Oct 02, 2018 Contents 1 Introduction 1 2 More details 3 2.1 Installation................................................4 2.2 Upgrade note...............................................4 2.3 LuaUnit development..........................................5 2.4 Version and Changelog..........................................5 3 Getting started with LuaUnit9 3.1 Setting up your test script........................................9 3.2 Writing tests...............................................9 3.3 Grouping tests, setup/teardown functionality.............................. 11 3.4 Using the command-line......................................... 13 3.5 Conclusion................................................ 15 4 Reference documentation 17 4.1 Enabling global or module-level functions............................... 17 4.2 LuaUnit.run() function.......................................... 18 4.3 LuaUnit.runSuite() function....................................... 19 4.4 Command-line options.......................................... 19 4.5 Assertions functions........................................... 26 5 Developing LuaUnit 37 5.1 Development ecosystem......................................... 37 5.2 Contributing............................................... 37 6 Annexes 41 6.1 Annex A: More on table printing.................................... 41 6.2 Annex B: Comparing tables with keys of type table........................... 42 6.3 Annex C: Source code of example...................................
    [Show full text]
  • Programming in Lua, Fourth Edition Roberto Ierusalimschy Programming in Lua, Fourth Edition Roberto Ierusalimschy Copyright © 2016, 2003 Roberto Ierusalimschy
    Last update: Sat Mar 18 22:00:08 GMT 2017 (build 21) Programming in Lua, Fourth Edition Roberto Ierusalimschy Programming in Lua, Fourth Edition Roberto Ierusalimschy Copyright © 2016, 2003 Roberto Ierusalimschy Feisty Duck Digital Book Distribution www.feistyduck.com Licensed for the exclusive use of: Eric Taylor <[email protected]> Table of Contents About the Book ................................................................................................................. ix I. The Basics ...................................................................................................................... 1 1. Getting Started ........................................................................................................ 4 Chunks .............................................................................................................. 4 Some Lexical Conventions ................................................................................... 6 Global Variables ................................................................................................. 7 Types and Values ................................................................................................ 7 Nil ............................................................................................................ 8 Booleans .................................................................................................... 8 The Stand-Alone Interpreter .................................................................................
    [Show full text]