לאחר שנה של פיתוח פורסם שחרור של ענף יציב חדש של שפת התכנות 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 בעת אחזור ערכים מרובים באיטרציה של לולאה אחת. לדוגמה, ניתן ליצור כינוי עבור אלמנט hash עם מערך בעת איטרציה על המפתחות והערכים של ה-hash: 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.
- הקפדה קפדנית על כללי יוניקוד הובטחה עבור שמות מזהים וקבוצות ביטויים רגולריים, כאשר כ-160 תווי יוניקוד שכוסו בעבר על ידי המחלקה w אסורים כעת. לדוגמה, המחלקה w, המכסה את כל האותיות, הספרות ואת תו הקו התחתון, אינה כוללת כעת אותיות לטיניות מוקפות בעיגול, הדומות לאותיות אמיתיות אך אינן. שינוי התנהגות זה משפיע רק על תוכניות המשתמשות במצב utf8.
- תוקנו פגיעויות שנגרמו עקב גלישות מאגר בפונקציות Perl_study_chunk (CVE-2026-8376, מופיע באסמבלים של 32 סיביות) ו-S_measure_struct (CVE-2026-57432), כמו גם גלישה של מונה ה-16 סיביות במנוע Regex (CVE-2026-13221), מה שעלול לגרום לכשל של הביטוי הרגולרי.
- קפיצה למיקומים בתוך לולאות ובניית בלוקים באמצעות האופרטור goto אסורה. תכונה זו הוצאה משימוש בשנת 2010.
- בוצעו אופטימיזציות ביצועים כדי להאיץ חיבור, חיסור וכפל של מספרים שלמים, עיבוד חתימות פונקציה, ואכלוס גיבוב (hashes) מרשימות מפתחות/ערכים עם מפתחות מחרוזות הידועים בזמן הקומפילציה.
מקור: linux.org.ru
