Blog
All articles. All pillars. All authors.
Types union et rétrécissement de type
Comment nous avons implémenté les types union dans FLIN -- la syntaxe int | text | bool, le rétrécissement de type à travers le flux de contrôle, et l'infrastructure du compilateur Rust qui fait tout fonctionner.
Gestion de la mémoire et ramasse-miettes
La gestion de la mémoire dans la VM de FLIN : ramasse-miettes, interning de chaînes et allocation sur le tas en Rust.
Fermetures et fonctions d'ordre supérieur dans la VM
Implémentation des fermetures et fonctions d'ordre supérieur dans la machine virtuelle de FLIN : upvalues et sémantique de capture.
Pattern matching : de switch à match
Comment nous avons conçu le pattern matching de FLIN -- du simple filtrage par valeur à la vérification d'exhaustivité sur les unions étiquetées, et l'implémentation Rust qui alimente le tout.
L'opérateur pipeline : composition fonctionnelle dans FLIN
Comment nous avons implémenté l'opérateur pipeline dans FLIN -- la syntaxe |> pour la composition fonctionnelle, sa transformation en appels de fonctions par le parser, et l'expérience développeur qu'il débloque.
Tuples, enums et structs
Comment nous avons conçu les trois structures de données fondamentales de FLIN -- les tuples pour le regroupement anonyme, les enums pour les alternatives nommées et les structs d'entités pour les enregistrements persistants.
Gardes de type et rétrécissement de type à l'exécution
Comment l'opérateur is de FLIN permet la vérification de type à l'exécution avec le rétrécissement de type au moment de la compilation -- le pont entre les valeurs dynamiques et la sécurité statique.
Le type Never et la vérification d'exhaustivité
Comment le type Never de FLIN et la vérification d'exhaustivité fonctionnent ensemble pour garantir que chaque chemin de code est pris en charge -- le filet de sécurité imposé par le compilateur pour le filtrage par motifs et le flux de contrôle.
Bornes génériques et clauses Where
Comment FLIN implémente les bornes génériques et les clauses where -- contraindre les paramètres de type avec des traits, fusionner les syntaxes inline et where, et valider les contraintes à la compilation.
Boucles While-Let et Break avec valeur
Comment nous avons implémenté les boucles while-let et le break avec valeur dans FLIN -- l'itération pilotée par motifs et les boucles qui produisent des valeurs, inspirées du flux de contrôle de Rust.
Boucles étiquetées et motifs Or
Comment nous avons implémenté les boucles étiquetées et les motifs Or dans FLIN -- sortir des boucles externes par nom, combiner des bras de match avec la syntaxe pipe, et les changements du compilateur qui les supportent.
Types union étiquetés et types de données algébriques
Comment nous avons apporté les types de données algébriques à FLIN -- les enums génériques avec données associées, Option<T>, Result<T, E>, et l'implémentation Rust des unions étiquetées.