Code Generation
Backends and lowering: Cranelift, native, LLVM, GPU, and debug info.
Code Generation
Το code generation είναι το σημείο όπου το Sounio δείχνει πιο καθαρά ότι υπάρχουν πολλαπλά πραγματικά compiler profiles. Η σωστή περιγραφή δεν είναι πια “το default artifact εκθέτει ένα μόνο path”, αλλά “το repo δημοσιεύει ξεχωριστά checked JIT και GPU artifacts, και το καθένα εκθέτει διαφορετικό backend contract”.
Τρεχων χαρτης πηγαιου κωδικα
- Το
self-hosted/native/καλυπτει native lowering, encoding, ABI, register allocation και object formats. - Το
self-hosted/wasm/καλυπτει lowering, encoding και module construction για WASM. - Το
self-hosted/gpu/καλυπτει PTX, SPIR-V, Metal, tensor-oriented work και GPU lowering. - Το
self-hosted/llvm/παραμενει ξεχωριστο backend-oriented υποδεντρο.
Τι αποδεικνυουν τα checked artifacts
- JIT profile: Cranelift JIT ενεργο; LLVM και GPU codegen απενεργοποιημενα.
- GPU profile: GPU codegen ενεργο; JIT απενεργοποιημενο; PTX emission διαθεσιμο με
build --backend gpu. - Η τεκμηριωση πρεπει να διαχωριζει το behavior του default profile, το behavior του GPU profile και το implementation breadth του source tree.
Εσωτερικη native v2 preview διαδρομη
Το repository περιλαμβανει πλεον και μια public preview διαδρομη
native-v2 για το προγραμμα backend sovereignty. Το alias συμβατοτητας
native-v2-shadow εχει αποσυρθει. Δεν ειναι νεο σταθερο backend για τελικους
χρηστες.
- Υπαρχει για να κλειδωνει το
RuntimeContext, την πολιτικη καταχωρητων ανα target και τις απαιτησεις του Machine IR σε artifact αναγνωσιμο απο μηχανη. - Η τρεχουσα
x86-64preview διαδρομη τωρα περνα απο πραγματικο Machine IR + legalization path, εκπεμπει αυστηραscalar_corenative ELF στη self-hosted shell, δημοσιευειgc_stateκαι table descriptor managed objects μεσωRuntimeContext, δρομολογει τα native-v2 heap objects με fixed handle table γιαalloc/field/index, φερνει και executable descriptor-driven mark-compact GC model με precise scanning και pin-aware relocation, και οι opcode families εξω απο αυτο το subset αποτυγχανουν fail-closed. - Το
AArch64υπαρχει ηδη στο contract ως ορισμενη πολιτικη, αλλα δεν εχει ακομη προαχθει σε δημοσιευμενο native emitter.
Επιβεβαιωση του ενεργου backend set
export SOUC_BIN="$(pwd)/artifacts/omega/souc-bin/souc-linux-x86_64-jit"
"$SOUC_BIN" info
export SOUC_GPU_BIN="$(pwd)/artifacts/omega/souc-bin/souc-linux-x86_64-gpu"
"$SOUC_GPU_BIN" info
"$SOUC_GPU_BIN" build examples/kernel_vec_add.sio --backend gpu -o /tmp/kernel_vec_add.ptx
export SOUNIO_NATIVE_V2_CONTRACT_PATH=/tmp/native_backend_v2_contract.v1.json
"$SOUC_BIN" run self-hosted/compiler/main.sio -- --self-test
Το κανονικο gate-backed artifact ειναι το artifacts/omega/native_backend_v2_contract.v1.json.
Πως να γραφετε codegen docs που δεν παλιωνουν
- Περιγραψτε τα backend directories οταν μιλατε για implementation architecture.
- Περιγραψτε το checked JIT artifact οταν μιλατε για το default public experience.
- Περιγραψτε το checked GPU artifact οταν μιλατε για public GPU codegen.
- Να τεκμηριωνετε μονο backend execution paths που εχετε επαληθευσει με το ακριβες artifact και command.