Back to flin
flin

Audit des fonctions, jour 7 terminé

Le jour 7 de l'audit des fonctions de FLIN a révélé 95 % de couverture bytecode mais seulement 12 % d'accessibilité dans les templates -- et comment nous avons comblé le fossé avec plus de 70 expositions de fonctions.

Juste A. Gnimavo (Thales) & Claude | March 26, 2026 3 min flin
EN/ FR/ ES
flinauditfunctionsbuilt-instandard-library

Au septième jour de l'audit exhaustif, nous avions atteint les fonctions intégrées. La spécification de FLIN promet des centaines de fonctions natives -- manipulation de chaînes, opérations mathématiques, prédicats de dates, transformations de listes, vérification de types, validation, formatage et encodage. La question n'était pas de savoir si ces fonctions existaient dans le code Rust. La question était de savoir si elles étaient accessibles depuis l'endroit où les développeurs FLIN en ont réellement besoin : à l'intérieur des templates.

Le problème d'accessibilité des templates

L'analyse des lacunes a révélé une asymétrie frappante. Au niveau du bytecode, FLIN avait implémenté environ 95 % de ses fonctions spécifiées -- 350+ opérations natives prêtes à être exécutées. Mais au niveau des templates, où les développeurs écrivent leur logique UI, seules 17 fonctions étaient accessibles -- environ 12 % de ce qui était disponible.

Le modèle d'exécution de FLIN a deux contextes. Dans le contexte bytecode, les appels de fonctions passent par le registre de fonctions -- une table de recherche complète. Dans le contexte template, les appels passent par l'évaluateur d'expressions du moteur de rendu -- un bloc match dans renderer.rs qui ne gère que les fonctions avec des bras match explicites.

Implémentation des fonctions P0 manquantes

Douze fonctions de formatage et prédicats de dates n'étaient implémentées nulle part. Un nouveau module src/vm/builtins/formatting.rs a été créé avec format_number, format_currency, slugify et d'autres. Le module time.rs a été étendu avec is_past, is_future, is_today, is_this_week, time_quarter et d'autres.

Exposer plus de 70 fonctions aux templates

Le travail restant était de câbler les fonctions bytecode existantes au moteur de rendu des templates, en ajoutant des bras match pour chaque catégorie de fonctions : chaînes (30 fonctions), mathématiques (12), dates (12), listes, types, validation, encodage et formatage.

Le total après la session 266 : 87+ fonctions accessibles depuis les templates, contre 17 auparavant. L'accessibilité des templates est passée de 12 % à plus de 66 %.

Le trio pluck, group_by et compact

Trois nouvelles fonctions de liste méritaient une mention spéciale car elles répondaient à des schémas de templates courants nécessitant auparavant des solutions de contournement verbeuses :

flin// Avant : extraire un seul champ d'une liste d'entités
// Nécessitait une itération manuelle

// Après : un appel de fonction
names = pluck(users, "name")
by_department = group_by(employees, "department")
valid = compact(items)

L'audit des fonctions a mis en lumière un schéma que nous avions vu tout au long du développement de FLIN : les fonctionnalités étaient implémentées quand elles étaient nécessaires pour l'objectif d'une session spécifique, mais le câblage pour les rendre universellement accessibles était souvent reporté. L'audit l'a détecté, et une seule session a comblé le fossé.

Après la session 266, le compteur de tests s'élevait à 3 117 -- tous passants.


Ceci est la partie 150 de la série « Comment nous avons construit FLIN », documentant comment un CEO à Abidjan et un CTO IA ont conçu et construit un langage de programmation à partir de zéro.

Navigation de la série : - [149] Le plan de correction de l'audit - [150] Audit des fonctions, jour 7 terminé (vous êtes ici) - [151] Audit de la persistance de base de données

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude zerosuite

Ça marche, et ce n'est pas fini

Le dirigeant a parcouru lui-même tous les canaux de senndo — cinq canaux, à l'unité et en campagne, l'import, les statistiques, un remboursement, l'API — et tout a répondu. Le fichier de pilotage disait toujours non, et la seule ligne qui bloquait n'était pas du code : c'était un document qui avait discrètement cessé d'être vrai. Quatre affirmations vraies à l'écriture et fausses à la lecture, et les gardes lisibles par une machine qui attrapent désormais chacune de ces formes.

13 min Sep 14, 2026
senndocpaaslaunch-readinessdocumentation +8
Thales & Claude zerosuite

Le navigateur entre les mains de Claude : piloter le Chrome du dirigeant

Claude-in-Chrome permet à une session Claude Code de piloter le vrai navigateur du dirigeant — même profil, mêmes sessions ouvertes. Ce que l'outil fait réellement, pourquoi il vaut mieux que de demander à un humain de cliquer et de rapporter, et où l'humain garde l'avantage. Ancré dans le jour où Claude a conduit un parcours client complet dans la console de production de senndo, messages facturés compris.

9 min Aug 18, 2026
claude-in-chromebrowser-automationclaude-codeclaude-fable-5 +9
Thales & Claude deblo

Le segfault qui n'était pas le nôtre : livrer le tracking du jour de lancement de Déblo la nuit du lancement — analytics conditionnées par l'environnement, attribution native des stores, trois bugs que le compilateur ne pouvait pas voir, et un build à court de mémoire que nous avons diagnostiqué au lieu de le rétablir

Le 1er juillet 2026 — jour de lancement — le risque n'a jamais été le texte. C'était les campagnes payantes qui partaient à l'aveugle. Voici le build-log de la livraison des analytics et de l'attribution d'installation de Déblo sous forme de code, la nuit du lancement : des tags GA4, Meta et LinkedIn conditionnés par l'environnement, qui se déploient sans risque avant même que les comptes publicitaires existent ; une attribution routée par les canaux natifs des stores plutôt que par le pixel web ; un audit adverse qui a attrapé trois bugs que le typecheck et le build passaient tous les deux ; et un déploiement Easypanel qui a segfaulté au premier build — que nous avons prouvé ne pas venir de notre code avant d'en changer une seule ligne.

18 min Jul 1, 2026
deblolaunch-dayclaude-opus-4.8claude-code +26