3

หลังจากหนึ่งปีของการพัฒนา การตีพิมพ์ การเปิดตัวสาขาใหม่ของภาษาการเขียนโปรแกรม 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.

สำคัญ การเปลี่ยนแปลง:

  • เพิ่ม ความเป็นไปได้เชิงทดลองของการใช้พารามิเตอร์ที่ระบุชื่อใน ลายเซ็น ฟังก์ชันที่กำหนดรายการตัวแปรที่จะส่งผ่านไปยังฟังก์ชัน ไม่ใช่ในส่วนเนื้อหาของฟังก์ชัน แต่กำหนดในระหว่างการประกาศฟังก์ชัน คุณสมบัติใหม่นี้ช่วยให้สามารถส่งผ่านพารามิเตอร์ได้โดยไม่จำเป็นต้องเรียงลำดับอย่างเคร่งครัด แต่สามารถส่งผ่านในลำดับใดก็ได้ โดยใช้คู่คีย์/ค่า และไวยากรณ์ที่คล้ายกับการกำหนดค่าให้กับองค์ประกอบในแฮช:
    • ไวยากรณ์เดิม: 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 "The $key array contains: @items"; } # ก่อนเวอร์ชัน 5.44 ต้องใช้การ dereferencing: foreach my ( $key, $var ) ( %hash ) { say "The $key array contains: @$var"; } } # หากไม่มีคุณสมบัติ refaliasing และ 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บีเอสดี macOSในระบบอื่นๆ เอนโทรปีจะได้รับจากการอ่านข้อมูลจากอุปกรณ์ /dev/urandom หรือใช้ค่าแฮชของเวลา รหัสกระบวนการ และค่าตัวชี้
  • เพิ่มการรองรับข้อมูลจำเพาะ Unicode 17.0.
  • มีการรับรองการปฏิบัติตามกฎ Unicode อย่างเคร่งครัดสำหรับชื่อตัวระบุและกลุ่มนิพจน์ปกติ โดยมีอักขระ Unicode ประมาณ 160 ตัวที่เคยครอบคลุมโดยคลาส w ซึ่งขณะนี้ถูกห้ามใช้แล้ว ตัวอย่างเช่น คลาส w ซึ่งครอบคลุมตัวอักษร ตัวเลข และอักขระขีดล่างทั้งหมด ขณะนี้ไม่รวมตัวอักษรละตินในวงกลม ซึ่งมีลักษณะคล้ายตัวอักษรจริงแต่ไม่ใช่ การเปลี่ยนแปลงพฤติกรรมนี้มีผลเฉพาะกับโปรแกรมที่ใช้โหมด use utf8 เท่านั้น
  • แก้ไขช่องโหว่ที่เกิดจากบัฟเฟอร์โอเวอร์โฟลว์ในฟังก์ชัน Perl_study_chunk (CVE-2026-8376ปรากฏในแอสเซมบลี 32 บิต) และ S_measure_struct (CVE-2026-57432) รวมถึงการโอเวอร์โฟลว์ของตัวนับ 16 บิตในเอ็นจิ้น Regex (CVE-2026-13221ซึ่งอาจทำให้การใช้ regular expression ล้มเหลว
  • การกระโดดไปยังตำแหน่งต่างๆ ภายในลูปและโครงสร้างบล็อกโดยใช้ตัวดำเนินการ goto นั้นเป็นสิ่งต้องห้าม คุณสมบัตินี้ถูกยกเลิกไปแล้วตั้งแต่ปี 2010
  • มีการปรับปรุงประสิทธิภาพเพื่อเพิ่มความเร็วในการบวก ลบ และคูณจำนวนเต็ม การประมวลผลลายเซ็นฟังก์ชัน และการสร้างแฮชจากรายการคีย์/ค่าด้วยคีย์สตริงที่ทราบในระหว่างการคอมไพล์

ที่มา: linux.org.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster