Image
By lew Founder on Tag: WebAssembly, USA, Database
WebAssembly

Library Innovation Lab (LIL) ห้องปฏิบัติการพัฒนาเทคโนโลยีในห้องสมุด รายงานถึงการทดลองย้ายเว็บ Data.gov ซึ่งเป็นระบบรวบรวมข้อมูลจำนวนมากของรัฐบาล ไปยังเว็บแบบ static ที่ทำให้ค่าใช้จ่ายในการบำรุงรักษาลดลงอย่างมาก และระบบฐานข้อมูลก็สามารถรันในเบราว์เซอร์ได้อย่างสมบูรณ์

Data.gov Archive มีข้อมูลทั้งหมด 18 เทราไบต์ โดยเฉพาะตัว metadata มีขนาด 1GB ทีมงานจึงแบ่ง metadata เป็นไฟล์ Parquet เล็กๆ จำนวนมาก แล้วให้ผู้ใช้เลือกหมวดหมู่คร่าวๆ ก่อน จากนั้นจึงดึงไฟล์ Parquet ที่เกี่ยวข้องมารันคิวรีในเบราว์เซอร์

By lew Founder on Tag: WebAssembly, Programming
WebAssembly

มาตรฐาน WebAssembly ออกเวอร์ชั่น 3.0 เพิ่มฟีเจอร์ทำให้รองรับฟีเจอร์ที่จำเป็นสำหรับภาษาต่างๆ จะคอมไพล์มาเป็น WebAssembly ได้ดีขึ้น โดยฟีเจอร์สำคัญๆ ได้แก่

By mk Founder on Tag: Firefox, ONNX, Mozilla, WebAssembly, C++, Development, Artificial Intelligence
Firefox

Firefox เลือกแนวทางใช้โมเดล AI รันในเครื่อง ด้วยเหตุผลด้านความเป็นส่วนตัว ซึ่งต่างจากเบราว์เซอร์ตัวอื่นๆ อย่างไรก็ตาม แนวทางนี้กลับเจอปัญหาเรื่องประสิทธิภาพ

ล่าสุด Firefox ประกาศวิธีแก้ปัญหานี้ ด้วยการเปลี่ยนรันไทม์ AI จากของเดิมรันบน WebAssembly (WASM) มาเป็น native C++ แทน

By mk Founder on Tag: Microsoft, CNCF, Open Source, WebAssembly, Virtual Machine, Virtualization
Microsoft

เมื่อปลายปี 2024 ไมโครซอฟท์เปิดตัวโครงการ Hyperlight ซึ่งเป็นไลบรารีภาษา Rust สำหรับรันฟังก์ชันขนาดเล็ก มีจุดเด่นตรงการแยกเป็น hypervisor ของตัวเองเพื่อความปลอดภัย และความเร็วที่เร็วกว่าการรัน VM แบบปกติ แต่ข้อเสียคือจำกัดเฉพาะการรันฟังก์ชันภาษา Rust เท่านั้น

ปีนี้ไมโครซอฟท์ปรับปรุง Hyperlight เพิ่มเติมเป็น Hyperlight Wasm โดยนำเอา WebAssembly (Wasm) เข้ามาแก้ปัญหาเรื่องความเข้ากันได้ของภาษาโปรแกรม

By mk Founder on Tag: Go, Programming, WebAssembly
Go

ภาษา Go ออกเวอร์ชัน 1.24 มีฟีเจอร์ใหม่ที่น่าสนใจคือปรับปรุงการแปลงโค้ด Go เป็น WebAssembly (Wasm) ให้สามารถแปลงโค้ดได้โดยตรงแล้ว

Go เริ่มรองรับการแปลงโค้ดเป็น Wasm มาตั้งแต่เวอร์ชัน 1.11 แต่ต้องผ่าน js/wasm อีกชั้น ภายหลังเมื่อโลกของ WebAssembly มีมาตรฐาน API กลางที่เรียกว่า WebAssembly System Interface (WASI) ภายใต้การกำกับดูแลของ W3C เกิดขึ้นเพื่อให้ภาษาต่างๆ แปลงเป็น Wasm ได้ง่ายขึ้น ทำให้ Go เริ่มหันมารองรับ WASI แบบพรีวิวมาตั้งแต่เวอร์ชัน 1.21

By lew Founder on Tag: Supabase, PostgreSQL, WebAssembly
Supabase

Supabase ประกาศฟีเจอร์ใหม่ในส่วนขยาย Wrappers สำหรับ PostgreSQL ให้สามารถดึงโมดูล WASM ไปรันในตัวเองได้ เปิดทางให้นักพัฒนาสามารถเชื่อมข้อมูลของตัวเองให้กลายเป็นตารางใน PostgreSQL

By mk Founder on Tag: Diablo, WebAssembly, Games, Open Source
Diablo

มีนักพัฒนาซอฟต์แวร์ที่ใช้ชื่อ d07RiV บน GitHub สามารถแปลงไฟล์ของเกม Diablo 1 มาเล่นผ่านเว็บเบราว์เซอร์ได้แล้ว โดยแปลงโค้ดไบนารีของเกม Diablo 1 ที่ออกในปี 1996 มาเป็น WebAssembly และ JavaScript บางส่วน

โครงการนี้เป็นการพัฒนาต่อยอดจากโครงการ Devilution ที่มีอยู่ก่อนแล้ว ซึ่งเป็นการนำไฟล์เกม Diablo 1 มารันบนพีซีสมัยใหม่

By lew Founder on Tag: PostgreSQL, WebAssembly, Database
PostgreSQL

โครงการ PGlite ฐานข้อมูล PostgreSQL ตัวเต็มที่รันบน PostgreSQL ออกเวอร์ชั่น 0.2 พร้อมกับความสามารถในการโหลดส่วนขยายเพิ่มเติม เช่น pgvector สำหรับการเก็บข้อมูลในกลุ่มงานปัญญาประดิษฐ์

โครงการนี้พัฒนาโดย ElectricSQL ผู้พัฒนาบริการซิงก์ข้อมูลข้ามฐานข้อมูล PostgreSQL จึงมีฟีเจอร์ในการซิงก์ข้อมูลจากเซิร์ฟเวอร์เข้าสู่เบราว์เซอร์ด้วย การเรียกใช้งานเบื้องต้นนั้นมองเห็นเป็นไลบรารีไคลเอนต์อย่างเดียว แต่สามารถใช้งานใส่ข้อมูลและคิวรีได้ทันที แม้ไม่ได้คอนฟิกการเชื่อมต่อเซิร์ฟเวอร์ใดๆ เลยก็ตาม หากต้องการเก็บข้อมูลระยะยาวสามารถใช้ IndexedDB ในเบราว์เซอร์ก็ได้

By mk Founder on Tag: Google Sheets, WebAssembly, JavaScript, Java, Browser, Google
Google Sheets

Google Sheets ปรับปรุงการทำงานบนเดสก์ท็อปใหม่ โดยการคำนวณค่าในตารางจะเร็วขึ้น 2 เท่า จากการแปลงโค้ดส่วนคำนวณมาเป็น WebAssembly Garbage Collection (WasmGC) แทนการรันเป็น JavaScript แบบเดิม

แรกสุดนั้น เอนจินคำนวณของ Google Sheets ทำงานที่ฝั่งเซิร์ฟเวอร์ เขียนด้วย Java และเริ่มใช้ในปี 2006 จากนั้นเริ่มปรับมาคำนวณที่ฝั่งเบราว์เซอร์แทนในปี 2013 โดยช่วงแรกทำผ่าน Google Web Toolkit (GWT) ช่วงหลังเปลี่ยนมาใช้ Java ช่วยผ่าน Java to Closure JavaScript transpiler (J2CL)

By mk Founder on Tag: Flutter, Google, WebAssembly
Flutter

กูเกิลออก Flutter 3.22 และ Dart 3.4 สยบข่าวลือว่าจะเลิกทำโครงการเหล่านี้ หลังมีข่าวปลดพนักงานบางส่วนในทีม Flutter และ Dart ออก

ในโพสต์ของกูเกิลเขียนชัดเจนว่า "We remain committed to providing a strong language and framework pairing" แปลว่าจะยังทำ Flutter และ Dart ต่อไป

By mk Founder on Tag: Visual Studio Code, Extension, Microsoft, Development, WebAssembly
Visual Studio Code

ระบบส่วนขยาย (Extension) ของ VS Code เขียนด้วย TypeScript/JavaScript แต่ช่วงหลังไมโครซอฟท์ก็เริ่มรองรับ WebAssembly (WASM) เพื่อให้รันไบนารีที่คอมไพล์จากภาษาอื่น เช่น C/C++ หรือ Rust ได้ด้วย ตัวอย่างการใช้งานคือ Visual Studio Code for Education ที่ฝังไบนารีของ Python interpreter (CPython ซึ่งเขียนด้วย C แล้วแปลงเป็น WASM) เพื่อให้ประมวลผล

By lew Founder on Tag: WebAssembly, JavaScript, Rust
WebAssembly

WinterJS รันไทม์จาวาสคริปต์ที่พัฒนาต่อจาก SpiderMonkey และเขียนด้วย Rust เพิ่งประกาศเปิดตัวมาเมื่อสี่เดือนที่แล้ว ตอนนี้โครงการเข้าสู่เวอร์ชั่น 1.0 เรียบร้อยแล้ว เนื่องจากทำ API เข้ากันได้กับมาตรฐาน WinterCG และยังทำ API ของ Cloudflare

ในแง่ของประสิทธิภาพ WinterJS รันแบบเนทีฟได้ที่ระดับ 150k req/s เร็วกว่า Bun และ NodeJS ชัดเจน แต่หากคอมไพล์เป็น WASM นั้นประสิทธิภาพยังได้เพียง 20k req/s เท่านั้น

By lew Founder on Tag: Python, WebAssembly, Programming
Python

ไลบรารี urllib3 ออกเวอร์ชั่น 2.2.0 เพิ่มฟีเจอร์สำคัญคือการรองรับการใช้งานบน Pyodide รันไทม์ภาษาไพธอนสำหรับ WASM ซึ่งทำให้สามารถรันโค้ดไพธอนได้บนเบราว์เซอร์หรือ Node.js

urllib3 เป็นไลบรารีที่พัฒนาอิสระ แข่งกับโมดูล urllib ที่เป็นไลบรารีมาตรฐานในตัวไพธอนเอง และมันเป็นไบรารีเบื้องหลังโมดูล requests ที่ได้รับความนิยมสูงเนื่องจากออกแบบ API ให้อ่านได้ง่าย

By lew Founder on Tag: WebAssembly, JavaScript
WebAssembly

โครงการ Wasmer ประกาศนำ SpiderMonkey มาทำโครงการ WinterJS รันไทม์สำหรับรัน Service Worker แบบเดียวกับ Cloudflare Workers, Deno Deploy, หรือ Vercel โดยอาศัยการอิมพลีเมนต์ API จากมาตรฐาน wintercg

เรื่องจาก Wasmer ต้องการให้โค้ดรันผ่าน WASM ได้ด้วย จึงต้องเลือกใช้เทคโนโลยีที่รองรับการคอมไพล์ไปยัง WASM ได้ด้วย ตัวโค้ดหลักของ WinterJS ใช้ SpiderMonkey ผ่านทาง Rust API ของโครงการ spiderfire

ตัวโครงการ WinterJS สามารถรันผ่านคำสั่ง wasmer ตามปกติ หรือจะรันแบบเนทีฟผ่านทางคำสั่ง cargo ของ Rust ก็ได้

By mk Founder on Tag: Kotlin, Development, Programming, WebAssembly, JetBrains
Kotlin

กูเกิลและ JetBrains โชว์การนำภาษา Kotlin มาเขียนเว็บ โดยคอมไพล์เป็น WebAssembly เพื่อให้รันในเบราว์เซอร์ได้ มีประสิทธิภาพเกือบเทียบเท่าเนทีฟ

ในยุคสมัยที่โลกมี 3 แพลตฟอร์มใหญ่คือ Android, iOS และเว็บ การมีแอพ 3 เวอร์ชันเป็นภาระในการดูแล จึงมีคนหาวิธีสร้างแอพด้วยภาษา-เครื่องมือเดียวกันกับทุกแพลตฟอร์ม (ด้วยวิธีการทางเทคนิคที่ต่างกัน แต่เป้าหมายเดียวกัน) เช่น .NET/Xamarin (C#) หรือ Flutter (Dart)

By lew Founder on Tag: WebAssembly, VMware, Python
WebAssembly

Wasm Labs กลุ่มพัฒนาการใช้งาน WebAssembly ของ VMware ปล่อย Python ตัวเต็มที่คอมไพล์ให้ทำงานกับ WebAssembly ได้ทั้งชุด เปิดทางให้นักพัฒนาสามารถย้ายแอปไปรันบนรันไทม์ต่างๆ ที่รองรับ WASM ได้ทุกที่

การคอมไพล์ Python เพื่อรันบน WASM นั้นมีมานานแล้ว โดยหลายทีมงานจากหลายบริษัท แต่โครงการของ VMware ครั้งนี้คอมไพล์ตัว Python พร้อมกับไลบรารีมาตรฐานทั้งชุดรวมถึง SQLite ทำให้รองรับแอปพลิเคชั่นที่เป็น Python ได้ค่อนข้างครบ

By lew Founder on Tag: WebAssembly, Chrome, SQLite
WebAssembly

มาตรฐาน WebSQL เคยได้รับความสนใจช่วงสิบปีที่แล้ว ที่หลายคนอยากให้เบราว์เซอร์มีฐานข้อมูล SQL ใช้งานได้ในตัวโดยไม่ต้องเชื่อมต่อเซิร์ฟเวอร์ แต่มาตรฐานนี้ก็ไม่ได้รับความนิยมนักทำให้เบราว์เซอร์หยุดซัพพอร์ตกันไปโดย Chrome เองก็ประกาศเตรียมถอด WebSQL ตั้งแต่ Chrome 105 เมื่อปีที่แล้วแต่ยังสามารถเปิด policy กลับมาใช้งานได้ ล่าสุดกูเกิลโชว์ให้ดูว่านักพัฒนาที่ต้องการใช้ SQL ในเบราว์เซอร์ตอนนี้สามารถใช้งานได้ด้วยเทคโน

By wittawasw Contributor on Tag: Ruby, WebAssembly, Programming
Ruby

เมื่อวันที่ 25 ธันวาคม 2565 กลุ่มผู้พัฒนาได้ประกาศปล่อยภาษา Ruby เวอร์ชั่น 3.2.0 ตามธรรมเนียมของชุมชนผู้พัฒนาที่จะออกอัพเดตใหญ่ทุกวันคริสต์มาส

ไฮไลท์ของการอัพเดตครั้งนี้อยู่ที่การเริ่มรองรับการพอร์ตไป WebAssembly ผ่าน WebAssembly System Interface (WASI) ซึ่งจะทำให้โค้ดของ CRuby (ภาษา Ruby ที่ใช้ C เป็น interpreter) สามารถเรียกใช้งานได้บนเว็บเบราเซอร์หรือบนแพลตฟอร์มที่รองรับ WebAssembly และประกาศให้ YJIT ที่เป็น JIT(Just-In-Time) compiler ใหม่ให้อยู่ในสถานะพร้อมใช้บน production จากเดิมที่อยู่ในสถานะ experimental

By lew Founder on Tag: Tailscale, WireGuard, WebAssembly
Tailscale

Tailscale ผู้ให้บริการควบคุมการเข้าถึงเซิร์ฟเวอร์ผ่าน Wireguard ปรับปรุงฟีเจอร์ Tailscale SSH ให้สามารถใช้งานในเบราว์เซอร์ได้โดยตรง เหมือนกับหน้าคอนโซลของผู้ให้บริการคลาวด์จำนวนมากที่เปิดให้ลูกค้าเข้าควบคุมเครื่องจากในเบราว์เซอร์ แต่ความต่างของ Tailscale คือมันไม่ได้เป็นเพียงการนำหน้าจอเทอร์มินัลมาแสดงบนเว็บเท่านั้นแต่อาศัยการรันซอฟต์แวร์ทั้งหมดในเบราว์เซอร์ผ่าน WebAssembly โดยตรง

By lew Founder on Tag: Docker, WebAssembly
Docker

Docker Inc. ปล่อย Docker Desktop รุ่น Technical Preview ทดสอบฟีเจอร์รองรับ WASM ในตัว โดยใช้ wasmedge runtime แต่ยังควบคุมด้วยคำสั่ง docker เหมือนคอนเทนเนอร์ปกติ พร้อมกับสมัครสมาชิกเข้า Bytecode Alliance กลุ่มผลักดันให้ใช้งาน WASM ได้ทุกที่

ทาง Docker Inc. ร่วมมือกับ WasmEdge พัฒนาชุดครอบ runtime ทำให้ควบคุมได้เหมือน containerd ตัว docker engine จึงมองเห็นโปรแกรม wasm เหมือนคอนเทนเนอร์อื่นๆ

Subscribe to WebAssembly