Compiler Internals
A guided map of the `souc` compiler: frontend, type checking, IRs, and backends.
Compiler Internals
Τα docs του compiler παραμένουν χρήσιμα, αλλά παρουσιάζονται πλέον ως χάρτης implementation δεμένος με το artifact που μπορούμε πράγματι να επαληθεύσουμε.
Επαληθευμένο σήμερα
- Τα docs του compiler διαβάζονται καλύτερα ως χάρτης της implementation και της ενεργής σχεδιαστικής δουλειάς.
- Το ενεργό backend set πρέπει να επιβεβαιώνεται ανά artifact με
"$SOUC_BIN" info, όχι να θεωρείται δεδομένο. Ο μόνος διαθέσιμος στόχος είναι στατικό ELF Linux x86-64· το Cranelift JIT δεν διατίθεται πλέον (CHANGELOG 2.1.0). - Αντιμετωπίστε τα tests και τα gate artifacts ως ισχυρότερη απόδειξη από aspirational prose ή ονόματα directories.
Τρέχουσες επιφυλάξεις
- Backends όπως LLVM, GPU και LSP πρέπει να επιβεβαιώνονται ανά artifact και όχι να συμπεραίνονται από το source tree.
- Η γλωσσική προδιαγραφή μπορεί να προηγείται από αυτά που εφαρμόζει το τρέχον δημόσιο artifact.
Αντιμετώπιση προβλημάτων
- Υπερχείλιση Στοίβας (Μεταγλωττιστής Madaros): Ο μεταγλωττιστής αναδρομικών εκφράσεων μπορεί να δημιουργήσει εξαιρετικά μεγάλα πλαίσια στοίβας (π.χ. ~4.85 MB ανά πλαίσιο) σε βαθιά εμφώλευση. Αυτό διορθώθηκε πρόσφατα στη λογική codegen ευθυγραμμίζοντας το δυναμικό μέγεθος του πλαισίου με τον αριθμό των καταχωρητών (
align16((*func).reg_count*8)). Ωστόσο, εάν αντιμετωπίσετεSIGSEGVή σφάλμα κατάτμησης κατά τη μεταγλώττιση μεγάλων συναρτήσεων με εμφωλευμένες λειτουργίες boolean, βεβαιωθείτε ότι αυξήσατε το όριο μεγέθους της στοίβας σας:ulimit -s unlimited.