Configuration
Catnip combine des valeurs par défaut, un fichier TOML, l'environnement et les options CLI.
Fichier
Le fichier par défaut est :
~/.config/catnip/catnip.toml
XDG_CONFIG_HOME remplace ~/.config. CATNIP_CONFIG ou catnip --config FILE sélectionne un autre fichier. Le
serveur LSP résout le même fichier au démarrage et en honore la section [lint] ; un changement de configuration lui
demande un redémarrage.
Le dépôt fournit aussi catnip.toml.example,
commenté avec toutes les clés.
Structure
| Emplacement | Contenu |
|---|---|
| racine | Activation du cache |
[optimize] |
Exécuteur, JIT, TCO, passes et mémoire |
[repl] |
Couleurs et thème |
[format] |
Indentation, longueur de ligne et alignement |
[cache] |
Limite de taille et TTL |
[diagnostics] |
Rapports d'erreurs internes |
[modules] |
Auto-imports et policy |
[lint] |
Diagnostics désactivés |
[mode.X] |
Overrides propres à un mode |
Les sections suivantes définissent les clés ; catnip.toml.example les rassemble dans un même fichier.
Précédence
Une valeur plus à droite remplace les valeurs situées à sa gauche :
défaut ⇒ fichier global ⇒ override de mode ⇒ environnement ⇒ CLI
Exemple :
[optimize]
jit = false
[mode.standalone]
jit = true
CATNIP_OPTIMIZE=jit:off catnip -o jit script.cat
Le fichier active le JIT pour les scripts, l'environnement le désactive, puis -o jit le réactive.
Le niveau optimize est un seuil : 0 désactive les passes ; 1 et 2 activent les passes locales ; 3 ajoute le
tier inter-blocs CFG+SSA. Le défaut est 2. Les détails des passes sont dans OPTIMIZATIONS.
Overrides par mode
Les sections [mode.standalone] et [mode.repl] remplacent les clés globales pour le mode correspondant :
| Mode | Déclenchement |
|---|---|
standalone |
Script .cat exécuté via la CLI |
repl |
Session interactive |
[mode.standalone]
jit = false
tco = true
optimize = 2
[mode.repl]
jit = true
tco = true
optimize = 2
Le mode DSL n'est pas auto-détecté. Pour l'embedding Python, configurer les sections globales ou passer les options à l'API hôte. Cette règle évite qu'un même fichier soit interprété différemment selon le chemin d'import Python.
Exécution et affichage
La section [optimize] configure le pipeline :
| Clé | Valeurs | Rôle |
|---|---|---|
executor |
"vm", "ast" |
Exécuteur par défaut |
jit |
booléen | Compilation des chemins chauds |
tco |
booléen | Optimisation des appels terminaux |
optimize |
entier 0–3 | Seuil des passes ; 3 ajoute le tier inter-blocs |
memory_limit |
entier en Mo | Limite RSS ; 0 désactive la garde, disponible sous Linux |
La section [repl] configure l'affichage :
| Clé | Valeurs |
|---|---|
no_color |
booléen |
theme |
"auto", "dark", "light" |
L'éditeur interactif /config distingue les valeurs persistées de celles qui ne valent que pour la session. Voir
REPL.
Modules
[modules]
auto = ["io", "math"]
policy = "deny"
allow = ["math", "json", "io"]
deny = ["os", "subprocess"]
[modules.repl]
auto = ["io", "math"]
[modules.cli]
auto = ["io"]
[modules.dsl]
auto = []
auto charge les modules avant l'exécution. La section du mode courant remplace [modules].auto; les modules -m s'y
ajoutent, après déduplication.
policy, allow et deny contrôlent les imports. La syntaxe des patterns, les policies nommées et l'ordre de
résolution sont définis dans MODULE_LOADING.
Cache
Le cache de parsing et de bytecode est stocké sous $XDG_CACHE_HOME/catnip, ou ~/.cache/catnip par défaut.
enable_cache = true
[cache]
cache_max_size_mb = 100
cache_ttl_seconds = 86400
Commandes de gestion :
catnip cache stats
catnip cache prune
catnip cache prune --dry-run
catnip cache clear
prune supprime d'abord les entrées expirées, puis applique la limite de taille selon l'ordre d'utilisation récent.
Diagnostics
Les erreurs internes peuvent produire des rapports JSON sous $XDG_STATE_HOME/catnip/weird, ou
~/.local/state/catnip/weird par défaut :
[diagnostics]
log_weird_errors = true
max_weird_logs = 50
CATNIP_WEIRD_LOG=off désactive ces rapports. Une erreur d'écriture du rapport ne remplace pas l'erreur originale.
Formatter
[format]
indent_size = 4
line_length = 120
align = false
CATNIP_FORMAT_INDENT_SIZE et CATNIP_FORMAT_LINE_LENGTH surchargent le fichier. Les options de catnip format
prennent ensuite priorité. Voir Formatter.
Linter
[lint]
disable = ["W401", "I200"]
--disable CODE ajoute des codes et --enable CODE les réactive. L'ensemble désactivé est :
(fichier ∪ --disable) ∖ --enable
--enable ne lance pas une analyse opt-in : --check-names et --deep restent nécessaires pour les phases
correspondantes. Voir Linter.
Variables d'environnement
| Variable | Valeurs ou rôle |
|---|---|
CATNIP_CONFIG |
Chemin du fichier TOML |
CATNIP_EXECUTOR |
vm ou ast |
CATNIP_OPTIMIZE |
Options -o, séparées par des virgules |
CATNIP_CACHE |
Activation du cache |
CATNIP_PATH |
Répertoires supplémentaires pour le chargement des modules |
CATNIP_THEME |
auto, dark ou light |
CATNIP_QUIET |
Masquage du résultat final |
CATNIP_FORMAT_INDENT_SIZE |
Taille d'indentation |
CATNIP_FORMAT_LINE_LENGTH |
Longueur de ligne |
CATNIP_WEIRD_LOG |
Activation des rapports internes |
NO_COLOR |
Désactivation standard des couleurs |
Une valeur qu'une variable ne sait pas lire lève, en la nommant :
CATNIP_CACHE=bogus catnip script.cat
# Error: Invalid value 'bogus' for CATNIP_CACHE: expected on/true/1/yes or off/false/0/no
Une variable définie mais vide compte comme absente, et laisse donc le fichier de configuration décider.
CATNIP_EXECUTOR= ne renverse pas un executor écrit dans le fichier, CATNIP_CACHE= ne réactive pas un cache
désactivé. C'est la règle que suivent déjà HOME et les bases XDG_* ; NO_COLOR l'a dans sa propre spécification.
Pour CATNIP_EXECUTOR, la casse et les espaces autour de la valeur sont ignorés : CATNIP_EXECUTOR='AST ' sélectionne
l'interpréteur AST.
catnip config show --debug donne la source retenue pour chaque valeur — default, file, env ou cli —, ce qui
est le moyen de vérifier qu'un réglage a bien été pris en compte, et par qui.
Inspecter et modifier
catnip config show
catnip config show --debug
catnip config get jit
catnip config set jit true
catnip config path
show --debug affiche la source de chaque valeur : default, file, env ou cli.
En REPL, /config ouvre l'éditeur interactif ; /config show, /config get, /config set et /config path restent
disponibles sous forme textuelle.
Une configuration a plusieurs sources, mais une seule valeur effective. Le reste est de la généalogie.