1 คะแนน โดย GN⁺ 4 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ใช้ Ant Silver engine ที่พัฒนาขึ้นเองเพื่อรันแพ็กเกจ npm จริง โดยชูจุดเด่นเรื่องไบนารีเดี่ยวขนาดราว 8.6MB และความเร็วในการเริ่มต้นที่รวดเร็ว
  • ไม่ใช่โครงสร้างที่ครอบ V8·JSC·SpiderMonkey และระบุว่า compat-table 100% พร้อมรองรับตาม WinterTC รวมถึงสนับสนุน Hono·Elysia·TypeScript·React·Rolldown·Wasm เป็นต้น
  • ในการวัดคอลด์สตาร์ตที่โหลด Hono ลงทะเบียน 2 routes แล้วจบการทำงาน ได้เวลา 5.4ms ซึ่งสั้นกว่า Bun 12.8ms, Deno 24.8ms และ Node.js 31.1ms
  • ติดตั้งแพ็กเกจได้เร็วกว่า npm สูงสุด 40 เท่า และรองรับการรัน TypeScript ได้โดยตรง รวมถึงการเสิร์ฟ fetch export หลักเป็นเซิร์ฟเวอร์ ทำให้ไม่ต้องมีขั้นตอน build เพิ่มหรือ framework adapter
  • มี VM isolation sandbox สำหรับโค้ดที่ไม่น่าเชื่อถือ และมีรีจิสทรีสาธารณะ ants.land ที่เข้ากันได้กับโปรโตคอล npm โดยใช้งานได้บน macOS·Linux ทั้ง arm64 และ x86_64 โดยไม่ต้องมี toolchain เพิ่มเติม

เอนจินของตัวเองและเวิร์กโฟลว์การพัฒนาที่รวดเร็ว

  • Ant เป็น JavaScript runtime ประสิทธิภาพสูง ที่สร้างขึ้นตั้งแต่ต้น และแจกจ่ายในรูปแบบไบนารีเดี่ยวแบบพกพาขนาดประมาณ 8.6MB ที่รวม Ant Silver engine ไว้ภายใน
    • ไม่ใช่ wrapper ที่ทำงานบน V8·JSC·SpiderMonkey
    • ทำได้ 100% บน compat-table และแสดงสถานะเป็น WinterTC Conformant
    • รันระบบนิเวศของ Hono·Elysia·TypeScript·React·Rolldown·WinterTC·Wasm ได้
  • ประสิทธิภาพคอลด์สตาร์ต

    • โหลด Hono ลงทะเบียน 2 routes แล้วจบการทำงาน เพื่อวัดเฉพาะ ต้นทุนการ resolve โมดูลและการ initialize
    • Ant: 5.4ms
    • Bun: 12.8ms
    • Deno: 24.8ms
    • Node.js: 31.1ms
  • การติดตั้งแพ็กเกจ

    • สามารถติดตั้งแพ็กเกจด้วยคำสั่ง ant i hono และในตัวอย่าง การติดตั้ง hono@latest 1 แพ็กเกจเสร็จสิ้นใน 155ms
    • ชูจุดเด่นว่าติดตั้งได้เร็วกว่า npm สูงสุด 40 เท่า และไม่จำเป็นต้องตั้งค่าเครื่องมือจัดการแพ็กเกจแยกต่างหาก
  • เซิร์ฟเวอร์และการรัน TypeScript

    • ให้บริการ fetch export หลักของไฟล์เป็นเซิร์ฟเวอร์ จึงสามารถ รันเฟรมเวิร์กอย่าง Hono ได้โดยไม่ต้องใช้ adapter
      • เมื่อรันด้วย ant server.js ตัวอย่างพื้นฐานจะรับคำขอที่ http://localhost:3000
    • ไฟล์ TypeScript สามารถรันได้โดยตรงด้วย ant app.ts
      • ไม่ต้องปรับ tsconfig และไม่ต้องมี bundler, ไดเรกทอรี dist หรือขั้นตอน tsc && node dist/app.js

การรันแบบแยกส่วนและระบบนิเวศแพ็กเกจ

  • แซนด์บ็อกซ์บน VM

    • ant:sandbox ของ Sandbox ไม่ได้เป็นแค่การตรวจสอบสิทธิ์เท่านั้น แต่รัน JavaScript ที่ไม่น่าเชื่อถือภายใน ขอบเขตการแยกด้วย VM
    • แต่ละแซนด์บ็อกซ์ใช้ KVM หรือ Hypervisor.framework VM ที่เป็นอิสระต่อกัน
    • การเมานต์ระบบไฟล์จะคงเป็นแบบอ่านอย่างเดียว เว้นแต่จะให้สิทธิ์เขียนอย่างชัดเจน
    • เครือข่ายถูกบล็อกทั้งหมดโดยค่าเริ่มต้น และจะส่งต่อเฉพาะพอร์ตที่กำหนดไว้
  • รีจิสทรีแพ็กเกจสาธารณะ

    • ants.land คือ รีจิสทรีแพ็กเกจสาธารณะ สำหรับ Ant
    • ใช้โปรโตคอล npm จึงเข้าถึงได้ไม่เฉพาะจาก Ant แต่รวมถึง npm·Yarn·pnpm·Bun ด้วย
    • สามารถติดตั้งแพ็กเกจได้ทั้งแบบมีสโคปหรือชื่อทั่วไป และใช้งานผ่าน esm.ants.land บนเบราว์เซอร์ได้เช่นกัน
    • ล็อกอินด้วย ant land login และเผยแพร่แพ็กเกจด้วย ant land publish
    • ข้อมูลของรีจิสทรีมีคะแนน 0~100 ที่สะท้อนเอกสาร, ใบอนุญาต และความเข้ากันได้
    • รองรับ arm64 และ x86_64 บน macOS และ Linux โดยไม่ต้องใช้ toolchain เพิ่มเติม

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

 
GN⁺ 4 시간 전
ความคิดเห็นบน Hacker News
  • ผมเขียนโค้ดด้วย AI ทั้งวันทุกวัน แต่คิดว่า ประเด็นนี้ ที่ถูกหยิบยกขึ้นมาเมื่อเดือนมีนาคมที่ผ่านมาควรถูกพูดถึงให้ชัด
    ต่อให้ภายหลังจะเขียนโค้ดใหม่แล้วก็ตาม การบอกว่า “ทำเองตั้งแต่ศูนย์” ก็ฟังขัดหูอยู่บ้าง เพราะ โค้ดเบส AGPL เดิมเป็นส่วนสำคัญของงานช่วงแรก
    จากเธรดนั้น ดูเหมือนว่าหลังจากทิ้งเวอร์ชันเก่าไปแล้ว ผู้สร้างต้นฉบับก็ไม่ได้ติดใจมากนัก และโค้ดปัจจุบันมีรูปร่างและโครงสร้างต่างออกไป จึงดูเหมือนถูกเขียนใหม่จริง ๆ โดยรวมแล้วผมชอบงานนี้มาก ขอให้ทำต่อไป แต่ทุกคนควรระมัดระวัง

    • แต่ บทความนี้ ดูไม่เหมือนบทความที่เขียนโดยคนที่ลงมือสร้างเอนจิน JavaScript เอง
      มันให้ความรู้สึกเหมือนเอาประวัติ Git ของ LLM ที่ดูเหมือนคัดโค้ดจากเอนจิน JavaScript อื่นมา แล้วให้ LLM อีกตัวช่วยเขียนเป็นบล็อกโพสต์ จนเข้าใจยากว่าเกิดอะไรขึ้น และ ยิ่งทำให้เชื่อถือโปรเจกต์ได้ยากขึ้น
    • ประเด็นนั้นอ้างถึง โค้ดเมื่อเดือนธันวาคม 2025 ซึ่งเป็นช่วงที่โปรเจกต์ต่างจากตอนนี้โดยสิ้นเชิง
      ราวเดือนกุมภาพันธ์ เราแทบจะลบโค้ดเบสเดิมทิ้งและออกแบบระบบใหม่ตั้งแต่ศูนย์ให้เชื่อถือได้กว่ามาก ตอนนั้นเรารู้ว่าโค้ดแทบทั้งหมดเป็นผลลัพธ์จาก AI คุณภาพต่ำ แต่ไม่ใช่ลำดับความสำคัญสูงสุด และตอนนี้เราควบคุมไม่ให้โค้ดใดผ่านเข้ามาได้หากยังไม่ผ่านการตรวจทานและทดสอบ
  • มี Apache Ant อยู่แล้ว ทำไมถึงตั้งชื่อว่า Ant แทนที่จะเป็น “Antjs” หรือ “Ant.js” ก็ไม่เข้าใจ: https://ant.apache.org

    • ในอีโคซิสเต็ม JavaScript ก็มี Ant Design ซึ่งเป็นโปรเจกต์ใหญ่ที่ใช้ชื่อนี้อยู่แล้ว: https://ant.design/
    • ถ้าอยากทำให้คนที่เขียนโค้ดมาหลายสิบปีรู้สึกแย่ตั้งแต่แรกเห็น ก็คงเลือกชื่อ Ant นี่แหละ
    • ตอนที่ James ส่งต่อ Apache Ant ให้ ผมเป็นผู้ใช้และผู้มีส่วนร่วมคนแรกนอก Sun Microsystems แต่ผมไม่ติดใจเลยถ้าคนอื่นจะใช้ชื่อเดียวกัน
    • ผมนึกว่าเป็นเฟรมเวิร์กจาก Ant Group ของ Alibaba เพราะ Ant Design ก็มาจากที่นั่นเหมือนกัน
  • กระบวนการสร้างเวอร์ชันแรกในหนึ่งเดือนอยู่ใน บทความแรก และกระบวนการต่อมาอีกไม่กี่เดือนอยู่ใน บทความที่สอง
    ผมไม่รู้ว่าการสร้างรันไทม์และอีโคซิสเต็มใหม่ตั้งแต่ศูนย์จะคุ้มค่าในเชิงเศรษฐกิจหรือไม่ แต่ดูเหมือนว่าเราได้เข้าสู่ยุคที่ นักพัฒนาคนเดียว สามารถสร้างซอฟต์แวร์ที่ในอดีตต้องใช้ทั้งทีมได้แล้ว และนี่น่าจะเป็นแค่จุดเริ่มต้น

    • มีการระบุชัดว่า “เอนจิน Ant Silver สร้างขึ้นเอง”
    • ถ้าเป็นแค่ LLM พ่นโค้ดที่เรียนรู้มาจากข้อมูลฝึก ก็ไม่ได้ชวนประทับใจเท่าไร
      ผมอยากเห็นนักพัฒนาเดี่ยวสร้างซอฟต์แวร์ใหม่ที่แม้แต่ทีมในอดีตก็ยังสร้างไม่ได้ ผมเป็นมิตรกับ AI มาก แต่เริ่มเบื่อกับ การโปรโมตเกินจริง ที่ไม่จบไม่สิ้นแล้ว
  • เคยแซวว่า CLI ant ของ Anthropic ไม่สนใจ Apache ant แล้วตอนนี้ยังมี ant ของ JavaScript โผล่มาอีก

    • นึกว่ามีแค่ผมที่ยังจำ Apache Ant ได้เสียอีก ชื่อเริ่มจะหมดจริง ๆ แต่ Ant เคยเป็น เครื่องมือพื้นฐาน ที่ทรงอิทธิพลมาก
    • ผมยังไม่เคยเห็นใครใช้ CLI ant ของ Anthropic เลยสักคน
  • ผมไม่ได้รู้ลึกเรื่องอีโคซิสเต็มหรือรันไทม์ JavaScript มากนัก แต่ค่อนข้างแปลกใจที่โปรเจกต์นี้อ้างทั้งขนาดเล็กกว่า สตาร์ทเร็วกว่า มี sandboxing และประสิทธิภาพแข่งขันได้
    อยากรู้ว่า อินไซต์หลักหรือทางเลือกเชิงออกแบบ ที่ทำให้ได้ข้อดีเหล่านี้เหนือสแต็ก JavaScript ที่เติบโตเต็มที่และปรับแต่งมาสูงแล้วคืออะไร หรือมีการเดิมพันทางเทคนิคครั้งใหญ่ตรงไหน

    • อย่างที่พูดถึงในส่วนอื่นของเธรด โปรเจกต์นี้ดูเหมือนเป็นการ ใช้ LLM เขียน Elk ใหม่ ซึ่งเริ่มมาตั้งแต่ปี 2019: https://github.com/cesanta/elk
    • Deno มีแทบทุกฟีเจอร์ที่เห็นในที่นี้อยู่แล้ว ทั้งยังเป็นโปรเจกต์ที่โตเต็มที่และจริงจัง เขียนขึ้นก่อนยุค LLM และมีทีมแข็งแรงหนุนหลัง
      ถึงจะไม่ใช่ตัวที่เร็วที่สุด แต่คงยากที่จะนำรันไทม์ใหม่มาใช้เพียงเพราะ “เร็วกว่า X” ทางเลือกเชิงออกแบบของโปรเจกต์นี้ดูเหมือนเป็นผลจากการที่ Claude หรือ Codex คัดลอกโค้ดเบส Elk ไปเป็นส่วนใหญ่
  • ผมเข้าใจเรื่องรันไทม์กับเอนจิน และการหารายได้ผ่าน Colony แต่ไม่แน่ใจว่าจำเป็นต้องมี registry แยก, package manager แยก, Ant Desktop, sandbox และ treatjs ที่ยังไม่รู้แน่ชัดว่าเป็นอะไรกันแน่ด้วยหรือไม่
    ถ้าเป็นรันไทม์ JavaScript ผมอยากให้ทำ เรื่องเดียวคือรัน JavaScript ให้ดี แต่สงสัยว่าทำไมทุกคนถึงมุ่งไปเป็นกล่องเครื่องมือแบบครบวงจร และโปรเจกต์นี้ก็ดูซับซ้อนตั้งแต่ตอนนี้แล้ว

  • แม้จะบอกว่า “ความเร็วใกล้เคียง V8” แต่ใน benchmark ของ zoo.js ดูเหมือนยังห่างไกลมาก: https://zoo.js.org/
    ถ้าประสิทธิภาพไม่ได้ดีขึ้นอย่างมากหลังวันที่ 10 กุมภาพันธ์ 2026 คำพูดนี้ก็ไม่ถูกต้อง

    • หลังเดือนกุมภาพันธ์ เราแทบเขียนเอนจินใหม่ทั้งหมด ประสิทธิภาพจึงดีขึ้นมาก
      ตอนนั้นส่วนใหญ่ยังทำงานแบบ interpreter และยังขาดการทำงานของ JIT หลายส่วน เร็ว ๆ นี้จะใส่ benchmark เข้าไปใน nightly build ด้วย
  • สิ่งแรกที่สะดุดตาคือ sandboxing ผมไม่เข้าใจว่าทำไม Node กับ npm ถึงไม่ให้สิ่งนี้มาเป็นค่าเริ่มต้น เพราะมันน่าจะช่วยลดเวิร์มและการโจมตีซัพพลายเชนได้มาก

    • จากคำอธิบายด้านล่างของหน้า คำว่า VM ใน “VM-isolated sandbox” ไม่ได้หมายถึงเครื่องเสมือนของ JavaScript แต่หมายถึง hypervisor
      ถ้ากำลังรันอยู่ในเครื่องเสมือนอยู่แล้วและต้องใช้ nested virtualization ก็ยังไม่แน่ใจด้วยซ้ำว่าจะรองรับไหม และดูไม่น่าจะเร็วหรือมีประสิทธิภาพนัก
    • Deno มีฟีเจอร์นั้นอยู่แล้ว ผมไม่ใช่คนในโปรเจกต์ แค่เป็นผู้ใช้ที่พอใจกับมัน
  • อยากรู้ว่า ฟอนต์ serif ที่ใช้ในเว็บไซต์คืออะไร ดูเหมือนจะเปลี่ยนชื่อเป็น ant_serif แล้วลบตัวระบุอื่น ๆ ออกหมด แต่หน้าตาดีทีเดียว

    • นี่ดูเหมือนเป็นรูปแบบที่ผู้สร้างทำซ้ำ ๆ นั่นคือ ขโมยมาใช้
  • มี benchmark สำหรับ cold start แล้ว แต่สงสัยว่าทำไมไม่มีข้อมูล benchmark ประสิทธิภาพตอนรัน เทียบกับ Node, Deno, Bun, QuickJS และอื่น ๆ