คอมไพเลอร์ภาษา D รุ่น 2.100

นักพัฒนาภาษาการเขียนโปรแกรม D นำเสนอการเปิดตัวคอมไพเลอร์อ้างอิงหลัก DMD 2.100.0 ซึ่งรองรับระบบ GNU/Linux, Windows, macOS และ FreeBSD รหัสคอมไพเลอร์เผยแพร่ภายใต้ BSL (Boost Software License) ฟรี

D ถูกพิมพ์แบบคงที่ มีไวยากรณ์คล้ายกับ C/C++ และให้ประสิทธิภาพของภาษาที่คอมไพล์ ในขณะที่ยืมประสิทธิภาพการพัฒนาบางส่วนและประโยชน์ด้านความปลอดภัยของภาษาไดนามิก ตัวอย่างเช่น ให้การสนับสนุนอาร์เรย์แบบเชื่อมโยง การอนุมานประเภท การจัดการหน่วยความจำอัตโนมัติ การเขียนโปรแกรมแบบขนาน ตัวรวบรวมขยะเสริม ระบบเทมเพลต ส่วนประกอบการเขียนโปรแกรมเมตา ความสามารถในการใช้ไลบรารี C และไลบรารี C++ และ Objective-C บางตัว

ท่ามกลางการเปลี่ยนแปลงในรุ่นใหม่:

  • การโอเวอร์โหลดแบบเก่าที่ใช้ในสาขา D1 ถูกยกเลิกแล้ว แทนที่ opNeg, opAdd_r, opAddAssign ฯลฯ มา opUnary, opBinary, opBinaryRight และ opOpAssign การโอเวอร์โหลดตัวดำเนินการแบบเก่าเลิกใช้แล้วในปี 2019 และจะเกิดข้อผิดพลาดในรุ่น 2.100
  • คำหลักลบเลิกใช้งานแล้วตั้งแต่ปี 2018 แทนที่จะลบ คุณควรใช้ฟังก์ชัน destroy หรือ core.memory.__delete
  • มีการนำแอตทริบิวต์ @mustuse ใหม่มาใช้ซึ่งสามารถนำไปใช้กับโครงสร้างและประเภทสหภาพเป็นวิธีทางเลือกในการจัดการข้อผิดพลาดเมื่อโค้ดไม่สามารถจัดการข้อยกเว้นได้ (เช่นในบล็อก @nogc) หากไม่ได้ใช้นิพจน์ที่ทำเครื่องหมายด้วยแอตทริบิวต์ @mustuse ในโค้ด คอมไพเลอร์จะสร้างข้อผิดพลาด
  • สำหรับอาร์เรย์แบบคงที่ การใช้คุณสมบัติ ".tupleof" ได้รับอนุญาตให้รับลำดับของค่า (lvalue) ของแต่ละองค์ประกอบของอาร์เรย์ เป็นโมฆะ foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; ฟู(ia.tupleof); // อะนาล็อก foo(1, 2, 3); ลอย[3] ฟ้า; fa.tupleof = ia.tupleof; // การมอบหมายอย่างง่าย fa = ia ส่งผลให้เกิดข้อผิดพลาดในการยืนยัน (fa == [1F, 2F, 3F]);

ที่มา: opennet.ru

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