On entre dans le moteur CakeLang par trois portes. Depuis les correctifs de septembre 2026, elles partagent le même pipeline d'analyse : un programme donne le même arbre, et donc la même empreinte, quelle que soit la porte empruntée. Ce qui change d'une porte à l'autre, c'est l'environnement autour de l'exécution.
L'éditeur web exécute le programme en bac à sable : aucune lecture ni écriture de fichier, aucune commande système. C'est la porte des lecteurs de cette bibliothèque, et tous les exemples du tome sont vérifiés sur ce chemin, sauf mention contraire.
cakeElle exécute sans bac à sable et offre trois commandes d'inspection : cake parse fichier.cake affiche l'arbre en JSON, cake hash fichier.cake calcule l'empreinte d'arbre, et cake -e "expression" évalue une expression isolée. C'est avec cake hash que l'on vérifie les empreintes imprimées dans ce tome.
Le REPL, lancé par cake repl, garde l'état d'une saisie à l'autre et convient à l'exploration pas à pas, avec le débogueur et ses points d'arrêt.
Une fonction se déclare avec <@:, son nom, ses paramètres typés et son type de retour. Son corps accepte les instructions C% habituelles, et return renvoie la valeur.
t09c06-a.cake<@: vitesseCirculaire(mu %double, r %double) %double {
=: v=Cake.sqrt(mu/r)%
return v%
} %
=: v=vitesseCirculaire(398600.4418, 6578.137)%
|> "Vitesse circulaire : " + Cake.format("{0:F3}", v) + " km/s"%
Vitesse circulaire : 7.784 km/s
<projet nom="t09c06-a" package="com.unibool.script" type="Library">
<classe nom="Root" visibilite="Public">
<methode nom="main" retour="void" visibilite="Public">
<bloc>
<declaration nom="v" type="var" valeur="vitesseCirculaire(398600.4418, 6578.137)"/>
<appel methode="println" args=""Vitesse circulaire : " + Cake.format("{0:F3}", v) + " km/s""/>
</bloc>
</methode>
<methode nom="vitesseCirculaire" retour="double" visibilite="Public">
<parametre nom="mu" type="double"/>
<parametre nom="r" type="double"/>
<bloc>
<declaration nom="v" type="var" valeur="Cake.sqrt(mu / r)"/>
<retour-stmt valeur="v"/>
</bloc>
</methode>
</classe>
</projet=: déclarations · |> entrées/sorties · bibliothèque : Cake.sqrt, Cake.formate8bf74bfd97f5899 (reproductible : cake hash t09c06-a.cake)Même source, même sortie. Avant septembre 2026, l'éditeur ignorait ces déclarations sans message ; c'est l'un des défauts corrigés grâce à ce tome.
Source C% ·t09c06-b.cake<@: vitesseCirculaire(mu %double, r %double) %double {
=: v=Cake.sqrt(mu/r)%
return v%
} %
=: v=vitesseCirculaire(398600.4418, 6578.137)%
|> "Vitesse circulaire : " + Cake.format("{0:F3}", v) + " km/s"%
Vitesse circulaire : 7.784 km/s
=: déclarations · |> entrées/sorties · bibliothèque : Cake.sqrt, Cake.format73e5c063f0b37bec (reproductible : cake hash t09c06-b.cake)Un moteur digne de confiance donne le même arbre par toutes ses portes. Ce qui peut différer, c'est l'environnement autour de l'exécution, et il doit être écrit à côté de chaque exemple.
Le chapitre suivant regarde ce qui protège l'exécution elle-même : le bac à sable, le budget et les blocs d'erreur.