ระบบส่วนขยาย (Extension) ของ VS Code เขียนด้วย TypeScript/JavaScript แต่ช่วงหลังไมโครซอฟท์ก็เริ่มรองรับ WebAssembly (WASM) เพื่อให้รันไบนารีที่คอมไพล์จากภาษาอื่น เช่น C/C++ หรือ Rust ได้ด้วย ตัวอย่างการใช้งานคือ Visual Studio Code for Education ที่ฝังไบนารีของ Python interpreter (CPython ซึ่งเขียนด้วย C แล้วแปลงเป็น WASM) เพื่อให้ประมวลผลโค้ดภาษา Python บนเว็บได้
รูปแบบของ WASM ที่ VS Code รองรับคือ WebAssembly System Interface (WASI) ของกลุ่ม ByteCode Alliance ที่ไมโครซอฟท์เป็นผู้ร่วมก่อตั้ง ล่าสุดในสเปก WASI 0.2 รองรับ Component Model ช่วยให้ WASM มีได้หลายคอมโพเนนต์และสื่อสารระหว่างกันได้ผ่านอินเทอร์เฟซ WIT (WASM Interface Type) ส่งผลให้ส่วนขยายที่สร้างด้วย WASM มีความซับซ้อนเพิ่มขึ้นอีกมาก สามารถแปลงไลบรารีจากภาษาอื่นๆ มาใช้งานร่วมได้
ตัวอย่างที่ไมโครซอฟท์นำมาโชว์คือการแปลงไลบรารี Rust เป็น WASM แล้วนำมาใช้ในส่วนขยายของ VS Code ที่เขียนด้วย Rust โดยสองส่วนนี้สื่อสารกันผ่าน wit-bindgen ซึ่งเป็นเครื่องมือที่ไมโครซอฟท์สร้างมาช่วยทำ binding และในอนาคตไมโครซอฟท์บอกว่าเราจะสามารถทำ language server หรือเอนจินภาษาโปรแกรมด้วย WebAssembly ได้เช่นกัน
ที่มา - VS Code Blog