1 คะแนน โดย GN⁺ 2025-01-25 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

อัปเดต Bun 1.2

  • Bun 1.2 ปรับปรุงความเข้ากันได้กับ Node.js อย่างมาก และมาพร้อม API สำหรับ S3 object storage และไคลเอนต์ Postgres แบบบิลต์อิน ขณะนี้ bun install ใช้ bun.lock แบบข้อความแล้ว และยังเพิ่มประสิทธิภาพของ Express ได้ 3 เท่า

ความเข้ากันได้กับ Node.js

  • Bun ถูกออกแบบมาให้เป็นทางเลือกแทน Node.js และได้ปรับปรุงความเข้ากันได้โดยการรันชุดทดสอบของ Node.js
  • แก้ไขความแตกต่างของ API ภายในและข้อความแสดงข้อผิดพลาด จนผ่านการทดสอบของโมดูล Node.js ได้มากกว่า 90%

เซิร์ฟเวอร์ HTTP/2 และโมดูลอื่น ๆ

  • สามารถใช้ node:http2 เพื่อสร้างเซิร์ฟเวอร์ HTTP/2 ได้ ซึ่งจำเป็นต่อการทำงานของเซิร์ฟเวอร์ gRPC ด้วย
  • สามารถใช้ node:dgram เพื่อ bind และเชื่อมต่อ UDP socket ได้
  • สามารถใช้ node:cluster เพื่อสร้าง Bun หลายอินสแตนซ์และประมวลผลงานแบบขนานได้
  • เขียนโมดูล node:zlib ใหม่ด้วย native code ทำให้ประสิทธิภาพดีขึ้น 2 เท่า

การรองรับ S3

  • Bun 1.2 มี S3 API ในตัว จึงสามารถอ่าน เขียน และลบไฟล์ได้
  • ไคลเอนต์ S3 ของ Bun เขียนด้วย native code และเร็วกว่า Node.js 5 เท่า

การรองรับ Postgres

  • สามารถใช้ Bun.sql เพื่อรัน SQL query ได้ และช่วยป้องกัน SQL injection
  • Bun.sql เร็วกว่าไคลเอนต์ Postgres อื่น ๆ 50%

ตัวจัดการแพ็กเกจ

  • ตอนนี้ bun install ใช้ bun.lock แบบข้อความ ทำให้เร็วขึ้นและลด merge conflict
  • สามารถใช้คอมเมนต์และเครื่องหมายจุลภาคท้ายรายการใน package.json ได้
  • สามารถอ่านไฟล์ .npmrc เพื่อตั้งค่า npm registry ได้

ตัวรันทดสอบ

  • Bun มีตัวรันทดสอบในตัว ทำให้เขียนและรันทดสอบได้ง่าย

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

 
GN⁺ 2025-01-25
ความคิดเห็นจาก Hacker News
  • ผู้ใช้บางคนตั้งคำถามเกี่ยวกับการรวมไลบรารีภายนอกเข้าไว้ในไลบรารีหลัก และมองว่าการคงไว้เป็นไลบรารีเสริมแบบเลือกใช้จะดีกว่า

    • รันไทม์ควรระมัดระวังอย่างมากกับการใส่สิ่งต่าง ๆ ลงใน standard library เพราะสิ่งที่มีอยู่แล้วอาจทำให้โปรเจกต์ซับซ้อนขึ้นได้
  • มีความเห็นว่าประสบการณ์การใช้งาน Bun นั้นดีมาก

    • การตั้งค่า TypeScript, Jest, React, Webpack นั้นยุ่งยาก แต่ Bun เรียบง่ายและมีประสิทธิภาพ
    • แม้จะยังพูดถึงการรวมไลบรารีภายนอกไม่ได้มากนัก แต่โดยทั่วไป Bun กำลังโฟกัสกับสิ่งที่มีคนร้องขอบ่อย
  • มีความเห็นว่าพฤติกรรมเริ่มต้นนั้นดูเป็นเวทมนตร์เกินไป

    • ตัวอย่างเช่น การให้ presigned URL กับผู้ใช้แทนการดาวน์โหลดไฟล์ S3 เองเป็นตัวเลือกที่น่าประหลาดใจ
    • และยังไม่ชัดเจนว่าจะปิดพฤติกรรมนี้ได้อย่างไร
  • มีความเห็นว่าฟีเจอร์ที่มีมาให้ในตัวสร้างความแตกต่างอย่างมาก

    • ชอบที่ Web API ถูกรวมมาให้โดยปริยายในรันไทม์ V8 และ Webkit
    • แต่ S3 อาจไปไกลเกินไป แม้ SQL driver จะพอเข้าใจได้ แต่ก็ควรคิดให้ดีว่าจะรวมอะไรไว้ถึงระดับไหน
    • การเพิ่ม API ที่อ่อนไหวอาจทำให้พลาดประเด็นด้านความปลอดภัยไปได้
  • มีความเห็นว่าลูกค้ารายหนึ่งใช้งาน Bun ในโปรดักชันอยู่แล้ว และประสบการณ์ฝั่งนักพัฒนานั้นดีมาก

    • Developer experience อาจมีบทบาทอย่างมากในระยะยาว
    • หากโค้ดเบสหรือกระบวนการทำงานไม่ดี ก็อาจเสียบุคลากรที่เก่ง ๆ ไปได้
  • มีความเห็นว่ารายการฟีเจอร์ของ Bun ยาวมากจนทำให้สงสัยว่าทุกอย่างจะแข็งแรงและไร้บั๊กจริงหรือไม่

    • ในมุมมองการบริหารโปรเจกต์ การใช้เวลากับการรองรับ S3 ดูไม่ค่อยสมเหตุสมผล
    • การดึงลูกค้า Next.js น่าจะเป็นแนวทางที่ช่วยให้เติบโตได้มากกว่า
  • Bun 1.2 เพิ่มการรองรับ HTML import

    • สามารถแทนที่ฟรอนต์เอนด์ toolchain ทั้งชุดได้ด้วยคำสั่ง import เพียงบรรทัดเดียว
    • มีความเห็นว่านี่เป็นฟีเจอร์ที่น่าทึ่งและยอดเยี่ยมมาก
  • มีความเห็นว่าการใช้ Bun ครั้งแรกเป็นประสบการณ์ที่น่าทึ่งมาก

    • การตั้งค่า Webpack หรือ Vite นั้นยุ่งยาก แต่ Bun ใช้งานได้ทันที
    • ปกติแล้วสคริปต์เล็ก ๆ ไม่คุ้มค่าที่จะตั้งค่าอะไรมากมาย แต่ Bun ทำงานได้ยอดเยี่ยม
  • มีความเห็นว่าเดิมคิดว่ามันจะล้มเหลวในฐานะทางเลือกของ Node.js แต่หลังจากได้ลองใช้ Bun แล้วกลับพอใจมาก

    • สามารถสร้างสคริปต์แบบ standalone เพื่อจัดการ TypeScript และอัปเดตฐานข้อมูล SQLite ได้อย่างง่ายดาย
    • ยังได้ลองใช้กับโปรเจกต์ JS/TypeScript ใหม่ด้วย และทุกอย่างทำงานได้รวดเร็ว
  • มีความเห็นว่ากระบวนการประกันคุณภาพค่อนข้างเป็นพิธีการมากกว่าใช้งานจริง

    • ดูเหมือนว่ามีการ merge และ release การเปลี่ยนแปลงทั้งที่ build ยังไม่ผ่าน
    • หากการทดสอบไม่เสถียร ก็จะติดตาม regression ได้ยาก