4 คะแนน โดย GN⁺ 2024-12-26 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • ในปีที่ผ่านมาเช่นเดิม 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 และการเปลี่ยนแปลงอื่นๆ ด้วย
  • การอัปเดตคลาสหลัก (Core class)

    • รวมถึงการอัปเดตหลายอย่างของคลาสหลัก เช่น Exception#set_backtrace รองรับอาร์เรย์ของ Thread::Backtrace::Location
  • การอัปเดตห้องสมุดมาตรฐาน

    • มีการปรับปรุงประสิทธิภาพและเพิ่มความสามารถในไลบรารีมาตรฐานหลายตัว เช่น RubyGems, Bundler, JSON และ Tempfile
  • ปัญหาความเข้ากันได้

    • มีการเปลี่ยนแปลงที่เกี่ยวข้องกับความเข้ากันได้ เช่น รูปแบบการแสดง error message และ backtrace การเปลี่ยนแปลง รวมถึงการเรนเดอร์ Hash#inspect ที่เปลี่ยนแปลง
  • อัปเดต C API

    • มีการอัปเดตที่เกี่ยวข้องกับ C API เช่นการนำฟังก์ชัน rb_newobj และ rb_newobj_of ออก
  • การเปลี่ยนแปลงอื่นๆ

    • มีการเปลี่ยนแปลงหลากหลาย เช่น การแจ้งเตือนเมื่อส่งบล็อกที่ไม่ใช้แล้วไปยัง method

2 ความคิดเห็น

 
GN⁺ 2024-12-26
ความคิดเห็นจาก Hacker News
  • ความคาดหวังต่อการเปลี่ยนแปลงตัวแยกวิเคราะห์ของ Ruby สูงมาก สมัยก่อนเราเรียนว่าต้องใช้ yacc แต่ตอนนี้ Ruby ก็เข้าร่วมกับภาษาที่ใช้ตัวแยกวิเคราะห์ที่เขียนด้วยมือด้วย

    • การแทนที่ไฟล์ parse.y 16k บรรทัดด้วย prism.c 22k บรรทัดเป็นการเคลื่อนไหวที่ค่อนข้างกล้าหาญมาก
  • Ruby 3.4.1 ถือว่าเชยไปแล้ว

  • ประสิทธิภาพของ Ruby ดีขึ้นอย่างมีนัยสำคัญในช่วงหลายปีที่ผ่านมา ตั้งแต่เวอร์ชัน 3.3 เราใช้ตัวเลือก --yjit รันแอปทุกตัว และเห็นความแตกต่างอย่างเด่นชัด

  • กลยุทธ์ของ Shopify ก็เป็นแบบเดียวกับเรื่อง YJIT คือยืนยันว่า ถ้าปรับโครงสร้างระบบบริการไม่ได้ ก็จะรีแฟกเตอร์ Ruby เอง

  • การปรับปรุงประสิทธิภาพเพิ่มเติมที่ระดับ JIT และ GC ก็เป็นสิ่งที่ดีใจมาก

  • รอการปล่อย Ruby ทุกปีเหมือนเป็นประเพณีก่อนวันคริสต์มาส

  • เราอัปเดตแอป Rails ทุกปีปลายปี โดยช่วงหลังนี้อัปเดตง่ายขึ้นมาก เพราะมันเสถียรและมีประสิทธิภาพดีขึ้น

  • ขอแสดงความยินดีและขอบคุณทีม Ruby

  • ตั้งแต่ข่าว Rails 8 ผมอยากลอง Ruby แต่สุดท้ายยกเลิกเพราะขั้นตอนการติดตั้งยากเกินไป

    • การติดตั้ง Ruby 3.3 บน Mac และ Windows เป็นความท้าทายอย่างมาก
    • ยังต้องปรับเวอร์ชันใน Docker และก็มีปัญหากับ devContainers ด้วย
    • หลังจากติดตั้งแล้ว การไฮไลต์ไวยากรณ์ไฟล์ html.erb ของ Rails ใน VSCode และตัวแก้ไขอื่นๆ พังหนักมาก
    • พยายามหาวิธีแก้จากออนไลน์แต่ไม่สำเร็จ สุดท้ายก็ยอมแพ้
    • ลองบน Mac, Windows, Linux แล้วล้มเหลวทั้งหมด หากมีใครแก้ปัญหานี้ได้ก็น่าจะเป็นของขวัญวันคริสต์มาสที่ดีมาก
 
eajrezz 2024-12-26

Rails 8 ขึ้นมานี้แล้ว ทำให้ฉันอยากลอง Ruby แต่สุดท้ายก็หยุดเพราะขั้นตอนการติดตั้งยากเกินไป

มีสคริปต์สำหรับติดตั้ง Rails บน macOS ให้ทำได้ง่ายขึ้น
=>
https://rails.new/