Malo MONIN

Computer science student at ENS Rennes.

Typst.

An open source typesetting language.

Typst is an open source typesetting language currently under development, made with the goal to be as powerful as LaTeX, while having a simpler syntax, similar to Markdown.

I contribute to Typst through bug reports, suggestions, as well as multiple pull requests. I am one of the main contributors to codex, the library used by Typst to define names for symbols, such as eq.not for “≠,” or arrow.l.long.squiggly for “⬳.”

L’Infératrice.

A Prolog interpreter.

L’Infératrice (‘The Inferator’) can automatically derive sequents given a set of inference rules. You can also leave unbound variables in your query, and L’Infératrice will return a list of solutions to your problem.

L’Infératrice was implemented in three days together with Grégoire Maire and Clara Moy as part of the L3 SIF course on programming language theory.

Sinfourmis.

A compiler creation contest.

Each year, Sinfonie, the association of the computer science department at ENS Rennes, organizes a tournament where teams create assembly programs that are executed by virtual ants. Teams compete against each other in matches where their ants have to bring as much food as possible to their respective bases. Most teams start by writing a compiler that generates assembly from a program in a higher level language.

Our team—consisting of Nicolas Dassas-Henny, Grégoire Maire and myself—arrived third out of six teams at the 2023 edition. We also won the ant’s gala ball, which is awarded to the team whose ants realize the prettiest figure, for displaying this image out of ants, on a hexagonal grid.

Curryst.

A Typst package to lay out proof trees.

Curryst is a Typst package enabling the creation of proof trees. It is fully written in the scripting language integrated in Typst.

Curryst is owned by Paul Adam, but I am the main contributor.

Board & Pieces.

A Typst package to display chessboards.

Board & Pieces is a Typst package that enables the user to display chess positions on a chessboard. Positions can be described in multiple formats, such as Forsyth–Edwards Notation. It is also possible to generate the successive positions of a chess game described in portable game notation.

Most of the logic happens in a plugin written in Rust. Functions that ultimately render a board are implemented in Typst.

Board & Pieces on GitHub.

Unichar.

A partial port of the Unicode Character Database in Typst.

Unichar is a Typst package that gives access to information from the Unicode Character Database (UCD). The UDC is an inventory of informations about Unicode characters such as their names, or their categories.

Unichar on GitHub.

Diagraph.

A Typst package integrating Graphviz.

Diagraph is a Typst package that adds support for Graphviz to enable the creation of graphs in Typst. Diagraph uses Graphviz’s C API in order to generate a SVG that Typst can render. A part of Diagraph is written in C and compiled to a WebAssembly Typst plugin. The other part is written in Typst and constitutes the interface between the plugin and the final user.

Diagraph was created by Tom Goalard, but I contributed through numerous commits.

Brainzen.

An homemade programming language.

Brainzen is a programming language I conceived with the goal to compile to Brainfuck code. Currently, Brainzen is not Turing-complete because it is impossible to write recursive functions, and because data structures with variable size are not supported. I do know how those two features can be implemented, but have not gotten to do it yet.

However, I already implemented a variation of the A* pathfinding algorithm in Brainzen.

Brainzen on GitHub.

Optimizing Brainfuck interpreter.

I wrote a Brainfuck interpreter that uses an intermediate representation to optimize some patterns in order to make the execution faster. This shortens the execution time of a sorting algorithm generated with Brainzen by a factor of ten.

The interpreter, accompanied with detailed explanations, on GitHub.

TIPE.

For my travail d’initiative personnelle encadré—a personal project conducted by each student as part of CPGE—I implemented an optimal routing algorithm for transportation networks. The algorithm computes the shortest route in a multimodal transportation network represented by a time-dependent graph, given a starting point and time, and a destination. This is similar to services like Google Maps or Citymapper. The algorithm accesses the graph through an abstract interface, making it work with any kind of network, regardless of the underlying representation.

Minecraft mods.

I have created and I maintain a few simple Minecraft mods fixing small issues, as temporary solutions until official patches are available.

My Minecraft mods on Modrinth.