การเปิดตัวภาษาการเขียนโปรแกรม Hare 0.25.2

Drew DeVault ผู้เขียนสภาพแวดล้อมผู้ใช้ Sway ไคลเอนต์อีเมล Aerc และแพลตฟอร์มการพัฒนาร่วมกัน SourceHut ได้เปิดตัวภาษาการเขียนโปรแกรม Hare เวอร์ชัน 0.25.2 หมายเลขเวอร์ชันจะถูกสร้างขึ้นเป็น 0.YY.Q โดยที่ YY คือสองหลักสุดท้ายของปีและ Q คือตัวเลขไตรมาส Hare เวอร์ชันก่อนหน้า 0.24.2 เผยแพร่เมื่อปีที่แล้ว Hare นำเสนอเป็นภาษาการเขียนโปรแกรมระบบที่ใกล้เคียงกับภาษา C แต่เรียบง่ายกว่า C โค้ดต้นฉบับของคอมไพเลอร์และทูลเชนได้รับอนุญาตภายใต้ใบอนุญาต GPLv3 และโค้ดไลบรารีมาตรฐานได้รับอนุญาตภายใต้ MPL (ใบอนุญาตสาธารณะ Mozilla)

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

ในการรันแอปพลิเคชันนั้น จะมีการจัดหารันไทม์ขั้นต่ำ และสำหรับการพัฒนานั้น จะมีการแจกจ่ายไลบรารีฟังก์ชันมาตรฐาน เพื่อให้สามารถเข้าถึงอินเทอร์เฟซพื้นฐานของระบบปฏิบัติการ ตลอดจนเสนอฟังก์ชันสำหรับการทำงานกับอัลกอริธึม โปรโตคอล และรูปแบบมาตรฐาน รวมถึง เครื่องมือสำหรับการใช้นิพจน์ทั่วไปและการเข้ารหัส สำหรับการพัฒนาแอปพลิเคชันกราฟิกนั้น ชุดเครื่องมือ hare-wayland กำลังได้รับการพัฒนา เช่นเดียวกับการเชื่อมโยงสำหรับการเข้าถึงความสามารถของ GTK, Vulkan, OpenGL, SDL2 และ libui

ในเวอร์ชันใหม่:

  • ความสามารถบัฟเฟอร์ I/O ได้รับการขยายเพิ่ม โหมดสตรีม "ไม่บล็อก" ได้ถูกเพิ่มลงในโมดูล "memio::" มีการแนะนำตัวเลือกเพื่อปรับแต่งพฤติกรรมการสิ้นสุดไฟล์ใน bufio::scanner และโหมดควบคุมสตรีมใน bufio::stream มีการเพิ่มฟังก์ชัน os::open_buffered และ os::create_buffered
  • ยูทิลิตี้ "haredoc" ถูกนำมาใช้เพื่อแยกคำอธิบายสั้นๆ ของโมดูลจากไฟล์ README และแสดงคำอธิบายนั้นเมื่อส่งออกรายการโมดูล
  • มีการนำการรองรับ API ของ Unix/POSIX มาใช้แล้ว ได้แก่ io::fsync, io::fdatasync, unix::getrlimit, unix::setrlimit และ fcntl (ผ่าน os::getflags และ os::setflags) มีการพอร์ตการรองรับหน่วยความจำแบบแชร์ไปยัง NetBSD แล้ว
  • ตอนนี้ยูทิลิตี้ hare รองรับการฝังตัวจัดการภายนอกที่เรียกใช้โดยใช้คำสั่งย่อย "hare tool" ตัวอย่างเช่น ตัวจัดการดังกล่าวช่วยให้สามารถบูรณาการกับเครื่องมือ "hare-update" ได้
  • การจัดการข้อผิดพลาดในสถานการณ์ที่มีหน่วยความจำไม่เพียงพอได้ถูกย้ายไปยังหมวดหมู่บังคับแล้ว มีการเพิ่มประเภทดั้งเดิมใหม่ "nomem" ซึ่งส่งคืนโดยฟังก์ชันการจัดสรรหน่วยความจำเมื่อไม่สามารถจัดสรรหน่วยความจำตามจำนวนที่ต้องการได้
  • ปรับปรุง API สำหรับการทำงานกับวันที่และเวลา เพิ่มความสามารถในการทำงานกับเขตเวลาและเพิ่มการรองรับกฎ PETZ (POSIX Extending TZ) ฟังก์ชันต่างๆ มากมายถูกย้ายจากโมดูล time::chrono ไปยัง time::date
  • เพิ่มการรองรับสำหรับคำอธิบายโค้ดเชิงความหมาย ซึ่งช่วยให้คุณสามารถแนบข้อมูลเมตาเพิ่มเติมลงในโค้ดของคุณได้ ซึ่งจะถูกละเว้นโดยคอมไพเลอร์ แต่สามารถนำมาพิจารณาโดยตัววิเคราะห์ศัพท์ในไลบรารีมาตรฐานได้ #[json::gen] export type player = struct { name: str, #[json::field(name = "X", omit_null=true)] x: *f64, #[json::field(name = "Y", omit_null=true)] y: *f64, };
  • มีการเพิ่มยูทิลิตี้ hare-update เพื่อลดความยุ่งยากในการโยกย้ายโค้ดไปยังเครื่องมือ Hare เวอร์ชันใหม่ที่มีการเปลี่ยนแปลงแบบย้อนหลัง ตัวอย่างเช่น สามารถใช้ยูทิลิตี้นี้เพื่อปรับเปลี่ยนโค้ดที่มีอยู่ให้ใช้การจัดการข้อผิดพลาดในการจัดสรรหน่วยความจำแบบบังคับซึ่งเปิดตัวในรุ่นปัจจุบัน

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster