Catnip 
version 0.0.6
Né comme langage de script embarquable pour Python.
Langage qui fait un 360 no-scope pendant que les chatons compilent les killcams.
Catnip REPL v0.0.6
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
Prerelease MAIS les spécifications sont figées.
- guide de performances prod-like
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
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
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
- MODULE_LOADING - Charger des modules Python
Structure
Spécification lang/
Référence complète de la syntaxe et des propriétés 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, tail calls et fonctions intégrées
- STRUCTURES - Structures, méthodes, traits, héritage, abstract
- PATTERN_MATCHING - Référence complète du pattern matching
- BROADCAST - Notation vectorielle sur collections
- SCOPES_AND_VARIABLES - Portée des variables et closures
- PRAGMAS - Pragmas (TCO, JIT, ND-recursion, modules)
- TURING_COMPLETENESS - Preuve de Turing-complétude
- 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)
- codex/ - Exemples thématiques (écosystème Python)
- advanced/ - Techniques avancées
- embedding/ - Embedding Catnip dans Python
- tools/ - Utilisation des outils
É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
- geometry/ - Géométrie algorithmique 2D
Cœur
Doc développeur dev/
Architecture interne et contribution au projet.
- ARCHITECTURE - Pipeline, parsing, analyse sémantique
- VM - Machine virtuelle Rust et NaN-boxing
- OPTIMIZATIONS - Passes d'optimisation, TCO, JIT
- EXTENDING - Ajouter opcodes et opérations
Outillage
Outils tools/
Outils de développement et utilitaires pour Catnip.
- lint - Vérificateur de syntaxe
- debug - Debugger
- format - Formatteur de code
- pygments - Syntax highlighter
- extract_grammar - Extraction de la grammaire (export JSON, lexer Pygments)