Erlang/OTP 29.0
(erlang.org)- SSH daemon ปิดใช้งานบริการ shell และ exec เป็นค่าเริ่มต้น ทำให้ผู้ใช้ที่ยืนยันตัวตนแล้วไม่สามารถรันโค้ด Erlang ตามอำเภอใจได้ เว้นแต่จะตั้งค่าไว้โดยชัดเจน
- เมื่อเริ่มต้น SSH daemon ระบบจะไม่เปิดใช้งาน SFTP subsystem เป็นค่าเริ่มต้นอีกต่อไป จึงทำให้ค่าเริ่มต้นด้านความปลอดภัยเข้มงวดยิ่งขึ้น
- มีการเพิ่มแอตทริบิวต์
-unsafeเพื่อใช้ระบุฟังก์ชันที่ไม่ปลอดภัย และคอมไพเลอร์จะสร้างคำเตือนโดยอัตโนมัติเมื่อมีการเรียกใช้ฟังก์ชันที่ Erlang/OTP ทราบอยู่แล้วว่าไม่ปลอดภัยเสมอ xrefสามารถค้นหาการเรียกใช้ฟังก์ชันที่ไม่ปลอดภัยและฟังก์ชันที่ไม่มีเอกสารได้ และการกรองแอตทริบิวต์ignore_xrefก็ถูกเปลี่ยนให้จัดการภายในxrefเอง- ในการตั้งค่าเริ่มต้นของ SSL นั้น x25519mlkem768 กลายเป็นกลุ่มแลกเปลี่ยนกุญแจที่ถูกเลือกเป็นอันดับแรก และอัลกอริทึมแลกเปลี่ยนกุญแจเริ่มต้นของ SSH ก็เปลี่ยนเป็น
mlkem768x25519-sha256ซึ่งรวม ML-KEM-768 และ X25519 เข้าด้วยกัน - ตำแหน่งของไดเรกทอรีทำงานปัจจุบัน
.ในเส้นทางโค้ดเริ่มต้นของระบบ Erlang ถูกย้ายจากลำดับแรกไปอยู่ลำดับสุดท้าย ทำให้ลำดับการโหลดเปลี่ยนไป - จะไม่มีการแจกจ่าย 32-bit Erlang/OTP build สำหรับ Windows อีกต่อไป
- มีการนำ native records ตาม EEP-79 มาใช้งานแล้ว และใน Erlang/OTP 29 ยังถือเป็นฟีเจอร์ทดลอง
- มีการเพิ่ม guard BIF
is_integer/3, multi-value comprehension ตาม EEP 78 และการ bind ตัวแปรภายใน comprehension ผ่านความสามารถcompr_assign - คอมไพเลอร์เพิ่มคำเตือนเริ่มต้นสำหรับ
catch, การส่งออกตัวแปรออกนอก subexpression,and/orและ match alias pattern เช่น{a,B} = {X,Y}พร้อมมีตัวเลือกสำหรับปิดใช้งานแต่ละรายการ - guard test แบบเก่ามีกำหนดจะถูกถอดออกจากภาษาใน Erlang/OTP 30 และคำเตือนเดิมเกี่ยวกับการใช้ obsolete guard จะยังคงมีผลต่อไป
- สามารถใช้
io_ansiเพื่อส่ง ANSI/Virtual Terminal Sequence ไปยังเทอร์มินัลได้ และใช้ct_doctestเพื่อทดสอบตัวอย่างในเอกสารของโมดูล Erlang และไฟล์เอกสาร
1 ความคิดเห็น
ความเห็นจาก Hacker News
การปรับปรุงต่าง ๆ ดูดีไม่น้อย การปิดใช้งาน SSH daemon เป็นค่าเริ่มต้น รวมถึงปิด SFTP เป็นค่าเริ่มต้นด้วย ถือเป็นการเปลี่ยนแปลงที่ดีในแง่ความปลอดภัย
โมดูล io_ansi ก็ดูน่าสนใจมาก ตอนนี้ Erlang ยังไม่ได้มีเรื่องเล่ามากนักในฐานะตัวเลือกที่เหมาะสุดสำหรับการสร้างแอป command line ที่ซับซ้อน แต่ถ้าเข้าไปอยู่ใน standard library แล้วก็น่าจะช่วยได้มากในอนาคต วิธีที่
fwriteทำงานข้ามโหนดได้อย่างเป็นธรรมชาติก็เป็นจุดเด่นแบบที่คาดหวังจาก Erlang พอดีการเพิ่ม Native Records ก็น่าสนใจเหมือนกัน ตอนนี้ใน Elixir จะรู้สึกว่ามีทั้ง record, tuple และ map ปะปนกันไปตามกรณี เลยสงสัยว่าจะถูกนำไปใช้อย่างไรต่อไป แม้ตามที่ EEP บอกไว้ record แบบเดิมคงไม่ถูกเลิกใช้ทั้งหมด แต่ก็ดูเป็นการพัฒนาที่สำคัญ
https://www.erlang.org/doc/apps/ssh/ssh.html
https://www.erlang.org/docs/29/apps/stdlib/io_ansi.html
https://github.com/erlang/eep/pull/81
ตอนนี้ SSH daemon ปิด shell และบริการ exec เป็นค่าเริ่มต้นแล้ว ตามหลัก secure by default ทำให้หากไม่ได้ตั้งค่าไว้อย่างชัดเจน ผู้ใช้ที่ผ่านการยืนยันตัวตนจะไม่สามารถรันโค้ด Erlang ตามอำเภอใจได้
ระบบย่อย SFTP ก็จะไม่ถูกเปิดใช้งานเป็นค่าเริ่มต้นอีกต่อไปเมื่อเริ่ม SSH daemon
เผื่อใครสงสัยว่า OTP ใน Erlang/OTP คืออะไร เดิมทีมันคือชุดของไลบรารีและหลักการที่ช่วยให้สร้างแอปพลิเคชันที่มีความน่าเชื่อถือสูงและทนทานต่อความล้มเหลวได้อย่างเป็นมาตรฐาน สำหรับงานด้านโทรคมนาคม
ไอเดียพื้นฐานอ่านแบบสั้น ๆ ได้จากบทนำของ “OTP Design Principles”
https://www.erlang.org/doc/system/design_principles.html
ถ้าแอป production ของคุณยังต่ำกว่า 29 ก็ควร อัปเดตให้เร็วที่สุดเท่าที่จะทำได้ ไม่ว่าจะเป็นเวอร์ชันนี้หรือแพตช์ล่าสุด เพิ่ง deploy ขึ้น production ไป แล้วระบบสแกนความปลอดภัยอัตโนมัติเจอ CVE ระดับ CRITICAL 2 รายการ พร้อมรายการความเสี่ยงระดับ HIGH อีกหลายรายการที่มีวันที่อยู่ในช่วงกุมภาพันธ์ถึงพฤษภาคม 2026
สงสัยว่ายังมีคนใช้ Erlang กับโปรเจกต์ใหม่อยู่ไหม
รู้ว่าที่นี่มีคนชอบ Elixir เยอะ แต่หมายถึง Erlang ล้วน ๆ
ถ้ายังใช้ Erlang อยู่ อยากรู้ว่าอะไรทำให้ชอบมันมากกว่า Elixir
Elixir ไม่ได้ให้ข้อได้เปรียบเชิงปฏิบัติที่ชัดเจนกับผมเมื่อเทียบกับ Erlang แน่นอนว่ามันอาจมีข้อดี แต่ Erlang เข้ากับวิธีคิดของผมมากกว่า ผมก็อยากลองเรียนรู้หรือขอความช่วยเหลือแบบเป็นกลุ่มสังคมดูเหมือนกัน แต่ยังหาแวดวงที่เหมาะกับตัวเองไม่ค่อยเจอ
มีใครอธิบายสถาปัตยกรรมภายในได้ไหม?
https://blog.stenmans.org/theBeamBook/
สงสัยว่า record จะไปอยู่ตรงไหนใน ecosystem
น่าสนใจดี สงสัยว่าจะมีโลกที่วันหนึ่ง Elixir คอมไพล์ map เป็น native records ไหม
มีใครรู้ไหมว่า WhatsApp ยังใช้ Erlang อยู่หรือเปล่า?
พวกเขาใช้ Erlang มาตั้งแต่ช่วงต้นยุค 2010 และตอนนั้นวงการเทคก็เริ่มรู้กันว่า WhatsApp รองรับผู้ใช้ที่ใช้งานอยู่มากกว่า 400 ล้านคนได้ด้วยวิศวกรราว 30 คน
ตอนนั้นผมติดต่อวิศวกรคนหนึ่งที่นั่น และตอนที่ผมยังอยู่ในสหรัฐฯ เขาก็กรุณาตอบคำถามบางอย่างทางอีเมล สุดท้ายเราได้นั่งดื่มกาแฟกัน และจนถึงตอนนี้ก็ยังติดต่อกันอยู่
เรียกได้ว่า Erlang ยังเป็นส่วนสำคัญของ WhatsApp อยู่จนถึงทุกวันนี้
เพิ่มการรองรับ attribute
-unsafeสินะ ถึงเวลาพอดีที่จะเขียนใหม่เป็น Rust /sไม่รู้จริง ๆ ว่าใครใช้ Erlang บ้าง เคยใช้ Rails แล้วลอง Phoenix ดู แต่รู้สึกว่าทำอะไรให้สำเร็จได้ยากกว่ามาก
ผมไม่เข้าใจความคลั่งไคล้ Phoenix เลย
สำหรับนักพัฒนาเดี่ยว Rails น่าจะเป็นระบบเว็บแอปที่ productive ที่สุดแล้ว LLM ก็เขียนโค้ด Ruby on Rails ได้ดีมาก แม้ corpus สำหรับ Python จะใหญ่กว่ามหาศาล แต่จากประสบการณ์ของผมมันก็ยังเขียนได้ดีกว่า Django มาก
แอปเชิงทดลองผมเขียนด้วย Rails แล้วพอเริ่มนิ่งก็ค่อยเขียนใหม่ด้วย Go ถ้าขอบเขตแอปยังไม่ชัดเจนแล้วเริ่มด้วย Go เลยจะใช้โทเคนมากกว่ามาก แต่กับ Rails มันมีประสิทธิภาพมาก
สมัยนี้ React หรือ Angular ก็ไม่จำเป็นแล้ว ใน Rails ก็ใช้ Hotwire ส่วนใน Go ก็ใช้ HTMX
แม้แต่ฟอรัม Erlang เองก็ยังใช้ Discourse ที่เขียนด้วย Rails
น่าจะลองเปิดมุมมองให้กว้างขึ้นหน่อย
method_missingและต้องเสียเวลาเพิ่มเพื่อทำความเข้าใจว่ามันทำงานอย่างไรElixir/Phoenix ชัดเจนกว่ามากในจุดนั้น เลยทำให้การดูแลรักษาระยะยาว หรือก็คือหลังจากผ่านสัปดาห์แรกไปแล้ว สะดวกกว่ามาก ไม่มี state ซ่อนอยู่ ไม่ต้องไล่หาเลยว่า
ModuleName.method(params)มาจากไหน และไม่ต้องตั้งค่าอะไรเป็นพิเศษเพื่อรันเมธอดนั้น แค่ส่งอาร์กิวเมนต์ที่ถูกต้องก็พอ ข้อเสียคือไลบรารีแพ็กเกจสำเร็จรูปมีขนาดเล็กกว่าเท่านั้นEcto ก็ไม่เลว
Claude Code เขียนโค้ด Elixir ได้ดีมาก
ที่น่าขำคือไม่ว่าจะมี LLM หรือไม่มี คุณก็จะ productive กว่าถ้าใช้เทคโนโลยีที่ตัวเองรู้จักอยู่แล้ว