Linguagem orientada a aspetos para transformação de Webassembly
| Main Author: | |
|---|---|
| Publication Date: | 2022 |
| Format: | Master thesis |
| Language: | por |
| Source: | Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) |
| Download full: | http://hdl.handle.net/10400.26/41695 |
Summary: | 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. |
| id |
RCAP_5ad320b50c0268e73d55acee4928c31c |
|---|---|
| oai_identifier_str |
oai:comum.rcaap.pt:10400.26/41695 |
| network_acronym_str |
RCAP |
| network_name_str |
Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) |
| repository_id_str |
https://opendoar.ac.uk/repository/7160 |
| spelling |
Linguagem orientada a aspetos para transformação de WebassemblyWebAssemblyJavaScriptAspetosAplicações WebTransformação bináriaInstrumentaçãoA 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.Barreiros, Jorge Miguel SousaRepositório ComumRodrigues, João Paulo Mendes2022-08-29T13:53:29Z2022-06-022022-01-072022-06-02T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10400.26/41695urn:tid:203033116porinfo:eu-repo/semantics/openAccessreponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiainstacron:RCAAP2025-05-02T11:24:56Zoai:comum.rcaap.pt:10400.26/41695Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireinfo@rcaap.ptopendoar:https://opendoar.ac.uk/repository/71602025-05-29T06:45:08.920779Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiafalse |
| dc.title.none.fl_str_mv |
Linguagem orientada a aspetos para transformação de Webassembly |
| title |
Linguagem orientada a aspetos para transformação de Webassembly |
| spellingShingle |
Linguagem orientada a aspetos para transformação de Webassembly Rodrigues, João Paulo Mendes WebAssembly JavaScript Aspetos Aplicações Web Transformação binária Instrumentação |
| title_short |
Linguagem orientada a aspetos para transformação de Webassembly |
| title_full |
Linguagem orientada a aspetos para transformação de Webassembly |
| title_fullStr |
Linguagem orientada a aspetos para transformação de Webassembly |
| title_full_unstemmed |
Linguagem orientada a aspetos para transformação de Webassembly |
| title_sort |
Linguagem orientada a aspetos para transformação de Webassembly |
| author |
Rodrigues, João Paulo Mendes |
| author_facet |
Rodrigues, João Paulo Mendes |
| author_role |
author |
| dc.contributor.none.fl_str_mv |
Barreiros, Jorge Miguel Sousa Repositório Comum |
| dc.contributor.author.fl_str_mv |
Rodrigues, João Paulo Mendes |
| dc.subject.por.fl_str_mv |
WebAssembly JavaScript Aspetos Aplicações Web Transformação binária Instrumentação |
| topic |
WebAssembly JavaScript Aspetos Aplicações Web Transformação binária Instrumentação |
| description |
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. |
| publishDate |
2022 |
| dc.date.none.fl_str_mv |
2022-08-29T13:53:29Z 2022-06-02 2022-01-07 2022-06-02T00:00:00Z |
| dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
| dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
| format |
masterThesis |
| status_str |
publishedVersion |
| dc.identifier.uri.fl_str_mv |
http://hdl.handle.net/10400.26/41695 urn:tid:203033116 |
| url |
http://hdl.handle.net/10400.26/41695 |
| identifier_str_mv |
urn:tid:203033116 |
| dc.language.iso.fl_str_mv |
por |
| language |
por |
| dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
| eu_rights_str_mv |
openAccess |
| dc.format.none.fl_str_mv |
application/pdf |
| dc.source.none.fl_str_mv |
reponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia instacron:RCAAP |
| instname_str |
FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia |
| instacron_str |
RCAAP |
| institution |
RCAAP |
| reponame_str |
Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) |
| collection |
Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) |
| repository.name.fl_str_mv |
Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia |
| repository.mail.fl_str_mv |
info@rcaap.pt |
| _version_ |
1833602773040496640 |