From Google Summer of Code coordination Wiki
This is a draft proposal, if you want to apply remove this sentence and write your name in the field Student.
- Mentor: find a mentor
- Student: write your name here
- Summary: Extend liquidsoap's scripting language
- Required skills:
- Theory of programming languages and type systems
- Type inference algorithms
Liquidsoap is a multimedia streaming toolkit presented as a scripting language. To some extent, the scripting language is independent from the streaming aspect, but several advanced features of type systems are used to strongly reflect the constraints of the streaming operators into the language.
The purpose of this project will be to extend the language with missing features, replace ad-hoc feature implementations and generally strengthen the code base. Ad-hoc features include lists: we do not have a general treatment of variants, which is becoming a limitation -- polymorphic variants may be considered. The main new feature that is wanted is an object-oriented layer, with substructural subtyping (à la OCaml): it should be used to represent the various server commands (services) offered by sources as methods, and it should thus come with a new elegant design of the server interface. In the above examples, the new features must come with an extension of our type inference algorithm. Depending on the student's interests, the project may involve moving to a constraint-based inference, which seems like a natural way to make the system much smarter when inferring the type of functions, which are labelled multi-abstractions.
This project may be merged with the compiler project and should be coordinated with it if both projects are taken.