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
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
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
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:
- Website: https://prosody.im/
- Source Code: https://hg.prosody.im/
- Description: Prosody is a lightweight XMPP server that aims to be easy to set up and configure, and efficient with system resources.
- Project Contact Person: Matthew Wild @mwild1
- List of Teaser Tasks: https://issues.prosody.im/?q=state%3Dopen+difficulty%3Deasy
- Contact chat: https://chat.prosody.im/
Knowledge prerequisites
- Lua