Try WebAssembly (Wasm)

เรื่องของ Wasm หรือ WebAssembly ด้านล่างนี้เขียนเมื่อปี 2017 ที่ peerasan.blogspot.com เลยเอามาไว้ที่นี่ด้วย

ตอนแรกจะลอง ports เอา cu writer (เวิร์ดจุฬา) มาวิ่งผ่าน Web Browser แต่นึกขึ้นได้ว่า cu writer วิ่งอยู่บน DOS งั้นลอง ports DOS แล้วเอามาลง cu writer น่าจะได้นะ เมื่อ ports DOS มาได้ Windows 3.11, Windows 95 และเกมส์บน DOS ก็น่าจะได้เหมือนกัน
แต่ว่า #DOS นั้นเป็นของลิขสิทธิ์ Microsoft, ต่อมา IBM พัฒนาโปรแกรมจำลอง DOS อีกที เรียกว่า #DOSBox และปล่อยเป็น GPL เลยเอา dosbox เนี่ยแหล่ะ มา compile ได้ output ขนาดใหญ่กว่า 26 MB ไฟล์ที่น่าสนใจคือ dosbox.js มีขนาด 5.3 MB และ dosbox.html.mem ที่ขนาด 309 K

Javascript
- dosbox.js 5.3MB
WebAssembly
- dosbox.js 578KB
- dosbox.o 70KB (binary)
- dosbox.wasm 3MB (binary)
ประโยชน์ของ WASM
- สามารถ port เอา C/C++ หรือภาษาอื่นๆ (ที่จะมามาเพิ่มเติม) แปลงมาเป็น JavaScript ได้ เช่นเอา library CV, GD มาเป็น wasm แล้วเรียกใช้งานผ่าน JavaScript ก็จะทำให้เพิ่มประสิทธิภาพในประมวลผลภาพได้
- reuse เราสามารถเอาของที่มีอยู่แล้ว มาใช้ร่วมกับ JavaScript ได้ Plugin ที่ต้องติดตั้งบน Browser จะค่อยๆ ลดลง (จนไม่ใช้ในที่สุด) ยกตัวอย่าง Game Engine อย่าง #Unity และ #Unreal ก็ port มา wasm ได้
ก็จะเป็นทางเลือกหนึ่ง - Write one run any browser ??
ลองเล่นดู
DOSBOX-JavaScript version
DOSBOX-WebAssembly version
ป.ล. มี project อีกตัว ผมเพิ่งรู้จัก #jsdosbox ก็ทำเหมือนกันเลย แต่เข้าใจว่าเป็น JavaScript bytecode ส่วนผม port มาทั้งสองแบบ ทั้งที่เป็น js และ wasm