ค้นหาเว็บไซต์

Lua 5.5 ออกแล้ว มาพร้อมกับการเก็บขยะแบบเพิ่มพูนและอาเรย์แบบกะทัดรัด


ภาษาโปรแกรม Lua 5.5 แนะนำการประกาศตัวแปรแบบทั่วโลกอย่างชัดเจน พร้อมกับการปรับปรุงครั้งใหญ่ในด้านหน่วยความจำและการเก็บขยะ

Lua ซึ่งเป็นภาษาสคริปต์ระดับสูงน้ำหนักเบาที่ออกแบบมาเพื่อนำไปฝังในแอปพลิเคชันอื่น ๆ เพิ่งเปิดตัวเวอร์ชัน 5.5

หนึ่งในสิ่งที่เพิ่มเข้ามาสำคัญคือการประกาศตัวแปรระดับโลกอย่างชัดเจน ทำให้ผู้พัฒนาสามารถกำหนดตัวแปรระดับโลกได้อย่างชัดเจนมากขึ้นและลดข้อผิดพลาดที่มักเกิดจากตัวแปรระดับโลกโดยไม่ได้ตั้งใจ นอกจากนี้ ตัวแปรในลูป for ตอนนี้จะเป็นแบบอ่านอย่างเดียว ลดผลกระทบที่ไม่ได้ตั้งใจในโครงสร้างลูป

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

การเก็บขยะก็ได้รับการปรับปรุงด้วยเช่นกัน การแนะนำโหมดตัวเก็บขยะแบบเจนเนอเรชันใหม่ช่วยปรับปรุงประสิทธิภาพโดยการแยกระหว่างวัตถุที่มีอายุสั้นและอายุยาว นอกจากนี้ รอบการเก็บขยะหลักยังดำเนินการแบบค่อยเป็นค่อยไป ลดเวลาหยุดชะงักและเพิ่มความตอบสนองในโปรแกรมที่ทำงานต่อเนื่องระยะยาว

นอกจากนี้ ค่าตัวเลขทศนิยมแบบลอยตัวตอนนี้จะแสดงผลพร้อมจำนวนหลักทศนิยมที่เพียงพอเพื่อให้สามารถอ่านกลับมาได้อย่างถูกต้อง เวอร์ชันนี้ยังรวมถึงการอัปเดตการจัดการสตริงและ UTF-8 เช่น ฟังก์ชัน utf8.offset ที่ขยายเพิ่มเติมซึ่งคืนค่าตำแหน่งสุดท้ายของตัวอักษร และการรองรับสตริงภายนอกที่ใช้หน่วยความจำซึ่งไม่ได้จัดการโดยตัวจัดสรรของ Lua เอง

มีการเพิ่มฟังก์ชันช่วยเหลือใหม่หลายอย่าง รวมถึง luaL_openselectedlibs และ luaL_makeseed ซึ่งช่วยยกระดับการโหลดไลบรารีและอินเทอร์เฟซการสุ่ม นอกจากนี้ ตัวแปล Lua (lua.c) ตอนนี้สามารถโหลดการรองรับ readline แบบไดนามิกเมื่อมีอยู่ ทำให้การใช้งานแบบโต้ตอบกว้างขึ้น

ไฟล์ไบนารีแบบสแตติกก็มีการปรับปรุงเช่นกัน; เมื่อโหลดชิ้นส่วนไบนารีเข้าหน่วยความจำ Lua สามารถนำหน่วยความจำเดิมกลับมาใช้ซ้ำในโครงสร้างภายในบางส่วน การทำงาน dump และ undump ตอนนี้นำสตริงทั้งหมดกลับมาใช้ซ้ำ และบัฟเฟอร์เสริมก็ใช้หน่วยความจำซ้ำเมื่อสร้างสตริงสุดท้าย ช่วยลดการจัดสรรหน่วยความจำ

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงทั้งหมดใน Lua 5.5 โปรดติดตามลิงก์นี้