การเปิดตัวภาษาโปรแกรม Crystal 1.2

มีการเผยแพร่ภาษาการเขียนโปรแกรม Crystal 1.2 ซึ่งนักพัฒนาพยายามรวมความสะดวกสบายของการพัฒนาในภาษา Ruby เข้ากับลักษณะการทำงานของแอปพลิเคชันที่สูงของภาษา C ไวยากรณ์ของ Crystal ใกล้เคียงกับ Ruby แต่เข้ากันไม่ได้อย่างสมบูรณ์ แม้ว่าโปรแกรม Ruby บางโปรแกรมจะทำงานโดยไม่มีการแก้ไขก็ตาม รหัสคอมไพเลอร์เขียนด้วย Crystal และเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0

ภาษาใช้การตรวจสอบประเภทคงที่ ซึ่งนำไปใช้โดยไม่จำเป็นต้องระบุประเภทของตัวแปรและอาร์กิวเมนต์ของเมธอดอย่างชัดเจนในโค้ด โปรแกรม Crystal ได้รับการคอมไพล์เป็นไฟล์ปฏิบัติการ โดยมีมาโครประเมินและสร้างโค้ดในเวลาคอมไพล์ ในโปรแกรม Crystal คุณสามารถเชื่อมต่อการโยงที่เขียนด้วยภาษา C ได้ การดำเนินการโค้ดแบบขนานนั้นดำเนินการโดยใช้คำหลัก "วางไข่" ซึ่งช่วยให้คุณสามารถรันงานพื้นหลังแบบอะซิงโครนัสโดยไม่ต้องปิดกั้นเธรดหลักในรูปแบบของเธรดน้ำหนักเบาที่เรียกว่าไฟเบอร์

ไลบรารีมาตรฐานมีชุดฟังก์ชันทั่วไปจำนวนมาก รวมถึงเครื่องมือสำหรับการประมวลผล CSV, YAML และ JSON, ส่วนประกอบสำหรับการสร้างเซิร์ฟเวอร์ HTTP และการสนับสนุน WebSocket ในระหว่างกระบวนการพัฒนา จะสะดวกในการใช้คำสั่ง "crystal play" ซึ่งสร้างเว็บอินเตอร์เฟส (localhost:8080 เป็นค่าเริ่มต้น) สำหรับการรันโค้ดแบบโต้ตอบในภาษา Crystal

การเปลี่ยนแปลงที่สำคัญ:

  • เพิ่มความสามารถในการกำหนดคลาสย่อยของคลาสทั่วไปให้กับองค์ประกอบของคลาสพาเรนต์ คลาสฟู(T); บาร์คลาสท้าย (T) < Foo (T); สิ้นสุด x = Foo x = บาร์
  • ตอนนี้มาโครสามารถใช้ขีดล่างเพื่อละเว้นค่าใน for loop ได้ {% สำหรับ _, v, i ใน {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% สิ้นสุด %}
  • เพิ่มวิธีการ "file_exists?" ให้กับมาโคร เพื่อตรวจสอบการมีอยู่ของไฟล์
  • ขณะนี้ไลบรารีมาตรฐานรองรับจำนวนเต็ม 128 บิต
  • เพิ่มโมดูล Indexable::Mutable(T) พร้อมการดำเนินการขั้นสูงสำหรับคอลเลกชัน เช่น BitArray และ Deque ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • เพิ่ม XML::Node#namespace_definition วิธีการแยกเนมสเปซเฉพาะจาก XML
  • เมธอด IO#write_utf8 และ URI.encode เลิกใช้แล้ว และควรแทนที่ด้วย IO#write_string และ URI.encode_path
  • การสนับสนุนสถาปัตยกรรม x32 แบบ 86 บิตได้ถูกย้ายไปยังระดับที่สองแล้ว (ไม่มีการสร้างแพ็คเกจสำเร็จรูปอีกต่อไป) กำลังเตรียมการถ่ายโอนไปยังระดับแรกของการสนับสนุนสำหรับสถาปัตยกรรม ARM64
  • งานยังคงดำเนินต่อไปเพื่อให้แน่ใจว่าได้รับการสนับสนุนอย่างเต็มที่สำหรับแพลตฟอร์ม Windows เพิ่มการรองรับซ็อกเก็ต Windows
  • มีการเพิ่มแพ็คเกจสากลสำหรับ macOS ซึ่งทำงานได้ทั้งบนอุปกรณ์ที่มีโปรเซสเซอร์ x86 และอุปกรณ์ที่มีชิป Apple M1

ที่มา: opennet.ru

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