Session
Schedule FOSDEM 2020
Minimalistic, Experimental and Emerging Languages

XL, an extensible programming language

A language that grows with Moore's law instead of being killed by it
AW1.125
Christophe de Dinechin
XL is an extensible programming language, designed to grow with Moore's law instead of being killed by it. Extensible means that programmers can add features and notations much like they would add functions or classes in existing languages. The mechanisms are based on meta-programming, and are a bit similar to the macros that gave Lisp its longevity, but with interesting twists. As a proof of this extensibility, basic arithmetic (addition, multiplication, etc) or control statements (if-then-else, loops, etc) are implemented by libraries in XL, yet offer similar performance and usability as built-in features in C . Another validation of the extensibility is Tao3D, an XL-based interactive graphic language that will be used to give the presentation.

Every 5 year or so, a major paradigm arrives, that makes earlier languages obsolete. Past examples include object-oriented programming, distributed programming or application extension languages. The inability of classical programming languages to integrate such changes also leads to a number of niche languages implementing minority paradigms, ranging from Prolog to make to yaml.

Extensible in XL means that programmers can add features and notations much like they would add functions or classes in existing languages. XL is quite minimalist, since all this is done using a single operator written "is". This operator can be used to define variable (X is 0), functions (is_even X is X mod 2 = 0), multi-operator expressions (X in Y..Z is X >= Y and X < Z), or programming constructs. Loops are defined in XL as follows:

loop Body is Body loop Body

This extensibility mechanisms is therefore based on meta-programming, and are in that way similar to the macros that gave Lisp its longevity. Lisp was first to normalize object-oriented programming with CLOS. But XL has interesting twists. For starters, there is a strong focus on making notations match concepts. For example, XL will let you write (1 + 2 * 3) or program if statements that look exactly like in other languages. This is actually important.

This talk will give three proofs of this extensibility:

The standard library of XL provides things that have to be put in the compiler in other languages, like basic arithmetic (addition, multiplication, etc), basic control statements (if-then-else, while loops, etc), the module system, and so on. The compiler is actually in the library (or rather, it will be, one day).

The Tao3D language turned XL into a functional reactive 3D document description language. That would have been a stretch for C, and maybe even for Lisp, for reasons that will be discussed.

ELIoT, later renamed ELFE, and now integrated in trunk XL, turned XL into a distributed language, where you write one program and it executes on several machines, dispatching code around and exchanging data transparently.

Tao3D will be used to give the presentation, to give an idea of what XL is (or rather was) capable of.

The language is currently being redefined in a more precise way, including a fully revamped type system. You can access the work-in-progress definition here: https://c3d.github.io/xl/ (also in links).

Additional information

Type devroom

More sessions

2/2/20
Minimalistic, Experimental and Emerging Languages
Jérôme Martin
AW1.125
Racket allows us to create languages on the fly. It's extremely practical for making DSLs (domain specific languages), but can it also be used to make art? That's what we'll see in this talk, making (executable) poetry with Racket!
2/2/20
Minimalistic, Experimental and Emerging Languages
James Shubin
AW1.125
Mgmt is a next gen config management tool that takes a fresh look at existing automation problems. The tool has two main parts: the engine, and the language. This presentation will have a large number of demos of the language. The language is a minimalistic, functional, reactive DSL. It was designed to both constrain the user with safe types, and no core looping constructs, but also to empower the user to build powerful real-time distributed systems. This year we will expand on last years talk ...
2/2/20
Minimalistic, Experimental and Emerging Languages
Ulrich Hoffmann
AW1.125
The "new synthesis" of Forth is an ongoing effort in spirit of the Forth Modification Laboratory workshops. Its aim is to identify the essentials of Forth and to combine them in a new way to build systems that can scale-down as Forth always did and can scale-up to large applications and development projects. The new synthesis is guided by the two principles biological analogy and disaggregation. We scrutinize many aspects of traditional and modern Forth implementations trying to separate ...
2/2/20
Minimalistic, Experimental and Emerging Languages
Stephane Ducasse
AW1.125
Pharo is a minimalist reflective dynamically typed object-oriented language. Pharo is inspired from Smalltalk: Its full syntax fits on a postcard. Its model is simple: everything is an object instance of a class, methods are all public virtual, attributes are first class objects and are protected. There is single inheritance and traits. And nothing else! (see http://mooc.pharo.org). Still Pharo is a real language that is started to be used in industry http://pharo.org/success and ...
2/2/20
Minimalistic, Experimental and Emerging Languages
Pablo Tesone
AW1.125
In this talk, we present a series of tools to bootstrapping smaller crafted kernel languages. Smaller kernels allow us to run applications in resources limited environments (IoT). Also, it allows us to modify and study language modifications and extensions easing the evolution of new and existing languages. These experiments are performed in a fully debuggable simulated environment, allowing us to overcome common mistakes and problems. This is not only an experimental environment as it allows us ...
2/2/20
Minimalistic, Experimental and Emerging Languages
Pierre Neidhardt
AW1.125
GNU Guix is a universal functional package manager and operating system which respects the freedom of computer users. It focuses on bootstrappability and reproducibility to give the users strong guarantees on the integrity of the full software stack they are running. It supports atomic upgrades and roll-backs which make for an effectively unbreakable system.
2/2/20
Minimalistic, Experimental and Emerging Languages
Jan Nieuwenhuizen (janneke)
AW1.125
Last year GNU Mes brought the Reduced Binary Seed bootstrap to GNU Guix: gcc, glibc and binutils were removed and the size of the bootstrap binaries went down from 250MB to 130MB. This year we introduce the Scheme-only bootstrap: Awk, Bash, Core Utilities, Grep, Gzip, Make, Sed, Tar are replaced by Gash and Gash Core Utils, halving the size of the Guix bootstrap seed again, to 60MB. Next up, the Full Source bootstrap!