Προγραμματισμός

Το PyOxidizer χρησιμοποιεί το Rust για να κάνει Python εκτελέσιμα

Ένα νέο έργο, γραμμένο στο Rust, στοχεύει στο να διευκολύνει τη συσκευασία και τη διανομή μιας εφαρμογής Python ως αυτόνομο δυαδικό εκτελέσιμο - κάτι που υπήρξε από καιρό ένα πόνο για τους προγραμματιστές της Python.

Το PyOxidizer, σύμφωνα με το GitHub README, είναι «μια συλλογή από κιβώτια Rust που διευκολύνουν την κατασκευή βιβλιοθηκών και δυαδικών αρχείων που περιέχουν διερμηνείς Python». Με το PyOxidizer, ισχυρίζονται οι προγραμματιστές του, είναι δυνατό να δημιουργηθεί ένα εκτελέσιμο για μια εφαρμογή Python που ενσωματώνει έναν διερμηνέα Python, χωρίς άλλες εξαρτήσεις χρόνου εκτέλεσης.

Το PyOxidizer απαιτεί εγκατάσταση Rust 1.31 ή καλύτερη και συσκευάζει μόνο εφαρμογές γραμμένες με Python 3.7. Για να χρησιμοποιήσετε το PyOxidizer, ο προγραμματιστής δημιουργεί ένα αρχείο TOML που περιγράφει τον τρόπο ενσωμάτωσης μιας δεδομένης εφαρμογής Python, στη συνέχεια δημιουργεί και εκτελεί το PyOxidizer με μια μεταβλητή περιβάλλοντος που δείχνει το συγκεκριμένο αρχείο TOML.

Το PyOxidizer ξεχωρίζει από άλλες λύσεις συσκευασίας χρησιμοποιώντας μια προσαρμοσμένη έκδοση του διερμηνέα Python που έχει σχεδιαστεί για να συνδέεται στατικά και να ενσωματώνεται σε άλλο πρόγραμμα. Άλλες λύσεις, όπως το PyInstaller, αναδιανέμουν το υπάρχον απόθεμα CPython .DLL - βολικό και συμβατό, αλλά όχι πολύ ευέλικτο. Το PyOxidizer συσκευάζει επίσης τον bytecode για την εφαρμογή Python στην εκτελέσιμη εικόνα και το φορτώνει απευθείας από τη μνήμη (γρήγορη) και όχι από το σύστημα αρχείων (πιο αργό).

Όπως και το PyInstaller, το PyOxidizer δεν εκτελεί βελτιστοποιήσεις στον κώδικα Python. Ένα άλλο έργο, το Nuitka, όχι μόνο μεταγλωττίζει τις εφαρμογές Python σε αυτόνομα εκτελέσιμα, αλλά προσπαθεί επίσης να εφαρμόσει βελτιστοποιήσεις απόδοσης στον μεταγλωττισμένο κώδικα. Ωστόσο, το Nuitka εξακολουθεί να θεωρείται έργο σε επίπεδο beta και πολλές από τις προβλεπόμενες βελτιώσεις απόδοσης δεν είναι ακόμη διαθέσιμες.

Το ίδιο το PyOxidizer είναι ένα έργο πολύ πρώιμου σταδίου. Μπορεί να δημιουργήσει μόνο δυαδικά αρχεία Linux επειδή ένα από τα ανάντη έργα στα οποία εξαρτάται, η ενσωματωμένη έκδοση του CPython, είναι προς το παρόν διαθέσιμο μόνο σε εκδόσεις Linux.