Skip to content

A statically typed, deterministic language with a normative v2.0 specification, dual Node/C reference toolchain, and 100% conformance-driven validation.

License

Notifications You must be signed in to change notification settings

ppyne/ProtoScript2

Repository files navigation

ProtoScript2

ProtoScript V2 — Manifeste

ProtoScript V2 est un langage conçu pour une promesse simple : pas de magie, pas de coût caché, pas d’ambiguïté sémantique.

Le projet est désormais spécifié, gouverné, et testable de façon indépendante.

La magie cache les coûts. ProtoScript les rend visibles

Ce que ProtoScript V2 assume

  • typage statique strict
  • modèle prototype-based (orienté objet sans classes)
  • pas de RTTI utilisateur
  • pas de fonctions comme valeurs
  • pas de généricité de fonctions
  • résolution déterministe à la compilation

Contrat du langage

  • la source normative est SPECIFICATION.md (ProtoScript Language Specification v2.0)
  • le manuel utilisateur de référence est MANUEL_REFERENCE.md (descriptif, aligné sur la spec)
  • la suite de conformité (tests/manifest.json) fait partie du contrat
  • une implémentation est conforme uniquement si elle passe 100 % des tests normatifs
  • aucun changement sémantique sans bump de version majeure

Pourquoi ce dépôt existe

Ce dépôt fournit :

  • une spécification normative complète
  • une implémentation oracle Node.js (bin/protoscriptc)
  • un CLI C de référence (c/ps) pour l’exécution
  • un chemin CLI C (c/pscc) pour la validation frontend
  • une validation croisée Node/C pour éviter les divergences silencieuses

Node.js sert de spec exécutable. Le C sert de preuve d’implémentabilité bas niveau.

Commandes essentielles

Prérequis

  • Node.js (pour l’oracle bin/protoscriptc)
  • Compilateur C (clang ou gcc) + make
  • POSIX (macOS / Linux)
  • jq (pour la suite de tests)

Compilation

Compiler les binaires C :

make -C c

Cela produit :

  • c/ps (CLI d’exécution)
  • c/pscc (frontend C)

Vérification de conformité :

tests/run_conformance.sh

Validation croisée Node/C (strict) :

tests/run_node_c_crosscheck.sh --strict-ast --strict-static-c

Runner complet (build + conformance + crosscheck + CLI) :

tests/run_all.sh

Compilation/contrôle côté oracle (Node) :

bin/protoscriptc --check file.pts
bin/protoscriptc --run file.pts
bin/protoscriptc --emit-ir-json file.pts
bin/protoscriptc --emit-c file.pts

Notes :

  • bin/protoscriptc (Node) est le seul qui produit du C (--emit-c) et de l’IR complet (--emit-ir).
  • c/pscc (C) fournit un frontend partiel et redirige vers bin/protoscriptc pour --emit-c / --emit-ir.

CLI C (exécution) :

make -C c
./c/ps --help
./c/ps run file.pts
./c/ps check file.pts
./c/ps ast file.pts
./c/ps ir file.pts

Frontend C (pscc) :

./c/pscc --check file.pts
./c/pscc --check-c file.pts
./c/pscc --check-c-static file.pts
./c/pscc --ast-c file.pts
./c/pscc --emit-ir-c-json file.pts
./c/pscc --emit-ir file.pts      # forward vers bin/protoscriptc
./c/pscc --emit-c file.pts       # forward vers bin/protoscriptc

Extension sans compromission

ProtoScript V2 autorise des modules tiers via API native normative (section 20 de la spec) avec contraintes strictes :

  • extension de l’environnement, jamais de la sémantique
  • résolution compile-time uniquement
  • symboles importés explicitement et typés statiquement
  • aucun chargement dynamique, aucune RTTI, aucune réflexion

Documentation officielle pour écrire un module natif : docs/native-modules.md

État

ProtoScript V2 est un langage spécifié au sens de sa spécification. La baseline v2.0 figée est taggée : spec-v2.0-final.