Glossaire
Sommaire
- Pipeline
- Parsing
- IR
- Op
- OpCode
- Analyse sémantique
- Bytecode
- Runtime
- Exécution
- Context
- Scope
- Registry
- VM
- Frame
- Trampoline
- Host app
- Fonctions et données
- Fonction
- Lambda
- Closure
- Paramètre variadique
- HOF
- Struct
- Enum
- Union
- Pattern
- Guard
- Optimisation
- TCO
- Position terminale
- Constant folding
- Strength reduction
- Dead code elimination
- CFG
- SSA
- JIT
- Fonctionnalités transversales
- Broadcast
- ND-map
- ND-récursion
- Pragma
- Fonction pure
- Cache
- Freeze / thaw
- Sandbox
- Interfaces
- CLI
- REPL
- LSP
- MCP
Définitions courtes des termes employés dans la documentation. Les pages liées portent les règles, exemples et détails d'implémentation.
Pipeline
Parsing
Transformation du source en arbre tree-sitter, puis en représentation intermédiaire. Voir SYNTAX et ARCHITECTURE.
IR
Intermediate Representation produite après parsing. Les nœuds IR décrivent les opérations avec IROpCode avant
conversion vers la représentation exécutable.
Op
Nœud exécutable produit par l'analyse sémantique à partir de l'IR. IR et Op partagent les identifiants d'opération, mais Op porte la forme préparée pour l'exécuteur AST.
OpCode
Identifiant numérique d'une opération. Les enums Rust sont la source de vérité et les définitions Python sont générées.
Analyse sémantique
Validation et transformation de l'IR avant compilation ou exécution : résolution structurelle, annotations de position terminale et passes d'optimisation.
Bytecode
Suite d'instructions compactes produite depuis l'IR pour la VM. Voir VM.
Runtime
Ensemble chargé d'exécuter le programme préparé : VM, contexte, registry, chargeur de modules et intégrations hôtes.
Exécution
Context
État d'exécution exposé à Catnip : globals, builtins, modules, configuration et hooks de l'application hôte. Voir EXTENDING_CONTEXT.
Scope
Ensemble de liaisons visibles à un point du programme. Les scopes ont un parent et distinguent globals, paramètres, variables locales et captures. Voir SCOPES_AND_VARIABLES.
Registry
Table de dispatch qui associe les opérations exécutables à leur implémentation Rust.
VM
Machine virtuelle à pile qui exécute le bytecode. Elle gère frames, exceptions, appels, contrôles périodiques et interaction avec le JIT.
Frame
État d'un appel dans la VM : instruction courante, variables locales, fermeture et pile d'opérandes.
Trampoline
Boucle qui remplace un appel terminal par la réutilisation de l'état d'exécution, afin de ne pas ajouter de frame Python ou VM.
Host app
Application Python qui embarque Catnip et choisit le contexte, les fonctions exposées et les politiques de chargement. Voir EMBEDDING_GUIDE.
Fonctions et données
Fonction
Valeur nommée créée avec une affectation de lambda. Elle peut recevoir paramètres, valeurs par défaut, annotations et décorateurs. Voir FUNCTIONS.
Lambda
Fonction sans nom intrinsèque, écrite (params) => { body }. Une affectation peut immédiatement lui donner un nom.
Closure
Fonction qui capture des liaisons visibles lors de sa création. Les règles de copie et de résolution tardive sont décrites dans SCOPES_AND_VARIABLES.
Paramètre variadique
Paramètre *args qui collecte les arguments positionnels restants.
HOF
Higher-Order Function : fonction qui reçoit ou retourne une fonction, par exemple map, filter, fold ou
reduce.
Struct
Type nominal regroupant champs et méthodes, avec héritage simple et traits. Voir STRUCTURES.
Enum
Type nominal composé de variantes constantes sans charge utile. Voir ENUMS.
Union
Type nominal dont chaque variante peut porter des champs. Voir UNIONS.
Pattern
Forme utilisée par match pour tester et éventuellement déstructurer une valeur.
Guard
Condition if attachée à un pattern et évaluée après ses captures. Voir PATTERN_MATCHING.
Optimisation
TCO
Tail-Call Optimization : remplacement d'un appel en position terminale par une transition qui réutilise la frame. Voir FUNCTIONS.
Position terminale
Position dont la valeur devient directement le résultat de la fonction, sans opération restante.
Constant folding
Évaluation anticipée d'une expression entièrement constante.
Strength reduction
Remplacement d'une opération par une forme moins coûteuse ayant la même sémantique dans son domaine de validité.
Dead code elimination
Suppression d'instructions dont le résultat n'est jamais observable ou qui sont inatteignables.
CFG
Control Flow Graph : graphe de blocs basiques et de transitions possibles. Il porte les analyses inter-blocs.
SSA
Static Single Assignment : forme où chaque définition reçoit une version unique; les jonctions utilisent des fonctions phi. Voir ARCHITECTURE.
JIT
Just-In-Time compilation : compilation native des traces chaudes avec gardes et retour vers la VM en cas de déoptimisation. Voir JIT.
Fonctionnalités transversales
Broadcast
Application dimensionnelle d'une opération à un scalaire ou aux feuilles d'une structure. Les filtres et masques travaillent sur un niveau. Voir BROADCAST_SPEC.
ND-map
Forme ~> qui applique une fonction aux feuilles d'une cible imbriquée.
ND-récursion
Forme ~~ dont le callback reçoit recur et contrôle lui-même la descente. Les modes séquentiel, thread et process
partagent la même sémantique observable.
Pragma
Directive fichier pragma("name", value) qui configure compilation ou exécution. Voir PRAGMAS.
Fonction pure
Fonction dont le résultat dépend uniquement de ses entrées et qui ne produit pas d'effet observable. Cette propriété autorise composition, mémoïsation et certaines optimisations JIT.
Cache
Stockage mémoire ou disque d'artefacts réutilisables, avec invalidation par version, durée de vie ou capacité. Voir CACHE.
Freeze / thaw
Sérialisation et désérialisation binaire de valeurs ou d'IR. Le format .catf ajoute un en-tête permettant de rejeter
les artefacts incompatibles.
Sandbox
Contexte où l'hôte limite modules et fonctions accessibles. Une sandbox résulte d'une politique et d'un contexte restreints; le mot ne désigne pas une isolation de processus automatique.
Interfaces
CLI
Interface catnip pour exécuter un fichier, une expression, un flux stdin ou une sous-commande. Voir
CLI.
REPL
Boucle interactive Read-Eval-Print Loop qui conserve le contexte entre les expressions. Voir REPL.
LSP
Language Server Protocol : protocole utilisé par les éditeurs pour diagnostics, formatage et renommage.
MCP
Model Context Protocol : protocole par lequel des agents appellent le parser, l'exécuteur, le formatteur et le debugger. Voir MCP.
Un glossaire définit les mots et refuse désormais de réimplémenter les chapitres auxquels ils appartiennent.