This page has not yet been translated for this release. The English version is authoritative. View English version →

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.