Racket v9.0
(blog.racket-lang.org)- Racket 9.0 เป็นรีลีสใหญ่ที่เพิ่ม Parallel Threads เข้ามา โดยเป็นการขยายจากการรองรับ green threads, futures และ places ที่มีอยู่เดิม
- เธรดแบบใหม่สามารถสร้างได้ด้วยอาร์กิวเมนต์
#:poolและหากตั้งค่า#:keep 'resultsก็สามารถเรียกดูผลลัพธ์ภายหลังผ่านthread-waitได้ - แรปเปอร์
black-boxช่วยป้องกันไม่ให้คอมไพเลอร์แบบ optimization ตัดบางการคำนวณออกไป ทำให้การ benchmark แม่นยำขึ้น - ฟังก์ชัน
decompile-linkletสามารถแปลง linklet กลับเป็น S-expression ได้อีกครั้ง และprocessor-countถูกเปลี่ยนให้คืนค่าจำนวนการประมวลผลแบบขนาน - มีอัปเดตอื่น ๆ เพิ่มเติม เช่น แพ็กเกจ “natipkg” สำหรับ AArch64, การเพิ่ม Weibull distribution, และ การปรับปรุงเอกสาร
การเปลี่ยนแปลงหลักใน Racket 9.0
-
รีลีสนี้เพิ่มความสามารถ Parallel Threads เข้ามาใหม่
- เดิม Racket รองรับ green threads, futures และ places อยู่แล้ว แต่ Parallel Threads เป็นความสามารถส่วนขยายหลักที่เพิ่มเข้ามา
- สามารถสร้าง Parallel Threads ได้ผ่านอาร์กิวเมนต์
#:poolและหากตั้งค่า#:keep 'results`` ก็สามารถเรียกดูผลลัพธ์ในภายหลังผ่านthread-wait` ได้
-
แรปเปอร์
black-boxช่วยป้องกันไม่ให้คอมไพเลอร์แบบ optimization ลบการคำนวณบางอย่างออกทั้งหมด- มีประโยชน์ในการรับประกันการวัดประสิทธิภาพที่แม่นยำระหว่างการ benchmark
-
ฟังก์ชัน
decompile-linkletสามารถแมป linklet กลับเป็น S-expression ได้- ช่วยให้กู้คืน representation ภายในสำหรับการวิเคราะห์โค้ดและการดีบักได้
-
ใน BC Racket ฟังก์ชัน
processor-countถูกเปลี่ยนให้คืนค่าจำนวนโปรเซสเซอร์สำหรับการประมวลผลแบบขนานเสมอ- ทำให้ตรวจสอบจำนวนโปรเซสเซอร์ได้อย่างสม่ำเสมอในสภาพแวดล้อมการรันแบบขนาน
-
มีการปล่อย แพ็กเกจ “natipkg” สำหรับ AArch64 ใหม่ เพื่อนำไปใช้กับโครงสร้างพื้นฐานสำหรับการ build และทดสอบแพ็กเกจได้
การปรับปรุงเพิ่มเติม
- ฟีเจอร์ Check Syntax รองรับการติดตาม identifier ที่ซ้อนลึกขึ้นภายในฟิลด์ “origin” ของ syntax object
- เพิ่ม Weibull distribution ในไลบรารี
math - รวม การแก้บั๊กและการปรับปรุงเอกสาร จำนวนมาก
ชุมชนและการมีส่วนร่วม
- รีลีสนี้มีผู้พัฒนาหลายคนร่วมสนับสนุน เช่น Alexander Shopov, Bogdan Popa, Matthew Flatt, Matthias Felleisen
- Racket เป็น โครงการโอเพนซอร์สที่ขับเคลื่อนโดยชุมชน และยินดีต้อนรับผู้ร่วมพัฒนาใหม่
- ดูวิธีมีส่วนร่วมได้ที่ racket/README.md
คำติชมและการประชาสัมพันธ์
- สามารถถามคำถามและร่วมพูดคุยได้ในชุมชน Racket Discourse หรือ Discord
- แนะนำให้ผู้ใช้และผู้ดูแลแพ็กเกจของแต่ละแพลตฟอร์มช่วยแชร์ข่าวการออกรีลีสนี้
- ดาวน์โหลดอย่างเป็นทางการ: https://download.racket-lang.org
- ประกาศรีลีส: https://blog.racket-lang.org/2025/11/racket-v9-0.html
1 ความคิดเห็น
ความเห็นจาก Hacker News
ประเด็นสำคัญของข่าวนี้คือ Racket รองรับเธรดแบบขนานแล้ว
ก่อนหน้านี้ก็มีวิธีทำงานขนานอย่าง places อยู่แล้ว แต่แนวทางใหม่นี้เบากว่าและคุ้นเคยกว่ามาก
เพราะชอบสร้างอะไรบางอย่างด้วย Racket อยู่แล้ว จึงเป็นเรื่องน่ายินดีที่สิ่งนี้จะขยายขอบเขตการใช้งานของ Racket ได้
places ไม่ค่อยยืดหยุ่นนัก ส่ง lambda ได้ไม่สะดวก และ
serializable-lambdaก็ทำงานแบบแพร่กระจาย ทำให้ตอนรันส่งได้แค่ข้อมูล ไม่ใช่ฟังก์ชันเลยยากที่จะสร้างโครงสร้างสำหรับกระจายงานไปหลาย place
หวังว่าฟีเจอร์ concurrency ใหม่ครั้งนี้จะทำแบบนั้นได้
ที่ผ่านมาฉันเลยใช้ GNU Guile แทน Racket ด้วยเหตุผลนี้เอง Guile ใช้มัลติคอร์ผ่าน futures หรือ fibers ได้เสถียรกว่ามาก
ฉันเองก็เคยใช้ futures สร้างโมเดล decision tree แบบขนาน และได้ความเร็วเพิ่มขึ้นเกือบเป็นเส้นตรง
ฉันเป็น นักพัฒนา Clojure เลยชอบตระกูล Lisp อยากรู้ว่าคนเอา Racket ไปทำอะไรกันบ้าง
ถ้าดูวิดีโอนี้ Racket อาจรู้สึกยากถ้าไม่ใช่ภาษาแรกที่เรียน แต่ก็ง่ายพอที่เด็ก ๆ จะเรียนได้
ฉันชอบ Racket มาก
เคยเขียนหนังสือเกี่ยวกับ Racketเล่น ๆ และอ่านออนไลน์ได้ฟรี
ถ้าเป็นภาษาในสาย Scheme ฉันแนะนำ Racket กับ Gerbil
Racket เหมาะกับผู้เริ่มต้นเพราะมี IDE ดี และมีทั้งไลบรารีมาตรฐานกับไลบรารีจากภายนอกที่อุดมสมบูรณ์ ส่วน Gerbil เหมาะกับการเขียนโปรแกรมระบบหรือยูทิลิตีเครือข่าย
Racket เป็นภาษาที่เจ๋งมาก
เป็นภาษาในสาย Lisp ที่เหมาะกับการเรียนรู้ และฉันยังจำความทรงจำตอนทำการบ้านด้วย DrRacket IDE ได้อยู่เลย
ฉันเริ่มลองเล่น Lisp ครั้งแรกช่วงกลางยุค 80 และหลังจากนั้นก็กลับไปหาเป็นครั้งคราวเพื่อเรียนรู้วิธีคิดและเทคนิคการเขียนโปรแกรมใหม่ ๆ
ฉันเองก็ลอง Racket มาหลายครั้ง แต่มีอะไรบางอย่างในซอฟต์แวร์ที่ไม่ค่อยเข้ากับฉัน
ถ้าใช้อย่างต่อเนื่องอาจจะโอเคก็ได้ แต่ตอนนี้ก็ยังนึกภาพไม่ออกว่าจะเขียนโปรเจ็กต์ใหญ่ ๆ ด้วย Racket
มันช้ากว่า Python เสียอีก หลังจากเขียนใหม่ด้วย Chez Scheme อาจดีขึ้นแล้วก็ได้ แต่ตอนนี้ฉันใช้ Common Lisp ที่ทั้งเร็วและเบา
ฉันรู้จัก Racket เพราะเห็นว่า John Carmack เคยใช้มันทำงานเกี่ยวกับ Oculus เมื่อ 10 ปีก่อน
วิดีโอที่เกี่ยวข้อง
บทความวิกิของ Arc
Lisp เป็น เมตาภาษา ในตัวเองอยู่แล้ว และ Racket ก็เมตายิ่งกว่านั้น
เรียกได้ว่าเป็น ชุดเครื่องมือสำหรับสร้างภาษา เลย
ตอนฉันสอนวิชา PL ก็เคยใช้ Racket แต่นักศึกษาคุ้นกับ Java หรือ Python มากกว่า เลยลำบากกับไวยากรณ์แบบ Lisp
เพราะงั้นฉันเลยไม่ค่อยแน่ใจว่า Racket เป็นภาษา สำหรับใครกันแน่
บล็อกของ Bogdan Popa (defn.io) มีข้อมูลน่าสนใจเกี่ยวกับ Racket อยู่มาก
ฉันตั้งตารอจะลองใช้ฟีเจอร์เธรดดิ้งใหม่นี้ด้วยตัวเอง
ฉันเคยลอง Racket หลายครั้ง แต่ IDE ไม่ค่อยเป็นธรรมชาติและดูแปลก ๆ
เลยสงสัยว่านี่เป็นการออกแบบที่ตั้งใจไว้ หรือแค่เป็นเพราะยังไม่มีตัวเลือกที่ดีกว่า
Racket รองรับ VSCode (Magic Racket, Langserver), Emacs (Racket Mode), Vim และอื่น ๆ ได้ดี
ดูได้จากเอกสารทางการและรีโพซิทอรี Langserver
DrRacket ยังมีฟีเจอร์อย่าง macro stepper ที่ IDE อื่นไม่มี จึงยังน่าใช้อยู่
Racket เป็นภาษาที่สนุกดี
ที่มหาวิทยาลัยของเราใช้เวอร์ชันเพื่อการศึกษาของ Racket ในวิชา CS ปี 1
นักศึกษาบางคนเกลียดมัน แต่ก็มีบางคนที่ชอบเงียบ ๆ