การเปิดตัวภาษาโปรแกรม 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 $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 ได้รับการเร่งความเร็วอย่างมาก
  • การสนับสนุนแพลตฟอร์ม Minix3 ได้รับการกู้คืนแล้ว เป็นไปได้ที่จะสร้างโดยใช้คอมไพเลอร์ Microsoft Visual Studio 2019 (Visual C++ 14.2)
  • เวอร์ชันอัปเดตของโมดูลที่รวมอยู่ในแพ็คเกจพื้นฐาน โมดูลถูกลบออกจากองค์ประกอบหลักแล้ว B::ดีบั๊ก и สถานที่::รหัส.

ที่มา: opennet.ru

เพิ่มความคิดเห็น