Compiler Internals
A guided map of the `souc` compiler: frontend, type checking, IRs, and backends.
Compiler Internals
Τα docs του compiler παραμένουν χρήσιμα, αλλά παρουσιάζονται πλέον ως χάρτης implementation δεμένος με το artifact που μπορούμε πράγματι να επαληθεύσουμε.
Επαληθευμένο σήμερα
- Τα docs του compiler διαβάζονται καλύτερα ως χάρτης της implementation και της ενεργής σχεδιαστικής δουλειάς.
- Το checked-in δημόσιο artifact αναφέρει ότι το Cranelift JIT είναι ενεργό.
- Αντιμετωπίστε τα 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.