From bdb6d8aec05616b96d36d5702dbd0f5d14fde868 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Fri, 14 Feb 2025 16:42:00 +0300 Subject: [PATCH 1/8] Added function transformation + empty return statement --- arkoala-arkts/libarkts/src/arkts-api/types.ts | 9 ++- arkoala-arkts/memo-plugin/demo/demo.ts | 1 + arkoala-arkts/memo-plugin/package.json | 2 +- .../memo-plugin/runtime-api/states/State.sts | 6 ++ ...mo-detector.ts => function-transformer.ts} | 78 ++++++++++++++++++- .../memo-plugin/src/memo-transformer.ts | 8 +- arkoala-arkts/memo-plugin/src/utils.ts | 5 ++ 7 files changed, 99 insertions(+), 10 deletions(-) rename arkoala-arkts/memo-plugin/src/{memo-detector.ts => function-transformer.ts} (50%) diff --git a/arkoala-arkts/libarkts/src/arkts-api/types.ts b/arkoala-arkts/libarkts/src/arkts-api/types.ts index d83d07096..7be8fafd1 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/types.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/types.ts @@ -771,8 +771,15 @@ export class ReturnStatement extends AstNode { } static create( - argument: AstNode, + argument?: AstNode, ): ReturnStatement { + if (argument === undefined) { + return new ReturnStatement( + global.generatedEs2panda._CreateReturnStatement( + global.context + ) + ) + } return new ReturnStatement( global.es2panda._CreateReturnStatement1( global.context, diff --git a/arkoala-arkts/memo-plugin/demo/demo.ts b/arkoala-arkts/memo-plugin/demo/demo.ts index a5990afd4..989a003bf 100644 --- a/arkoala-arkts/memo-plugin/demo/demo.ts +++ b/arkoala-arkts/memo-plugin/demo/demo.ts @@ -13,6 +13,7 @@ function main() { const manager = GlobalStateManager.instance const state = manager.computableState((context: StateContext) => { memoEntry(context, 0, foo_wrapper) + return 20 }) console.log(state.value) } diff --git a/arkoala-arkts/memo-plugin/package.json b/arkoala-arkts/memo-plugin/package.json index 83de11ca6..875b28ee7 100644 --- a/arkoala-arkts/memo-plugin/package.json +++ b/arkoala-arkts/memo-plugin/package.json @@ -4,7 +4,7 @@ "scripts": { "compile": "tsc -b .", "compile:libarkts": "npm run compile --prefix ../libarkts", - "demo:run": "npm run clean --prefix demo && npm run compile && npm run ts-like:compile --prefix demo && npm run arkts-like:compile:capi --prefix demo && npm run run --prefix demo", + "demo:run": "npm run compile && npm run ts-like:compile --prefix demo && npm run arkts-like:compile:capi --prefix demo && npm run run --prefix demo", "demo:disasm": "npm run disasm --prefix demo" } } \ No newline at end of file diff --git a/arkoala-arkts/memo-plugin/runtime-api/states/State.sts b/arkoala-arkts/memo-plugin/runtime-api/states/State.sts index 361be3850..afd523fe6 100644 --- a/arkoala-arkts/memo-plugin/runtime-api/states/State.sts +++ b/arkoala-arkts/memo-plugin/runtime-api/states/State.sts @@ -7,7 +7,13 @@ export interface Disposable { disposed: boolean dispose(): void } +export interface InternalScope { + readonly unchanged: boolean + readonly cached: Value + recache(newValue?: Value): Value +} export declare interface ComputableState extends Disposable, State { } export declare interface StateContext { computableState(compute: (context: StateContext) => Value, cleanup?: (context: StateContext, value: Value | undefined) => void): ComputableState + scope(id: int): InternalScope } diff --git a/arkoala-arkts/memo-plugin/src/memo-detector.ts b/arkoala-arkts/memo-plugin/src/function-transformer.ts similarity index 50% rename from arkoala-arkts/memo-plugin/src/memo-detector.ts rename to arkoala-arkts/memo-plugin/src/function-transformer.ts index db447f07c..770cd5250 100644 --- a/arkoala-arkts/memo-plugin/src/memo-detector.ts +++ b/arkoala-arkts/memo-plugin/src/function-transformer.ts @@ -17,17 +17,87 @@ import * as arkts from "@koalaui/libarkts" import { AbstractVisitor } from "./AbstractVisitor" import { createContextParameter, createIdParameter, RuntimeNames } from "./utils" -export function hasMemoAnnotation(node: arkts.ScriptFunction) { +function hasMemoAnnotation(node: arkts.ScriptFunction) { return arkts.getAnnotations(node).some((it) => arkts.isIdentifier(it.expr) && it.expr.name === RuntimeNames.ANNOTATION ) } -export function createHiddenParameters(withType: boolean): arkts.ETSParameterExpression[] { +function createHiddenParameters(withType: boolean): arkts.ETSParameterExpression[] { return [createContextParameter(withType), createIdParameter(withType)] } -export class MemoDetector extends AbstractVisitor { +function updateFunctionBody(node: arkts.BlockStatement | undefined): arkts.BlockStatement | undefined { + if (node === undefined) + return node + const scopeDeclaraion = arkts.factory.createVariableDeclaration( + 0, + arkts.Es2pandaVariableDeclarationKind.VARIABLE_DECLARATION_KIND_CONST, + [ + arkts.factory.createVariableDeclarator( + arkts.Es2pandaVariableDeclaratorFlag.VARIABLE_DECLARATOR_FLAG_CONST, + arkts.factory.createIdentifier(RuntimeNames.SCOPE), + arkts.factory.createCallExpression( + arkts.factory.createMemberExpression( + arkts.factory.createIdentifier(RuntimeNames.CONTEXT), + arkts.factory.createIdentifier(RuntimeNames.INTERNAL_SCOPE), + arkts.Es2pandaMemberExpressionKind.MEMBER_EXPRESSION_KIND_PROPERTY_ACCESS, + false, + false + ), + arkts.factory.createTypeParameterDeclaration( + [arkts.factory.createIdentifier("")] + ), + [ + arkts.factory.createIdentifier(RuntimeNames.ID) + ] + ) + ) + ] + ) + const unchangedCheck = arkts.factory.createIfStatement( + arkts.factory.createMemberExpression( + arkts.factory.createIdentifier(RuntimeNames.SCOPE), + arkts.factory.createIdentifier(RuntimeNames.INTERNAL_VALUE_OK), + arkts.Es2pandaMemberExpressionKind.MEMBER_EXPRESSION_KIND_NONE, + false, + false + ), + arkts.factory.createReturnStatement( + arkts.factory.createMemberExpression( + arkts.factory.createIdentifier(RuntimeNames.SCOPE), + arkts.factory.createIdentifier(RuntimeNames.INTERNAL_VALUE), + arkts.Es2pandaMemberExpressionKind.MEMBER_EXPRESSION_KIND_NONE, + false, + false + ) + ) + ) + const recache = arkts.factory.createReturnStatement( + arkts.factory.createCallExpression( + arkts.factory.createMemberExpression( + arkts.factory.createIdentifier(RuntimeNames.SCOPE), + arkts.factory.createIdentifier(RuntimeNames.INTERNAL_VALUE_NEW), + arkts.Es2pandaMemberExpressionKind.MEMBER_EXPRESSION_KIND_PROPERTY_ACCESS, + false, + false + ), + undefined, + [] + ) + ) + return arkts.factory.updateBlock( + node, + [ + scopeDeclaraion, + unchangedCheck, + ...node.statements, + recache + ] + ) +} + +export class FunctionTransformer extends AbstractVisitor { visitor(beforeChildren: arkts.AstNode): arkts.AstNode { // TODO: Remove (currently annotations are lost on visitor) const methodDefinitionHasMemoAnnotation = @@ -46,7 +116,7 @@ export class MemoDetector extends AbstractVisitor { arkts.factory.createFunctionExpression( arkts.factory.updateScriptFunction( node.scriptFunction, - node.scriptFunction.body, + updateFunctionBody(node.scriptFunction.body), undefined, node.scriptFunction.scriptFunctionFlags, node.scriptFunction.modifiers, diff --git a/arkoala-arkts/memo-plugin/src/memo-transformer.ts b/arkoala-arkts/memo-plugin/src/memo-transformer.ts index 1975ec2be..2858d6bf8 100644 --- a/arkoala-arkts/memo-plugin/src/memo-transformer.ts +++ b/arkoala-arkts/memo-plugin/src/memo-transformer.ts @@ -14,7 +14,7 @@ */ import * as arkts from "@koalaui/libarkts" -import { MemoDetector } from "./memo-detector" +import { FunctionTransformer } from "./function-transformer" import { ImportTransformer } from "./import-transformer" export interface TransformerOptions { @@ -25,9 +25,9 @@ export default function memoTransformer( userPluginOptions?: TransformerOptions ) { return (node: arkts.EtsScript) => { - const memoDetector = new MemoDetector() - memoDetector.visitor(node) const importTransformer = new ImportTransformer() - return importTransformer.visitor(node) + const functionTransformer = new FunctionTransformer() + importTransformer.visitor(node) + return functionTransformer.visitor(node) } } diff --git a/arkoala-arkts/memo-plugin/src/utils.ts b/arkoala-arkts/memo-plugin/src/utils.ts index 0e3c4b606..0655fecc8 100644 --- a/arkoala-arkts/memo-plugin/src/utils.ts +++ b/arkoala-arkts/memo-plugin/src/utils.ts @@ -24,6 +24,11 @@ export enum RuntimeNames { CONTEXT_TYPE_DEFAULT_IMPORT = "@koalaui/runtime", ID = "__memo_id", ID_TYPE = "__memo_id_type", + INTERNAL_SCOPE = "scope", + INTERNAL_VALUE = "cached", + INTERNAL_VALUE_NEW = "recache", + INTERNAL_VALUE_OK = "unchanged", + SCOPE = "__memo_scope", } export function createContextTypeImportSpecifier(): arkts.ImportSpecifier { -- Gitee From 1f34962e3cae5400ca3325555c46f70ac1840344 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Fri, 14 Feb 2025 18:37:50 +0300 Subject: [PATCH 2/8] added id --- .../src/arkts-api/utilities/public.ts | 4 ++ .../memo-plugin/demo/tsconfig-unmemoize.json | 2 +- .../memo-plugin/src/function-transformer.ts | 27 ++++---- .../memo-plugin/src/memo-transformer.ts | 4 +- arkoala-arkts/memo-plugin/src/utils.ts | 66 +++++++++++++++++-- arkoala-arkts/memo-plugin/tsconfig.json | 10 ++- 6 files changed, 95 insertions(+), 18 deletions(-) diff --git a/arkoala-arkts/libarkts/src/arkts-api/utilities/public.ts b/arkoala-arkts/libarkts/src/arkts-api/utilities/public.ts index dbc9a8b88..dbea933f3 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/utilities/public.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/utilities/public.ts @@ -79,3 +79,7 @@ export function getOriginalNode(node: AstNode): AstNode { } return unpackNonNullableNode(node.originalPeer) } + +export function getFileName(): string { + return global.filePath +} diff --git a/arkoala-arkts/memo-plugin/demo/tsconfig-unmemoize.json b/arkoala-arkts/memo-plugin/demo/tsconfig-unmemoize.json index afa892abb..c76ebb21f 100644 --- a/arkoala-arkts/memo-plugin/demo/tsconfig-unmemoize.json +++ b/arkoala-arkts/memo-plugin/demo/tsconfig-unmemoize.json @@ -9,7 +9,7 @@ "transform": "@koalaui/compiler-plugin/build/lib/src/koala-transformer.js", "trace": false, "only_unmemoize": true, - "unmemoizeDir": "build/unmemoized" + "unmemoizeDir": "build/unmemoized", } ] }, diff --git a/arkoala-arkts/memo-plugin/src/function-transformer.ts b/arkoala-arkts/memo-plugin/src/function-transformer.ts index 770cd5250..0c86fe39a 100644 --- a/arkoala-arkts/memo-plugin/src/function-transformer.ts +++ b/arkoala-arkts/memo-plugin/src/function-transformer.ts @@ -15,7 +15,7 @@ import * as arkts from "@koalaui/libarkts" import { AbstractVisitor } from "./AbstractVisitor" -import { createContextParameter, createIdParameter, RuntimeNames } from "./utils" +import { createContextParameter, createIdParameter, createContextArgument, createIdArgument, RuntimeNames, PositionalIdTracker } from "./utils" function hasMemoAnnotation(node: arkts.ScriptFunction) { return arkts.getAnnotations(node).some((it) => @@ -23,11 +23,15 @@ function hasMemoAnnotation(node: arkts.ScriptFunction) { ) } -function createHiddenParameters(withType: boolean): arkts.ETSParameterExpression[] { - return [createContextParameter(withType), createIdParameter(withType)] +function createHiddenParameters(): arkts.ETSParameterExpression[] { + return [createContextParameter(), createIdParameter()] } -function updateFunctionBody(node: arkts.BlockStatement | undefined): arkts.BlockStatement | undefined { +function createHiddenArguments(hash: arkts.NumberLiteral | arkts.StringLiteral): arkts.AstNode[] { + return [createContextArgument(), createIdArgument(hash)] +} + +function updateFunctionBody(node: arkts.BlockStatement | undefined, hash: arkts.NumberLiteral | arkts.StringLiteral): arkts.BlockStatement | undefined { if (node === undefined) return node const scopeDeclaraion = arkts.factory.createVariableDeclaration( @@ -49,7 +53,7 @@ function updateFunctionBody(node: arkts.BlockStatement | undefined): arkts.Block [arkts.factory.createIdentifier("")] ), [ - arkts.factory.createIdentifier(RuntimeNames.ID) + createIdArgument(hash) ] ) ) @@ -98,16 +102,18 @@ function updateFunctionBody(node: arkts.BlockStatement | undefined): arkts.Block } export class FunctionTransformer extends AbstractVisitor { + constructor(private positionalIdTracker: PositionalIdTracker) { + super() + } + visitor(beforeChildren: arkts.AstNode): arkts.AstNode { // TODO: Remove (currently annotations are lost on visitor) const methodDefinitionHasMemoAnnotation = beforeChildren instanceof arkts.MethodDefinition && hasMemoAnnotation(beforeChildren.scriptFunction) const node = this.visitEachChild(beforeChildren) - console.log(" ".repeat(this.indentation) + node.constructor.name) if (node instanceof arkts.MethodDefinition) { if (methodDefinitionHasMemoAnnotation) { - console.log("MEMO SCRIPT FUNCTION") // TODO: fix const updatedNode = arkts.factory.updateMethodDefinition( node, @@ -116,19 +122,18 @@ export class FunctionTransformer extends AbstractVisitor { arkts.factory.createFunctionExpression( arkts.factory.updateScriptFunction( node.scriptFunction, - updateFunctionBody(node.scriptFunction.body), + updateFunctionBody(node.scriptFunction.body, this.positionalIdTracker.id(node.name.name)), undefined, node.scriptFunction.scriptFunctionFlags, node.scriptFunction.modifiers, false, node.scriptFunction.ident, - [...createHiddenParameters(true), ...node.scriptFunction.parameters] + [...createHiddenParameters(), ...node.scriptFunction.parameters] ), ), node.modifiers, false ) - console.log("END") return updatedNode } } @@ -140,7 +145,7 @@ export class FunctionTransformer extends AbstractVisitor { node, node.expression, undefined, - [...createHiddenParameters(false), ...node.arguments] + [...createHiddenArguments(this.positionalIdTracker.id(decl.name.name)), ...node.arguments] ) } } diff --git a/arkoala-arkts/memo-plugin/src/memo-transformer.ts b/arkoala-arkts/memo-plugin/src/memo-transformer.ts index 2858d6bf8..02c8d3a6a 100644 --- a/arkoala-arkts/memo-plugin/src/memo-transformer.ts +++ b/arkoala-arkts/memo-plugin/src/memo-transformer.ts @@ -16,6 +16,7 @@ import * as arkts from "@koalaui/libarkts" import { FunctionTransformer } from "./function-transformer" import { ImportTransformer } from "./import-transformer" +import { PositionalIdTracker } from "./utils" export interface TransformerOptions { trace?: boolean, @@ -25,8 +26,9 @@ export default function memoTransformer( userPluginOptions?: TransformerOptions ) { return (node: arkts.EtsScript) => { + const positionalIdTracker = new PositionalIdTracker(arkts.getFileName(), false) const importTransformer = new ImportTransformer() - const functionTransformer = new FunctionTransformer() + const functionTransformer = new FunctionTransformer(positionalIdTracker) importTransformer.visitor(node) return functionTransformer.visitor(node) } diff --git a/arkoala-arkts/memo-plugin/src/utils.ts b/arkoala-arkts/memo-plugin/src/utils.ts index 0655fecc8..e78b22ef4 100644 --- a/arkoala-arkts/memo-plugin/src/utils.ts +++ b/arkoala-arkts/memo-plugin/src/utils.ts @@ -13,6 +13,7 @@ * limitations under the License. */ +import { parseNumber, UniqueId } from "@koalaui/common" import * as arkts from "@koalaui/libarkts" export enum RuntimeNames { @@ -45,20 +46,77 @@ export function createIdTypeImportSpecifier(): arkts.ImportSpecifier { ) } -export function createContextParameter(withType: boolean): arkts.ETSParameterExpression { +export function createContextParameter(): arkts.ETSParameterExpression { return arkts.factory.createParameterDeclaration( arkts.factory.createIdentifier(RuntimeNames.CONTEXT, - withType ? arkts.factory.createIdentifier(RuntimeNames.CONTEXT_TYPE) : undefined + arkts.factory.createIdentifier(RuntimeNames.CONTEXT_TYPE) ), undefined ) } -export function createIdParameter(withType: boolean): arkts.ETSParameterExpression { +export function createIdParameter(): arkts.ETSParameterExpression { return arkts.factory.createParameterDeclaration( arkts.factory.createIdentifier(RuntimeNames.ID, - withType ? arkts.factory.createIdentifier(RuntimeNames.ID_TYPE) : undefined + arkts.factory.createIdentifier(RuntimeNames.ID_TYPE) ), undefined ) } + +export function createContextArgument(): arkts.AstNode { + return arkts.factory.createIdentifier(RuntimeNames.CONTEXT) +} + +export function createIdArgument(hash: arkts.NumberLiteral | arkts.StringLiteral): arkts.AstNode { + return arkts.factory.createBinaryExpression( + arkts.factory.createIdentifier(RuntimeNames.ID), + arkts.Es2pandaTokenType.TOKEN_TYPE_PUNCTUATOR_PLUS, + hash + ) +} + +function baseName(path: string): string { + return path.replace(/^.*\/(.*)$/, "$1") +} + +export class PositionalIdTracker { + // Global for the whole program. + static callCount: number = 0 + + // Set `stable` to true if you want to have more predictable values. + // For example for tests. + // Don't use it in production! + constructor(public filename: string, public stableForTests: boolean = false) { + if (stableForTests) PositionalIdTracker.callCount = 0 + } + + sha1Id(callName: string, fileName: string): string { + const uniqId = new UniqueId() + uniqId.addString("memo call uniqid") + uniqId.addString(fileName) + uniqId.addString(callName) + uniqId.addI32(PositionalIdTracker.callCount++) + return uniqId.compute().substring(0, 7) + } + + stringId(callName: string, fileName: string): string { + return `${PositionalIdTracker.callCount++}_${callName}_id_DIRNAME/${fileName}` + } + + id(callName: string): arkts.NumberLiteral | arkts.StringLiteral { + + const fileName = this.stableForTests ? + baseName(this.filename) : + this.filename + + const positionId = (this.stableForTests) ? + this.stringId(callName, fileName) : + this.sha1Id(callName, fileName) + + + return this.stableForTests + ? arkts.factory.createStringLiteral(positionId) + : arkts.factory.createNumericLiteral(parseInt(positionId, 16)) + } +} diff --git a/arkoala-arkts/memo-plugin/tsconfig.json b/arkoala-arkts/memo-plugin/tsconfig.json index ef0efa64d..a21696d98 100644 --- a/arkoala-arkts/memo-plugin/tsconfig.json +++ b/arkoala-arkts/memo-plugin/tsconfig.json @@ -4,7 +4,15 @@ "rootDir": ".", "baseUrl": ".", "outDir": "./build", - "module": "CommonJS" + "module": "CommonJS", + "paths": { + "@koalaui/compat": [ + "../../../incremental/compat/src/arkts" + ], + "@koalaui/common": [ + "../../../incremental/common/src" + ] + }, }, "include": [ "./src/**/*.ts", -- Gitee From f6b8e2f919b8cb0c847ec557d5fc461532b02e73 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Fri, 14 Feb 2025 18:58:41 +0300 Subject: [PATCH 3/8] attempt to add CI --- .gitlab-ci.yml | 1 + arkoala-arkts/memo-plugin/.gitlab-ci.yml | 36 ++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 arkoala-arkts/memo-plugin/.gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 16a301038..25899d68a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -34,4 +34,5 @@ include: - arkoala/loader/.gitlab-ci.yml - arkoala-arkts/.gitlab-ci.yml - arkoala-arkts/libarkts/.gitlab-ci.yml + - arkoala-arkts/memo-plugin/.gitlab-ci.yml - interop/.gitlab-ci.yml diff --git a/arkoala-arkts/memo-plugin/.gitlab-ci.yml b/arkoala-arkts/memo-plugin/.gitlab-ci.yml new file mode 100644 index 000000000..cf010240f --- /dev/null +++ b/arkoala-arkts/memo-plugin/.gitlab-ci.yml @@ -0,0 +1,36 @@ +build memo-plugin: + stage: build + interruptible: true + extends: + - .linux-vm-shell-task + needs: + - install node modules (arkoala) + - install node modules (arkoala-arkts) + - install node modules (incremental) + - install node modules (interop) + before_script: + - !reference [.setup, script] + - npm run panda:sdk:install --prefix arkoala-arkts/libarkts + - npm run compile --prefix arkoala-arkts/libarkts + script: + - npm run compile --prefix arkoala-arkts/memo-plugin + +test memo-plugin: + stage: build + interruptible: true + extends: + - .linux-vm-shell-task + needs: + - install node modules (arkoala) + - install node modules (arkoala-arkts) + - install node modules (incremental) + - install node modules (interop) + - build incremental.abc + before_script: + - !reference [.setup, script] + - npm run compile --prefix incremental/runtime + - npm run panda:sdk:install --prefix arkoala-arkts/libarkts + - npm run compile --prefix arkoala-arkts/libarkts + - npm run compile --prefix arkoala-arkts/memo-plugin + script: + - npm run demo:run --prefix arkoala-arkts/memo-plugin -- Gitee From a5ca4a0ad91e2a0093f848be1d281fbfb413e89c Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Fri, 14 Feb 2025 19:05:20 +0300 Subject: [PATCH 4/8] fix stage --- arkoala-arkts/memo-plugin/.gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arkoala-arkts/memo-plugin/.gitlab-ci.yml b/arkoala-arkts/memo-plugin/.gitlab-ci.yml index cf010240f..781f5dd7a 100644 --- a/arkoala-arkts/memo-plugin/.gitlab-ci.yml +++ b/arkoala-arkts/memo-plugin/.gitlab-ci.yml @@ -16,7 +16,7 @@ build memo-plugin: - npm run compile --prefix arkoala-arkts/memo-plugin test memo-plugin: - stage: build + stage: test interruptible: true extends: - .linux-vm-shell-task -- Gitee From 05f37af7d5f0a901f2aede0b08274608cb4baa00 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Fri, 14 Feb 2025 17:47:35 +0000 Subject: [PATCH 5/8] update arkoala-arkts/memo-plugin/.gitlab-ci.yml. Signed-off-by: Igor Loginov --- arkoala-arkts/memo-plugin/.gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arkoala-arkts/memo-plugin/.gitlab-ci.yml b/arkoala-arkts/memo-plugin/.gitlab-ci.yml index 781f5dd7a..e6863c346 100644 --- a/arkoala-arkts/memo-plugin/.gitlab-ci.yml +++ b/arkoala-arkts/memo-plugin/.gitlab-ci.yml @@ -28,6 +28,9 @@ test memo-plugin: - build incremental.abc before_script: - !reference [.setup, script] + - npm run compile:all --prefix incremental/compat + - npm run compile --prefix incremental/common + - npm run compile --prefix incremental/compiler-plugin - npm run compile --prefix incremental/runtime - npm run panda:sdk:install --prefix arkoala-arkts/libarkts - npm run compile --prefix arkoala-arkts/libarkts -- Gitee From 5efd7752e7f3d80d350791b1afb85382dfcb29ad Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Fri, 14 Feb 2025 18:28:20 +0000 Subject: [PATCH 6/8] update arkoala-arkts/memo-plugin/.gitlab-ci.yml. Signed-off-by: Igor Loginov --- arkoala-arkts/memo-plugin/.gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/arkoala-arkts/memo-plugin/.gitlab-ci.yml b/arkoala-arkts/memo-plugin/.gitlab-ci.yml index e6863c346..51db6fa47 100644 --- a/arkoala-arkts/memo-plugin/.gitlab-ci.yml +++ b/arkoala-arkts/memo-plugin/.gitlab-ci.yml @@ -32,6 +32,7 @@ test memo-plugin: - npm run compile --prefix incremental/common - npm run compile --prefix incremental/compiler-plugin - npm run compile --prefix incremental/runtime + - npm run unmemoize --prefix incremental/runtime - npm run panda:sdk:install --prefix arkoala-arkts/libarkts - npm run compile --prefix arkoala-arkts/libarkts - npm run compile --prefix arkoala-arkts/memo-plugin -- Gitee From 411c2e72823fb3e0c607a87a9fa9dead569fb36c Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Fri, 14 Feb 2025 23:22:15 +0300 Subject: [PATCH 7/8] fix package.json --- arkoala-arkts/memo-plugin/demo/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arkoala-arkts/memo-plugin/demo/package.json b/arkoala-arkts/memo-plugin/demo/package.json index 863ce6347..bab47dc52 100644 --- a/arkoala-arkts/memo-plugin/demo/package.json +++ b/arkoala-arkts/memo-plugin/demo/package.json @@ -8,9 +8,9 @@ "ts-like:compile": "npm run unmemoize && fast-arktsc --input-files ./arktsconfig-unmemoized.json --output-dir ./build --compiler ../../../incremental/tools/panda/arkts/arktsc --link-name stub && ninja ${NINJA_OPTIONS} -f build/build.ninja", "arkts-like:compile": "../../../incremental/tools/panda/arkts/arktsc --arktsconfig ./arktsconfig.json --output ./build/demo.abc ./demo.sts", "arkts-like:compile:capi": "../../../incremental/tools/panda/arkts/arktsc-capi --arktsconfig ./arktsconfig.json --output ./build/demo.abc --file ./demo.sts --dump-plugin-ast", - "run": "../../../incremental/tools/panda/node_modules/@panda/sdk/linux_host_tools/bin/ark --load-runtimes=ets --boot-panda-files=../../../incremental/tools/panda/node_modules/@panda/sdk/ets/etsstdlib.abc:../../../incremental/runtime/build/incremental.abc:build/stub.abc ./build/demo.abc @koalaui.runtime.demo.ETSGLOBAL::main", - "run:unmemoized": "npm run unmemoize && npm run ts-like:compile && ../../../incremental/tools/panda/node_modules/@panda/sdk/linux_host_tools/bin/ark --load-runtimes=ets --boot-panda-files=../../../incremental/tools/panda/node_modules/@panda/sdk/ets/etsstdlib.abc:../../../incremental/runtime/build/incremental.abc ./build/stub.abc @koalaui.runtime.demo.ETSGLOBAL::main", - "disasm": "../../../incremental/tools/panda/node_modules/@panda/sdk/linux_host_tools/bin/ark_disasm build/stub.abc build/stub.disasm" + "run": "../../../incremental/tools/panda/arkts/ark ./build/demo.abc --ark-boot-files=../../../incremental/runtime/build/incremental.abc:build/stub.abc --ark-entry-point @koalaui.runtime.demo.ETSGLOBAL::main", + "run:unmemoized": "npm run unmemoize && npm run ts-like:compile && ../../../incremental/tools/panda/arkts/ark ./build/demo.abc --ark-boot-files=../../../incremental/runtime/build/incremental.abc --ark-entry-point @koalaui.runtime.demo.ETSGLOBAL::main", + "disasm": "../../../incremental/tools/panda/arkts/arkdisasm build/stub.abc build/stub.disasm" }, "devDependencies": { "@koalaui/ets-tsc": "4.9.5-r4", -- Gitee From 5ac5b6afa6f9063c7e7f850f90d4c9f205920e3f Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Fri, 14 Feb 2025 23:36:34 +0300 Subject: [PATCH 8/8] fix --- arkoala-arkts/memo-plugin/demo/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arkoala-arkts/memo-plugin/demo/package.json b/arkoala-arkts/memo-plugin/demo/package.json index bab47dc52..0c938a24b 100644 --- a/arkoala-arkts/memo-plugin/demo/package.json +++ b/arkoala-arkts/memo-plugin/demo/package.json @@ -8,8 +8,8 @@ "ts-like:compile": "npm run unmemoize && fast-arktsc --input-files ./arktsconfig-unmemoized.json --output-dir ./build --compiler ../../../incremental/tools/panda/arkts/arktsc --link-name stub && ninja ${NINJA_OPTIONS} -f build/build.ninja", "arkts-like:compile": "../../../incremental/tools/panda/arkts/arktsc --arktsconfig ./arktsconfig.json --output ./build/demo.abc ./demo.sts", "arkts-like:compile:capi": "../../../incremental/tools/panda/arkts/arktsc-capi --arktsconfig ./arktsconfig.json --output ./build/demo.abc --file ./demo.sts --dump-plugin-ast", - "run": "../../../incremental/tools/panda/arkts/ark ./build/demo.abc --ark-boot-files=../../../incremental/runtime/build/incremental.abc:build/stub.abc --ark-entry-point @koalaui.runtime.demo.ETSGLOBAL::main", - "run:unmemoized": "npm run unmemoize && npm run ts-like:compile && ../../../incremental/tools/panda/arkts/ark ./build/demo.abc --ark-boot-files=../../../incremental/runtime/build/incremental.abc --ark-entry-point @koalaui.runtime.demo.ETSGLOBAL::main", + "run": "../../../incremental/tools/panda/arkts/ark ./build/demo.abc --ark-boot-files ../../../incremental/runtime/build/incremental.abc:build/stub.abc --ark-entry-point @koalaui.runtime.demo.ETSGLOBAL::main", + "run:unmemoized": "npm run unmemoize && npm run ts-like:compile && ../../../incremental/tools/panda/arkts/ark ./build/demo.abc --ark-boot-files ../../../incremental/runtime/build/incremental.abc --ark-entry-point @koalaui.runtime.demo.ETSGLOBAL::main", "disasm": "../../../incremental/tools/panda/arkts/arkdisasm build/stub.abc build/stub.disasm" }, "devDependencies": { -- Gitee