Catnip Catnip

version 0.0.7

Né comme langage de script embarquable pour Python.

Catnip vise un équilibre entre simplicité d'usage, expressivité et performances. Minimal en surface, précis dans sa conception.

Catnip REPL v0.0.7
Type /help for help, /exit to quit
0.1 + 0.2
0.30000000000000004
# tout est conforme

Officieusement : un rite désespéré pour calmer les entités multidimensionnelles qui vivent dans les coins du code.

Si tu sens ta conscience boucler sans condition d'arrêt, c'est une feature.

Respire. Reprends ton café froid. Ce n'est pas encore classé "incident".

Turfu

Encore un brouillon, moins sale.

  • Type énuméré enum
  • Support with pour les context managers Python
  • Réécriture du formatter avec un AST, dans le genre Wadler-Leijen
  • Détection de patterns louches par le linter
  • Un minimum de packaging

Repos

Bonus

Le langage est prouvé avec Coq. Voir : COQ_PROOFS

Transparence maximale : Tree-sitter n'est pas formellement prouvé ici, et Cranelift non plus.

On a donc des preuves solides, et un petit pacte avec le dieu des parseurs.

Par conséquent l'usage de Catnip est déconseillé dans les contextes safety-critical, alors si on ne scripte pas un Airbus, un missile, ou une centrale nucléaire, c'est OK.


Origine

  • INTRODUCTION - Ambition, sources d'inspiration et philosophie de Catnip
  • CHANGELOG - Changements par rapport à la prerelease précédente
  • META - Conventions transverses de lecture et d'écriture de la doc

Primitives

Démarrage express. tuto/

Gestes

Recettes d'utilisation. how-to/

Interface

Guide utilisateur user/

Embedding (Catnip comme DSL) :

Standalone et REPL :

Apprendre et utiliser Catnip.

  • CLI - Options ligne de commande (scripts et REPL)
  • REPL - Mode interactif pour exploration
  • RUN - Mode standalone avec binaire catnip
  • CONFIG - Configuration hiérarchique et overrides par mode
  • SHEBANG_GUIDE - Scripts Catnip exécutables comme commandes système
  • MODULE_LOADING - Charger des modules Python

Structure

Spécification lang/

Référence complète de la syntaxe et des concepts du langage.

  • SYNTAX - Syntaxe de base, séparateurs, conventions et annexes
  • TYPES - Types de données : nombres, chaînes, f-strings, booléens, collections
  • EXPRESSIONS - Expressions multilignes, opérateurs, attributs, indexation et slicing
  • CONTROL_FLOW - Structures de contrôle (if, while, for, break, continue)
  • FUNCTIONS - Fonctions, lambdas, décorateurs, appels terminaux et fonctions intégrées
  • STRUCTURES - Structures, méthodes, traits, héritage et abstractions
  • PATTERN_MATCHING - Référence complète du filtrage par motifs (pattern matching)
  • BROADCAST - Notation vectorielle sur collections
  • BROADCAST_SPEC - Spécification normative (syntaxe et sémantique)
  • BROADCAST_RATIONALE - Motivation et comparaisons
  • BROADCAST_GUIDE - Cas d'usage pratiques
  • BROADCAST_RUNTIME - Détails d'implémentation runtime
  • COMPREHENSIONS - Traduction des comprehensions Python vers Catnip
  • FOLD_GUIDE - Fold et reduce : agrégation de structures
  • SCOPES_AND_VARIABLES - Portée des variables et closures
  • PRAGMAS - Pragmas (TCO, JIT, ND-recursion, modules)
  • TURING_COMPLETENESS - Socle formel et complétude de Turing
  • COQ_PROOFS - Référentiel des preuves Coq
  • GLOSSARY - Termes techniques

Matière

Exemples examples/

Écosystème

Exemples thématiques utilisant les libs Python. codex/

Cœur

Doc développeur dev/

Architecture interne et contribution au projet.

Outillage

Outils tools/

Outils de développement et utilitaires pour Catnip.

  • mcp - Serveur MCP (parsing, inspection, debug, évaluation pour agents)
  • lint - Vérificateur de syntaxe
  • debug - Debugger
  • format - Formatteur de code
  • pygments - Syntax highlighter
  • extract_grammar - Extraction de la grammaire (export JSON, lexer Pygments)