Skip to content

Latest commit

 

History

History
86 lines (54 loc) · 1.76 KB

File metadata and controls

86 lines (54 loc) · 1.76 KB

Use ichiban/prolog to send HTTP(s) requests from inside WASM

Instructions for this devcontainer

Tested with Go 1.24.0, Bun 1.2.2, Deno 2.1.10, ichiban/prolog v1.2.2.

Preparation

  1. Open this repo in devcontainer, e.g. using Github Codespaces. Type or copy/paste following commands to devcontainer's terminal.

  2. Install Deno (also used as static HTTP server, as Ubuntu Noble-based image has no Python installed by default):

curl -fsSL https://deno.land/install.sh | bash -s -- --yes

Building

  1. cd into the folder of this example:
cd browser-and-deno-ichiban-prolog
  1. Install ichiban/prolog:
go get github.com/ichiban/prolog
  1. Compile the example:
GOOS=js GOARCH=wasm go build -o main.wasm main.go
  1. Copy the glue JS from Golang distribution to example's folder (note using /lib/wasm/ because Go 1.24):
cp $(go env GOROOT)/lib/wasm/wasm_exec.js ./

Test with browser

  1. Run simple HTTP server to temporarily publish project to Web:
~/.deno/bin/deno run --allow-net --allow-read jsr:@std/http/file-server

Codespace will show you "Open in Browser" button. Just click that button or obtain web address from "Forwarded Ports" tab.

  1. As index.html and a 12M-sized main.wasm are loaded into browser, refer to browser developer console to see the results.

Test with Node.js

Impossible yet due to golang/go#59605.

Test with Bun

  1. Install Bun:
curl -fsSL https://bun.sh/install | bash
  1. Run with Bun:
~/.bun/bin/bun bun.js

Test with Deno

  1. Run with Deno:
~/.deno/bin/deno run --allow-read --allow-net deno.js

Finish

Perform your own experiments if desired.