รีลีส Nim 0.20 ถือได้ว่าเป็นผู้สมัครสำหรับรีลีส 1.0 ที่เสถียรรุ่นแรก โดยได้รวมเอาการเปลี่ยนแปลงที่ทำลายความสามารถในการทำงานร่วมกันหลายประการ ซึ่งจำเป็นในการสร้างสาขาที่เสถียรตัวแรกที่จะยอมรับสถานะของภาษา เวอร์ชัน 1.0 ได้รับการขนานนามว่าเป็นเวอร์ชันสนับสนุนระยะยาวที่เสถียร ซึ่งจะรับประกันว่าจะรักษาความเข้ากันได้แบบย้อนหลังในส่วนที่มีความเสถียรของภาษา คอมไพลเลอร์จะมีโหมดทดลองแยกกันซึ่งจะมีการพัฒนาคุณสมบัติใหม่ที่อาจทำลายความเข้ากันได้แบบย้อนหลัง
การเปลี่ยนแปลงที่เสนอใน Nim 0.20 ได้แก่:
- ตอนนี้ "ไม่ใช่" จะเป็นตัวดำเนินการเอกภาคเสมอ เช่น ขณะนี้ไม่อนุญาตให้ใช้นิพจน์เช่น "assert(not a)" และอนุญาตให้ใช้เฉพาะ "assert not a" เท่านั้น
- เปิดใช้งานการตรวจสอบอย่างเข้มงวดสำหรับการแปลงจำนวนเต็มและจำนวนจริงในขั้นตอนการคอมไพล์ เช่น นิพจน์ "const b = uint16(-1)" จะส่งผลให้เกิดข้อผิดพลาด เนื่องจาก -1 ไม่สามารถแปลงเป็นประเภทจำนวนเต็มที่ไม่ได้ลงนามได้
- มีการจัดเตรียมการคลายสิ่งอันดับสำหรับค่าคงที่และตัวแปรลูป
ตัวอย่างเช่น ตอนนี้คุณสามารถใช้การกำหนดเช่น 'const (d, e) = (7, “eight”)' และ “for (x, y) in f”; - ให้ค่าเริ่มต้นของแฮชและตาราง ตัวอย่างเช่น หลังจากประกาศ “var s: HashSet[int]” คุณสามารถดำเนินการ “s.incl(5)” ได้ทันที ซึ่งก่อนหน้านี้ทำให้เกิดข้อผิดพลาด
- ปรับปรุงข้อมูลข้อผิดพลาดสำหรับปัญหาที่เกี่ยวข้องกับตัวดำเนินการ "กรณี" และดัชนีอาร์เรย์อยู่นอกขอบเขต
- ห้ามเปลี่ยนความยาวของตารางในระหว่างการวนซ้ำ
ที่มา: opennet.ru