การเปิดตัว Nuitka 2.0 คอมไพเลอร์สำหรับภาษา Python

มีการเปิดตัวโครงการ Nuitka 2.0 โดยพัฒนาคอมไพเลอร์สำหรับแปลสคริปต์ Python เป็นตัวแทน C ซึ่งสามารถรวบรวมเป็นไฟล์ปฏิบัติการได้โดยใช้ libpython เพื่อความเข้ากันได้สูงสุดกับ CPython (ใช้เครื่องมือ CPython ดั้งเดิมสำหรับจัดการวัตถุ) ให้ความเข้ากันได้อย่างสมบูรณ์กับ Python 2.6, 2.7, 3.3 - 3.11 รุ่นล่าสุด เมื่อเทียบกับ CPython สคริปต์ที่คอมไพล์แสดงการปรับปรุงประสิทธิภาพ 335% ในการทดสอบ pystone รหัสโครงการแจกจ่ายภายใต้ใบอนุญาต Apache

ท่ามกลางการเปลี่ยนแปลงในเวอร์ชันใหม่:

  • เพิ่มความสามารถในการใช้ตัวแปรในการกำหนดค่าแพ็คเกจทำให้คุณสามารถสืบค้นค่าจากแพ็คเกจที่ติดตั้ง ณ เวลารวบรวมและใช้ค่าเหล่านั้นเพื่อกำหนดแบ็กเอนด์ การสนับสนุนตัวแปรในการกำหนดค่าช่วยให้คุณสามารถแก้ไขงานต่างๆ ด้วยวิธีมาตรฐานที่ก่อนหน้านี้จำเป็นต้องมีการเชื่อมต่อปลั๊กอิน
  • เพิ่มการรองรับพารามิเตอร์ที่ผู้ใช้กำหนดเพื่อให้ส่งผลต่อการกำหนดค่าของแต่ละแพ็คเกจ คุณสามารถอ่านพารามิเตอร์ได้โดยใช้ฟังก์ชัน get_parameter ใหม่ และใช้เพื่อเลือกลักษณะการทำงานของโมดูล (เช่น คุณสามารถตั้งค่าพารามิเตอร์ให้ปิดใช้งาน Numba JIT หรือ Torch JIT)
  • เพิ่มตัวเลือก "--include-onefile-external-data" เพื่อระบุเทมเพลตไฟล์ข้อมูลที่กำหนดไว้ในการกำหนดค่า แต่ต้องจัดหาแยกต่างหากจากไฟล์ปฏิบัติการเมื่อสร้างในโหมด onefile
  • เพิ่มตัวเลือก “--cf-protection” เพื่อตั้งค่าโหมดการป้องกัน CFI (Control Flow Integrity) ใน GCC ซึ่งจะบล็อกการละเมิดลำดับการดำเนินการปกติ (โฟลว์ควบคุม)
  • สำหรับไฟล์ปลั๊กอิน yaml ได้มีการนำความสามารถในการสร้างเช็คซัมสำหรับการตรวจสอบความสมบูรณ์มาใช้ ซึ่งในอนาคตจะมีแผนที่จะใช้เพื่อจัดระเบียบการตรวจสอบรันไทม์
  • การดำเนินการอนุญาตให้ระบุหลายตัวเลือกได้โดยคั่นด้วยบรรทัด (บรรทัดใหม่จะใช้เป็นตัวคั่น) ตัวอย่างเช่น: include-data-dir: | ก=bc=ง
  • มีการนำการวิเคราะห์ประเภทลูปไปใช้ ซึ่งจะใช้ในอนาคตเพื่อปรับใช้การเพิ่มประสิทธิภาพแบบเลือก
  • เพิ่มการเพิ่มประสิทธิภาพเพื่อเร่งการทำงานกับตัวแปรที่ไม่แชร์และตัวแปร Escape
  • ความสามารถของปลั๊กอินป้องกันการขยายตัวได้รับการขยาย ซึ่งตอนนี้สามารถใช้เพื่อลดจำนวนแพ็กเก็ตเมื่อใช้ไลบรารี streamlit, torch, knetworkx, distribution, skimage, bitsandbytes, tf_keras, pip, networkx และ pywt (โดยพื้นฐานแล้ว การเชื่อมโยง ไม่รวม pytest, IPython, จมูก, ไทรทัน และ dask)

ที่มา: opennet.ru

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