Κυκλοφορία της γλώσσας προγραμματισμού Perl 5.30.0

Μετά από 11 μήνες ανάπτυξης πραγματοποιήθηκε κυκλοφορία ενός νέου σταθερού κλάδου της γλώσσας προγραμματισμού Perl - 5.30. Κατά την προετοιμασία της νέας έκδοσης, άλλαξαν περίπου 620 χιλιάδες γραμμές κώδικα, οι αλλαγές επηρέασαν 1300 αρχεία και 58 προγραμματιστές συμμετείχαν στην ανάπτυξη.

Το Branch 5.30 κυκλοφόρησε σύμφωνα με το σταθερό πρόγραμμα ανάπτυξης που εγκρίθηκε πριν από έξι χρόνια, το οποίο συνεπάγεται την κυκλοφορία νέων σταθερών υποκαταστημάτων μία φορά το χρόνο και διορθωτικές εκδόσεις κάθε τρεις μήνες. Σε περίπου ένα μήνα, σχεδιάζεται να κυκλοφορήσει η πρώτη διορθωτική έκδοση του Perl 5.30.1, η οποία θα διορθώσει τα πιο σημαντικά σφάλματα που εντοπίστηκαν κατά την εφαρμογή του Perl 5.30.0. Μαζί με την κυκλοφορία του Perl 5.30, διακόπηκε η υποστήριξη για τον κλάδο 5.26, για τον οποίο ενδέχεται να κυκλοφορήσουν ενημερώσεις στο μέλλον μόνο εάν εντοπιστούν κρίσιμα προβλήματα ασφαλείας. Η διαδικασία ανάπτυξης του πειραματικού κλάδου 5.31 έχει επίσης ξεκινήσει, βάσει του οποίου θα δημιουργηθεί μια σταθερή έκδοση του Perl 2020 τον Μάιο του 5.32.

Κλειδί αλλαγές:

  • Η πειραματική υποστήριξη για λειτουργίες "" προστέθηκε στις κανονικές εκφράσεις.(?<!πρότυπο)"Και"(?‹=μοτίβο)» για περιορισμένη πρόσβαση σε προηγούμενα επεξεργασμένα επώνυμα πρότυπα. Ο ορισμός του προτύπου πρέπει να είναι εντός 255 χαρακτήρων από το σημείο αναφοράς.
  • Η μέγιστη τιμή του προσδιοριστή μεγέθους (“n”) στα μπλοκ κανονικής έκφρασης “{m,n}” έχει αυξηθεί σε 65534.
  • Προστέθηκε περιορισμένο υποστήριξη μάσκες για την επισήμανση ορισμένων κατηγοριών χαρακτήρων σε κανονικές εκφράσεις, καλύπτοντας διαφορετικά σύνολα Unicode. Για παράδειγμα, η έκφραση «qr! \p{nv= /(?x) \A [0-5] \z / }!” σας επιτρέπει να επιλέξετε όλους τους χαρακτήρες Unicode που καθορίζουν τους αριθμούς από το 0 έως το 5, συμπεριλαμβανομένων των ταϊλανδικών ή της Μπενγκάλι ορθογραφίας αριθμών.
  • Προστέθηκε υποστήριξη για επώνυμους χαρακτήρες σε κανονικές εκφράσεις
    εσωτερικά μοτίβα που οριοθετούνται από μεμονωμένα εισαγωγικά (qr'\N{name}').

  • Η υποστήριξη προδιαγραφών Unicode ενημερώθηκε στην έκδοση 12.1. Η σημαία πειραματικής ανάπτυξης έχει αφαιρεθεί από τις κλήσεις sv_utf8_downgrade και sv_utf8_decode, που χρησιμοποιείται στην ανάπτυξη επεκτάσεων στη γλώσσα C.
  • Προστέθηκε η δυνατότητα δημιουργίας perl με την υλοποίηση λειτουργιών με τοπική ρύθμιση που υποστηρίζει λειτουργία πολλαπλών νημάτων (-Accflags=’-DUSE_THREAD_SAFE_LOCALE’). Προηγουμένως, μια τέτοια υλοποίηση χρησιμοποιήθηκε μόνο κατά την κατασκευή μιας έκδοσης Perl πολλαπλών νημάτων, αλλά τώρα μπορεί να ενεργοποιηθεί για οποιαδήποτε έκδοση.
  • Ο συνδυασμός των σημαιών "-Dv" (βελτιωμένη έξοδος εντοπισμού σφαλμάτων) και "-Dr" (διόρθωση σφαλμάτων regex) προκαλεί τώρα την ενεργοποίηση όλων των πιθανών τρόπων εντοπισμού σφαλμάτων κανονικής έκφρασης.
  • Οι δυνατότητες που είχαν καταργηθεί προηγουμένως έχουν καταργηθεί:
    • Τώρα διαθέσιμο ως διαχωριστικό γραμμών και χαρακτήρες μπαλαντέρ επιτρέπεται χρησιμοποιείτε μόνο γραφήματα (Δεν επιτρέπονται σύνθετοι χαρακτήρες Unicode).
    • Διακόπηκε υποστήριξη για ορισμένες από καιρό παρωχημένες μορφές χρήσης του χαρακτήρα "{" σε κανονικές εκφράσεις χωρίς να διαφεύγετε από αυτόν.
    • Απαγορεύεται χρησιμοποιώντας τις συναρτήσεις sysread(), syswrite(), recv() και send() με χειριστές ":utf8".
    • Απαγορεύεται η χρήση ορισμών του "my" σε εγγενώς ψευδείς δηλώσεις υπό όρους (για παράδειγμα, "my $x αν είναι 0").
    • Η υποστήριξη για ειδικές μεταβλητές "$*" και "$#" έχει καταργηθεί.
      Η υποστήριξη για σιωπηρή κλήση της συνάρτησης dump() έχει διακοπεί (θα πρέπει τώρα να καθορίσετε ρητά CORE::dump()).

    • Η συνάρτηση File::Glob::glob έχει αφαιρεθεί (θα πρέπει να χρησιμοποιήσετε File::Glob::bsd_glob).
    • Προστέθηκε προστασία στο pack() από την επιστροφή εσφαλμένων ακολουθιών Unicode.
    • Το τέλος της υποστήριξης για τη χρήση μακροεντολών που εκτελούν λειτουργίες με UTF-8 σε κώδικα XS (μπλοκ C) έχει αναβληθεί για την επόμενη έκδοση.
  • Βελτιστοποιήσεις απόδοσης:
    • Οι λειτουργίες μετάφρασης από το UTF-8 στη διάταξη χαρακτήρων έχουν επιταχυνθεί (σημείο κωδικού), για παράδειγμα, η εκτέλεση της λειτουργίας ord(“\x7fff”) απαιτεί τώρα 12% λιγότερες οδηγίες. Η απόδοση των λειτουργιών που ελέγχουν την ορθότητα των ακολουθιών χαρακτήρων UTF-8 έχει επίσης αυξηθεί.
    • Οι αναδρομικές κλήσεις στη συνάρτηση finalize_op() έχουν εξαλειφθεί.
    • Πραγματοποιήθηκαν μικρές βελτιστοποιήσεις στον κώδικα για τη σύμπτυξη πανομοιότυπων χαρακτήρων και τον καθορισμό κατηγοριών χαρακτήρων σε κανονικές εκφράσεις.
    • Βελτιστοποιημένο μετατροπή ορισμών υπογεγραμμένων τύπων σε ανυπόγραφους (IV σε UV).
    • Ο αλγόριθμος για τη μετατροπή ακεραίων σε μια συμβολοσειρά έχει επιταχυνθεί με την επεξεργασία δύο ψηφίων ταυτόχρονα αντί για ένα.
    • Έχουν γίνει βελτιώσεις έτοιμος με βάση την ανάλυση της LGTM.
    • Βελτιστοποιημένος κώδικας στα αρχεία regcomp.c, regcomp.h και regexec.c.
    • Σε κανονικές εκφράσεις, η επεξεργασία μοτίβων όπως "qr/[^a]/" με χαρακτήρες ASCII έχει επιταχυνθεί σημαντικά.
  • Η υποστήριξη για την πλατφόρμα Minix3 έχει αποκατασταθεί. Είναι δυνατή η δημιουργία χρησιμοποιώντας τον μεταγλωττιστή Microsoft Visual Studio 2019 (Visual C++ 14.2).
  • Ενημερωμένες εκδόσεις των μονάδων που περιλαμβάνονται στο βασικό πακέτο. Οι ενότητες έχουν αφαιρεθεί από την κύρια σύνθεση Β::Εντοπισμός σφαλμάτων и Τοπική τοποθεσία::Κωδικοί.

Πηγή: opennet.ru

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