1 คะแนน โดย GN⁺ 2025-02-15 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • การเปลี่ยนแปลงของภาษา
    • ตอนนี้ Go 1.24 รองรับ generic type alias อย่างสมบูรณ์แล้ว โดย type alias สามารถรับพารามิเตอร์ได้เช่นเดียวกับ type ที่นิยามไว้
  • การปรับปรุงประสิทธิภาพ
    • มีการปรับปรุงประสิทธิภาพหลายด้านใน runtime ทำให้ลด CPU overhead ลงได้เฉลี่ย 2-3% ในเบนช์มาร์กตัวแทน
    • รวมถึงการใช้งาน map แบบ built-in ใหม่ การเพิ่มประสิทธิภาพการจัดสรรหน่วยความจำสำหรับอ็อบเจ็กต์ขนาดเล็ก และการใช้งาน mutex ภายใน runtime แบบใหม่
  • การปรับปรุงเครื่องมือ
    • คำสั่ง go มี mechanism สำหรับติดตาม tool dependency ของโมดูล โดยสามารถใช้ go get -tool เพื่อเพิ่มคำสั่ง tool ให้กับโมดูลปัจจุบันได้
    • ตัววิเคราะห์การทดสอบใหม่ของคำสั่งย่อย go vet จะรายงานข้อผิดพลาดที่พบบ่อยในประกาศ test, fuzzer, benchmark และ example ของแพ็กเกจทดสอบ
  • การเพิ่มใน standard library
    • standard library มี mechanism ใหม่สำหรับการรองรับตามข้อกำหนด FIPS 140-3 โดยไม่ต้องแก้ไขซอร์สโค้ดเพื่อใช้อัลกอริทึมที่ได้รับการรับรอง
    • ตอนนี้หลายแพ็กเกจที่เคยอยู่ในโมดูล x/crypto สามารถใช้งานได้จาก standard library แล้ว
    • ตอนนี้ benchmark สามารถใช้เมธอด testing.B.Loop ที่เร็วกว่าและเกิดข้อผิดพลาดน้อยกว่าได้
    • type os.Root ใหม่มอบความสามารถในการทำงานกับระบบไฟล์ภายใต้ไดเรกทอรีที่กำหนด
    • runtime มี mechanism การ cleanup ใหม่ชื่อ runtime.AddCleanup ซึ่งยืดหยุ่น มีประสิทธิภาพ และเกิดข้อผิดพลาดน้อยกว่า runtime.SetFinalizer
  • การปรับปรุงการรองรับ WebAssembly
    • Go 1.24 เพิ่ม directive go:wasmexport ที่ทำให้โปรแกรม Go สามารถ export ฟังก์ชันไปยังโฮสต์ WebAssembly ได้ และรองรับการบิลด์โปรแกรม Go เป็น WASI reactor/library

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

 
GN⁺ 2025-02-15
ความคิดเห็นบน Hacker News
  • พอใจกับการปรับปรุง map ที่เร็วขึ้นเป็นพิเศษ และตอนนี้ text/template รองรับชนิด func แล้ว
  • Go 1.23 ได้เพิ่ม range สำหรับชนิด func เข้ามา แต่เพิ่งจะมาใช้งานได้ใน Go templates ตอนนี้เอง
  • สงสัยว่าสามารถระบุแท็กที่จะใช้ตอนติดตั้งเครื่องมือที่กำหนดไว้ใน tool directive ได้หรือไม่
    • ลองแล้วแต่ไม่ทำงาน (ติดตั้งโดยไม่มีแท็ก)
    • ใช้ go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest
  • สงสัยว่า use case ของ os.Root คืออะไร
    • เข้าใจว่าเกี่ยวข้องกับความปลอดภัย
    • เพราะภายในไม่ได้ใช้ Chroot เลยจินตนาการว่าสุดท้ายคงมีคนหาวิธี escape ออกจาก Root ได้
  • น่าเบื่อแต่ชอบ
  • ตื่นเต้นกับ tool flags ใหม่มากที่สุด
    • น่าจะกำจัด tools.go หน้าตาไม่สวยได้
  • เมื่อใช้ GODEBUG=fips140=only อัลกอริทึมเข้ารหัสที่ไม่เป็นไปตาม FIPS 140-3 จะคืนค่า error หรือ panic
    • ไม่ชอบแนวคิดที่ standard library จะตั้งใจทำให้ panic
    • ยังไม่ได้ดูโค้ด แต่อยากรู้ว่าสิ่งนี้เกิดขึ้นเฉพาะกับฟังก์ชันที่ตอนนี้ไม่คืนค่า error หรือไม่
  • ในที่สุด type alias ของ generics ที่รอมานานก็มาสักที
  • ดีเลย! รอรีลีสนี้เพราะ GOAUTH
    • หวังว่าการทำงานกับ private git repository จะยุ่งยากน้อยลง
    • ดูจาก go help goauth แล้วก็ไม่ได้คาดหวังมากนัก