Supabase ประกาศฟีเจอร์ใหม่ในส่วนขยาย Wrappers สำหรับ PostgreSQL ให้สามารถดึงโมดูล WASM ไปรันในตัวเองได้ เปิดทางให้นักพัฒนาสามารถเชื่อมข้อมูลของตัวเองให้กลายเป็นตารางใน PostgreSQL
มีนักพัฒนาซอฟต์แวร์ที่ใช้ชื่อ d07RiV บน GitHub สามารถแปลงไฟล์ของเกม Diablo 1 มาเล่นผ่านเว็บเบราว์เซอร์ได้แล้ว โดยแปลงโค้ดไบนารีของเกม Diablo 1 ที่ออกในปี 1996 มาเป็น WebAssembly และ JavaScript บางส่วน
โครงการนี้เป็นการพัฒนาต่อยอดจากโครงการ Devilution ที่มีอยู่ก่อนแล้ว ซึ่งเป็นการนำไฟล์เกม Diablo 1 มารันบนพีซีสมัยใหม่
โครงการ PGlite ฐานข้อมูล PostgreSQL ตัวเต็มที่รันบน PostgreSQL ออกเวอร์ชั่น 0.2 พร้อมกับความสามารถในการโหลดส่วนขยายเพิ่มเติม เช่น pgvector สำหรับการเก็บข้อมูลในกลุ่มงานปัญญาประดิษฐ์
โครงการนี้พัฒนาโดย ElectricSQL ผู้พัฒนาบริการซิงก์ข้อมูลข้ามฐานข้อมูล PostgreSQL จึงมีฟีเจอร์ในการซิงก์ข้อมูลจากเซิร์ฟเวอร์เข้าสู่เบราว์เซอร์ด้วย การเรียกใช้งานเบื้องต้นนั้นมองเห็นเป็นไลบรารีไคลเอนต์อย่างเดียว แต่สามารถใช้งานใส่ข้อมูลและคิวรีได้ทันที แม้ไม่ได้คอนฟิกการเชื่อมต่อเซิร์ฟเวอร์ใดๆ เลยก็ตาม หากต้องการเก็บข้อมูลระยะยาวสามารถใช้ IndexedDB ในเบราว์เซอร์ก็ได้
Google Sheets ปรับปรุงการทำงานบนเดสก์ท็อปใหม่ โดยการคำนวณค่าในตารางจะเร็วขึ้น 2 เท่า จากการแปลงโค้ดส่วนคำนวณมาเป็น WebAssembly Garbage Collection (WasmGC) แทนการรันเป็น JavaScript แบบเดิม
แรกสุดนั้น เอนจินคำนวณของ Google Sheets ทำงานที่ฝั่งเซิร์ฟเวอร์ เขียนด้วย Java และเริ่มใช้ในปี 2006 จากนั้นเริ่มปรับมาคำนวณที่ฝั่งเบราว์เซอร์แทนในปี 2013 โดยช่วงแรกทำผ่าน Google Web Toolkit (GWT) ช่วงหลังเปลี่ยนมาใช้ Java ช่วยผ่าน Java to Closure JavaScript transpiler (J2CL)
กูเกิลออก Flutter 3.22 และ Dart 3.4 สยบข่าวลือว่าจะเลิกทำโครงการเหล่านี้ หลังมีข่าวปลดพนักงานบางส่วนในทีม Flutter และ Dart ออก
ในโพสต์ของกูเกิลเขียนชัดเจนว่า "We remain committed to providing a strong language and framework pairing" แปลว่าจะยังทำ Flutter และ Dart ต่อไป
ระบบส่วนขยาย (Extension) ของ VS Code เขียนด้วย TypeScript/JavaScript แต่ช่วงหลังไมโครซอฟท์ก็เริ่มรองรับ WebAssembly (WASM) เพื่อให้รันไบนารีที่คอมไพล์จากภาษาอื่น เช่น C/C++ หรือ Rust ได้ด้วย ตัวอย่างการใช้งานคือ Visual Studio Code for Education ที่ฝังไบนารีของ Python interpreter (CPython ซึ่งเขียนด้วย C แล้วแปลงเป็น WASM) เพื่อให้ประมวลผลโค้ดภาษา Python บนเว็บได้
WinterJS รันไทม์จาวาสคริปต์ที่พัฒนาต่อจาก SpiderMonkey และเขียนด้วย Rust เพิ่งประกาศเปิดตัวมาเมื่อสี่เดือนที่แล้ว ตอนนี้โครงการเข้าสู่เวอร์ชั่น 1.0 เรียบร้อยแล้ว เนื่องจากทำ API เข้ากันได้กับมาตรฐาน WinterCG และยังทำ API ของ Cloudflare
ในแง่ของประสิทธิภาพ WinterJS รันแบบเนทีฟได้ที่ระดับ 150k req/s เร็วกว่า Bun และ NodeJS ชัดเจน แต่หากคอมไพล์เป็น WASM นั้นประสิทธิภาพยังได้เพียง 20k req/s เท่านั้น
ไลบรารี urllib3 ออกเวอร์ชั่น 2.2.0 เพิ่มฟีเจอร์สำคัญคือการรองรับการใช้งานบน Pyodide รันไทม์ภาษาไพธอนสำหรับ WASM ซึ่งทำให้สามารถรันโค้ดไพธอนได้บนเบราว์เซอร์หรือ Node.js
urllib3 เป็นไลบรารีที่พัฒนาอิสระ แข่งกับโมดูล urllib ที่เป็นไลบรารีมาตรฐานในตัวไพธอนเอง และมันเป็นไบรารีเบื้องหลังโมดูล requests ที่ได้รับความนิยมสูงเนื่องจากออกแบบ API ให้อ่านได้ง่าย
โครงการ Wasmer ประกาศนำ SpiderMonkey มาทำโครงการ WinterJS รันไทม์สำหรับรัน Service Worker แบบเดียวกับ Cloudflare Workers, Deno Deploy, หรือ Vercel โดยอาศัยการอิมพลีเมนต์ API จากมาตรฐาน wintercg
เรื่องจาก Wasmer ต้องการให้โค้ดรันผ่าน WASM ได้ด้วย จึงต้องเลือกใช้เทคโนโลยีที่รองรับการคอมไพล์ไปยัง WASM ได้ด้วย ตัวโค้ดหลักของ WinterJS ใช้ SpiderMonkey ผ่านทาง Rust API ของโครงการ spiderfire
ตัวโครงการ WinterJS สามารถรันผ่านคำสั่ง wasmer
ตามปกติ หรือจะรันแบบเนทีฟผ่านทางคำสั่ง cargo
ของ Rust ก็ได้
ที่มา - Wasmer
กูเกิลและ JetBrains โชว์การนำภาษา Kotlin มาเขียนเว็บ โดยคอมไพล์เป็น WebAssembly เพื่อให้รันในเบราว์เซอร์ได้ มีประสิทธิภาพเกือบเทียบเท่าเนทีฟ
ในยุคสมัยที่โลกมี 3 แพลตฟอร์มใหญ่คือ Android, iOS และเว็บ การมีแอพ 3 เวอร์ชันเป็นภาระในการดูแล จึงมีคนหาวิธีสร้างแอพด้วยภาษา-เครื่องมือเดียวกันกับทุกแพลตฟอร์ม (ด้วยวิธีการทางเทคนิคที่ต่างกัน แต่เป้าหมายเดียวกัน) เช่น .NET/Xamarin (C#) หรือ Flutter (Dart)
Wasm Labs กลุ่มพัฒนาการใช้งาน WebAssembly ของ VMware ปล่อย Python ตัวเต็มที่คอมไพล์ให้ทำงานกับ WebAssembly ได้ทั้งชุด เปิดทางให้นักพัฒนาสามารถย้ายแอปไปรันบนรันไทม์ต่างๆ ที่รองรับ WASM ได้ทุกที่
การคอมไพล์ Python เพื่อรันบน WASM นั้นมีมานานแล้ว โดยหลายทีมงานจากหลายบริษัท แต่โครงการของ VMware ครั้งนี้คอมไพล์ตัว Python พร้อมกับไลบรารีมาตรฐานทั้งชุดรวมถึง SQLite ทำให้รองรับแอปพลิเคชั่นที่เป็น Python ได้ค่อนข้างครบ
ทาง Wasm Labs พยายามพอร์ตรันไทม์ภาษาต่างๆ มายัง WASM มานาน ก่อนหน้านี้ภาษาที่พอร์ตมาแล้วได้แก่ PHP และ Ruby นอกจากนี้ทางโครงการยังสัญญาว่าจะคอมไพล์ Python เวอร์ชั่นต่อๆ ไปมาใช้ใน WASM เรื่อยๆ
มาตรฐาน WebSQL เคยได้รับความสนใจช่วงสิบปีที่แล้ว ที่หลายคนอยากให้เบราว์เซอร์มีฐานข้อมูล SQL ใช้งานได้ในตัวโดยไม่ต้องเชื่อมต่อเซิร์ฟเวอร์ แต่มาตรฐานนี้ก็ไม่ได้รับความนิยมนักทำให้เบราว์เซอร์หยุดซัพพอร์ตกันไปโดย Chrome เองก็ประกาศเตรียมถอด WebSQL ตั้งแต่ Chrome 105 เมื่อปีที่แล้วแต่ยังสามารถเปิด policy กลับมาใช้งานได้ ล่าสุดกูเกิลโชว์ให้ดูว่านักพัฒนาที่ต้องการใช้ SQL ในเบราว์เซอร์ตอนนี้สามารถใช้งานได้ด้วยเทคโนโลยี WebAssembly และ OPFS
เมื่อวันที่ 25 ธันวาคม 2565 กลุ่มผู้พัฒนาได้ประกาศปล่อยภาษา Ruby เวอร์ชั่น 3.2.0 ตามธรรมเนียมของชุมชนผู้พัฒนาที่จะออกอัพเดตใหญ่ทุกวันคริสต์มาส
ไฮไลท์ของการอัพเดตครั้งนี้อยู่ที่การเริ่มรองรับการพอร์ตไป WebAssembly ผ่าน WebAssembly System Interface (WASI) ซึ่งจะทำให้โค้ดของ CRuby (ภาษา Ruby ที่ใช้ C เป็น interpreter) สามารถเรียกใช้งานได้บนเว็บเบราเซอร์หรือบนแพลตฟอร์มที่รองรับ WebAssembly และประกาศให้ YJIT ที่เป็น JIT(Just-In-Time) compiler ใหม่ให้อยู่ในสถานะพร้อมใช้บน production จากเดิมที่อยู่ในสถานะ experimental
Tailscale ผู้ให้บริการควบคุมการเข้าถึงเซิร์ฟเวอร์ผ่าน Wireguard ปรับปรุงฟีเจอร์ Tailscale SSH ให้สามารถใช้งานในเบราว์เซอร์ได้โดยตรง เหมือนกับหน้าคอนโซลของผู้ให้บริการคลาวด์จำนวนมากที่เปิดให้ลูกค้าเข้าควบคุมเครื่องจากในเบราว์เซอร์ แต่ความต่างของ Tailscale คือมันไม่ได้เป็นเพียงการนำหน้าจอเทอร์มินัลมาแสดงบนเว็บเท่านั้นแต่อาศัยการรันซอฟต์แวร์ทั้งหมดในเบราว์เซอร์ผ่าน WebAssembly โดยตรง
ทาง Tailscale พอร์ตชุดซอฟต์แวร์แบบเดียวกับที่ใช้งานในไคลเอนต์ปกติ ได้แก่ ซอฟต์แวร์ของ Tailscale เอง, Wireguard, ชุดเน็ตเวิร์ค, และ SSH จากนั้นเมื่อล็อกอินแล้ว Tailscale จะสร้างกุญแจยืนยันตัวตนชั่วคราว (ephemeral auth key) โหลดเข้าไปในไคลเอนต์ในเบราว์เซอร์
Docker Inc. ปล่อย Docker Desktop รุ่น Technical Preview ทดสอบฟีเจอร์รองรับ WASM ในตัว โดยใช้ wasmedge runtime แต่ยังควบคุมด้วยคำสั่ง docker
เหมือนคอนเทนเนอร์ปกติ พร้อมกับสมัครสมาชิกเข้า Bytecode Alliance กลุ่มผลักดันให้ใช้งาน WASM ได้ทุกที่
ทาง Docker Inc. ร่วมมือกับ WasmEdge พัฒนาชุดครอบ runtime ทำให้ควบคุมได้เหมือน containerd ตัว docker engine จึงมองเห็นโปรแกรม wasm เหมือนคอนเทนเนอร์อื่นๆ
Supabase ผู้พัฒนาแพลตฟอร์มทดแทน Firebase เปิดโครงการ postgres-wasm พอร์ต PostgreSQL ทั้งก้อนเข้าไปรันในเบราว์เซอร์ด้วย WASM แม้ว่าก่อนหน้านี้ Crunchy Data จะเคยทำโครงการแบบเดียวกันมาก่อนแล้ว แต่ก็ทำไว้ใช้งานสำหรับเว็บสอน SQL ของ Crunchy Data เองเท่านั้น แต่ postgres-wasm นี้เป็นโครงการโอเพนซอร์สที่นำไปใช้งานอย่างอื่นได้ด้วย
โครงการนี้ทาง Supabase พัฒนาโครงการร่วมกับ Snaplet โครงการแปลงข้อมูลในฐานข้อมูลเพื่อให้นักพัฒนานำข้อมูลจากโปรดักชั่นไปใช้งานได้ ตัวโครงการ postgres-wasm จึงมี repository สองที่จากทั้ง Supabase และ Snaplet
Bytecode Alliance เปิดตัว Wasmtime 1.0 โครงการที่เริ่มมาตั้งแต่ปี 2019 เมื่อครั้ง Bytecode Alliance ยังเป็นเพียงชุมชนโอเพนซอร์สไม่ได้จดทะเบียนองค์กรจริงจัง และตอนนี้ตัว Wasmtime มีการใช้งานบนโปรดักชั่นกว้างขวางพอสมควรแล้ว และเชื่อว่าระบบเสถียรพอที่จะแนะนำให้คนทั่วไปใช้งาน
Wasmtime เป็นรันไทม์แยก จากเดิมที่ WebAssembly ถูกออกแบบมาให้รันในเบราว์เซอร์ การใช้งานจึงอาจจะเป็นการรันในจาวาสคริปต์รันไทม์ทั้งชุดแต่ในความเป็นจริงผู้ใช้จำนวนหนึ่งต้องการรัน WebAssembly อย่างเดียว แยกระบบออกมาทำให้เวลาเริ่มต้นโปรเซสเร็วขึ้นมาก จากเดิมจาวาสคริปต์ใช้เวลาประมาณ 5ms การรัน WebAssembly จะใช้เวลา 5 microsecond เท่านั้น
Crunchy Data ผู้ให้บริการฐานข้อมูล PostgreSQL บนคลาวด์ เปิดบทเรียน SQL แบบออนไลน์ฟรี ให้ผู้เรียนสามารถฝึกเขียน SQL ได้อย่างอิสระ โดยอาศัยการคอมไพล์ PostgreSQL ทั้งชุดมารันบน WASM ใช้งานได้เหมือนข้อมูลจริง โดยไม่ต้องเปลืองทรัพยากรฝั่งของ Crunchy Data เอง (นอกจากค่าพัฒนาและค่าแบนวิดท์)
Cloudflare อัพเกรดบริการ Workers ให้รองรับมาตรฐาน WASI ที่จะเปิดทางให้นักพัฒนาเขียนโปรแกรมภาษาอะไรก็ได้เพื่อคอมไพล์เป็นแบบ WebAssembly และ WASI แล้วส่งขึ้นไปรันบน Workers
WASI สำหรับโปรแกรมที่คอมไพล์เป็น WebAssembly มองเห็น system call ที่เป็นเหมือนระบบปฎิบัติการบนคอมพิวเตอร์ทั่วๆ ไป สำหรับเราสามารถคอมไพล์โปรแกรมเดิมๆ ไปรันบนแพลตฟอร์มใหม่ๆ ที่รองรับ WASI ได้โดยไม่ต้องแก้ไขเพิ่มเติม
Clouflare สาธิตการใช้โปรแกรมเดิมๆ คอมไพล์ไปรันบน Workers เช่น SWC สำหรับการคอมไพล์ TypeScript เป็น JavaScript หรือ zstd สำหรับบีบอัดไฟล์
Mozilla เผยข้อมูลของ RLBox เทคนิคการทำ sandbox แบบใหม่ที่จะเริ่มใช้ใน Firefox 95 โดยเป็นความร่วมมือกับงานวิจัยของมหาวิทยาลัย UC San Diego และ University of Texas
เว็บเบราว์เซอร์ยุคปัจจุบันมีการทำ sandbox ห่อหุ้มเว็บไซต์ไว้ในโพรเซสของตัวเอง ป้องกันไม่ให้เว็บอันตรายสามารถเข้าถึงเว็บอื่นๆ หรือออกมาสร้างอันตรายนอกเบราว์เซอร์ได้
Mozilla บอกว่าเมื่อห่อหุ้มเว็บเพจได้แล้ว เป้าหมายต่อไปคือการแยกคอมโพเนนต์แต่ละส่วนของเบราว์เซอร์ ไม่ให้มายุ่งเกี่ยวกันได้ (เช่น แยกโพรเซสประมวลผลวิดีโอออกมา ไม่ต้องยุ่งกับเบราว์เซอร์หลัก) โดยเฉพาะไลบรารีภายนอกที่อาจมีช่องโหว่ แต่ Mozilla ไม่สามารถควบคุมคุณภาพของโค้ดได้เอง (ปํญหา supply-chain attack ที่เกิดขึ้นบ่อยในช่วงหลัง)
Fastly, Intel, Mozilla, และ Microsoft ร่วมก่อตั้ง Bytecode Alliance องค์กรไม่แสวงหากำไรเพื่อการพัฒนาซอฟต์แวร์บนมาตรฐาน WebAssembly และ WebAssembly System Interface (WASI) เพื่อให้ใช้งานได้หลายรูปแบบทั้งบนคลาวด์, อุปกรณ์ IoT, หรือสภาพแวดล้อมอื่นๆ
ความพยายามนำไบนารีมารันใน sandbox ที่มีสิทธิ์จำกัดและมีความปลอดภัยแบบเดียวกับจาวาสคริปต์นั้นมีมายาวนาน เช่นโครงการ NaCl ของกูเกิลที่เริ่มมาตั้งแต่ปี 2011 ส่วน Mozilla นั้นเสนอแนวทาง asm.js มาตั้งแต่ปี 2013 ก่อนที่ทั้งอุตสาหกรรมจะหันมาสนับสนุน WebAssembly กันแทบทั้งหมด
Blazor เป็นเฟรมเวิร์คตัวหนึ่งในตระกูล ASP.NET เอาไว้เขียนเว็บแอพแบบหน้าเดียว (single-page) ด้วย HTML ผสมกับ C# แทนที่จะเป็น JavaScript
จุดเด่นของ Blazor คือใช้ภาษา C# ที่นักพัฒนาสาย .NET คุ้นเคย, ใช้โค้ด C# ทั้งฝั่งไคลเอนต์และเซิร์ฟเวอร์, ใช้ไลบรารีของ .NET ได้, มีระบบ UI component ให้พร้อมสรรพ
ก่อนหน้านี้ การทำงานของ Blazor คือต้องรันเซิร์ฟเวอร์ Blazor ที่เป็น .NET ด้วย แต่ล่าสุดในงาน Build 2020 ไมโครซอฟท์เพิ่มวิธีรัน Blazor แบบที่สองคือ Blazor WebAssembly แปลงโค้ดของรันไทม์ .NET เป็น WebAssembly ที่รันในเว็บเบราว์เซอร์รุ่นใหม่ๆ ได้ทั้งตัว
แนวคิดการทำ sandbox เพื่อจำกัดขอบเขตความเสียหายกรณีโปรแกรมโดนแฮ็ก กำลังได้รับความนิยมมากขึ้นเรื่อยๆ แต่หลายกรณีก็มีข้อจำกัด เช่น การเรียกใช้ไลบรารีที่มีขนาดเล็กจนไม่สามารถแยกโพรเซสได้ แต่ไลบรารีก็ไม่ได้เขียนเองทำให้ควบคุมคุณภาพโค้ดไม่ได้
Mozilla ร่วมกับทีมวิจัยจากมหาวิทยาลัย 3 แห่งคือ University of California San Diego, University of Texas Austin, Stanford University พัฒนาเทคนิคใหม่ชื่อ RLBox แก้ปัญหานี้ด้วยการแปลงโค้ด C/C++ เป็น WebAssembly ก่อน เพื่อรันใน sandbox ของ WebAssembly แทน
W3C องค์กรวางมาตรฐานเว็บประกาศเผยแพร่เอกสารสเปค WebAssembly เปิดทางสู่การรันโค้ดที่ประสิทธิภาพแทบเท่ากับการรันโปรแกรมแบบ native บนเบราว์เซอร์ ทำให้เบราว์เซอร์กลายเป็นแพลตฟอร์มกลางสำหรับการรันแอปพลิเคชั่น เช่น เกม, ระบบถอดรหัส/เข้ารหัส เสียงและวิดีโอ, อัลกอริทึมเข้ารหัส, ไปจนถึงการรันโค้ดภาษาอื่นๆ
เอกสารแยกออกเป็น 3 ฉบับ ได้แก่
เป็นที่รู้กันดีว่า Mozilla ผลักดันเทคโนโลยี WebAssembly แบบสุดตัว ปัจจุบันเว็บเบราว์เซอร์ 4 ค่ายใหญ่ล้วนรองรับ WebAssembly กันหมดแล้ว ผลงานใหม่ล่าสุดของ Mozilla จึงหันไปจับตลาดนักพัฒนา ด้วยการเปิดตัว IDE สำหรับ WebAssembly โดยเฉพาะ
IDE ตัวนี้ชื่อว่า WebAssembly Studio มันเป็น IDE แบบออนไลน์ใช้งานผ่านเว็บ โดย Mozilla พัฒนาขึ้นจากโค้ดของซอฟต์แวร์โอเพนซอร์สหลายโครงการ เช่น Monaco Editor ของไมโครซอฟท์ (ตัวเดียวกับที่ใช้ใน VS Code), Binaryen, Clang Format ผสมกันออกมาเป็น IDE ที่สามารถเขียนโค้ดในภาษา C/C++/Rust แล้วแปลงเป็น WebAssembly ได้ทันที (กดเข้าไปลองเล่น)