Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
go:wasmexport
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
asuka
September 20, 2024
Technology
410
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
go:wasmexport
Niigata 5分 Tech #12
https://niigata-5min-tech.connpass.com/event/329653/
asuka
September 20, 2024
More Decks by asuka
See All by asuka
GoとSIMDとWasmの今。
askua
3
540
2025年ふりかえり
askua
1
240
ライブラリを公開してメンテナンスした一年
askua
0
97
Wasmの気になる最新情報
askua
1
380
Wasmのエコシステムを使った ツール作成方法
askua
0
400
Pure Goで体験するWasmの未来
askua
1
1.1k
Wasmで社内ツールを作って配布しよう
askua
0
310
Wasm元年
askua
0
370
wstdなんだか良さそう
askua
0
140
Other Decks in Technology
See All in Technology
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
2
1k
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
150
GitHub Copilot運用のリアル ~AI Credit時代にどう向き合うか~
takafumisu2uk1
0
430
toB プロダクトから見たWAF
tokai235
0
200
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
330
作る力から、見極める力へ — AI時代に広がるエンジニアの価値と役割
rince
0
350
LayerX コーポレートエンジニアリング室におけるサプライチェーンセキュリティへの取り組み / Supply Chain Security at LayerX Corporate Engineering
yuyatakeyama
3
850
AIが自律的に回る開発ループを設計してチーム開発に組み込む
nekorush14
0
130
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
コミットの「なぜ」を読む
ota1022
0
120
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
270
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
150
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
800
Agile that works and the tools we love
rasmusluckow
331
22k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
170
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
490
Art, The Web, and Tiny UX
lynnandtonic
304
22k
HDC tutorial
michielstock
2
720
GitHub's CSS Performance
jonrohan
1033
470k
Design in an AI World
tapps
1
250
Rails Girls Zürich Keynote
gr2m
96
14k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
160
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Transcript
go:wasmexport 2024.9 Niigata 5分 Tech #12
asuka (@a_skua) • 株式会社モニクル ◦ SWE / プロダクトSRE • WebAssemblyの同人誌を書いている人
◦ WebAssemblyでできること ▪ 商業誌版:実践入門WebAssembly ◦ ご注文はWASIですか? ◦ ご注文はWASIですか?? ◦ WebAssembly Cookbook vol.1 2 WHOIS
そういえば... 3 Niigata 5分 Techであんまり技術の話をしていない • N5T#5 AssemblyScriptではじめるWebAssembly入門 • N5T#8
技術書典16オフライン振り返り • N5T#10 エンジニアコミュニティ
Wasmの話をします
Go1.23時点のWasmサポート状況
Go1.23時点のWasmサポート状況 go:wasmimportという構文をサポートしている • Go1.21とWebAssembly 6 package main //go:wasmimport add a
func addA() int32 //go:wasmimport add b func addB() int32 var a, b int32 func main() { a = addA() b = addB() } import "./wasm_exec.js"; const go = new Go(); const { instance } = await WebAssembly.instantiateStreaming( fetch(new URL("main.wasm", import.meta.url)), { ...go.importObject, add: { a: () => 10, b: () => 20, }, }, ); go.run(instance);
Go1.23時点のWasmサポート状況 go:wasmimportという構文をサポートしているが,go:wasmexportはサポートされていない • Go1.21とWebAssembly 7 package main //go:wasmimport add a
func addA() int32 //go:wasmimport add b func addB() int32 var a, b int32 func main() { a = addA() b = addB() } import "./wasm_exec.js"; const go = new Go(); const { instance } = await WebAssembly.instantiateStreaming( fetch(new URL("main.wasm", import.meta.url)), { ...go.importObject, add: { a: () => 10, b: () => 20, }, }, ); go.run(instance);
• go:wasmexportはtiny-goには入っている • go:wasmexportはWasmを使う上で欲しい機能の一つ • 今年のはじめに go:wasmexportのプロポーザルがacceptされた • Go1.23には来なかったが,すでに対応済み ◦
cmd/compile: add go:wasmexport directive · Issue #65199 · golang/go · GitHub go:wasmexport 8 →Go1.24でgo:wasmexportが来る
Go1.24からはこう書けるようになる
Go1.24からはこう書けるようになる 10 package main //go:wasmexport add func add() int32 {
return a + b } //go:wasmimport add a func addA() int32 //go:wasmimport add b func addB() int32 var a, b int32 func main() { a = addA() b = addB() } import "./wasm_exec.js"; const go = new Go(); const { instance } = await WebAssembly.instantiateStreaming( fetch(new URL("main.wasm", import.meta.url)), { ...go.importObject, add: { a: () => 10, b: () => 20, }, }, ); go.run(instance); console.log(instance.exports.add());
go:wasmexport Niigata 5分 Tech #12