From f2e27ba9e2add6f4683f7cc1d89b845d8db46bf7 Mon Sep 17 00:00:00 2001 From: dcode Date: Tue, 10 Mar 2020 08:56:30 +0100 Subject: [PATCH] Slice v0.9.3 --- cli/asc.json | 3 +- package-lock.json | 68 ++++++++++++---------- package.json | 10 ++-- src/common.ts | 1 + src/compiler.ts | 1 + src/glue/binaryen.d.ts | 1 + src/index.ts | 2 + src/module.ts | 3 +- src/program.ts | 2 + std/assembly/index.d.ts | 2 + std/assembly/shared/feature.ts | 5 +- tests/compiler/asc-constants.ts | 1 + tests/compiler/asc-constants.untouched.wat | 3 + 13 files changed, 64 insertions(+), 38 deletions(-) diff --git a/cli/asc.json b/cli/asc.json index 936d849320..81a5b015a7 100644 --- a/cli/asc.json +++ b/cli/asc.json @@ -167,7 +167,8 @@ "TODO_doesNothingYet": [ " nontrapping-f2i Non-trapping float to integer ops.", " exception-handling Exception handling.", - " tail-calls Tail call operations." + " tail-calls Tail call operations.", + " multi-value Multi value types." ], "type": "S" }, diff --git a/package-lock.json b/package-lock.json index d1eaf5acb9..dad2673473 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "assemblyscript", - "version": "0.9.2", + "version": "0.9.3", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -25,9 +25,9 @@ } }, "@types/node": { - "version": "13.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.1.tgz", - "integrity": "sha512-Zq8gcQGmn4txQEJeiXo/KiLpon8TzAl0kmKH4zdWctPj05nWwp1ClMdAVEloqrQKfaC48PNLdgN/aVaLqUrluA==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz", + "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", "dev": true }, "@webassemblyjs/ast": { @@ -219,15 +219,15 @@ "dev": true }, "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, "ajv": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", - "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -429,7 +429,8 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true }, "asn1.js": { "version": "4.10.1", @@ -567,9 +568,9 @@ "dev": true }, "binaryen": { - "version": "90.0.0-nightly.20200214", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-90.0.0-nightly.20200214.tgz", - "integrity": "sha512-ZHajaPd2aP6kDrM9q77afnA402Ufsuw9yLUxtAfgmIglP1JMB2XSRmaXc5pgCELaX53PWJIdcH07LL8uNfTBRw==" + "version": "91.0.0-nightly.20200310", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-91.0.0-nightly.20200310.tgz", + "integrity": "sha512-MmDzq267aa61HdEQeYiz+7guJlsYk2/6NxWC8I4w1jijqDwoqyZZxi7UYnTH7QvfLrNdMjweEgfT7FHjkvkPmQ==" }, "bindings": { "version": "1.5.0", @@ -2788,9 +2789,10 @@ } }, "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==" + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true }, "mamacro": { "version": "0.0.3", @@ -2904,7 +2906,8 @@ "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true }, "mississippi": { "version": "3.0.0", @@ -2949,6 +2952,7 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" }, @@ -2956,7 +2960,8 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true } } }, @@ -4077,9 +4082,9 @@ "dev": true }, "terser": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz", - "integrity": "sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==", + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.6.tgz", + "integrity": "sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g==", "dev": true, "requires": { "commander": "^2.20.0", @@ -4195,6 +4200,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.2.0.tgz", "integrity": "sha512-ZNT+OEGfUNVMGkpIaDJJ44Zq3Yr0bkU/ugN1PHbU+/01Z7UV1fsELRiTx1KuQNvQ1A3pGh3y25iYF6jXgxV21A==", + "dev": true, "requires": { "arrify": "^1.0.0", "buffer-from": "^1.1.0", @@ -4209,7 +4215,8 @@ "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true } } }, @@ -4262,9 +4269,9 @@ "dev": true }, "typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", "dev": true }, "union-value": { @@ -4421,9 +4428,9 @@ } }, "webpack": { - "version": "4.41.6", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.6.tgz", - "integrity": "sha512-yxXfV0Zv9WMGRD+QexkZzmGIh54bsvEs+9aRWxnN8erLWEOehAKUTeNBoUbA6HPEZPlRo7KDi2ZcNveoZgK9MA==", + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz", + "integrity": "sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w==", "dev": true, "requires": { "@webassemblyjs/ast": "1.8.5", @@ -4687,7 +4694,8 @@ "yn": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=" + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true } } } diff --git a/package.json b/package.json index fea8b37574..709c081281 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "assemblyscript", "wasm" ], - "version": "0.9.2", + "version": "0.9.3", "author": "Daniel Wirtz ", "contributors": [], "license": "Apache-2.0", @@ -21,13 +21,13 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "90.0.0-nightly.20200214", + "binaryen": "91.0.0-nightly.20200310", "long": "^4.0.0", "source-map-support": "^0.5.16", "ts-node": "^6.2.0" }, "devDependencies": { - "@types/node": "^13.7.1", + "@types/node": "^13.9.0", "browser-process-hrtime": "^1.0.0", "diff": "^4.0.2", "glob": "^7.1.6", @@ -36,8 +36,8 @@ "ts-loader": "^6.2.1", "ts-node": "^6.2.0", "tslint": "^5.20.1", - "typescript": "^3.7.5", - "webpack": "^4.41.6", + "typescript": "^3.8.3", + "webpack": "^4.42.0", "webpack-cli": "^3.3.11" }, "main": "index.js", diff --git a/src/common.ts b/src/common.ts index 48b1ddc2fe..4966af5751 100644 --- a/src/common.ts +++ b/src/common.ts @@ -163,6 +163,7 @@ export namespace CommonNames { export const ASC_FEATURE_EXCEPTION_HANDLING = "ASC_FEATURE_EXCEPTION_HANDLING"; export const ASC_FEATURE_TAIL_CALLS = "ASC_FEATURE_TAIL_CALLS"; export const ASC_FEATURE_REFERENCE_TYPES = "ASC_FEATURE_REFERENCE_TYPES"; + export const ASC_FEATURE_MULTI_VALUE = "ASC_FEATURE_MULTI_VALUE"; // classes export const I8 = "I8"; export const I16 = "I16"; diff --git a/src/compiler.ts b/src/compiler.ts index 347bc6da66..4b266e22df 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -373,6 +373,7 @@ export class Compiler extends DiagnosticEmitter { if (options.hasFeature(Feature.EXCEPTION_HANDLING)) featureFlags |= FeatureFlags.ExceptionHandling; if (options.hasFeature(Feature.TAIL_CALLS)) featureFlags |= FeatureFlags.TailCall; if (options.hasFeature(Feature.REFERENCE_TYPES)) featureFlags |= FeatureFlags.ReferenceTypes; + if (options.hasFeature(Feature.MULTI_VALUE)) featureFlags |= FeatureFlags.MultiValue; module.setFeatures(featureFlags); } diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index 7376bc2c62..3d3714f8ba 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -56,6 +56,7 @@ export declare function _BinaryenFeatureSignExt(): BinaryenFeatureFlags; export declare function _BinaryenFeatureExceptionHandling(): BinaryenFeatureFlags; export declare function _BinaryenFeatureTailCall(): BinaryenFeatureFlags; export declare function _BinaryenFeatureReferenceTypes(): BinaryenFeatureFlags; +export declare function _BinaryenFeatureMultivalue(): BinaryenFeatureFlags; export declare function _BinaryenFeatureAll(): BinaryenFeatureFlags; type BinaryenExpressionId = i32; diff --git a/src/index.ts b/src/index.ts index c797d229e9..e54fd8034c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -127,6 +127,8 @@ export const FEATURE_EXCEPTION_HANDLING = Feature.EXCEPTION_HANDLING; export const FEATURE_TAIL_CALLS = Feature.TAIL_CALLS; /** Reference types. */ export const FEATURE_REFERENCE_TYPES = Feature.REFERENCE_TYPES; +/** Multi value types. */ +export const FEATURE_MULTI_VALUE = Feature.MULTI_VALUE; /** Enables a specific feature. */ export function enableFeature(options: Options, feature: Feature): void { diff --git a/src/module.ts b/src/module.ts index c6e1e12dd9..58c40425b6 100644 --- a/src/module.ts +++ b/src/module.ts @@ -54,7 +54,8 @@ export enum FeatureFlags { ExceptionHandling = 64 /* _BinaryenFeatureExceptionHandling */, TailCall = 128 /* _BinaryenFeatureTailCall */, ReferenceTypes = 256 /* _BinaryenFeatureReferenceTypes */, - All = 511 /* _BinaryenFeatureAll */ + MultiValue = 512 /* _BinaryenFeatureMultivalue */, + All = 1023 /* _BinaryenFeatureAll */ } export enum ExpressionId { diff --git a/src/program.ts b/src/program.ts index 37d4632fc3..358f1e8976 100644 --- a/src/program.ts +++ b/src/program.ts @@ -731,6 +731,8 @@ export class Program extends DiagnosticEmitter { i64_new(options.hasFeature(Feature.TAIL_CALLS) ? 1 : 0, 0)); this.registerConstantInteger(CommonNames.ASC_FEATURE_REFERENCE_TYPES, Type.bool, i64_new(options.hasFeature(Feature.REFERENCE_TYPES) ? 1 : 0, 0)); + this.registerConstantInteger(CommonNames.ASC_FEATURE_MULTI_VALUE, Type.bool, + i64_new(options.hasFeature(Feature.MULTI_VALUE) ? 1 : 0, 0)); // remember deferred elements var queuedImports = new Array(); diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index fc30fdc545..66586bc0b9 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -70,6 +70,8 @@ declare const ASC_FEATURE_EXCEPTION_HANDLING: bool; declare const ASC_FEATURE_TAIL_CALLS: bool; /** Whether the reference types feature is enabled. */ declare const ASC_FEATURE_REFERENCE_TYPES: bool; +/** Whether the multi value types feature is enabled. */ +declare const ASC_FEATURE_MULTI_VALUE: bool; // Builtins diff --git a/std/assembly/shared/feature.ts b/std/assembly/shared/feature.ts index 038c2a6454..0e5dcc919a 100644 --- a/std/assembly/shared/feature.ts +++ b/std/assembly/shared/feature.ts @@ -21,7 +21,9 @@ export const enum Feature { /** Tail call operations. */ TAIL_CALLS = 1 << 7, // see: https://github.com/WebAssembly/tail-call /** Reference types. */ - REFERENCE_TYPES = 1 << 8 // see: https://github.com/WebAssembly/reference-types + REFERENCE_TYPES = 1 << 8, // see: https://github.com/WebAssembly/reference-types + /** Multi value types. */ + MULTI_VALUE = 1 << 9 // see: https://github.com/WebAssembly/multi-value } /** Gets the name of the specified feature one would specify on the command line. */ @@ -36,6 +38,7 @@ export function featureToString(feature: Feature): string { case Feature.EXCEPTION_HANDLING: return "exception-handling"; case Feature.TAIL_CALLS: return "tail-calls"; case Feature.REFERENCE_TYPES: return "reference-types"; + case Feature.MULTI_VALUE: return "multi-value"; } assert(false); return ""; diff --git a/tests/compiler/asc-constants.ts b/tests/compiler/asc-constants.ts index 5fe68363f7..c8b2b59eba 100644 --- a/tests/compiler/asc-constants.ts +++ b/tests/compiler/asc-constants.ts @@ -13,3 +13,4 @@ ASC_FEATURE_THREADS; ASC_FEATURE_EXCEPTION_HANDLING; ASC_FEATURE_TAIL_CALLS; ASC_FEATURE_REFERENCE_TYPES; +ASC_FEATURE_MULTI_VALUE; diff --git a/tests/compiler/asc-constants.untouched.wat b/tests/compiler/asc-constants.untouched.wat index 7d9604dbc9..66958f18ae 100644 --- a/tests/compiler/asc-constants.untouched.wat +++ b/tests/compiler/asc-constants.untouched.wat @@ -16,6 +16,7 @@ (global $~lib/ASC_FEATURE_EXCEPTION_HANDLING i32 (i32.const 0)) (global $~lib/ASC_FEATURE_TAIL_CALLS i32 (i32.const 0)) (global $~lib/ASC_FEATURE_REFERENCE_TYPES i32 (i32.const 0)) + (global $~lib/ASC_FEATURE_MULTI_VALUE i32 (i32.const 0)) (export "memory" (memory $0)) (start $~start) (func $start:asc-constants (; 0 ;) @@ -47,6 +48,8 @@ drop i32.const 0 drop + i32.const 0 + drop ) (func $~start (; 1 ;) call $start:asc-constants