3 คะแนน โดย GN⁺ 2025-11-24 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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
  • แนะนำให้ผู้ใช้และผู้ดูแลแพ็กเกจของแต่ละแพลตฟอร์มช่วยแชร์ข่าวการออกรีลีสนี้

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

 
GN⁺ 2025-11-24
ความเห็นจาก Hacker News
  • ประเด็นสำคัญของข่าวนี้คือ Racket รองรับเธรดแบบขนานแล้ว
    ก่อนหน้านี้ก็มีวิธีทำงานขนานอย่าง places อยู่แล้ว แต่แนวทางใหม่นี้เบากว่าและคุ้นเคยกว่ามาก
    เพราะชอบสร้างอะไรบางอย่างด้วย Racket อยู่แล้ว จึงเป็นเรื่องน่ายินดีที่สิ่งนี้จะขยายขอบเขตการใช้งานของ Racket ได้

    • ตอนอ่าน release notes ฉันก็ตกใจเหมือนกัน ดีใจที่ในที่สุดก็มี มัลติเธรดดิ้ง รูปแบบนี้เข้ามาแล้ว
      places ไม่ค่อยยืดหยุ่นนัก ส่ง lambda ได้ไม่สะดวก และ serializable-lambda ก็ทำงานแบบแพร่กระจาย ทำให้ตอนรันส่งได้แค่ข้อมูล ไม่ใช่ฟังก์ชัน
      เลยยากที่จะสร้างโครงสร้างสำหรับกระจายงานไปหลาย place
      หวังว่าฟีเจอร์ concurrency ใหม่ครั้งนี้จะทำแบบนั้นได้
      ที่ผ่านมาฉันเลยใช้ GNU Guile แทน Racket ด้วยเหตุผลนี้เอง Guile ใช้มัลติคอร์ผ่าน futures หรือ fibers ได้เสถียรกว่ามาก
      ฉันเองก็เคยใช้ futures สร้างโมเดล decision tree แบบขนาน และได้ความเร็วเพิ่มขึ้นเกือบเป็นเส้นตรง
    • อยากรู้ว่าคุณสร้างโปรเจ็กต์แบบไหนด้วย Racket
      ฉันเป็น นักพัฒนา Clojure เลยชอบตระกูล Lisp อยากรู้ว่าคนเอา Racket ไปทำอะไรกันบ้าง
    • การที่เพิ่งมาเพิ่มเธรดแบบขนานในเวอร์ชัน 9 ทำให้รู้สึกขัดแย้งกับการที่หน้าเว็บแนะนำ 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 ปีก่อน
    วิดีโอที่เกี่ยวข้อง

  • Lisp เป็น เมตาภาษา ในตัวเองอยู่แล้ว และ Racket ก็เมตายิ่งกว่านั้น
    เรียกได้ว่าเป็น ชุดเครื่องมือสำหรับสร้างภาษา เลย

    • ได้ยินคำพูดแบบนี้บ่อยมาก แต่ในความเป็นจริงนักพัฒนา PL ที่ใช้ Racket สร้างภาษามีไม่มากนัก
      ตอนฉันสอนวิชา PL ก็เคยใช้ Racket แต่นักศึกษาคุ้นกับ Java หรือ Python มากกว่า เลยลำบากกับไวยากรณ์แบบ Lisp
      เพราะงั้นฉันเลยไม่ค่อยแน่ใจว่า Racket เป็นภาษา สำหรับใครกันแน่
  • บล็อกของ Bogdan Popa (defn.io) มีข้อมูลน่าสนใจเกี่ยวกับ Racket อยู่มาก
    ฉันตั้งตารอจะลองใช้ฟีเจอร์เธรดดิ้งใหม่นี้ด้วยตัวเอง

  • ฉันเคยลอง Racket หลายครั้ง แต่ IDE ไม่ค่อยเป็นธรรมชาติและดูแปลก ๆ
    เลยสงสัยว่านี่เป็นการออกแบบที่ตั้งใจไว้ หรือแค่เป็นเพราะยังไม่มีตัวเลือกที่ดีกว่า

    • IDE ไม่ใช่ตัวภาษา
      Racket รองรับ VSCode (Magic Racket, Langserver), Emacs (Racket Mode), Vim และอื่น ๆ ได้ดี
      ดูได้จากเอกสารทางการและรีโพซิทอรี Langserver
      DrRacket ยังมีฟีเจอร์อย่าง macro stepper ที่ IDE อื่นไม่มี จึงยังน่าใช้อยู่
    • ดูการรวมกับ Emacs ที่ยอดเยี่ยมได้ที่ racket-mode.com
  • Racket เป็นภาษาที่สนุกดี
    ที่มหาวิทยาลัยของเราใช้เวอร์ชันเพื่อการศึกษาของ Racket ในวิชา CS ปี 1
    นักศึกษาบางคนเกลียดมัน แต่ก็มีบางคนที่ชอบเงียบ ๆ

    • อยากรู้ว่าชื่อวิชานั้นคืออะไร
    • แต่ส่วนใหญ่บอกว่าพอเรียนจบแล้วจะไม่กลับมาใช้ Racket อีก ซึ่งก็ชวนให้คิดเหมือนกัน