Céu is a programming language that targets system-level development of reactive systems.
The language is under development at the LabLua since 2011.
For a little introduction about Céu, please watch the video in our front page:
Céu appeared in "Future Programming" and "Curry-On" workshops:
http://www.future-programming.org/2014/program.html
http://curry-on.org/2015/sessions/structured-synchronous-programming.html
Currently, the online tutorial of Céu executes a simulation at the server side:
The tutorial works as follows:
- User reads about a new concept (
top/left
of the page). - User reads an accompanying example (
top/right
) with an input (bottom/right
). - User clicks "Run" (
top/right
):- Code is sent to the server.
- Server compiles and executes the code with the provided input.
- User gets an output (
bottom/left
).
- User changes the code and input to experiment with it (going to step 3).
- User advances in the tutorial.
The server-side approach does not provide a reactive and real-time experience, which are the ultimate objectives of the language.
We want the online tutorial to offer a more interactive experience for learners of Céu.
The client-side tutorial would work as follows:
- User reads about a new concept (
top/left
of the page). - User sees an example (
top/right
)with an input (.bottom/right
) - User clicks "Run" (
top/right
):- Code is sent to the server.
- Server compiles the code
with the provided inputto Javascript and returns it to the client. - User
gets an output (interacts with the program in real time.bottom/left
)
- User changes the code
and inputto experiment with it (going to step 3). - User advances in the tutorial.
SDL is a C-based and cross-platform development library that provides access to audio, keyboard, mouse, joystick, and graphics hardware:
Given that Céu interacts well with C, combining Céu and SDL is a viable option for building a visually-appealing interactive tutorial.
Emscripten is an LLVM-to-JavaScript compiler:
https://github.com/kripken/emscripten/
SDL has already been ported to Emscripten:
emscripten-core/emscripten#2404
Putting it all together, we can build an interactive tutorial for Céu that runs in the browser at the client side.
The bulk of the project is to implement this synergy between C, Céu, SDL, and Emscripten.
However, the project involves many other tools:
- C
- Céu
- Emscripten
- SDL
- Linux
- Git
- HTML
- PHP
- A working interactive online tutorial for Céu.
As an ultimate goal, we would like to build an incremental tutorial based on this video:
We expect the applicants to know C well and to develop minimum familiarity with the important tools before the project kicks off.
For this reason, we will ask the applicants to perform two activities before the application period:
- Create a repository on Github and write a simple "Hello World" page using Emscripten and SDL.
- Install Céu and compile some existing SDL examples (without Emscripten).
Both activities should be simple, i.e., nothing more than following tutorials on the web.
- Get in touch: https://gitter.im/fsantanna/ceu-gsoc-2016
- Follow the official GSoC instructions.
- Follow the LabLua instructions.
Medium
Francisco Sant'Anna