189 views
owned this note
# Journal de bord Rustre
[TOC]
:::info
**Tuto: comment se souvenir de ce qu'on a fait un jour donné ?**
* Discord
* [đź”— Historique des commits](https://gricad-gitlab.univ-grenoble-alpes.fr/Projets-INFO4/22-23/26/rustre/-/commits/main)
:::
## Mention importante
Le projet Rustre avait été originellement créé comme projet personnel. On part donc d'une base pré-existante (presque uniquement constituée d'un lexeur-parseur).
## Lundi 16 Janvier
### `rustre-parser`
* Correction de la localisation des erreurs dans les fichiers sources: les erreurs reportées par le parseur contiennent l'emplacement de l'erreur
* Nettoyage de l'interface publique de `rustre_parser` en vue de commencer Ă l'utiliser dans un module "parent"
### documentation
* mise en place de la documentation avec mdbook
* rédaction de pages sur l'architecture du projet
## Lundi 23 Janvier
### Intégration continue
* Ajout d'une pipeline d'intégration continue qui teste l'intégralité du projet (des tests unitaires étaient déjà en place sur le parseur). Certains tests non-déterministes ont été rendu optionnels afin de ne pas s'exécuter en CI.
* Cette pipeline permet Ă©galement de construire la **rustdoc** (documentation de l'API des modules) [![](https://img.shields.io/badge/docs-rustre__parser-green)](https://projets-info4.gricad-pages.univ-grenoble-alpes.fr/22-23/26/rustre/rustre_parser/) [![](https://img.shields.io/badge/docs-rustre__core-green)](https://projets-info4.gricad-pages.univ-grenoble-alpes.fr/22-23/26/rustre/rustre_core/)
## Lundi 30 Janvier
### `rustre-parser`
* Ajout de quelques règles ungrammar au parseur
* Intégration de salsa au projet
## Lundi 6 FĂ©vrier
* Création de yéter, un framework de calcul incrémental pour remplacer [`salsa`](https://lib.rs/crates/salsa)
<details><summary>Explication de la blague</summary>
<img src="https://media.discordapp.net/attachments/1062020724275023912/1072529234809061396/Yeter.jpg?width=493&height=447">
<p>
<i>Salsa = sauce</i>
</p>
</details>
## Lundi 20 FĂ©vrier
* RĂ©daction du livre de documentation
### `yeter`
* Nouvelle version de yéter
* Intégration de yéter au reste du projet (et suppression de salsa)
### `rustre-parser`
* Ajout de nouvelles règles ungrammar
### `rustre-core`
* Travail (en avance) sur un système pour supporter l'initialisation partielle des variables lustres. Ecriture d'un jeu de tests.
![](https://media.discordapp.net/attachments/1062020724275023912/1078723255952740372/image.png)
## Lundi 27 FĂ©vrier
* Complétion des LeftNodes ungrammar
* DĂ©but du TypeChecker
* Préparation de la présentation pour la soutenance
## Mardi 28 FĂ©vrier
* RĂ©daction du livre de documentation
* Complétion du système de génération de graphes d'expressions dans les noeuds.
![](https://media.discordapp.net/attachments/1062020724275023912/1079161114555854888/image.png?width=463&height=447)
Le système est toujours très incomplet et ne supporte qu'un petit sous-ensemble d'opérateurs.
## Lundi 6 Mars
* Yéter : début d'une implémentation d'un système d'effets de bords pour gérer les erreurs de compilation
### Docs
* RĂ©daction d'une page sur l'initialisation partielle
## Mardi 7 Mars
* Début d'implémentation d'un point d'entrée pour l'interpréteur embarqué, qui interragis en entrée/sortie avec du CSV
* Nous sommes évidemment bloqués par le type-checker, mais les fondations sont déjà posées pour cet interpréteur
## Lundi 13 Mars
* Fin de l'implémentation dans yéter des effets de bords, publication de la version 0.3.0
### Docs
* Ajout de détails sur les différentes implémentations possibles d'initialisation partielle
* Début de rédaction d'une page sur le type-checking
## Mardi 14 Mars
### `rustre-core`
* Création de queries yéter pour la résolution de nom
* Avancée dans le type-checking
## Lundi 20 Mars
### `rustre-core`
* Mise à jour de yéter vers une version avec plus de fonctionnalités, développée en parallèle
* Merge de plusieurs branches pour repartir d'une bonne base commune pas trop divergente de `main`
* Ajout de queries pour la résolution de nom (trouver à quelle constante/variable une expression "ident" se réfère)
## Mardi 21 Mars
### `yeter`
* Ajout de nombreuses fonctionnalités à yéter, pour permettre d'atteindre des meilleurs performances (support des lifetimes ou des types génériques dans les queries yéter, ce qui rend possible du passage de références)
* Correction de bugs
### `rustre-core`
* Suppression de la représentation intermédiaire en graphe, jugée pas pertinente au vu du paradigme encouragé par yéter (enrichissement de l'AST, plutôt que rafinement de celui-ci).
* Début de création d'une query pour évaluer la quantité de mémoire qu'un nœud Lustre a besoin d'avoir à sa disposition pour faire persister des données entre chaque "invocation", lors de l'utilisation d'opérateurs temporels (`pre`, `->`, `fby`)
* Commencement de l'interpréteur d'expressions constantes
## Lundi 27 Mars
### `rustre-core`
* Avancement de l'interpréteur d'expressions constantes + vérification à l'aide de tests
* Type-checking des Left Nodes complété, refactoring du fichier types.rs et début de la query générale de type-checking avec l'ajout d'un type Tuple