Files
saselang-bible/chapters/031-fichiers-source-v1.md
2026-09-12 08:56:27 +02:00

2.8 KiB

31. Fichiers source V1

31.1 .saseltype — V1 REQUIS — FIGÉ

  • namespace obligatoire après en-tête/docs ;
  • exactement un type nominal top-level parmi class, struct, enum, interface, union ;
  • nom du fichier exactement identique au nom du type, extension exclue ;
  • comparaison sensible à la casse même sur un filesystem qui ne l'est pas ;
  • chemin relatif au source_root cohérent avec le namespace ;
  • pas de fonctions/variables/constants top-level auxiliaires.

Exemple :

src/compiler/lexer/Token.saseltype
namespace compiler.lexer;
public final class Token { ... }

31.2 .sasel — V1 REQUIS — FIGÉ

  • namespace obligatoire et cohérent avec le répertoire ;
  • imports ;
  • fonctions libres ;
  • variables/constants top-level ;
  • pas de type nominal top-level ;
  • nom de fichier ASCII minuscule suivant [a-z][a-z0-9_]*.sasel ;
  • aucune correspondance obligatoire entre le nom du fichier et les symboles qu'il contient.

Un fichier .sasel peut porter le même nom qu'un sous-répertoire/sous-namespace voisin. Le nom du fichier ne participe pas à l'identité des symboles et la distinction . / :: évite une ambiguïté de résolution.

31.3 .saselrun — V1 REQUIS — FIGÉ

Le point d'entrée source d'un package bin est obligatoirement :

<source_root>/main.saselrun

Règles :

  • directement sous source_root ;
  • nom exact main.saselrun ;
  • pas de namespace ;
  • imports ;
  • exactement main ;
  • pas de helpers top-level ;
  • exactement un main.saselrun par package bin ;
  • main.saselrun interdit dans un package lib.

Cette règle évite d'introduire un champ de manifest destiné uniquement à choisir entre plusieurs points d'entrée concurrents.

31.4 .saselscript — V1 RÉSERVÉ

Extension réservée pour le futur environnement browser Saselang.

Direction actuelle :

  • pas de namespace ;
  • entrée browser ;
  • plusieurs scripts possibles ;
  • un script ne doit pas importer directement un autre .saselscript ;
  • le code réutilisable doit venir de modules/libraries.

La V1 LLVM n'est pas obligée d'implémenter le runtime browser.

31.5 module.saselmod — V1 REQUIS — FIGÉ EN PRINCIPE

Nom exact :

module.saselmod

Fichier entièrement optionnel.

S'il existe, il commence obligatoirement par une déclaration namespace correspondant exactement au répertoire.

Il ne contient :

  • ni exports ;
  • ni reexports ;
  • ni dépendances de package ;
  • ni options de build générales ;
  • ni code exécutable arbitraire.

Un développeur voulant réexposer une API doit écrire un wrapper explicite.

Responsabilités prévues :

doc module-wide
deprecated module-wide
policies module-wide (ex: forbid unsafe)
requirements de feature
target/capability requirements lorsque pertinent

Syntaxe précise de ces directives : V1 À FINALISER.