Glossaire

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.