Google Summer of Code 2017 Wrap UpHere is a brief highlight of our GSoC 2017 students projects. We are extremely thankful for their excelent work!
Editor Support for Typed Lua - Marc André Tanner (Switzerland)
Typed Lua extends Lua with an optional type system, allowing the use of both static and dynamic typing in the same code base, while preserving existing Lua run-time semantics. It achieves that by introducing optional type annotations and applying local type inference. This richer type system not only enforces stronger program behavior guarantees, but also facilitates the development of more powerful developer tools.
Programmers nowadays expect that their editors/IDEs suggest accurate completion candidates, perform asynchronous - as you type - error checking and support type queries such as "go to definition" or "find all references". The main goal of the project was to add such features for Typed Lua in a wide range of popular editors. Furthermore, we investigated a design for a modern, asynchronous editor plugin architecture for the vis editor system itself.
Marc's project for GSoC 2017 is available here.
Marc's feedback for GSoC: "GSoC allowed me to participate in the wider FLOSS community. As an example I was able to give a talk about vis at the Chaos Computer Club (CCC) Switzerland congress."
Parser Generator with LPegLabel - Benas Vaitkevicius (Lithuania/Scotland)
Parsing Expression Grammars (PEGs) are an expressive formalism for the design and implementation of top-down parsers with local backtracking. LPeg is a tool that provides an implementation of PEGs for Lua, while LPegLabel is an extension of LPeg with some facilities for error reporting and recovery.
The goal of this project was to build a parser generator on top of LPegLabel. This new tool should make the description of commom idioms easier and error reporting more automatic.
Ben's project is described here.
Ben's feedback: "This project has been an absolute blast and very different to anything I've ever programmed before. Usually when writing a program, I immediately know what approach I can take, so I spend most of the time just writing and testing the code. For this project, programming was way more interesting, as I would spend hours just trying to figure out algorithms that would achieve the necessary task"
Lua Client for Strava V3 API - R Akshaynath (India)
Strava is a popular social network for athletes that we can use to track cycling, running or swimming activities and share them with our connections. The Strava V3 API is publicly available and developers can use it to access Strava's dataset for creating custom applications. As an example, RELIVE.cc gets your latest Strava ride and creates a movie of your ride that is played with Google Earth 3D.
The aim of this project was to create a Strava library for Lua, making it possible to create Strava applications with Lua.
This project's results can be found here.
Adapt CGILua SAPI launcher to explore all WSAPI features - João Dutra (Brazil)
CGILua is a tool for creating dynamic Web pages and manipulating input data from Web forms. One of the advantages of CGILua is its abstraction of the underlying Web server. CGILua can be used with a variety of Web servers and, for each server, with different launchers. A launcher is responsible for the interaction of CGILua and the Web server, for example mod_lua on Apache.
WSAPI is an API that abstracts the web server from Lua web applications, providing a set of helper libraries to deal with request processing and output buffering. This project reimplemented the SAPI launcher in order to explore WSAPI fully, thus improving the performance and simplifying maintenance.
João's work has already been merged into the CGILua project!
Interrupt-based drivers & libraries for Céu-Arduino - Guilherme Simas (Brazil)
This project consisted of developing new interrupt-based drivers for Céu-Arduino, in order to replace current functions and libraries which freeze the application while executing.
The drivers developed were: Analog to Digital Conversion and Serial Peripheral Interface (SPI).
Guilherme's work has already been merged into the Céu-Arduino repository!
Porting Terra to Android Devices - Mauricio Pedro Vieira (Brazil)
Terra is a system based on a tiny virtual machine and combines a reactive scripting language with a set of customized components. Terra uses Céu-T as its scripting language and implements a component-based virtual machine VM-T to be customized for different application domains.
The aim of this project was to port Terra Virtual Machine VM-T to Android devices, enabling interoperability of Android devices with others devices running Terra.
The project developed for GSoC is described here.