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.
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.