Logo do repositório
 
A carregar...
Miniatura
Publicação

Linguagem orientada a aspetos para transformação de Webassembly

Utilize este identificador para referenciar este registo.
Nome:Descrição:Tamanho:Formato: 
João-Paulo-Mendes-Marques.pdf4.27 MBAdobe PDF Ver/Abrir

Resumo(s)

A execução de um programa de Webassembly numa mĆ”quina cliente implica o descarregamento do código do servidor. Isto significa que qualquer alteração que o cliente pretenda fazer no código deve ser feita diretamente no código compilado. Estas transformaƧƵes podem ser motivadas por diversas razƵes, tais como: reparação imediata de erros/problemas encontrados em produção, neutralização de código potencialmente malicioso, melhorias de desempenho, etc. Outras aplicaƧƵes de transformaƧƵes diretas de código binĆ”rio Webassembly noutros contextos incluem a instrumentação do código, a geração de um conjunto de variaƧƵes a partir do mesmo código binĆ”rio, por exemplo, com variaƧƵes otimizadas para diferentes arquiteturas (no cliente ou servidor) – sem recompilação do programa, uma vez que existe sempre a versĆ£o base (compilada a partir do código fonte), e um conjunto de versƵes relativas Ć s variaƧƵes - ou a monitorização do desempenho das atividades realizadas pelo programa. Com isto, o trabalho desenvolvido neste documento consiste numa ferramenta para manipulação de código WebAssembly que permite a realização de pesquisas no código, e a sua substituição por um conjunto de instruƧƵes definidas pelo programador. A ferramenta tem o nome de WasmManipulator e seguirĆ” uma abordagem orientada a aspetos para alcanƧar a flexibilidade e simplicidade pretendidas. Para alĆ©m disso, dado que rotinas de Webassembly podem ser fortemente interdependentes do código JavaScript que as usa, a ferramenta possui determinadas funcionalidades que permitem tirar partido e explorar essa dependĆŖncia. Isto inclui a definição de tipos adicionais no código WASM, e interpretação/execução de expressƵes em tempo de execução. O WasmManipulator foi desenvolvido com recurso Ć  linguagem Go, e recorreu a outras tecnologias e ferramentas para se auxiliar no seu desenvolvimento, tais como, YAML, WABT e Comby. Para implementar o módulo JavaScript utilizou-se o TypeScript, que juntamente com o GulpJS, geraram o respetivo código. Com a implementação de todos os requisitos estabelecidos para a ferramenta, validados atravĆ©s da utilização de cenĆ”rios de uso tĆ­picos em código disponĆ­vel publicamente, dĆ£o-se por atingidos os objetivos previstos para a ferramenta.

Descrição

Palavras-chave

WebAssembly JavaScript Aspetos Aplicações Web Transformação binÔria Instrumentação

Contexto Educativo

Citação

Projetos de investigação

Unidades organizacionais

FascĆ­culo