Κυκλοφορία του Nuitka 2.0, ενός μεταγλωττιστή για τη γλώσσα Python

Μια έκδοση του έργου Nuitka 2.0 είναι διαθέσιμη, αναπτύσσοντας έναν μεταγλωττιστή για τη μετάφραση σεναρίων Python σε αναπαράσταση C, η οποία στη συνέχεια μπορεί να μεταγλωττιστεί σε ένα εκτελέσιμο αρχείο χρησιμοποιώντας το libpython για μέγιστη συμβατότητα με το CPython (χρησιμοποιώντας εγγενή εργαλεία CPython για χειρισμό αντικειμένων). Παρέχεται πλήρης συμβατότητα με τις τρέχουσες εκδόσεις Python 2.6, 2.7, 3.3 - 3.11. Σε σύγκριση με το CPython, τα μεταγλωττισμένα σενάρια δείχνουν βελτίωση απόδοσης 335% στις δοκιμές pystone. Ο κώδικας του έργου διανέμεται με την άδεια Apache.

Μεταξύ των αλλαγών στη νέα έκδοση:

  • Προστέθηκε η δυνατότητα χρήσης μεταβλητών στη διαμόρφωση πακέτων, επιτρέποντάς σας να αναζητάτε τιμές από εγκατεστημένα πακέτα κατά τη στιγμή της μεταγλώττισης και να χρησιμοποιείτε αυτές τις τιμές για να ορίσετε το backend. Η υποστήριξη για μεταβλητές στη διαμόρφωση σάς επιτρέπει να επιλύετε πολλές εργασίες με τυπικούς τρόπους που απαιτούσαν προηγουμένως πρόσθετα σύνδεσης.
  • Προστέθηκε υποστήριξη για παραμέτρους που καθορίζονται από το χρήστη για να επηρεάσουν τη διαμόρφωση κάθε πακέτου. Οι παράμετροι μπορούν να διαβαστούν χρησιμοποιώντας τη νέα συνάρτηση get_parameter και να χρησιμοποιηθούν για την επιλογή της συμπεριφοράς των μονάδων (για παράδειγμα, μπορείτε να ορίσετε μια παράμετρο για να απενεργοποιήσετε το Numba JIT ή το Torch JIT).
  • Προστέθηκε η επιλογή "--include-onefile-external-data" για τον καθορισμό προτύπων αρχείων δεδομένων που ορίζονται στη διαμόρφωση αλλά πρέπει να παρέχονται ξεχωριστά από το εκτελέσιμο αρχείο κατά τη δημιουργία σε λειτουργία ενός αρχείου.
  • Προστέθηκε η επιλογή «--cf-protection» για να ορίσετε τη λειτουργία προστασίας CFI (Control Flow Integrity) στο GCC, η οποία αποκλείει τις παραβιάσεις της κανονικής εντολής εκτέλεσης (ροή ελέγχου).
  • Για τα αρχεία plugin yaml, έχει εφαρμοστεί η δυνατότητα δημιουργίας αθροισμάτων ελέγχου για ελέγχους ακεραιότητας, τα οποία στο μέλλον σκοπεύουν να χρησιμοποιήσουν για την οργάνωση της επαλήθευσης χρόνου εκτέλεσης.
  • Το Actions επιτρέπει τον καθορισμό πολλαπλών επιλογών, διαχωρισμένων με γραμμές (μια νέα γραμμή χρησιμοποιείται ως οριοθέτης). Για παράδειγμα: include-data-dir: | a=bc=d
  • Έχει υλοποιηθεί μια ανάλυση τύπων βρόχων, η οποία θα χρησιμοποιηθεί στο μέλλον για την υλοποίηση επιλεκτικών βελτιστοποιήσεων.
  • Προστέθηκαν βελτιστοποιήσεις για την επιτάχυνση της εργασίας με μη κοινόχρηστες μεταβλητές και μεταβλητές διαφυγής.
  • Οι δυνατότητες του plugin anti-bloat έχουν επεκταθεί, το οποίο μπορεί τώρα να χρησιμοποιηθεί για τη μείωση του αριθμού των πακέτων κατά τη χρήση των βιβλιοθηκών streamlit, torch, knetworkx, distributed, skimage, bitsandbytes, tf_keras, pip, networkx και pywt (βασικά, binding σε pytest, IPython, nose, triton εξαιρείται και dask).

Πηγή: opennet.ru

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