πυρέξ είναι μια γλώσσα που έχει σχεδιαστεί για τη δημιουργία Python modules επέκτασης γραμμένο σε C κώδικα.
Είναι σχεδιασμένο για να γεφυρώσει το χάσμα μεταξύ της Νίκαιας, υψηλού επιπέδου, εύκολο στη χρήση κόσμο της Python και το βρώμικο, χαμηλού επιπέδου κόσμο του C.
Για τα βασικά είδη όπως είναι οι αριθμοί και συμβολοσειρές αυτό δεν είναι πάρα πολύ κακό, αλλά τίποτα πιο περίτεχνα και είστε σε πάρει Python αντικείμενα εκτός χρησιμοποιώντας τα / C κλήσεις API Python, η οποία απαιτεί από εσάς να είναι σχολαστική για διατήρηση του αριθμού αναφοράς, ο έλεγχος για τα λάθη σε κάθε βήμα και καθαρισμό σωστά αν κάτι πάει στραβά
Τι είναι καινούργιο σε αυτή την έκδοση:.
- Μερικά χαρακτηριστικά για τη διασύνδεση με κώδικα C ++ έχουν εισαχθεί σε αυτή την έκδοση.
- πυρέξ πλέον θέσεις που αλιεύονται εξαιρέσεις στην κατάσταση νήμα. Αυτό εξασφαλίζει ότι οι εξαιρέσεις και tracebacks δεν διαρρέουν από την πρόταση except που τους έπιασε, εκτός αν κάνετε κάτι για να διατηρηθεί ρητά τους.
- Επί του παρόντος, ένα επιχείρημα σε μια λειτουργία της Python που έχει δηλωθεί ως τύπο επέκτασης θα, από προεπιλογή, να έχουν τη δυνατότητα να λάβει την αξία Καμία? για να αποφευχθεί αυτό, θα πρέπει να γίνει αποδεκτή η δήλωση επιχείρημα με το «όχι Ουδέν».
- Είναι δυνατόν τώρα να καθορίσει και τον τύπο επέκταση με χαρακτηριστικά Python που δεν συμμετέχει στην κυκλική συλλογή των απορριμμάτων, χρησιμοποιώντας μια νέα nogc επιλογή.
- size_t είναι τώρα ένα ενσωματωμένο στο είδος και είναι ο τύπος που επιστρέφεται από τον τελεστή sizeof. Επίσης, τα μεγέθη των size_t και Py_ssize_t τώρα υποτίθεται ότι είναι κάπου μεταξύ μακροπρόθεσμων και πολύ καιρό.
- Λειτουργίες ανάμεσα σε δύο τύπους int του ίδιου βαθμού επιστρέψει τώρα ανυπόγραφο αποτέλεσμα εάν οποιοδήποτε από τα τελούμενα είναι ανυπόγραφο? αν οι τάξεις διαφέρουν, το αποτέλεσμα έχει τον ίδιο τύπο με την ευρύτερη κατάταξη τελεστή. Νομίζω ότι αυτή είναι η καλύτερη προσέγγιση των κανόνων ANSI C που είναι δυνατόν χωρίς να γνωρίζει τα ακριβή μεγέθη των τύπων.
- PyString_InternFromString εκτίθεται τώρα με την επωνυμία cintern παρά οικότροφος, διότι δεν είναι μια πλήρης αντικατάσταση για τη λειτουργία οικότροφος Python (δεν μπορεί να χειριστεί χορδές που περιέχει μηδενικές bytes).
- Ο έλεγχος του μεγέθους που είχε προηγουμένως δημιουργείται κατά την εισαγωγή ενός τύπου επέκταση έχει απενεργοποιηθεί προς το παρόν μέχρι να μπορώ να σκεφτώ κάτι καλύτερο. Ήταν παράγει πάρα πολλά ψευδώς θετικά, για παράδειγμα, από διαφορετικές εκδόσεις του NumPy.
- Η επιλογή της σύμβασης __fastcall καλώντας υποστηρίζεται τώρα. Επίσης, πυρέξ δεν υποθέτει ότι είναι __cdecl η προεπιλεγμένη καλώντας σύμβαση. Για να θεωρηθεί ότι συμβιβάζεται, δύο τύποι λειτουργίας θα πρέπει είτε να δηλώνονται με την ίδια κλήση σύμβασης, ή και τα δύο πρέπει να το αφήσουμε απροσδιόριστη.
- Όπως έχω ήδη απειλητική για κάποιο χρονικό διάστημα, χρησιμοποιώντας __new__ ως το όνομα της μεθόδου αρχικοποίησης ενός τύπου επέκταση έχει γίνει κάποιο λάθος και όχι απλά μια προειδοποίηση. Σε κάποια μελλοντική έκδοση, __new__ θα επανεμφανιστούν με πιο Python-όπως τη σημασιολογία.
Περιορισμοί :
τίποτα δεν βρέθηκε
Τα σχόλια δεν βρέθηκε