Assemblyscript: Nomes personalizados para exportações

Criado em 1 out. 2020  ·  4Comentários  ·  Fonte: AssemblyScript/assemblyscript

Ei, sou muito novo no AssemblyScript e não tenho certeza de como conseguir o que desejo e se o AssemblyScript já oferece suporte para isso. Essencialmente, estou tentando compilar o AssemblyScript para Wasm para implantar no ICP (DFINITY). Eles têm sua própria linguagem Motoko, para a qual têm um bom suporte, e estão lançando Rust e C SDKs. Acho que posso fazer isso funcionar para o AssemblyScript, seguindo um dos exemplos em C que eles criaram como código-fonte aberto. Aqui está o que estou tentando alcançar: https://github.com/dfinity/examples/blob/master/c/qr/qr.c#L67

Eu não entendo a sintaxe exatamente. Parece que o nome de exportação da função go está sendo definido como "canister_update go". Como posso fazer isso no AssemblyScript? Compilei com sucesso meu AssemblyScript e o implantei em um nó ICP local, mas agora não posso chamar minha função porque não a marquei adequadamente como uma função de atualização de caixa.

question stale

Todos 4 comentários

O AssemblyScript suporta nomes externos personalizados apenas para importações por meio de @external(module, name) . Então você pode fazer o mesmo:

@external("canister_update", "go")
export function go(): void {
  ...
}

Mas isso não é suportado pelo AS atualmente. Mas você pode escrever uma rotina de transformação personalizada que possibilitou o uso de external decorador para exportações.

Exemplos úteis de como usar transform :
https://github.com/AssemblyScript/examples/tree/master/transform
https://github.com/willemneal/visitor-as

E adicione lógica que se transforma de:

(func $go (export "go") (type $t1) (result i32) i32.const 1)

para

(func $go (export "canister_update go") (type $t1) (result i32) i32.const 1)

quando a função exportada tem @external("canister_update", "go") decorador

Perfeito, então eu simplesmente preciso alterar o nome da exportação? Isso é tudo o que o exemplo C ao qual vinculei está fazendo?

sim, eles apenas substituem (export "go") por (export "canister_update go")

Este problema foi marcado automaticamente como obsoleto porque não teve atividades recentes. Ele será fechado se nenhuma outra atividade ocorrer. Obrigado por suas contribuições.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

jarble picture jarble  ·  3Comentários

DuncanUszkay1 picture DuncanUszkay1  ·  3Comentários

solidsnail picture solidsnail  ·  5Comentários

kyegupov picture kyegupov  ·  3Comentários

emil14 picture emil14  ·  3Comentários