Μετά από ένα χρόνο ανάπτυξης δημοσιεύθηκε κυκλοφορία ενός νέου σταθερού κλάδου της γλώσσας προγραμματισμού Perl - 5.44. Στο προετοιμασία Η νέα έκδοση άλλαξε περίπου 270 γραμμές κώδικα (εξαιρουμένης της τεκμηρίωσης και του αυτόματα δημιουργημένου κώδικα - 110), οι αλλαγές επηρέασαν 860 αρχεία και 71 προγραμματιστές συμμετείχαν στην ανάπτυξη.
Ο κλάδος 5.44 κυκλοφόρησε σύμφωνα με το σταθερό χρονοδιάγραμμα ανάπτυξης που καθορίστηκε πριν από δεκατρία χρόνια, το οποίο προβλέπει την κυκλοφορία νέων σταθερών κλάδων μία φορά το χρόνο και δευτερευουσών εκδόσεων κάθε τρεις μήνες. Η πρώτη δευτερεύουσα έκδοση, η Perl 5.44.1, έχει προγραμματιστεί να κυκλοφορήσει σε περίπου ένα μήνα, διορθώνοντας τα πιο σημαντικά σφάλματα που ανακαλύφθηκαν κατά την υλοποίηση της Perl 5.44.0. Με την κυκλοφορία της Perl 5.44, η υποστήριξη για τον κλάδο 5.40 έχει τερματιστεί. Ενημερώσεις για αυτόν ενδέχεται να κυκλοφορήσουν στο μέλλον μόνο εάν εντοπιστούν κρίσιμα ζητήματα ασφαλείας. Εχει ξεκινήσει η διαδικασία ανάπτυξης του πειραματικού κλάδου 5.45, ο οποίος θα αποτελέσει τη βάση για την σταθερή κυκλοφορία της Perl 5.46 το πρώτο εξάμηνο του 2027, εκτός εάν ληφθεί απόφαση πηγαίνετε στην αρίθμηση 7.x.
Κλειδί αλλαγές:
- Προστέθηκε πειραματική δυνατότητα χρήσης ονομαστικών παραμέτρων σε υπογραφές Συναρτήσεις που ορίζουν τη λίστα των μεταβλητών που διαβιβάζονται στη συνάρτηση όχι στο σώμα της συνάρτησης, αλλά κατά τη δήλωσή της. Αυτή η νέα δυνατότητα επιτρέπει τη διαβίβαση παραμέτρων όχι με αυστηρή σειρά, αλλά με οποιαδήποτε σειρά, χρησιμοποιώντας ζεύγη κλειδιού/τιμής και μια σύνταξη παρόμοια με την ανάθεση στοιχείων σε hashes:
- παλιά σύνταξη: sub f { my ($x, $y) = @_; …} f(1, 2);
- υπογραφές: sub f ($x, $y) { … } f(1, 2);
- υπογραφές με ονομαστικές παραμέτρους: sub f (:$x, :$y) { … } f(y => 2, x => 1);
- Προστέθηκε πειραματική υποστήριξη για τη χρήση ψευδωνύμων (δείκτες προς δείκτες) σε βρόχους foreach με πολλαπλές μεταβλητές. Αυτή η λειτουργία σάς επιτρέπει να δημιουργήσετε ένα ψευδώνυμο σε έναν βρόχο foreach κατά την ανάκτηση πολλαπλών τιμών σε μία μόνο επανάληψη βρόχου. Για παράδειγμα, μπορείτε να δημιουργήσετε ένα ψευδώνυμο για ένα στοιχείο κατακερματισμού με έναν πίνακα κατά την επανάληψη τόσο των κλειδιών όσο και των τιμών του κατακερματισμού: use v5.44; use feature qw(refaliasing declared_refs); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "Ο πίνακας $key περιέχει: @items"; } # Πριν από την έκδοση 5.44, θα απαιτούνταν η αποαναφορά: foreach my ( $key, $var ) ( %hash ) { say "Ο πίνακας $key περιέχει: @$var"; } # Χωρίς πειραματική αναμετάδοση και χαρακτηριστικά declared_refs: foreach my $key (keys %hash) { say "Ο πίνακας $key περιέχει: @{$hash{$key}}"; }
- Σε κανονικές εκφράσεις εφαρμόστηκε Η πειραματική λειτουργία 'enhanced_xx' επιτρέπει τη χρήση του τροποποιητή /xx με κλάσεις χαρακτήρων σε αγκύλες ([a-zA-Z]) για τον διαχωρισμό τους σε πολλές γραμμές ή την εισαγωγή σχολίων. Για παράδειγμα, η συνθήκη if ($text =~ m/[a-zA-Z]/){ θα μπορούσε να γραφτεί ως: if ($text =~ m/[a-z # πεζά γράμματα A-Z # κεφαλαία γράμματα ]/xx) {
- Η γεννήτρια ψευδοτυχαίων αριθμών χρησιμοποιεί την κλήση συστήματος getentropy() για να υπολογίσει την εντροπία σε συστήματα που την υποστηρίζουν (Linux, BSD, macOS). Σε άλλα συστήματα, η εντροπία λαμβάνεται διαβάζοντας από τη συσκευή /dev/urandom ή χρησιμοποιώντας έναν κατακερματισμό του χρόνου, του αναγνωριστικού διεργασίας και της τιμής του δείκτη.
- Προστέθηκε υποστήριξη προδιαγραφών Unicode 17.0.
- Έχει διασφαλιστεί η αυστηρή τήρηση των κανόνων Unicode για τα ονόματα αναγνωριστικών και τις ομάδες κανονικών εκφράσεων, με περίπου 160 χαρακτήρες Unicode που καλύπτονταν προηγουμένως από την κλάση w να απαγορεύονται πλέον. Για παράδειγμα, η κλάση w, η οποία καλύπτει όλα τα γράμματα, τα ψηφία και τον χαρακτήρα υπογράμμισης, εξαιρεί πλέον τα κυκλωμένα λατινικά γράμματα, τα οποία μοιάζουν με πραγματικά γράμματα αλλά δεν είναι. Αυτή η αλλαγή συμπεριφοράς επηρεάζει μόνο προγράμματα που χρησιμοποιούν τη λειτουργία utf8.
- Διορθώθηκαν ευπάθειες που προκαλούνταν από υπερχείλιση buffer στις συναρτήσεις Perl_study_chunk (CVE-2026-8376, εμφανίζεται σε συναρμολογήσεις 32-bit) και S_measure_struct (CVE-2026-57432), καθώς και υπερχείλιση του μετρητή 16-bit στη μηχανή Regex (CVE-2026-13221), το οποίο μπορεί να προκαλέσει την αποτυχία της κανονικής έκφρασης.
- Απαγορεύεται η μετάβαση σε θέσεις εντός βρόχων και δομών μπλοκ χρησιμοποιώντας τον τελεστή goto. Αυτή η λειτουργία καταργήθηκε το 2010.
- Έγιναν βελτιστοποιήσεις απόδοσης για την επιτάχυνση της πρόσθεσης, αφαίρεσης και πολλαπλασιασμού ακεραίων, της επεξεργασίας υπογραφών συνάρτησης και της συμπλήρωσης κατακερματισμών από λίστες κλειδιών/τιμών με κλειδιά συμβολοσειρών γνωστά κατά τη στιγμή της μεταγλώττισης.
Πηγή: linux.org.ru
