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-64 preview διαδρομη τωρα περνα απο πραγματικο Machine IR + legalization path, εκπεμπει αυστηρα scalar_core native 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.