From 50d69df682364ba0734402efe0176ea8258daa4c Mon Sep 17 00:00:00 2001 From: Brendan Burns Date: Wed, 2 Aug 2023 00:22:35 +0000 Subject: [PATCH] Update for wasmtime 11. --- .devcontainer/devcontainer.json | 8 ++-- http/package-lock.json | 80 --------------------------------- http/raw.ts | 26 ++++++----- http/request.ts | 5 +-- 4 files changed, 21 insertions(+), 98 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 0ebbc80..5231ec7 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,11 +1,13 @@ { "image": "ubuntu:jammy", "remoteEnv": { - "PATH": "${containerEnv:PATH}:/usr/local/lib/wasi-sdk-20.0/bin" + "PATH": "${containerEnv:PATH}:/usr/local/lib/wasi-sdk-20.0/bin:/usr/local/lib" }, "features": { - "devwasm.azurecr.io/dev-wasm/dev-wasm-feature/wasmtime-wasi:0.0.8": { - "version": "20" + "devwasm.azurecr.io/dev-wasm/dev-wasm-feature/wasmtime-wasi:0.0.9": { + "version": "20", + "wasmtime_version": "v11.0.1", + "wit_version": "0.8.0" }, "ghcr.io/devcontainers/features/node:1": {}, "ghcr.io/devcontainers/features/common-utils": {} diff --git a/http/package-lock.json b/http/package-lock.json index 4fea5b9..eca8628 100644 --- a/http/package-lock.json +++ b/http/package-lock.json @@ -5,7 +5,6 @@ "packages": { "": { "dependencies": { - "@deislabs/wasi-experimental-http": "^0.10.0", "as-wasi": "github:jedisct1/as-wasi" }, "devDependencies": { @@ -22,50 +21,6 @@ "url": "https://opencollective.com/assemblyscript" } }, - "node_modules/@deislabs/wasi-experimental-http": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@deislabs/wasi-experimental-http/-/wasi-experimental-http-0.10.0.tgz", - "integrity": "sha512-5DnyL4TR6j+EC6BBBQEr09kRWQIrOi6EnH94ABgMjr3XIyuKGNmn+HM8SoZ+5X424Ve0dylvD2G/nSroU/Ht/A==", - "dependencies": { - "as-wasi": "0.4.4", - "assemblyscript": "^0.18.16" - } - }, - "node_modules/@deislabs/wasi-experimental-http/node_modules/as-wasi": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/as-wasi/-/as-wasi-0.4.4.tgz", - "integrity": "sha512-CNeZ3AjKSjrFXRNDRzX1VzxsWz3Fwksn4g0J7tZv5RKz4agKhVlcl0QeMIOOkJms7DujCBCpbelGxNDtvlFKmw==" - }, - "node_modules/@deislabs/wasi-experimental-http/node_modules/assemblyscript": { - "version": "0.18.32", - "resolved": "https://registry.npmjs.org/assemblyscript/-/assemblyscript-0.18.32.tgz", - "integrity": "sha512-Py6zremwGhO3nSoI/VxyVUzTZfNhTjzNzFDaUdG4JhPJHeG+FzVlEoNCrw4bE5nPc7F+P2DJ8tZQCqIt15ceKw==", - "dependencies": { - "binaryen": "100.0.0-nightly.20210413", - "long": "^4.0.0" - }, - "bin": { - "asc": "bin/asc", - "asinit": "bin/asinit" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/assemblyscript" - } - }, - "node_modules/@deislabs/wasi-experimental-http/node_modules/binaryen": { - "version": "100.0.0-nightly.20210413", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-100.0.0-nightly.20210413.tgz", - "integrity": "sha512-EeGLIxQmJS0xnYl+SH34mNBqVMoixKd9nsE7S7z+CtS9A4eoWn3Qjav+XElgunUgXIHAI5yLnYT2TUGnLX2f1w==", - "bin": { - "wasm-opt": "bin/wasm-opt" - } - }, - "node_modules/@deislabs/wasi-experimental-http/node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, "node_modules/as-wasi": { "version": "0.6.0", "resolved": "git+ssh://git@github.com/jedisct1/as-wasi.git#5ae40580492903987773d8f13748bc7008ca88b9", @@ -118,41 +73,6 @@ "resolved": "https://registry.npmjs.org/@assemblyscript/wasi-shim/-/wasi-shim-0.1.0.tgz", "integrity": "sha512-fSLH7MdJHf2uDW5llA5VCF/CG62Jp2WkYGui9/3vIWs3jDhViGeQF7nMYLUjpigluM5fnq61I6obtCETy39FZw==" }, - "@deislabs/wasi-experimental-http": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@deislabs/wasi-experimental-http/-/wasi-experimental-http-0.10.0.tgz", - "integrity": "sha512-5DnyL4TR6j+EC6BBBQEr09kRWQIrOi6EnH94ABgMjr3XIyuKGNmn+HM8SoZ+5X424Ve0dylvD2G/nSroU/Ht/A==", - "requires": { - "as-wasi": "0.4.4", - "assemblyscript": "^0.18.16" - }, - "dependencies": { - "as-wasi": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/as-wasi/-/as-wasi-0.4.4.tgz", - "integrity": "sha512-CNeZ3AjKSjrFXRNDRzX1VzxsWz3Fwksn4g0J7tZv5RKz4agKhVlcl0QeMIOOkJms7DujCBCpbelGxNDtvlFKmw==" - }, - "assemblyscript": { - "version": "0.18.32", - "resolved": "https://registry.npmjs.org/assemblyscript/-/assemblyscript-0.18.32.tgz", - "integrity": "sha512-Py6zremwGhO3nSoI/VxyVUzTZfNhTjzNzFDaUdG4JhPJHeG+FzVlEoNCrw4bE5nPc7F+P2DJ8tZQCqIt15ceKw==", - "requires": { - "binaryen": "100.0.0-nightly.20210413", - "long": "^4.0.0" - } - }, - "binaryen": { - "version": "100.0.0-nightly.20210413", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-100.0.0-nightly.20210413.tgz", - "integrity": "sha512-EeGLIxQmJS0xnYl+SH34mNBqVMoixKd9nsE7S7z+CtS9A4eoWn3Qjav+XElgunUgXIHAI5yLnYT2TUGnLX2f1w==" - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - } - } - }, "as-wasi": { "version": "git+ssh://git@github.com/jedisct1/as-wasi.git#5ae40580492903987773d8f13748bc7008ca88b9", "from": "as-wasi@github:jedisct1/as-wasi", diff --git a/http/raw.ts b/http/raw.ts index 01a7097..3359fda 100644 --- a/http/raw.ts +++ b/http/raw.ts @@ -5,34 +5,36 @@ export type WasiPtr = usize; type WasiMutPtr = usize; type WasiStringBytesPtr = WasiPtr; -@external("types", "new-outgoing-request") +@external("wasi:http/types", "new-outgoing-request") export declare function new_outgoing_request( method: WasiHandle, method_ptr: WasiPtr, method_len: usize, + path_is_some: usize, path_ptr: WasiPtr, path_len: usize, - query_ptr: WasiPtr, - query_len: usize, +// query_ptr: WasiPtr, +// query_len: usize, scheme_is_some: usize, scheme: usize, scheme_ptr: WasiPtr, scheme_len: usize, + authority_is_some: usize, authority_ptr: WasiPtr, authority_len: usize, headers: usize, ): WasiHandle; -@external("types", "outgoing-request-write") +@external("wasi:http/types", "outgoing-request-write") export declare function outgoing_request_write(request: WasiHandle, stream_ptr: WasiPtr): void; -@external("types", "new-fields") +@external("wasi:http/types", "new-fields") export declare function new_fields( fields_ptr: WasiPtr, fields_len: usize, ): WasiHandle; -@external("default-outgoing-HTTP", "handle") +@external("wasi:http/outgoing-handler", "handle") export declare function handle( request: WasiHandle, a: usize, @@ -44,22 +46,22 @@ export declare function handle( g: usize, ): WasiHandle; -@external("types", "future-incoming-response-get") +@external("wasi:http/types", "future-incoming-response-get") export declare function future_incoming_response_get(handle: WasiHandle, ptr: WasiPtr): void; -@external("types", "incoming-response-status") +@external("wasi:http/types", "incoming-response-status") export declare function incoming_response_status(handle: WasiHandle): usize; -@external("types", "incoming-response-headers") +@external("wasi:http/types", "incoming-response-headers") export declare function incoming_response_headers(handle: WasiHandle): WasiHandle; -@external("types", "incoming-response-consume") +@external("wasi:http/types", "incoming-response-consume") export declare function incoming_response_consume(handle: WasiHandle, ptr: WasiPtr): void; -@external("streams", "read") +@external("wasi:io/streams", "read") export declare function streams_read(handle: WasiHandle, len: i64, ptr: WasiPtr): void; -@external("streams", "write") +@external("wasi:io/streams", "write") export declare function streams_write(handle: WasiHandle, ptr: WasiPtr, len: usize, result: WasiPtr): void; diff --git a/http/request.ts b/http/request.ts index 7085cbf..6c766bf 100644 --- a/http/request.ts +++ b/http/request.ts @@ -89,11 +89,10 @@ export function request(method: string, url: string, body: string | null, header } let header_handle = raw.new_fields(header_ptr, header_length); - let path = new raw.WasiString(u.path); + let path = new raw.WasiString(u.path + (u.query.length > 0 ? (u.query) : "")); let authority = new raw.WasiString(u.authority); - let query = new raw.WasiString(u.query); let m = getMethod(method); - let req = raw.new_outgoing_request(m, 0, 0, path.ptr, path.length, query.ptr, query.length, 0, 0, 0, 0, authority.ptr, authority.length, header_handle); + let req = raw.new_outgoing_request(m, 0, 0, 1, path.ptr, path.length, 0, 0, 0, 0, 1, authority.ptr, authority.length, header_handle); let res: raw.WasiPtr;