มีการเผยแพร่ภาษาการเขียนโปรแกรม Crystal 1.6 ซึ่งนักพัฒนาพยายามรวมความสะดวกสบายของการพัฒนาในภาษา Ruby เข้ากับลักษณะการทำงานของแอปพลิเคชันที่สูงของภาษา C ไวยากรณ์ของ Crystal ใกล้เคียงกับ Ruby แต่เข้ากันไม่ได้อย่างสมบูรณ์ แม้ว่าโปรแกรม Ruby บางโปรแกรมจะทำงานโดยไม่มีการแก้ไขก็ตาม รหัสคอมไพเลอร์เขียนด้วย Crystal และเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0
ภาษาใช้การตรวจสอบประเภทคงที่ ซึ่งนำไปใช้โดยไม่จำเป็นต้องระบุประเภทของตัวแปรและอาร์กิวเมนต์ของเมธอดอย่างชัดเจนในโค้ด โปรแกรม Crystal ได้รับการคอมไพล์เป็นไฟล์ปฏิบัติการ โดยมีมาโครประเมินและสร้างโค้ดในเวลาคอมไพล์ ในโปรแกรม Crystal คุณสามารถเชื่อมต่อการโยงที่เขียนด้วยภาษา C ได้ การดำเนินการโค้ดแบบขนานนั้นดำเนินการโดยใช้คำหลัก "วางไข่" ซึ่งช่วยให้คุณสามารถรันงานพื้นหลังแบบอะซิงโครนัสโดยไม่ต้องปิดกั้นเธรดหลักในรูปแบบของเธรดน้ำหนักเบาที่เรียกว่าไฟเบอร์
ไลบรารีมาตรฐานมีชุดฟังก์ชันทั่วไปจำนวนมาก รวมถึงเครื่องมือสำหรับการประมวลผล CSV, YAML และ JSON, ส่วนประกอบสำหรับการสร้างเซิร์ฟเวอร์ HTTP และการสนับสนุน WebSocket ในระหว่างกระบวนการพัฒนา จะสะดวกในการใช้คำสั่ง "crystal play" ซึ่งสร้างเว็บอินเตอร์เฟส (localhost:8080 เป็นค่าเริ่มต้น) สำหรับการรันโค้ดแบบโต้ตอบในภาษา Crystal
การเปลี่ยนแปลงที่สำคัญ:
- ตรรกะโอเวอร์โหลดมีการเปลี่ยนแปลงแล้ว โดยยูเนียนของประเภทจะถูกพิจารณาก่อนประเภทเดี่ยวเมื่อโอเวอร์โหลด ตัวอย่างเช่น การรันโค้ดต่อไปนี้จะแสดงผลเป็น true แทนที่จะเป็น 'a' เหมือนในรุ่นก่อนหน้า: module Foo(T) end class Bar1 include Foo(Int32) end class Bar2 include Foo(Int32) end def foo(x : Foo(Int32)) 'a' end def foo(x : Bar1 | Bar2) true end foo(Bar1.new)
- มีการนำวิธี #system_echo และ #system_raw มาใช้กับทุกแพลตฟอร์ม ทำให้แมโคร FileDescriptor "cooked_from_tc_mode!", "noecho_from_tc_mode!" และ "raw_from_tc_mode!" กลายเป็นสิ่งที่ล้าสมัย และวิธีการ #noecho! และ #raw! ตอนนี้กลับคืนค่า nil แทนค่า LibC.tcsetattr
- ปรับปรุง File API เพื่อให้ส่งคืนอ็อบเจ็กต์ภายใน (ส่งคืน File::Info แทนที่จะเป็น Crystal::System::FileInfo)
- ปรับปรุงประสิทธิภาพในโหมดอินเทอร์พรีเตอร์ หากต้องการเปิดใช้งานการรองรับอินเทอร์พรีเตอร์ ให้ใช้คำสั่ง "make interpreter = 1"
- การเพิ่มประสิทธิภาพการทำงานใหม่ได้รับการเพิ่มลงในคอมไพเลอร์และไลบรารีมาตรฐานแล้ว
- การสนับสนุนแพลตฟอร์มที่ได้รับการปรับปรุง Windows ในคอมไพเลอร์ รวมถึงสำหรับ Windows เพิ่มความสามารถในการสร้างตัวแปลภาษาและรองรับ Mutex
- เพิ่มการสนับสนุนสำหรับ Unicode 15.0 และนำ API มาใช้เพื่อทำให้ลำดับ Unicode เป็นมาตรฐาน
ที่มา: opennet.ru
