2 คะแนน โดย lifthrasiir 20 일 전 | 2 ความคิดเห็น | แชร์ทาง WhatsApp

ไม่ได้ทำไลบรารี C มาพักใหญ่แล้วครับ/ค่ะ คราวนี้เลยลองทำขึ้นมาอีกตัว ซึ่งตามตัวอักษรเลยคือเป็นอินเทอร์พรีเตอร์ WebAssembly ที่ทุกอย่างรวมอยู่ในไฟล์เฮดเดอร์ C เพียงไฟล์เดียว แน่นอนว่าไม่ได้มีแค่อินเทอร์พรีเตอร์เปล่า ๆ เท่านั้น แต่ยังมีอีกหลายอย่างดังนี้

  • รองรับสเปก WebAssembly 3.0 ครบ 100% รวมถึงพวก GC และฟีเจอร์อื่น ๆ ด้วย
  • ใน WebAssembly มีตัวเลือกที่เรียกว่า deterministic profile ซึ่งทำให้ได้ผลลัพธ์เหมือนกันในทุกสภาพแวดล้อม และตัวเลือกนี้ก็ถูกนำมาใช้งานด้วย ดังนั้นจึงมีประโยชน์สำหรับการให้ผลลัพธ์ที่ทำซ้ำได้
  • มีการปรับแต่งประสิทธิภาพเฉพาะสถาปัตยกรรมสำหรับ x86-64 และ AArch64 NEON
  • มีฟังก์ชันที่จำเป็นสำหรับการทำ sandbox ให้กับโค้ดที่ไม่น่าเชื่อถือ รองรับทั้ง fuel metering ที่เผา fuel ไปตามการรันคำสั่งและหยุดเมื่อ fuel หมด การขัดจังหวะการรันหลังเวลาที่กำหนด และการควบคุมการใช้หน่วยความจำ
  • API ถูกออกแบบให้สามารถกลับมารันต่อได้แม้จะหยุดระหว่างการทำงานด้วยเหตุผลเหล่านี้
  • สามารถสร้างโมดูล WebAssembly ด้วยโค้ดล้วน ๆ หรือเชื่อมหลายโมดูลเข้ากับโมดูลเดียวได้
  • สามารถจำกัดฟีเจอร์ได้ทั้งตอนคอมไพล์ (ทำให้โค้ดที่ถูกคอมไพล์มีขนาดเล็กลง) และตอนรันไทม์
  • ถูกออกแบบโดยมีเป้าหมายให้ ABI คงที่ตั้งแต่แรก โครงสร้างข้อมูลสามารถจัดสรรบน C stack ได้ แต่มีการตรึงเลย์เอาต์ไว้ล่วงหน้าเพื่อไม่ให้ ABI พังแม้เวอร์ชันจะเพิ่มขึ้น
  • นอกจากนี้ยังมีการทดสอบจำนวนมากเกินพอ และทำ fuzz testing อย่างจริงจังด้วย (จริง ๆ แล้วตอนนี้ fuzzer ก็ยังรันอยู่...)

เดิมทีตั้งใจให้มันเป็นส่วนหนึ่งของอีกโปรเจกต์หนึ่ง เลยไม่ได้คิดว่าจะทำจริงจังขนาดนี้ แต่พอจะรันทดสอบของ reference implementation ของ WebAssembly (ที่เรียกว่า spectest) ก็จำเป็นต้องทำให้ครบทั้งหมดอยู่ดี... สุดท้ายเลยกลายเป็นรองรับครบ 100% ไปโดยปริยาย ได้ยังไงกันนะถึงกลายมาเป็นแบบนี้

ตามกระแสช่วงนี้ โค้ดในช่วงแรกเขียนด้วย Gemini CLI ส่วนช่วงกลางหลังจากนั้นใช้ Claude Code และบางครั้งก็ใช้ Codex และในด้านการวางแผนนั้นใช้ Codex เป็นหลัก สำหรับผม/ดิฉันแล้ว นี่ก็เป็นโปรเจกต์ที่พิสูจน์ได้เหมือนกันว่า coding agent ถ้าคุมทิศทางดี ๆ ก็สามารถทำงาน system programming แบบฮาร์ดคอร์ได้ค่อนข้างดี ผม/ดิฉันยังอยากให้มันเป็นตัวอย่างโต้แย้งต่อความเห็นที่ว่าการ vibe coding อาจได้ของที่ดูเหมือนใช้ได้ แต่รายละเอียดภายในกลับเละเทะด้วย

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

 
ipeng 20 일 전

ดูเหมือนว่าถ้าสเปกที่ใช้ทดสอบชัดเจน แนวทางที่วางเวิร์กโฟลว์ด้วยโค้ดดิ้งเอเจนต์แล้วค่อย ๆ ปรับให้ลู่เข้าหากันจะได้ผลดีนะครับ/ค่ะ ทำให้นึกถึงกรณีอย่าง vinext กับ pretext เหมือนกัน

อีกเรื่องหนึ่ง ไม่ทราบว่าช่วยตรวจสอบการเสิร์ฟ CSS ของ journal ให้หน่อยได้ไหมครับ/คะ...? แม้เวลาจะผ่านมาพอสมควรแล้ว แต่ก็ยังมีบทความดี ๆ หลายชิ้นที่อยากแนะนำให้คนรอบตัวอ่าน พอเข้าใช้งานผ่านเดสก์ท็อปแล้ว CSS กลับไม่โหลดครับ/ค่ะ ฮือๆ

 
lifthrasiir 20 일 전

เซิร์ฟเวอร์ที่ใช้เสิร์ฟ css เสียแล้ว T_T ต้องขออภัยด้วย แต่ในช่วงนี้รบกวนใช้ Wayback Machine ไปก่อน...