Το Codon, ένας μεταγλωττιστής Python, δημοσιεύεται

Η startup Exaloop δημοσίευσε τον κώδικα για το έργο Codon, το οποίο αναπτύσσει έναν μεταγλωττιστή για τη γλώσσα Python ικανό να παράγει καθαρό κώδικα μηχανής ως έξοδο, χωρίς να συνδέεται με το χρόνο εκτέλεσης Python. Ο μεταγλωττιστής αναπτύσσεται από τους συγγραφείς της γλώσσας που μοιάζει με Python Seq και τοποθετείται ως συνέχεια της ανάπτυξής του. Το έργο προσφέρει επίσης το δικό του χρόνο εκτέλεσης για εκτελέσιμα αρχεία και μια βιβλιοθήκη συναρτήσεων που αντικαθιστά τις κλήσεις βιβλιοθήκης στην Python. Οι πηγαίοι κώδικες του μεταγλωττιστή, ο χρόνος εκτέλεσης και η τυπική βιβλιοθήκη γράφονται με χρήση C++ (χρησιμοποιώντας εξελίξεις από το LLVM) και Python και διανέμονται υπό την άδεια BSL (Business Source License).

Η άδεια BSL προτάθηκε από τους συνιδρυτές της MySQL ως εναλλακτική λύση στο μοντέλο Open Core. Η ουσία του BSL είναι ότι ο κώδικας προηγμένης λειτουργικότητας είναι αρχικά διαθέσιμος για τροποποίηση, αλλά για κάποιο χρονικό διάστημα μπορεί να χρησιμοποιηθεί δωρεάν μόνο εάν πληρούνται πρόσθετες προϋποθέσεις, οι οποίες απαιτούν την αγορά μιας εμπορικής άδειας για παράκαμψη. Οι πρόσθετοι όροι άδειας χρήσης του έργου Codon απαιτούν τη μεταφορά του κώδικα στην άδεια χρήσης Apache 2.0 μετά από 3 χρόνια (1 Νοεμβρίου 2025). Μέχρι αυτή τη στιγμή, η άδεια επιτρέπει την αντιγραφή, διανομή και τροποποίηση, υπό την προϋπόθεση ότι χρησιμοποιείται για μη εμπορικούς σκοπούς.

Η απόδοση των εκτελέσιμων αρχείων εξόδου παρουσιάζεται ως κοντά σε προγράμματα γραμμένα στη γλώσσα C. Σε σύγκριση με τη χρήση του CPython, το κέρδος απόδοσης κατά τη μεταγλώττιση με χρήση κωδικονίου εκτιμάται ότι είναι 10-100 φορές για εκτέλεση με ένα νήμα. Επιπλέον, σε αντίθεση με την Python, το Codon εφαρμόζει επιπλέον τη δυνατότητα χρήσης multithreading, η οποία επιτρέπει ακόμη μεγαλύτερη αύξηση της απόδοσης. Το Codon σάς επιτρέπει επίσης να κάνετε μεταγλώττιση σε επίπεδο μεμονωμένης συνάρτησης για να χρησιμοποιήσετε τη μεταγλωττισμένη αναπαράσταση σε υπάρχοντα έργα Python.

Το Codon κατασκευάζεται χρησιμοποιώντας μια αρθρωτή αρχιτεκτονική που σας επιτρέπει να αυξήσετε τη λειτουργικότητα μέσω προσθηκών, με τα οποία μπορείτε να προσθέσετε νέες βιβλιοθήκες, να εφαρμόσετε βελτιστοποιήσεις στον μεταγλωττιστή και ακόμη και να παρέχετε υποστήριξη για πρόσθετη σύνταξη. Για παράδειγμα, πολλά πρόσθετα αναπτύσσονται παράλληλα για χρήση στη βιοπληροφορική και στα οικονομικά μαθηματικά. Ο συλλέκτης σκουπιδιών Boehm χρησιμοποιείται για τη διαχείριση της μνήμης.

Ο μεταγλωττιστής υποστηρίζει την περισσότερη σύνταξη της Python, αλλά η μεταγλώττιση σε κώδικα μηχανής επιβάλλει έναν αριθμό περιορισμών που εμποδίζουν τη χρήση του κωδικονίου ως διαφανούς αντικατάστασης του CPython. Για παράδειγμα, το Codon χρησιμοποιεί τον τύπο int 64-bit για ακέραιους αριθμούς, ενώ το CPython χρησιμοποιεί απεριόριστο μέγεθος για ακέραιους αριθμούς. Οι μεγάλες βάσεις κωδικών ενδέχεται να απαιτούν αλλαγές κώδικα για να επιτευχθεί συμβατότητα κωδικονίων. Κατά κανόνα, οι ασυμβατότητες προκαλούνται από την έλλειψη υλοποίησης για το Codon ορισμένων λειτουργικών μονάδων Python και την αδυναμία χρήσης ορισμένων δυναμικών χαρακτηριστικών της γλώσσας. Για κάθε τέτοια ασυμβατότητα, ο μεταγλωττιστής εκδίδει ένα λεπτομερές διαγνωστικό μήνυμα με πληροφορίες σχετικά με τον τρόπο παράκαμψης του προβλήματος.

Το Codon, ένας μεταγλωττιστής Python, δημοσιεύεται


Πηγή: opennet.ru

Προσθέστε ένα σχόλιο