{"id":19310960,"url":"https://github.com/sr2ds/hello-world-rust-webassembly","last_synced_at":"2026-05-03T10:37:32.221Z","repository":{"id":127378416,"uuid":"355661364","full_name":"sr2ds/hello-world-rust-webassembly","owner":"sr2ds","description":"Just simple WASM tests with Rust","archived":false,"fork":false,"pushed_at":"2025-07-30T11:37:51.000Z","size":63,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-23T23:35:59.202Z","etag":null,"topics":["javascript","node","rust","rust-wasm","wasm"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sr2ds.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE_APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-04-07T19:33:25.000Z","updated_at":"2025-07-30T11:37:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"27c70764-a497-4642-bb8a-5daf7fa535e2","html_url":"https://github.com/sr2ds/hello-world-rust-webassembly","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sr2ds/hello-world-rust-webassembly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr2ds%2Fhello-world-rust-webassembly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr2ds%2Fhello-world-rust-webassembly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr2ds%2Fhello-world-rust-webassembly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr2ds%2Fhello-world-rust-webassembly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sr2ds","download_url":"https://codeload.github.com/sr2ds/hello-world-rust-webassembly/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr2ds%2Fhello-world-rust-webassembly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32566444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","node","rust","rust-wasm","wasm"],"created_at":"2024-11-10T00:27:08.274Z","updated_at":"2026-05-03T10:37:32.204Z","avatar_url":"https://github.com/sr2ds.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hello World - Rust WebAssembly\n\nEste é um repositório de estudos sobre implementações `WASM` com `Rust`.\n\nO projeto é originado do exemplo de iniciante do \u003ca href=\"https://github.com/rustwasm/wasm-pack\"\u003ewasm-pack\u003c/a\u003e, onde realizarei testes e implementações para estudo.\n\n## Build WASM\n\nAo executar o comando de build:\n\n```\nwasm-pack build\n```\n\nTemos um novo diretório chamado `pkg` contendo os resultados da compilação, que inclusive traz um `package.json`, o `wasm` e o `.js` com a importação do pacote.\n\n## Implementando como pacote\n\nNo diretório `www`, há toda estrutura para importação do pkg como um módulo e a execução no browser.\n\n```\ncd www\nnpm i\nnpm run start\n```\n\n## Comentários\n\nDurante o desenvolvimento, precisei apenas rodar novamente o `wasm-pack build` pois o `npm run start` do www já identifica na hora a mudança na chamada do método.\n\nPara ficar lindo, seria bom um `cargo watch` e ficará bem prático para desenvolver, mas ainda não consegui então por enquanto um simples `inotifywait` do linux já nos ajudará:\n\n```\nwhile inotifywait -e close_write *; do wasm-pack build; done\n```\n\n## Teste 1 - Função Soma\n\nFunção para calcular soma, é bem simples mas já dá um exemplo de como passar parâmetro do browser para a função escrita em Rust.\n\n## Teste 2 - Array 10M posições\n\nCriei dois botões onde cada um deles faz a mesma coisa, cria um array e, dentro de um loop, o popula com 10 milhões de posições. Porém um é feito em Rust e outro em JS. É importante ressaltar que não há nada de avançado e o teste nos dá clareza sobre a performance com WASM mas também há uma incôgnita em relação a forma de implementação das estruturas de dados internas em cada linguagem.\n\nVeja como ficou a performance aqui:\n\n```\nTempo com WASM: 302.65500000314205 ms\nTempo com JS: 188.13500000032946 ms\n\nTempo com WASM: 78.50500000131433 ms\nTempo com JS: 176.22499999924912 ms\n\nTempo com WASM: 75.67500000004657 ms\nTempo com JS: 147.85499999925378 ms\n\nTempo com WASM: 76.91499999782536 ms\nTempo com JS: 165.16500000216183 ms\n\nTempo com WASM: 76.1899999997695 ms\nTempo com JS: 169.28999999799998 ms\n\nTempo com WASM: 66.44500000038533 ms\nTempo com JS: 241.32000000099652 ms\n\nTempo com WASM: 75.53499999994528 ms\nTempo com JS: 172.33499999929336 ms\n\nTempo com WASM: 77.49999999941792 ms\nTempo com JS: 170.4199999985576 ms\n\nTempo com WASM: 75.49999999901047 ms\nTempo com JS: 156.67499999835854 ms\n\nTempo com WASM: 78.80999999906635 ms\nTempo com JS: 171.71999999845866 ms\n```\n\nNote que a primeira execução com Rust demora MUITO, em contra-partida, todas as próximas não passam de 80ms enquanto com JS nenhuma é inferior a 150ms nunca.\nEu suponho que esta primeira execução seja lenta assim pois o binário ainda não foi carregado para a engine do navegador, deve haver alguma forma de melhorar isso para funções principais. \n\nA performance é fantástica ao meu ver, me pergunto por que não fazemos todas as operações básicas do JS com WASM ainda. Este foi um teste simples, mas imagine como seria rápida se as principais operações fossem realizadas assim.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsr2ds%2Fhello-world-rust-webassembly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsr2ds%2Fhello-world-rust-webassembly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsr2ds%2Fhello-world-rust-webassembly/lists"}