Ideas List - Google Summer of Code 2019

Expression-level coverage analysis for LuaCov

Brief explanation

LuaCov only offers line-level coverage analysis, meaning that it can tell if a line executed or not, but not if every possible branch within that line executed. That means, for example, that if a statement like if x and y > 20 then return 10 end is written in a single line, we don't have coverage information if it has been tested both with the condition being true and being false. This is due to a limitation in the Lua debug library, which only gives traces with at most line granularity. The idea of this project is to patch the Lua VM adding expression-level tracing, and then adjusting LuaCov to make it use it.

Knowledge prerequisites

  • C
  • Lua

Mentor

Hisham Muhammad - h@hisham.hm


Lua graphing library

Brief explanation

To create a graphical library possibly using IUP extensible by Lua to allow easy creation of software like a schematic editor/flowchart creator/mind maps/block diagrams in Lua. The library needs to create basic mechanisms and graphic checks to create custom blocks and interconnections and provide an API to use these to create complex interactions like hierarchical schematic editors, etc.

Knowledge prerequisites

  • Lua

Mentor

Milind Gupta - milind.gupta@gmail.com


Better binary support for LuaRocks on Windows

Brief explanation

Goal: have a number of binary basics available (eg. lfs, luasocket, OpenSSL based ones)

Things to do:

  • Establish a proper naming scheme to identify Windows runtime dependencies, see #786
  • Make LR aware of the runtimes (storing in config), current MSVCRT entry
  • Implement packing binary rocks with new binary tags Set up some CI which builds some basic binary rocks as a minimal set for multiple compiler targets (eg. lfs, LuaSocket)
  • Set up some CI which builds some basic binary rocks with external dependencies as a minimal set for multiple compiler targets (eg. OpenSSL based ones)
  • Optional: use pe-parser at LR runtime to validate that created libs adhere to the runtime required
  • Optional: make LR installable without toolchain (just using binary rocks)
  • Optional: integrate toolchain into LR installation

See #788.

Knowledge prerequisites

  • Lua
  • general knowledge of development on Windows platforms

Mentor

Thijs Schreijer - thijs@thijsschreijer.nl


New command line argument handling and auto-completion for luarocks

Update the command-line argument handling of LuaRocks and add support for Tab auto-completion support for popular shells such as bash, fish, zsh.

May involve updates to the argparse library.

See #879.

Knowledge prerequisites

  • Lua
  • some shell scripting

Mentor

Daurnimator - quae@daurnimator.com


Prosody plugin installer

This project would produce an easy way to install and manage plugins for the Prosody server.

Prosody has hundreds of community modules that provide additional features and extensions to the core server. Currently installing these is a manual process that currently involves a number of manual steps.

The goal of this project would be to produce simple commands to install, update and remove community modules. Rather than inventing a new package manager, the project would ideally build on top of the LuaRocks project.

Deliverables / Expected Results:

  • Commands to install, update, remove and list installed plugins.
  • Scripts to build and manage a repository of plugins.

Milestones:

  • Implement command to install a plugin from a repository
  • Implement commands to remove and update installed plugins
  • Develop scripts to build a plugin repository.

More info:

Knowledge prerequisites

  • Lua

Mentors

Matthew Wild - mwild1@gmail.com
Kim Alvefur