Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AssemblyScript] Problemas a serem corrigidos #692

Open
1 of 3 tasks
leonelsanchesdasilva opened this issue Nov 29, 2024 · 1 comment
Open
1 of 3 tasks

[AssemblyScript] Problemas a serem corrigidos #692

leonelsanchesdasilva opened this issue Nov 29, 2024 · 1 comment
Assignees
Labels
melhoria Melhorias problema Problemas na execução do Delégua

Comments

@leonelsanchesdasilva
Copy link
Contributor

leonelsanchesdasilva commented Nov 29, 2024

Desdobramento de #689.

  • texto() deve ser traduzido como console.log();
  • Deve haver a importação padrão para wapi, bem como demais diretivas para fazer o código compilar corretamente;
  • Instruções sobre compilação em diferentes ambientes devem ser colocadas como comentário no início do código.
@leonelsanchesdasilva leonelsanchesdasilva added problema Problemas na execução do Delégua melhoria Melhorias labels Nov 29, 2024
@leonelsanchesdasilva leonelsanchesdasilva self-assigned this Nov 29, 2024
@leonelsanchesdasilva
Copy link
Contributor Author

Cada ambiente requer uma forma diferente de exposição de APIs. Por exemplo, chamar console.log() de dentro de um fonte AssemblyScript requer algo assim: AssemblyScript/assemblyscript#261

Já para Node.js, teríamos que ter um arquivo que expõe as APIs, e depois outro que escreva os pontos de entrada de acordo com o ambiente. Por exemplo, um arquivo chamado exemplo.ts em AssemblyScript teria o seguinte:

namespace console {
    declare function log(str: string): void;
}

export function main(): void {
    console.log("Escrevendo alguma coisa.");
}

Um arquivo de inicialização para Node.js, chamado teste-node.mjs teria o seguinte:

import fs from "fs";
import loader from '@assemblyscript/loader';

let exports;
loader.instantiate( fs.readFileSync("./build/release.wasm"), {
    exemplo: {
        "console.log"(ptr) {
            console.log(exports.__getString(ptr));
        }
    }
})
.then(module => {
    exports = module.exports;
    exports.main();
})
.catch(e => {
    console.error(e);
});

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
melhoria Melhorias problema Problemas na execução do Delégua
Projects
None yet
Development

No branches or pull requests

1 participant