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
withpour 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
- Framagit (principal) : https://framagit.org/aristofor/catnip
- GitHub (miroir) : https://github.com/aristofor/catnip
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/
- QUICKSTART_0MIN - Aperçu très (très) court
- QUICKSTART_2MIN - Bases essentielles en 2 minutes
- QUICKSTART_5MIN - Fonctionnalités complètes en 5 minutes
Gestes
Recettes d'utilisation. how-to/
- PATTERN_MATCHING - Mettre en place du pattern matching pas à pas
- ND_CONCURRENCY - Choisir entre
sequential,threadetprocesspour la ND-recursion - CLICK_INTEGRATION - Construire une CLI avec Click depuis Catnip
- INTERACTIVE_MENUS - Menus interactifs avec
prompt_toolkit
Interface
Guide utilisateur user/
Embedding (Catnip comme DSL) :
- EMBEDDING_GUIDE - Guide complet d'embedding Catnip
- HOST_INTEGRATION - Intégrer Catnip dans une app Python
- EXTENDING_CONTEXT - API pour étendre le contexte
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/
- basics/ - Bases et syntaxe
- functions/ - Fonctions et closures
- pattern-matching/ - Pattern matching
- control-flow/ - Break et continue
- broadcast/ - Broadcasting
- cfg/ - Control Flow Graph (analyse et optimisations)
- module-loading/ - Chargement de modules (bases)
- run/ - Exemples standalone (CLI)
- codex/ - Exemples thématiques (écosystème Python)
- advanced/ - Techniques avancées
- embedding/ - Embedding Catnip dans Python
- tools/ - Utilisation des outils
- performance/ - Benchmarks et profiling
Écosystème
Exemples thématiques utilisant les libs Python. codex/
- files-formats/ - Fichiers, formats et parsing
- data-analytics/ - Data science et analytics
- web/ - HTTP et APIs
- images-media/ - Images et multimédia
- geospatial/ - Données raster, distance et Sentinel-2
- geometry/ - Géométrie algorithmique 2D
- symbolic-graphs/ - Calcul symbolique et graphes (SymPy, NetworkX)
- visualization/ - Dashboards et visualisation
- utils/ - Utilitaires Python réutilisables
Cœur
Doc développeur dev/
Architecture interne et contribution au projet.
- CONTRIBUTING - Prérequis et guide de contribution
- ARCHITECTURE - Pipeline, parsing, analyse sémantique
- VM - Machine virtuelle Rust et NaN-boxing
- JIT - Compilation JIT via Cranelift
- OPTIMIZATIONS - Passes d'optimisation, TCO, JIT
- ND_VM_ARCHITECTURE - Opcodes ND dans la VM et le bytecode
- CACHE - Système de cache multi-niveaux
- CONSTANTS - Constantes centralisées du runtime Rust
- BENCHMARKING - Méthodologie de benchmarking
- TEST_STRATEGY - Stratégie de test (VM et AST)
- EXTENDING - Ajouter opcodes et opérations
Outillage
Outils tools/
Outils de développement et utilitaires pour Catnip.