หลังจากพัฒนามาเป็นเวลา 11 เดือน
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 $x if 0”)
- การสนับสนุนตัวแปรพิเศษ “$*” และ “$#” ได้ถูกลบออกแล้ว
การสนับสนุนสำหรับการเรียกฟังก์ชัน dump() โดยนัยถูกยกเลิกแล้ว (ตอนนี้คุณต้องระบุ CORE::dump() อย่างชัดเจน) - ฟังก์ชัน File::Glob::glob ถูกลบออกแล้ว (คุณควรใช้ File::Glob::bsd_glob)
- เพิ่มการป้องกันการแพ็ค () จากการส่งคืนลำดับ 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 ได้รับการเร่งความเร็วอย่างมาก
- การดำเนินการแปลจาก UTF-8 เป็นเค้าโครงอักขระได้รับการเร่งให้เร็วขึ้น (
- การสนับสนุนแพลตฟอร์ม Minix3 ได้รับการกู้คืนแล้ว เป็นไปได้ที่จะสร้างโดยใช้คอมไพเลอร์ Microsoft Visual Studio 2019 (Visual C++ 14.2)
- เวอร์ชันอัปเดตของโมดูลที่รวมอยู่ในแพ็คเกจพื้นฐาน โมดูลถูกลบออกจากองค์ประกอบหลักแล้ว
B::ดีบั๊ก иสถานที่::รหัส .
ที่มา: opennet.ru