352 lines
5.4 KiB
Markdown
352 lines
5.4 KiB
Markdown
# Exemples / DO-DON'T — Chapitre 41 — Artifacts, exports, profils et réservation des formats futurs
|
|
|
|
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
|
|
|
## Exemples actuellement présents dans le chapitre
|
|
|
|
### Exemple 1
|
|
|
|
```text
|
|
lib
|
|
bin
|
|
```
|
|
|
|
### Exemple 2
|
|
|
|
```text
|
|
Saselib
|
|
NativeStatic
|
|
NativeShared
|
|
```
|
|
|
|
### Exemple 3
|
|
|
|
```text
|
|
NativeExecutable
|
|
```
|
|
|
|
### Exemple 4
|
|
|
|
```text
|
|
LLVM IR
|
|
object
|
|
assembly
|
|
```
|
|
|
|
### Exemple 5
|
|
|
|
```text
|
|
identité vendor/package
|
|
version exacte
|
|
version de format saselib
|
|
API publique
|
|
métadonnées de types/generics nécessaires
|
|
Sase IR ou représentation compilable équivalente
|
|
dépendances requises
|
|
features pertinentes
|
|
contraintes de target/capability lorsque nécessaires
|
|
intégrité/métadonnées
|
|
```
|
|
|
|
### Exemple 6
|
|
|
|
```text
|
|
TAR POSIX/PAX
|
|
compressé par Zstandard
|
|
extension publique .saselib
|
|
```
|
|
|
|
### Exemple 7
|
|
|
|
```text
|
|
META-INF/saselib.manifest.toml
|
|
```
|
|
|
|
### Exemple 8
|
|
|
|
```text
|
|
external
|
|
standalone
|
|
```
|
|
|
|
### Exemple 9
|
|
|
|
```text
|
|
zip
|
|
tar
|
|
tar.gz
|
|
tar.zst
|
|
```
|
|
|
|
### Exemple 10
|
|
|
|
```text
|
|
deb
|
|
rpm
|
|
apk
|
|
AppImage
|
|
.run
|
|
msi
|
|
pkg
|
|
dmg
|
|
jar
|
|
browser chunks
|
|
Android packages
|
|
iOS packages
|
|
```
|
|
|
|
### Exemple 11
|
|
|
|
```text
|
|
package type = bin
|
|
artifact = NativeExecutable
|
|
target family = Native
|
|
platform = Linux
|
|
architecture = X86_64
|
|
ABI = Gnu
|
|
distribution = Debian (optionnel/réservé)
|
|
export format = Deb (futur)
|
|
```
|
|
|
|
### Exemple 12
|
|
|
|
```text
|
|
dev
|
|
release
|
|
```
|
|
|
|
### Exemple 13
|
|
|
|
```text
|
|
optimization
|
|
debug-info
|
|
incremental
|
|
```
|
|
|
|
### Exemple 14
|
|
|
|
```text
|
|
none
|
|
low
|
|
balanced
|
|
speed
|
|
size
|
|
```
|
|
|
|
### Exemple 15
|
|
|
|
```text
|
|
none
|
|
line
|
|
full
|
|
```
|
|
|
|
### Exemple 16
|
|
|
|
```toml
|
|
[profiles.dev]
|
|
optimization = "none"
|
|
debug-info = "full"
|
|
incremental = true
|
|
|
|
[profiles.release]
|
|
optimization = "speed"
|
|
debug-info = "line"
|
|
incremental = false
|
|
```
|
|
|
|
### Exemple 17
|
|
|
|
```text
|
|
désactiver les contrôles d'overflow définis par Saselang
|
|
modifier la sémantique d'un index hors limites
|
|
modifier l'ordre d'évaluation
|
|
modifier la représentation sémantique des types
|
|
changer les règles Result/throws/faults
|
|
désactiver les vérifications de sûreté du langage
|
|
faire varier la validité d'un programme Saselang autrement que par une limite propre au backend/target
|
|
```
|
|
|
|
### Exemple 18
|
|
|
|
```toml
|
|
[profiles.release.backend.llvm]
|
|
lto = "thin"
|
|
```
|
|
|
|
### Exemple 19
|
|
|
|
```text
|
|
profiles.<profile>.backend.<backend>
|
|
```
|
|
|
|
### Exemple 20
|
|
|
|
```text
|
|
off
|
|
thin
|
|
full
|
|
```
|
|
|
|
### Exemple 21
|
|
|
|
```text
|
|
--profile dev
|
|
--profile release
|
|
```
|
|
|
|
### Exemple 22
|
|
|
|
```text
|
|
browser runtime définitif
|
|
WASM/JVM/JS backends
|
|
packaging Android/iOS
|
|
.deb/.rpm/.apk/.msi/.dmg
|
|
installation automatique de dépendances système sur toutes les distributions
|
|
```
|
|
|
|
### Exemple 23
|
|
|
|
```text
|
|
<name>.saselib
|
|
```
|
|
|
|
### Exemple 24
|
|
|
|
```text
|
|
archive TAR POSIX/PAX
|
|
compressée par Zstandard
|
|
```
|
|
|
|
### Exemple 25
|
|
|
|
```text
|
|
META-INF/saselib.manifest.toml
|
|
```
|
|
|
|
### Exemple 26
|
|
|
|
```text
|
|
version du format saselib
|
|
identité vendor/package
|
|
version exacte SemVer du package
|
|
compatibilité de version du langage Saselang
|
|
nature/portabilité de la bibliothèque
|
|
inventaire logique des contenus présents
|
|
requirements de dépendances
|
|
features pertinentes
|
|
contraintes de target/capabilities
|
|
métadonnées FFI/native nécessaires
|
|
informations d'intégrité prévues par la version de format
|
|
```
|
|
|
|
### Exemple 27
|
|
|
|
```text
|
|
Sase IR
|
|
métadonnées publiques/types/generics
|
|
artifacts binaires spécifiques à certains targets
|
|
ressources
|
|
documentation
|
|
autres données définies par une version future du format
|
|
```
|
|
|
|
### Exemple 28
|
|
|
|
```text
|
|
TAR POSIX/PAX
|
|
Zstandard
|
|
```
|
|
|
|
### Exemple 29
|
|
|
|
```text
|
|
bon ratio de compression
|
|
décompression rapide
|
|
chargement séquentiel efficace par les outils
|
|
```
|
|
|
|
### Exemple 30
|
|
|
|
```text
|
|
saselc
|
|
saseldoc
|
|
```
|
|
|
|
### Exemple 31
|
|
|
|
```text
|
|
saselc check
|
|
saselc build
|
|
saselc run
|
|
saselc test
|
|
saselc clean
|
|
saselc fetch
|
|
saselc update
|
|
```
|
|
|
|
### Exemple 32
|
|
|
|
```text
|
|
check
|
|
résolution du projet et des dépendances nécessaires
|
|
parsing, analyse sémantique et validations
|
|
pas de génération de l'artifact final
|
|
|
|
build
|
|
compilation et génération de l'artifact demandé
|
|
|
|
run
|
|
réservé à un projet de type bin
|
|
build si nécessaire puis exécution
|
|
transmet explicitement les arguments du programme
|
|
|
|
test
|
|
découverte/compilation/exécution des tests selon les règles V1
|
|
utilise les scopes dev appropriés
|
|
|
|
clean
|
|
supprime les sorties de build et temporary build de la racine concernée
|
|
ne supprime ni manifest ni lockfile
|
|
ne purge pas implicitement les caches globaux de dépendances
|
|
|
|
fetch
|
|
résout et récupère les dépendances nécessaires sans construire l'artifact
|
|
utilise le lock existant et le complète seulement si nécessaire
|
|
|
|
update
|
|
demande explicitement une nouvelle résolution compatible avec les requirements
|
|
met à jour le lockfile
|
|
peut cibler tout le graphe ou un selector/une identité précise
|
|
```
|
|
|
|
### Exemple 33
|
|
|
|
```text
|
|
Sase IR
|
|
LLVM IR
|
|
object
|
|
assembly
|
|
```
|
|
|
|
### Exemple 34
|
|
|
|
```text
|
|
project.manifest.toml
|
|
saselang.lock.toml
|
|
```
|
|
|
|
### Exemple 35
|
|
|
|
```text
|
|
visibilités incluses
|
|
format de sortie
|
|
chemin de sortie
|
|
base path / base URL lorsque le format le nécessite, notamment HTML
|
|
projet/package/workspace ciblé
|
|
```
|
|
|
|
## DO / DON'T / WHY / compiler error / edge cases
|
|
|
|
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
|