เผยแพร่ Ruby 3.4.0
(ruby-lang.org)-
ในปีที่ผ่านมาเช่นเดิม Ruby 3.4.0 ถูกเผยแพร่เมื่อวันที่ 12/25
-
การอัปเดตหลักได้แก่ การเพิ่มตัวอ้างอิงพารามิเตอร์บล็อก
itการเปลี่ยนเป็น Prism เป็นพาร์เซอร์หลัก การเพิ่มการรองรับ Happy Eyeballs Version 2 ในไลบรารี socket การปรับปรุง YJIT และการเพิ่มโมดูลาร์ GC เป็นต้น -
ตัวอ้างอิงพารามิเตอร์บล็อก
it- มีการแนะนำ
itที่อ้างอิงพารามิเตอร์บล็อกได้โดยไม่ต้องใช้ชื่อตัวแปร โดยทำงานคล้ายกับ_1และใช้งานง่ายในบล็อกที่เรียบง่าย
- มีการแนะนำ
-
เปลี่ยนเป็น Prism เป็นพาร์เซอร์หลัก
- เปลี่ยนพาร์เซอร์เริ่มต้นจาก
parse.yเป็น Prism โดยผู้ใช้จะไม่เห็นการเปลี่ยนแปลงที่ชัดเจน และหากเกิดปัญหาความเข้ากันได้ให้แจ้งรายงาน
- เปลี่ยนพาร์เซอร์เริ่มต้นจาก
-
Happy Eyeballs Version 2 ในไลบรารี socket
- มีการเพิ่มการรองรับ Happy Eyeballs Version 2 (RFC 8305) ให้กับไลบรารี socket ซึ่งเหมาะกับการเชื่อมต่อเครือข่ายที่มีประสิทธิภาพและเชื่อถือได้ในสภาพแวดล้อมอินเทอร์เน็ตสมัยใหม่
-
ปรับปรุง YJIT
- มีการเพิ่มประสิทธิภาพในเกณฑ์ส่วนใหญ่ของ benchmark ลดการใช้งานหน่วยความจำ แก้ไขบั๊กหลากหลาย และเพิ่มฟีเจอร์ใหม่
-
โมดูลาร์ GC
- มีการเพิ่ม GC แบบโมดูลาร์ที่สามารถโหลดการใช้งานตัวเก็บขยะสำรอง (alternative GC) แบบไดนามิกได้ ต้องใช้ Rust toolchain
-
การเปลี่ยนแปลงทางภาษาขั้นสูง
- มีคำเตือนเมื่อแก้ไข string literal ในไฟล์ที่ไม่มีคอมเมนต์
frozen_string_literalและรวมถึงการรองรับการสแปลต**nilและการเปลี่ยนแปลงอื่นๆ ด้วย
- มีคำเตือนเมื่อแก้ไข string literal ในไฟล์ที่ไม่มีคอมเมนต์
-
การอัปเดตคลาสหลัก (Core class)
- รวมถึงการอัปเดตหลายอย่างของคลาสหลัก เช่น
Exception#set_backtraceรองรับอาร์เรย์ของThread::Backtrace::Location
- รวมถึงการอัปเดตหลายอย่างของคลาสหลัก เช่น
-
การอัปเดตห้องสมุดมาตรฐาน
- มีการปรับปรุงประสิทธิภาพและเพิ่มความสามารถในไลบรารีมาตรฐานหลายตัว เช่น RubyGems, Bundler, JSON และ Tempfile
-
ปัญหาความเข้ากันได้
- มีการเปลี่ยนแปลงที่เกี่ยวข้องกับความเข้ากันได้ เช่น รูปแบบการแสดง error message และ backtrace การเปลี่ยนแปลง รวมถึงการเรนเดอร์
Hash#inspectที่เปลี่ยนแปลง
- มีการเปลี่ยนแปลงที่เกี่ยวข้องกับความเข้ากันได้ เช่น รูปแบบการแสดง error message และ backtrace การเปลี่ยนแปลง รวมถึงการเรนเดอร์
-
อัปเดต C API
- มีการอัปเดตที่เกี่ยวข้องกับ C API เช่นการนำฟังก์ชัน
rb_newobjและrb_newobj_ofออก
- มีการอัปเดตที่เกี่ยวข้องกับ C API เช่นการนำฟังก์ชัน
-
การเปลี่ยนแปลงอื่นๆ
- มีการเปลี่ยนแปลงหลากหลาย เช่น การแจ้งเตือนเมื่อส่งบล็อกที่ไม่ใช้แล้วไปยัง method
2 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ความคาดหวังต่อการเปลี่ยนแปลงตัวแยกวิเคราะห์ของ Ruby สูงมาก สมัยก่อนเราเรียนว่าต้องใช้ yacc แต่ตอนนี้ Ruby ก็เข้าร่วมกับภาษาที่ใช้ตัวแยกวิเคราะห์ที่เขียนด้วยมือด้วย
Ruby 3.4.1 ถือว่าเชยไปแล้ว
ประสิทธิภาพของ Ruby ดีขึ้นอย่างมีนัยสำคัญในช่วงหลายปีที่ผ่านมา ตั้งแต่เวอร์ชัน 3.3 เราใช้ตัวเลือก --yjit รันแอปทุกตัว และเห็นความแตกต่างอย่างเด่นชัด
กลยุทธ์ของ Shopify ก็เป็นแบบเดียวกับเรื่อง YJIT คือยืนยันว่า ถ้าปรับโครงสร้างระบบบริการไม่ได้ ก็จะรีแฟกเตอร์ Ruby เอง
การปรับปรุงประสิทธิภาพเพิ่มเติมที่ระดับ JIT และ GC ก็เป็นสิ่งที่ดีใจมาก
รอการปล่อย Ruby ทุกปีเหมือนเป็นประเพณีก่อนวันคริสต์มาส
เราอัปเดตแอป Rails ทุกปีปลายปี โดยช่วงหลังนี้อัปเดตง่ายขึ้นมาก เพราะมันเสถียรและมีประสิทธิภาพดีขึ้น
ขอแสดงความยินดีและขอบคุณทีม Ruby
ตั้งแต่ข่าว Rails 8 ผมอยากลอง Ruby แต่สุดท้ายยกเลิกเพราะขั้นตอนการติดตั้งยากเกินไป
มีสคริปต์สำหรับติดตั้ง Rails บน macOS ให้ทำได้ง่ายขึ้น
=>
https://rails.new/