From d1d07fc5904c8eeda60f6e04a59dcf08da1e92cb Mon Sep 17 00:00:00 2001 From: dcode Date: Sun, 31 Jan 2021 11:19:45 +0100 Subject: [PATCH] Update to AS 0.18 --- game-of-life/README.md | 2 +- game-of-life/build/optimized.wasm | Bin 891 -> 891 bytes game-of-life/package.json | 9 ++-- i64/package.json | 4 +- interference/README.md | 2 +- interference/build/optimized.wasm | Bin 1707 -> 1692 bytes interference/package.json | 9 ++-- libm/package.json | 4 +- loader/build/optimized.wasm | Bin 11506 -> 13918 bytes loader/package.json | 4 +- loader/tests/index.js | 81 +++++++++++++++--------------- mandelbrot/README.md | 2 +- mandelbrot/build/optimized.wasm | Bin 539 -> 538 bytes mandelbrot/package.json | 9 ++-- n-body/README.md | 2 +- n-body/build/as_nbody.wasm | Bin 1595 -> 1785 bytes n-body/package.json | 9 ++-- n-body/scripts/postprocess-js.js | 1 + sdk/index.html | 4 +- sdk/package.json | 5 +- transform/package.json | 10 ++-- 21 files changed, 75 insertions(+), 82 deletions(-) diff --git a/game-of-life/README.md b/game-of-life/README.md index 52a970d..f62d69a 100644 --- a/game-of-life/README.md +++ b/game-of-life/README.md @@ -24,4 +24,4 @@ Afterwards, run $> npm start ``` -to start a local server. Should also automatically launch a browser. +to start a local server. diff --git a/game-of-life/build/optimized.wasm b/game-of-life/build/optimized.wasm index 75db09761af317ab3a4b5263ad57b305386663c8..4fb95d066aa308932a2c390c42970a7ac093a616 100644 GIT binary patch delta 132 zcmey(_M2_O1UZ(>yvz~?Mwa4|)B*-3mbA>A90q2#+|=CsqDm%)iR+{U85NklSR5P~ z6q%SE6c`kkye8gU%E&yqo>9k?U4bRbk*P$3iNTSvFiU|+0jM@d2}O)WfgM!|^W+DN MN{sBAnVBjW0fiYIn*aa+ delta 114 zcmey(_M2_O1WvZx)ZF}{N+yPh6GSJjlM-ZBVDw;daAZ(qVs=nqQeg0ycylQu`{a5? s9aClnmMll65)CE>N5;Y|pd_OLdyW!{7={w|$qyKn7@0RSGgUAG0BTVgj{pDw diff --git a/game-of-life/package.json b/game-of-life/package.json index 45b024d..e567bf7 100644 --- a/game-of-life/package.json +++ b/game-of-life/package.json @@ -4,13 +4,12 @@ "license": "Apache-2.0", "private": true, "scripts": { - "asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --use Math=JSMath --runtime none --importMemory --sourceMap --debug --measure", - "asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts --use Math=JSMath -O3 --runtime none --importMemory --sourceMap --measure", + "asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --use Math=JSMath --runtime stub --importMemory --sourceMap --debug --measure", + "asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts --use Math=JSMath -O3 --runtime stub --importMemory --sourceMap --measure", "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", - "start": "http-server . -o -c-1" + "start": "npx serve" }, "devDependencies": { - "assemblyscript": "latest", - "http-server": "^0.12.3" + "assemblyscript": "latest" } } diff --git a/i64/package.json b/i64/package.json index dffb55b..ef38428 100644 --- a/i64/package.json +++ b/i64/package.json @@ -6,8 +6,8 @@ "types": "index.d.ts", "scripts": { "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", - "asbuild:untouched": "asc assembly/i64.ts -t build/untouched.wat -b build/untouched.wasm --runtime none --sourceMap --debug --measure", - "asbuild:optimized": "asc assembly/i64.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts -O3 --runtime none --sourceMap --measure", + "asbuild:untouched": "asc assembly/i64.ts -t build/untouched.wat -b build/untouched.wasm --runtime stub --sourceMap --debug --measure", + "asbuild:optimized": "asc assembly/i64.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts -O3 --runtime stub --sourceMap --measure", "test": "node tests" }, "files": [ diff --git a/interference/README.md b/interference/README.md index 4c6c858..7f694fc 100644 --- a/interference/README.md +++ b/interference/README.md @@ -24,4 +24,4 @@ Afterwards, run $> npm start ``` -to start a local server. Should also automatically launch a browser. +to start a local server. diff --git a/interference/build/optimized.wasm b/interference/build/optimized.wasm index d6581a9bda84affdd94e642ae91f12bc8eb753cf..bb258c24f74916146f2c552fdda979fab29aed22 100644 GIT binary patch delta 547 zcmZ3@JBN3Ihy-ITLjqHMJwpOZeSK{$V=Xf~8v_Fi6Z1qJt%>ncf^4~|x%owvObi^1 ztXyZf+15^M^e|Q6aoO}cuTwy<(SDIj`I^%qp`l0jFIcodflGl$foIVop!{+->z?+r z$LtollsrH6=qH2L{)zu$7|SL{Gw!Qb;C5+@pF6VG7a08vgjp7^$ zh3GXelb CCdCc_ delta 610 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 delta 5955 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 diff --git a/loader/package.json b/loader/package.json index 286aab2..019045a 100644 --- a/loader/package.json +++ b/loader/package.json @@ -4,8 +4,8 @@ "license": "Apache-2.0", "private": true, "scripts": { - "asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --sourceMap --debug", - "asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat --sourceMap --optimize", + "asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --exportRuntime --sourceMap --debug", + "asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat --exportRuntime --sourceMap --optimize", "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", "test": "node tests" }, diff --git a/loader/tests/index.js b/loader/tests/index.js index 0042010..45329c5 100644 --- a/loader/tests/index.js +++ b/loader/tests/index.js @@ -4,9 +4,9 @@ const myModule = require("../index"); // Obtain the runtime helpers for const { // memory management - __allocString, __allocArray, + __newString, __newArray, // garbage collection - __retain, __release, + __pin, __unpin, // and interop __getString, __getArray, __getArrayView } = myModule; @@ -15,40 +15,34 @@ const { { console.log("Example 1:"); - // Obtain a pointer to our string in the module's memory. Note that `return`ing - // a string, or any other object, from WebAssembly to JavaScript automatically - // retains a reference for us, the caller, to release when we are done with it. - const ptr = myModule.getHello(); + // Obtain a pointer to our string in the module's memory. + const ptr = __pin(myModule.getHello()); // Print its contents console.log(" " + __getString(ptr)); - __release(ptr); // we are done with the returned string but - // it might still be alive in WebAssembly + __unpin(ptr); // it is ok if the string becomes garbage collected now } // Test for Example 2: Passing a string from JavaScript to WebAssembly. { console.log("Example 2:"); - // Allocate a string in the module's memory and retain a reference to our allocation - const ptr = __retain(__allocString("Hello world (I am a JavaScript string)")); + // Allocate a string in the module's memory and pin it externally + const ptr = __pin(__newString("Hello world (I am a JavaScript string)")); // Pass it to our WebAssembly export, which is going to print it using our custom console myModule.sayHello(ptr); - __release(ptr); // we are done with the allocated string but - // it might still be alive in WebAssembly + __unpin(ptr); // it is ok if the string becomes garbage collected now } // Test for Example 4: Passing an array from WebAssembly to JavaScript. { console.log("Example 4:"); - // Obtain a pointer to our array in the module's memory. Note that `return`ing - // an object from WebAssembly to JavaScript automatically retains a reference - // for us, the caller, to release when we are done with it. - const ptr = myModule.getMyArray(10); + // Obtain a pointer to our array in the module's memory. + const ptr = __pin(myModule.getMyArray(10)); // Obtain a live view on it const view = __getArrayView(ptr); @@ -58,7 +52,7 @@ const { const copy = __getArray(ptr); console.log(" " + copy + " (copy)"); - __release(ptr); // we are done with the array + __unpin(ptr); // it is ok if the array becomes garbage collected now } // Test for Example 5: Passing an array from JavaScript to WebAssembly. @@ -68,7 +62,7 @@ const { // Allocate a new array in WebAssembly memory and get a view on it. Note that // we have to specify the runtime id of the array type we want to allocate, so // we export its id (`idof`) from the module to do so. - const ptr = __retain(__allocArray(myModule.Int32Array_ID, [ 1, 2, 3 ])); + const ptr = __pin(__newArray(myModule.Int32Array_ID, [ 1, 2, 3 ])); const view = __getArrayView(ptr); const copy = __getArray(ptr); @@ -82,8 +76,7 @@ const { // The initial copy remains unchanged and is not linked to `ptr` console.log(" Unmodified copy: " + copy); - __release(ptr); // we are done with our allocated array but - // it might still be alive in WebAssembly + __unpin(ptr); // it is ok if the array becomes garbage collected now } // Test for Example 6: WebAssembly arrays of WebAssembly strings. @@ -91,18 +84,19 @@ const { console.log("Example 6:"); // Allocate a new array, but this time its elements are pointers to strings. - // Note: Allocating an array of strings or other objects will automatically - // take care of retaining references to its elements, but the array itself - // must be dealt with as usual. - const inPtr = __retain(__allocArray(myModule.ArrayOfStrings_ID, [ "hello", "world" ].map(__allocString))); + const elemPtrs = [ "hello", "world" ].map(v => __pin(__newString(v))); + const inPtr = __pin(__newArray(myModule.ArrayOfStrings_ID, elemPtrs)); + + // The array keeps its values alive from now on + elemPtrs.forEach(__unpin); // Provide our array of lowercase strings to WebAssembly, and obtain the new // array of uppercase strings before printing it. - const outPtr = myModule.capitalize(inPtr); + const outPtr = __pin(myModule.capitalize(inPtr)); console.log(" Uppercased: " + __getArray(outPtr).map(__getString)); - __release(inPtr); // release our allocation and release - __release(outPtr); // the return value. you know the drill! + __unpin(inPtr); // it is ok if the arrays becomes garbage collected now + __unpin(outPtr); // Note that Example 6 is not an especially efficient use case and one would // typically rather avoid the overhead and do this in JavaScript directly. @@ -114,27 +108,31 @@ const { // Create a new player. Note that the loader makes a nice object structure // of our exports, here a class `Player` within the `Game` namespace. So - // let's call the `Player` constructor (this is also an allocation): + // let's call the `Player` constructor: let player; { - const namePtr = __retain(__allocString("Gordon Freeman")); + const namePtr = __pin(__newString("Gordon Freeman")); player = new myModule.Game.Player(namePtr); - __release(namePtr); + __pin(player); + __unpin(namePtr); + // Pro tip: Pinning is optional in this exact case } // Let's see how our player looks now by calling toString { - const strPtr = player.toString(); + const strPtr = __pin(player.toString()); console.log(" Player (new): " + __getString(strPtr)); - __release(strPtr); + __unpin(strPtr); + // Pro tip: Pinning is optional in this exact case } // Move them and log again { player.move(10, 20); - const strPtr = player.toString(); + const strPtr = __pin(player.toString()); console.log(" Player (moved): " + __getString(strPtr)); - __release(strPtr); + __unpin(strPtr); + // Pro tip: Pinning is optional in this exact case } // Obtaining just the position. Note that we can `wrap` any pointer with @@ -142,29 +140,30 @@ const { // that a position's x and y properties are just basic values, not objects, // so tracking references does not apply to them. { - const positionPtr = player.position; // implicit getter, retained for us + const positionPtr = __pin(player.position); const position = myModule.Game.Position.wrap(positionPtr); console.log(" Position (wrapped): " + position.x + "/" + position.y); position.x -= 100; position.y += 200; - const strPtr = position.toString(); + const strPtr = __pin(position.toString()); console.log(" Position (moved): " + __getString(strPtr)); - __release(strPtr); + __unpin(strPtr); - __release(positionPtr); + __unpin(positionPtr); } // Finish 'em { player.kill(); - const strPtr = player.toString(); + const strPtr = __pin(player.toString()); console.log(" Player (finished): " + __getString(strPtr)); - __release(strPtr); // we are done with the returned object + __unpin(strPtr); + // Pro tip: Pinning is optional in this exact case } - __release(player); // a tidy house, a tidy mind. + __unpin(player); // a tidy house, a tidy mind. } // Interested in all the details? https://docs.assemblyscript.org/details :) diff --git a/mandelbrot/README.md b/mandelbrot/README.md index 06e392c..f8ad965 100644 --- a/mandelbrot/README.md +++ b/mandelbrot/README.md @@ -24,4 +24,4 @@ Afterwards, run $> npm start ``` -to start a local server. Should also automatically launch a browser. +to start a local server. diff --git a/mandelbrot/build/optimized.wasm b/mandelbrot/build/optimized.wasm index 076eed89d6576f770fee713456d2c188ffebe8b3..bd2f8559b8e34447a814627655e43ec5a30a6618 100644 GIT binary patch literal 538 zcmYLHO-jR15T5swpZ2wyg$tpZc|lxOaO%bn5^)#b+-^nzRs*O?;MWUhBVlD2k>u7Lz~zJu}w5{cLQy-bJxo1z2gPah8r!8b;wm NaNfP6AJL75$uGK%Xhi@3 delta 366 zcmZvYu};G<5Qfi==D>rs!ijI5D$PsC|1Ql1VxQI_s8taXGw$_7=fJ$jLIF$Q!qHrH;*E2R_(U4(XO z>+P%^EdN!>R npm start ``` -to start a local server. Should also automatically launch a browser. +to start a local server. To run the benchmark: diff --git a/n-body/build/as_nbody.wasm b/n-body/build/as_nbody.wasm index 43a227574db2315c707698f659fe42ce7161e733..ed27e75dc1d6b1dfae031c3ab9ad54ddac89c5d6 100644 GIT binary patch delta 844 zcmZuvT}u>U6h7zun0a-!d?EY7k6uTKEup*!OR#oN83|tW7j$j0-F0`>odj!Xyy#Ld zWd4BIeK%f4(PcrR~WzY{O5bVsXhzrgz=i@o&Jm+~|=6&wpxy!K7sv`j44SybB z9%GnSaUAd1!B`9kS#GTBg;H}Zf-Lsx<$7~%LjcMiqcot061+gfNDySkzo}KFQHemR zR#aXAtxM&`;&br)rE>JJ`D_FH6B2`__gi2-BYLp|`g3%2BZ{P+A?u&?8k1l@oNKN-L|RYN5~l1qe0Si2716Oo^R#!pR!(nksE>wpYon zhtf%>X9tQvFv~6SIDp_m5I8Z0&U5~x0H;!3K`<%OP3#Pl;iSm1Jq%DTYxVXMw5O?t+DUuAxbQ1V{{k6QXNdd3LCKWj@uQ;=}JED0x zCoW4^N1Eib#CJ$o9l;#3O2`Wc!ReWwk3W8y{_yD2+bJdh=bZ)|1O90s@8lQ+hk_O6 z+8qu>I#aU0BOR7_{#F0GC%<04DeUb|N!ICLTpDM(VAFxE>*<0mUlI!xslebj@)EB- z3RaC~V&(CP`}BlONhiYI8U6|RIVdDgbrKBnJ<1|e<6QDryN;}6$h#VE^^7s)HVU9E z6BMUAW0^&^dHx8N`E9}?EI7?YT$YB z;8owvQ>iyW5qcCo3jPzK2e0B)5aVtlmJZDB&S!V_yEE*sQ}0VT+}iCU0N{nF1JJ=d zIOZM7!x)XG=9hq@urs1r6y3p|?sxmchx-H|Od?1EYJ~*aP>v4FWQbPO|6_7%u$6(3 zyIFS!w7T6L+_?`?w0^IfT^Ziphd9QW4tv#W_5iOJ}!JVqGWjC$UbFiTxD&3F=g0Xg&z1?jy?&-&DP_&x9i^?J#DZ)JXjOHQiiICk8vDu zJjM1H&jcL0?dzaWhxs1*rvGV(sYbD(YPRM7khiamaC0q9if5{rPhbhG^sdaJfAgfL UaJ@LMSxsJ7wDlSFBwj}I7g5E7&;S4c diff --git a/n-body/package.json b/n-body/package.json index 7252eb4..1fb86a8 100644 --- a/n-body/package.json +++ b/n-body/package.json @@ -4,18 +4,17 @@ "license": "Apache-2.0", "private": true, "scripts": { - "asbuild:wasm": "asc assembly/index.ts -b build/as_nbody.wasm -t build/as_nbody.wat -O3 --runtime none --noAssert --importMemory", - "asbuild:js": "asc assembly/index.ts -j build/as_nbody.js -O3 --runtime none --noAssert && node scripts/postprocess-js", + "asbuild:wasm": "asc assembly/index.ts -b build/as_nbody.wasm -t build/as_nbody.wat -O3 --runtime stub --noAssert --importMemory", + "asbuild:js": "asc assembly/index.ts -j build/as_nbody.js -O3 --runtime stub --noAssert && node scripts/postprocess-js", "asbuild": "npm run asbuild:wasm && npm run asbuild:js", "tsbuild": "tsc -p assembly -t ES2017 -m commonjs --outDir build", "rsbuild": "cd rust && RUSTFLAGS='-C link-arg=-s' cargo +nightly build --release", "build": "npm run asbuild && npm run tsbuild && npm run rsbuild", - "start": "http-server . -o -c-1", + "start": "npx serve", "test": "node --no-wasm-bounds-checks --no-wasm-stack-checks --expose-gc tests" }, "devDependencies": { "assemblyscript": "latest", - "http-server": "^0.12.3", - "typescript": "^3.8.3" + "typescript": "^3.9.7" } } diff --git a/n-body/scripts/postprocess-js.js b/n-body/scripts/postprocess-js.js index 263251a..9801c05 100644 --- a/n-body/scripts/postprocess-js.js +++ b/n-body/scripts/postprocess-js.js @@ -4,4 +4,5 @@ const path = require("path"); const filename = path.join(__dirname, "..", "build" , "as_nbody.js"); var source = fs.readFileSync(filename, { encoding: "utf8" }); source = source.replace(/^export var ([^ ]+) =/mg, ($0, $1) => "exports." + $1 + " = "); +source = source.replace("import { abort } from 'env';", "function abort() { throw new Error('abort'); }"); fs.writeFileSync(filename, source); diff --git a/sdk/index.html b/sdk/index.html index 2a3f325..6319231 100644 --- a/sdk/index.html +++ b/sdk/index.html @@ -23,7 +23,7 @@ function simpleExample(asc) { const { text, binary } = asc.compileString(SOURCE_CODE, { optimizeLevel: 3, - runtime: "none" + runtime: "stub" }); console.log(`>>> TEXT >>>\n${text}`); console.log(`>>> BINARY >>>\n${binary.length} bytes`); @@ -37,7 +37,7 @@ asc.main([ "module.ts", "-O3", - "--runtime", "none", + "--runtime", "stub", "--binaryFile", "module.wasm", "--textFile", "module.wat", "--sourceMap" diff --git a/sdk/package.json b/sdk/package.json index 25bdf5d..7f95c92 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -4,9 +4,6 @@ "license": "Apache-2.0", "private": true, "scripts": { - "start": "http-server . -o -c-1" - }, - "devDependencies": { - "http-server": "^0.12.3" + "start": "npx serve" } } diff --git a/transform/package.json b/transform/package.json index bd3ebc4..c46dca4 100644 --- a/transform/package.json +++ b/transform/package.json @@ -4,14 +4,14 @@ "license": "Apache-2.0", "private": true, "scripts": { - "test:js": "asc assembly/index.ts --runtime none --transform ./mytransform.js", - "test:ts": "asc assembly/index.ts --runtime none --transform ./mytransform.ts", - "test:multi": "asc assembly/index.ts --runtime none --transform ./mytransform.js --transform ./mytransform.ts", + "test:js": "asc assembly/index.ts --runtime stub --transform ./mytransform.js", + "test:ts": "asc assembly/index.ts --runtime stub --transform ./mytransform.ts", + "test:multi": "asc assembly/index.ts --runtime stub --transform ./mytransform.js --transform ./mytransform.ts", "test": "npm run test:js && npm run test:ts && npm run test:multi" }, "devDependencies": { "assemblyscript": "latest", - "ts-node": "^8.10.1", - "typescript": "^3.8.3" + "ts-node": "^8.10.2", + "typescript": "^3.9.7" } }