Repository logo
 
Publication

Linguagem orientada a aspetos para transformação de Webassembly

dc.contributor.advisorBarreiros, Jorge Miguel Sousa
dc.contributor.authorRodrigues, João Paulo Mendes
dc.date.accessioned2022-08-29T13:53:29Z
dc.date.available2022-08-29T13:53:29Z
dc.date.issued2022-06-02
dc.date.submitted2022-01-07
dc.description.abstractA 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.pt_PT
dc.identifier.tid203033116
dc.identifier.urihttp://hdl.handle.net/10400.26/41695
dc.language.isoporpt_PT
dc.subjectWebAssemblypt_PT
dc.subjectJavaScriptpt_PT
dc.subjectAspetospt_PT
dc.subjectAplicações Webpt_PT
dc.subjectTransformação bináriapt_PT
dc.subjectInstrumentaçãopt_PT
dc.titleLinguagem orientada a aspetos para transformação de Webassemblypt_PT
dc.typemaster thesis
dspace.entity.typePublication
rcaap.rightsopenAccesspt_PT
rcaap.typemasterThesispt_PT

Files

Original bundle
Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
João-Paulo-Mendes-Marques.pdf
Size:
4.27 MB
Format:
Adobe Portable Document Format
License bundle
Now showing 1 - 1 of 1
No Thumbnail Available
Name:
license.txt
Size:
1.85 KB
Format:
Item-specific license agreed upon to submission
Description: