{"_id":"@coffeetales.net/wasm2lang","_rev":"14-1f13cc54d46bf5e251c805af40ce7b5e","name":"@coffeetales.net/wasm2lang","dist-tags":{"latest":"2026.6.113"},"versions":{"2026.3.100":{"name":"@coffeetales.net/wasm2lang","version":"2026.3.100","license":"Apache-2.0","_id":"@coffeetales.net/wasm2lang@2026.3.100","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"bin":{"wasm2lang":"wasm2lang.js"},"dist":{"shasum":"c39c813ead36db988be42dd77e7754a7f55a4490","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.3.100.tgz","fileCount":5,"integrity":"sha512-C6n+YJg/TTpCgcuNm5IX4629NsdJauQnoYQVcjoJaMjLEVDvsp2NRlOSbTr/TgynFuw2P/J22Bwcdyq0VeBlsQ==","signatures":[{"sig":"MEUCIQC1y6icW3djWb3OQWhWQAIXeJqITtw4/Q2iwj91fSkNtwIgJZHK9zaMlhj2ZgICqUJ76yOrraGJ+llBuhCxvGu8CDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170701},"main":"wasm2lang.js","scripts":{"closure-make":"java -jar \"./node_modules/google-closure-compiler-java/compiler.jar\" --charset=\"UTF-8\" --warning_level=\"VERBOSE\" --compilation_level=\"ADVANCED_OPTIMIZATIONS\" --language_in ECMASCRIPT5_STRICT --language_out ECMASCRIPT5_STRICT --strict_mode_input --rewrite_polyfills=false --use_types_for_optimization=true --jscomp_error \"*\" --jscomp_off lintVarDeclarations --jscomp_error=reportUnknownTypes --jscomp_error=checkTypes --externs externs/*.js --js \"src/0-header.js\" --js \"src/*/**.js\" --js \"src/1-processor.js\" --js \"src/2-footer.js\" --isolation_mode IIFE --js_output_file dist_artifacts/wasmxlang.js --emit_use_strict --formatting PRETTY_PRINT && node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"repository":{"url":"git+https://github.com/COFFEETALES/wasm2lang.git","type":"git"},"_npmVersion":"11.9.0","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"binaryen":"^125.0.0"},"_hasShrinkwrap":false,"devDependencies":{"google-closure-compiler":"^20260311.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wasm2lang_2026.3.100_1774468783434_0.13356918856082722","host":"s3://npm-registry-packages-npm-production"}},"2026.3.101":{"name":"@coffeetales.net/wasm2lang","version":"2026.3.101","license":"Apache-2.0","_id":"@coffeetales.net/wasm2lang@2026.3.101","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"bin":{"wasm2lang":"wasm2lang.js"},"dist":{"shasum":"9620ee57956c5eac6fdc4addf38b959bf2e356f1","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.3.101.tgz","fileCount":5,"integrity":"sha512-A0F3c4Rg4W/1emOifFGrLOcSA4U21E2rau16AhH6hE4jaI7jnQtcixEkHkRWrS3qMzct0cOITKz3qUavBi8JJA==","signatures":[{"sig":"MEYCIQC6AVTbJWLNJ3MonijqjpL4MO6swxYyv42g7oiEjyJvSgIhAIJCX0AbzbP1iByfXJUgWMTCV9Tnf1DyAdfajKuZE6GL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171114},"main":"wasm2lang.js","scripts":{"closure-make":"java -jar \"./node_modules/google-closure-compiler-java/compiler.jar\" --charset=\"UTF-8\" --warning_level=\"VERBOSE\" --compilation_level=\"ADVANCED_OPTIMIZATIONS\" --language_in ECMASCRIPT5_STRICT --language_out ECMASCRIPT5_STRICT --strict_mode_input --rewrite_polyfills=false --use_types_for_optimization=true --jscomp_error \"*\" --jscomp_off lintVarDeclarations --jscomp_error=reportUnknownTypes --jscomp_error=checkTypes --externs externs/*.js --js \"src/0-header.js\" --js \"src/*/**.js\" --js \"src/1-processor.js\" --js \"src/2-footer.js\" --isolation_mode IIFE --js_output_file dist_artifacts/wasmxlang.js --emit_use_strict --formatting PRETTY_PRINT && node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"repository":{"url":"git+https://github.com/COFFEETALES/wasm2lang.git","type":"git"},"_npmVersion":"11.9.0","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"binaryen":"^125.0.0"},"_hasShrinkwrap":false,"devDependencies":{"google-closure-compiler":"^20260311.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wasm2lang_2026.3.101_1774477031557_0.6502822897762766","host":"s3://npm-registry-packages-npm-production"}},"2026.3.102":{"name":"@coffeetales.net/wasm2lang","version":"2026.3.102","license":"Apache-2.0","_id":"@coffeetales.net/wasm2lang@2026.3.102","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"bin":{"wasm2lang":"wasm2lang.js"},"dist":{"shasum":"b6a5b1fb5021016c986a3f580eaf4554253597c8","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.3.102.tgz","fileCount":5,"integrity":"sha512-w0YTHgZ+w+rn7K/hWZ6HNiLQApszulEAre6jmC3j9t7PWwQgVBhXLSPead5xHlFX9G1mW55aRvzG4q9p5eMm5Q==","signatures":[{"sig":"MEUCIBiNWA9hamzJkD1rWUXFtCjA8L2A41ay8D/tVqXGNzJRAiEA1lv19beUfEGDogweLp7GgrU1QyDsuArz9UGybKndR1o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171777},"main":"wasm2lang.js","scripts":{"closure-make":"java -jar \"./node_modules/google-closure-compiler-java/compiler.jar\" --charset=\"UTF-8\" --warning_level=\"VERBOSE\" --compilation_level=\"ADVANCED_OPTIMIZATIONS\" --language_in ECMASCRIPT5_STRICT --language_out ECMASCRIPT5_STRICT --strict_mode_input --rewrite_polyfills=false --use_types_for_optimization=true --jscomp_error \"*\" --jscomp_off lintVarDeclarations --jscomp_error=reportUnknownTypes --jscomp_error=checkTypes --externs externs/*.js --js \"src/0-header.js\" --js \"src/*/**.js\" --js \"src/1-processor.js\" --js \"src/2-footer.js\" --isolation_mode IIFE --js_output_file dist_artifacts/wasmxlang.js --emit_use_strict --formatting PRETTY_PRINT && node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"repository":{"url":"git+https://github.com/COFFEETALES/wasm2lang.git","type":"git"},"_npmVersion":"11.9.0","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"binaryen":"^125.0.0"},"_hasShrinkwrap":false,"devDependencies":{"google-closure-compiler":"^20260311.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wasm2lang_2026.3.102_1774482411361_0.573806559952496","host":"s3://npm-registry-packages-npm-production"}},"2026.3.103":{"name":"@coffeetales.net/wasm2lang","version":"2026.3.103","license":"Apache-2.0","_id":"@coffeetales.net/wasm2lang@2026.3.103","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"bin":{"wasm2lang":"wasm2lang.js"},"dist":{"shasum":"be151757bdec277e55b8bab11c6679895ebb133e","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.3.103.tgz","fileCount":5,"integrity":"sha512-EtYLiwrav9gpt7z1+plq3IwO1zIDpSZgq7vv/FglG5cG8q9iAzA5Am8bljXdOYX/0kb/Ll7wMRwrHEHCTGgHgg==","signatures":[{"sig":"MEYCIQDnpZ5a4E8TuHNvchHEmcZD4GrFNWAK+Q37EFgVWPJtBAIhALX4dCxZZQKN6pGu6tNwwIMYcp/MNLR3+gIb///AHL3D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171183},"main":"wasm2lang.js","scripts":{"closure-make":"java -jar \"./node_modules/google-closure-compiler-java/compiler.jar\" --charset=\"UTF-8\" --warning_level=\"VERBOSE\" --compilation_level=\"ADVANCED_OPTIMIZATIONS\" --language_in ECMASCRIPT5_STRICT --language_out ECMASCRIPT5_STRICT --strict_mode_input --rewrite_polyfills=false --use_types_for_optimization=true --jscomp_error \"*\" --jscomp_off lintVarDeclarations --jscomp_error=reportUnknownTypes --jscomp_error=checkTypes --externs externs/*.js --js \"src/0-header.js\" --js \"src/*/**.js\" --js \"src/1-processor.js\" --js \"src/2-footer.js\" --isolation_mode IIFE --js_output_file dist_artifacts/wasmxlang.js --emit_use_strict --formatting PRETTY_PRINT && node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"repository":{"url":"git+https://github.com/COFFEETALES/wasm2lang.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"binaryen":"^125.0.0"},"_hasShrinkwrap":false,"devDependencies":{"google-closure-compiler":"^20260311.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wasm2lang_2026.3.103_1774560752757_0.6495810962833466","host":"s3://npm-registry-packages-npm-production"}},"2026.3.104":{"name":"@coffeetales.net/wasm2lang","version":"2026.3.104","license":"Apache-2.0","_id":"@coffeetales.net/wasm2lang@2026.3.104","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"bin":{"wasm2lang":"wasm2lang.js"},"dist":{"shasum":"57dc2692f412bd0e778848049f32099bb114406d","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.3.104.tgz","fileCount":5,"integrity":"sha512-kWu5V0PEXkzSrWXyk3xJxM9V6ziKKi6C6HaHRaPlPaNClyoEC4QMazalFrEhf83XB6Mv3Xy212iE38/zXSgTJQ==","signatures":[{"sig":"MEQCICWfoR/aNCFSt53GiwT4RzmLwohgqhvsrp9pCvEfMvyJAiA9cyYScfo7jzQWkafUaymAbxZtnB+HSd+drmz1D5IV5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170334},"main":"wasm2lang.js","scripts":{"closure-make":"java -jar \"./node_modules/google-closure-compiler-java/compiler.jar\" --charset=\"UTF-8\" --warning_level=\"VERBOSE\" --compilation_level=\"ADVANCED_OPTIMIZATIONS\" --language_in ECMASCRIPT5_STRICT --language_out ECMASCRIPT5_STRICT --strict_mode_input --rewrite_polyfills=false --use_types_for_optimization=true --jscomp_error \"*\" --jscomp_off lintVarDeclarations --jscomp_error=reportUnknownTypes --jscomp_error=checkTypes --externs externs/*.js --js \"src/0-header.js\" --js \"src/*/**.js\" --js \"src/1-processor.js\" --js \"src/2-footer.js\" --isolation_mode IIFE --js_output_file dist_artifacts/wasmxlang.js --emit_use_strict --formatting PRETTY_PRINT && node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"repository":{"url":"git+https://github.com/COFFEETALES/wasm2lang.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"binaryen":"^125.0.0"},"_hasShrinkwrap":false,"devDependencies":{"google-closure-compiler":"^20260311.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wasm2lang_2026.3.104_1774643603432_0.43264439668914645","host":"s3://npm-registry-packages-npm-production"}},"2026.3.105":{"name":"@coffeetales.net/wasm2lang","version":"2026.3.105","license":"Apache-2.0","_id":"@coffeetales.net/wasm2lang@2026.3.105","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"bin":{"wasm2lang":"wasm2lang.js"},"dist":{"shasum":"82c4ffeea69f1ef7ea404324c467c5f7634cad9c","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.3.105.tgz","fileCount":5,"integrity":"sha512-x4bOmyNqdk3wVwqkD32OQbR6ST6l9cQ4YGhIt984d7B+UxgIPQIpPx+3eG4a1Yv9DANOSk/PdVHWjeMsDVAp2w==","signatures":[{"sig":"MEUCIQC+WBH2crtiDU0HQEZkKJLqOtXyhgTLL06gdrIOSBQP6wIgMbONBfzl3TjOZ1nIc/CRVf79Z7WaO+W4z2pM015x31k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188899},"main":"wasm2lang.js","scripts":{"closure-make":"java -jar \"./node_modules/google-closure-compiler-java/compiler.jar\" --charset=\"UTF-8\" --warning_level=\"VERBOSE\" --compilation_level=\"ADVANCED_OPTIMIZATIONS\" --language_in ECMASCRIPT5_STRICT --language_out ECMASCRIPT5_STRICT --strict_mode_input --rewrite_polyfills=false --use_types_for_optimization=true --jscomp_error \"*\" --jscomp_off lintVarDeclarations --jscomp_error=reportUnknownTypes --jscomp_error=checkTypes --externs externs/*.js --js \"src/0-header.js\" --js \"src/*/**.js\" --js \"src/1-processor.js\" --js \"src/2-footer.js\" --isolation_mode IIFE --js_output_file dist_artifacts/wasmxlang.js --emit_use_strict --formatting PRETTY_PRINT && node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"repository":{"url":"git+https://github.com/COFFEETALES/wasm2lang.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"binaryen":"^125.0.0"},"_hasShrinkwrap":false,"devDependencies":{"google-closure-compiler":"^20260311.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wasm2lang_2026.3.105_1774900410051_0.7533902513983355","host":"s3://npm-registry-packages-npm-production"}},"2026.4.106":{"name":"@coffeetales.net/wasm2lang","version":"2026.4.106","license":"Apache-2.0","_id":"@coffeetales.net/wasm2lang@2026.4.106","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"bin":{"wasm2lang":"wasm2lang.js"},"dist":{"shasum":"ccb7d11fdb4c500ffac07a64908f3f63c2a8bb1a","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.4.106.tgz","fileCount":5,"integrity":"sha512-+EvZuZs60Y63fhk/v2QQB1BphwYOCazFzJoCOUXWGEzBYJJ0KCjZjGTczaQbiPuzKb6Ue32vUVMorvkgmKY6wA==","signatures":[{"sig":"MEUCIQDiqmXV9Rbb7JEw7ayMog0lbbZBYD8cUC9TB5RXsAbZGgIgbst6UGUALemuV+9wKSK0ItQJ44lfHOlUY1+ekFTkF44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":189861},"main":"wasm2lang.js","scripts":{"closure-make":"java -jar \"./node_modules/google-closure-compiler-java/compiler.jar\" --charset=\"UTF-8\" --warning_level=\"VERBOSE\" --compilation_level=\"ADVANCED_OPTIMIZATIONS\" --language_in ECMASCRIPT5_STRICT --language_out ECMASCRIPT5_STRICT --strict_mode_input --rewrite_polyfills=false --use_types_for_optimization=true --jscomp_error \"*\" --jscomp_off lintVarDeclarations --jscomp_error=reportUnknownTypes --jscomp_error=checkTypes --externs externs/*.js --js \"src/0-header.js\" --js \"src/*/**.js\" --js \"src/1-processor.js\" --js \"src/2-footer.js\" --isolation_mode IIFE --js_output_file dist_artifacts/wasmxlang.js --emit_use_strict --formatting PRETTY_PRINT && node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"repository":{"url":"git+https://github.com/COFFEETALES/wasm2lang.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"binaryen":"^125.0.0"},"_hasShrinkwrap":false,"devDependencies":{"google-closure-compiler":"^20260311.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wasm2lang_2026.4.106_1775020364996_0.6831250464804188","host":"s3://npm-registry-packages-npm-production"}},"2026.4.107":{"name":"@coffeetales.net/wasm2lang","version":"2026.4.107","license":"Apache-2.0","_id":"@coffeetales.net/wasm2lang@2026.4.107","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"bin":{"wasm2lang":"wasm2lang.js"},"dist":{"shasum":"8e7ed8c6dbe49ea8dc914b0e11f6174c04e6f901","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.4.107.tgz","fileCount":5,"integrity":"sha512-JoFYvxVLSF5LwYTweOREmhtrZs6rGfUeVl4yxu2tPQyJhWzNZZF0ec8vWeX62sLi1eVvtiIPwD1X9VGzHZzhCg==","signatures":[{"sig":"MEMCH3QzvzsdqIuj6AHJn2o1CD2VOQW9rOcVaS5vD127+ocCIGVUgS3iDHk2OX8vrQ1A2TSxr3AOgXw8x+zTwf3FyKlO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193813},"main":"wasm2lang.js","scripts":{"closure-make":"java -jar \"./node_modules/google-closure-compiler-java/compiler.jar\" --charset=\"UTF-8\" --warning_level=\"VERBOSE\" --compilation_level=\"ADVANCED_OPTIMIZATIONS\" --language_in ECMASCRIPT5_STRICT --language_out ECMASCRIPT5_STRICT --strict_mode_input --rewrite_polyfills=false --use_types_for_optimization=true --jscomp_error \"*\" --jscomp_off lintVarDeclarations --jscomp_error=reportUnknownTypes --jscomp_error=checkTypes --externs externs/*.js --js \"src/0-header.js\" --js \"src/*/**.js\" --js \"src/1-processor.js\" --js \"src/2-footer.js\" --isolation_mode IIFE --js_output_file dist_artifacts/wasmxlang.js --emit_use_strict --formatting PRETTY_PRINT && node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"repository":{"url":"git+https://github.com/COFFEETALES/wasm2lang.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"binaryen":"^125.0.0"},"_hasShrinkwrap":false,"devDependencies":{"google-closure-compiler":"^20260311.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wasm2lang_2026.4.107_1775067425553_0.11319738736188167","host":"s3://npm-registry-packages-npm-production"}},"2026.4.108":{"name":"@coffeetales.net/wasm2lang","version":"2026.4.108","license":"Apache-2.0","_id":"@coffeetales.net/wasm2lang@2026.4.108","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"bin":{"wasm2lang":"wasm2lang.js"},"dist":{"shasum":"ce5f2ab2942eedb3a73b42433c0b6f080200622d","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.4.108.tgz","fileCount":5,"integrity":"sha512-VBzgSvKsrGVsixcFJyAHDRO3kGZElqz/7kiSW5kBOy/y5u1OCnYx1kCR/Yh6HpTWrocvH1AyMBC+yvkOrSd/lw==","signatures":[{"sig":"MEYCIQDmCI25WWVndOTLlXqrkdX+3fnpKtoFktVCurfiPS+pOgIhALqfQgxVFLsxRhemSSEi1WJb8kQ/cr0jumsSdIcGTkt/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217697},"main":"wasm2lang.js","scripts":{"closure-make":"java -jar \"./node_modules/google-closure-compiler-java/compiler.jar\" --charset=\"UTF-8\" --warning_level=\"VERBOSE\" --compilation_level=\"ADVANCED_OPTIMIZATIONS\" --language_in ECMASCRIPT5_STRICT --language_out ECMASCRIPT5_STRICT --strict_mode_input --rewrite_polyfills=false --use_types_for_optimization=true --jscomp_error \"*\" --jscomp_off lintVarDeclarations --jscomp_error=reportUnknownTypes --jscomp_error=checkTypes --externs externs/*.js --js \"src/0-header.js\" --js \"src/*/**.js\" --js \"src/1-processor.js\" --js \"src/2-footer.js\" --isolation_mode IIFE --js_output_file dist_artifacts/wasmxlang.js --emit_use_strict --formatting PRETTY_PRINT && node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"repository":{"url":"git+https://github.com/COFFEETALES/wasm2lang.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"binaryen":"^125.0.0"},"_hasShrinkwrap":false,"devDependencies":{"google-closure-compiler":"^20260311.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wasm2lang_2026.4.108_1775225018837_0.18784116563953712","host":"s3://npm-registry-packages-npm-production"}},"2026.4.109":{"name":"@coffeetales.net/wasm2lang","version":"2026.4.109","license":"Apache-2.0","_id":"@coffeetales.net/wasm2lang@2026.4.109","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"bin":{"wasm2lang":"wasm2lang.js"},"dist":{"shasum":"54edfc541556bea4379f8438cb9119f5bb108992","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.4.109.tgz","fileCount":5,"integrity":"sha512-IoARnKOUnzWmoX+mr99e2qve2w/MI49Z+30ScpnqfBnVo2H6qIlykJr0T/CvCY3079VWRhAFRZP1b6XNzjiS5Q==","signatures":[{"sig":"MEUCIQD8tItIgeQ4Bq67XvoT2jkBl0lmza4s2PB8BY2prfwSGQIgb1wApR4DYy1vjkurSmyKFXegMQOOrP7DmlIZLbL5WZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223404},"main":"wasm2lang.js","scripts":{"closure-make":"java -jar \"./node_modules/google-closure-compiler-java/compiler.jar\" --charset=\"UTF-8\" --warning_level=\"VERBOSE\" --compilation_level=\"ADVANCED_OPTIMIZATIONS\" --language_in ECMASCRIPT5_STRICT --language_out ECMASCRIPT5_STRICT --strict_mode_input --rewrite_polyfills=false --use_types_for_optimization=true --jscomp_error \"*\" --jscomp_off lintVarDeclarations --jscomp_error=reportUnknownTypes --jscomp_error=checkTypes --externs externs/*.js --js \"src/0-header.js\" --js \"src/*/**.js\" --js \"src/1-processor.js\" --js \"src/2-footer.js\" --isolation_mode IIFE --js_output_file dist_artifacts/wasmxlang.js --emit_use_strict --formatting PRETTY_PRINT && node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"repository":{"url":"git+https://github.com/COFFEETALES/wasm2lang.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"binaryen":"^129.0.0"},"_hasShrinkwrap":false,"devDependencies":{"google-closure-compiler":"^20260311.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wasm2lang_2026.4.109_1775412691121_0.6264954441575328","host":"s3://npm-registry-packages-npm-production"}},"2026.4.110":{"name":"@coffeetales.net/wasm2lang","version":"2026.4.110","license":"Apache-2.0","_id":"@coffeetales.net/wasm2lang@2026.4.110","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"bin":{"wasm2lang":"wasm2lang.js"},"dist":{"shasum":"224c2927d1c3671b15f4abe06eda397905e531ef","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.4.110.tgz","fileCount":5,"integrity":"sha512-VfSNY3Rob6BVu44/q4ljPgjzDIF/SWXZfyYEGsZOGprW/vjcTPk9kW3J9xubeyEh6uDYJJ8GrkgzcfreZ7X6JQ==","signatures":[{"sig":"MEUCIQD9kwL6cN0zsGDUyRPXWHKE59ykl1HLRZTfNdmOGIvxnwIgZtZiwZrKGQdheY/v75d8wEGkqcNYDahLTvSP0FbSYQ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265382},"main":"wasm2lang.js","scripts":{"closure-make":"java -jar ./node_modules/google-closure-compiler-java/compiler.jar --flagfile=scripts/closure.flags","postclosure-make":"node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"repository":{"url":"git+https://github.com/COFFEETALES/wasm2lang.git","type":"git"},"_npmVersion":"11.12.1","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"binaryen":"^129.0.0"},"_hasShrinkwrap":false,"devDependencies":{"google-closure-compiler":"^20260412.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wasm2lang_2026.4.110_1776372213431_0.9781118978797683","host":"s3://npm-registry-packages-npm-production"}},"2026.4.111":{"name":"@coffeetales.net/wasm2lang","version":"2026.4.111","license":"Apache-2.0","_id":"@coffeetales.net/wasm2lang@2026.4.111","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"bin":{"wasm2lang":"wasm2lang.js"},"dist":{"shasum":"37de628787dfc16763037f2ccdcaaba9db301a80","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.4.111.tgz","fileCount":5,"integrity":"sha512-w2A+//1RMqASk1AW34/GcOzC1n5o1e7ludQh5BG8vkpptf9USmkf5re6R3Fn03D2XYq9rp8bscJniWK0H7AEAQ==","signatures":[{"sig":"MEUCIFTNjg3ckN79Pwy68XWbPsGDHQFa9JWjXR8ZXlu4UoI1AiEAvsYAVBJxJupenmKYMEnum7ejZdsnbj+f5sp67wzn5j4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":271392},"main":"wasm2lang.js","scripts":{"closure-make":"java -jar ./node_modules/google-closure-compiler-java/compiler.jar --flagfile=scripts/closure.flags","postclosure-make":"node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"repository":{"url":"git+https://github.com/COFFEETALES/wasm2lang.git","type":"git"},"_npmVersion":"11.12.1","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"binaryen":"^129.0.0"},"_hasShrinkwrap":false,"devDependencies":{"google-closure-compiler":"^20260412.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wasm2lang_2026.4.111_1776621202149_0.7103060497131741","host":"s3://npm-registry-packages-npm-production"}},"2026.4.112":{"name":"@coffeetales.net/wasm2lang","version":"2026.4.112","license":"Apache-2.0","_id":"@coffeetales.net/wasm2lang@2026.4.112","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"bin":{"wasm2lang":"wasm2lang.js"},"dist":{"shasum":"d09a3b54f70cf75b218a901850e4eadb2f226a20","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.4.112.tgz","fileCount":5,"integrity":"sha512-v91j9mHub6ONLfQv7Q0c+/yF95rdTOohbQzXt/2Au2dd+2Vv38SQxUmqlSDEPbESqbtjU6LVKsiwxDRED2DNIA==","signatures":[{"sig":"MEYCIQD6oQpb8poihJvcgaOxYa9p36EBO0WJQmAgFIWEUnC4UQIhAJIQqjM5+pMqAusaJW5/TySCSDazKv7Ngmm/5az5yDYA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":259898},"main":"wasm2lang.js","scripts":{"closure-make":"java -jar ./node_modules/google-closure-compiler-java/compiler.jar --flagfile=scripts/closure.flags","postclosure-make":"node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"repository":{"url":"git+https://github.com/COFFEETALES/wasm2lang.git","type":"git"},"_npmVersion":"11.12.1","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"binaryen":"^129.0.0"},"_hasShrinkwrap":false,"devDependencies":{"google-closure-compiler":"^20260412.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wasm2lang_2026.4.112_1776629877847_0.26103226946610536","host":"s3://npm-registry-packages-npm-production"}},"2026.6.113":{"name":"@coffeetales.net/wasm2lang","version":"2026.6.113","description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","main":"wasm2lang.js","bin":{"wasm2lang":"wasm2lang.js"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/COFFEETALES/wasm2lang.git"},"bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"homepage":"https://github.com/COFFEETALES/wasm2lang#readme","dependencies":{"binaryen":"^130.0.0"},"scripts":{"closure-make":"java -jar ./node_modules/google-closure-compiler-java/compiler.jar --flagfile=scripts/closure.flags","postclosure-make":"node postbuild/wasm2lang_pass_tests.js --artifact dist_artifacts/wasmxlang.js"},"devDependencies":{"google-closure-compiler":"^20260412.0.0"},"_id":"@coffeetales.net/wasm2lang@2026.6.113","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-P1SwqDe3iISNycWd4IfsHXTFIh3tmCOC3NMAKHvpvEiU0F04GUVCriZ74LoJk242EXbU8aU/1waRbzf3TLhqRg==","shasum":"d987cc96323ba5f1a26aa016332af6985e18ceba","tarball":"https://registry.npmjs.org/@coffeetales.net/wasm2lang/-/wasm2lang-2026.6.113.tgz","fileCount":5,"unpackedSize":267937,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC0CMldRwfdRGiEcKLXFmQQcRdJ5BNFA2UCawDp8PcmAAiByDQx1dwwPV6t6k6F6b9UsyRdxiq1WAi7DsziCQ4Kbzw=="}]},"_npmUser":{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"},"directories":{},"maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/wasm2lang_2026.6.113_1780827685445_0.5321802512614779"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-25T19:59:43.088Z","modified":"2026-06-07T10:21:25.690Z","2026.3.100":"2026-03-25T19:59:43.621Z","2026.3.101":"2026-03-25T22:17:11.716Z","2026.3.102":"2026-03-25T23:46:51.533Z","2026.3.103":"2026-03-26T21:32:32.898Z","2026.3.104":"2026-03-27T20:33:23.590Z","2026.3.105":"2026-03-30T19:53:30.215Z","2026.4.106":"2026-04-01T05:12:45.168Z","2026.4.107":"2026-04-01T18:17:05.720Z","2026.4.108":"2026-04-03T14:03:38.981Z","2026.4.109":"2026-04-05T18:11:31.280Z","2026.4.110":"2026-04-16T20:43:33.577Z","2026.4.111":"2026-04-19T17:53:22.307Z","2026.4.112":"2026-04-19T20:17:58.003Z","2026.6.113":"2026-06-07T10:21:25.581Z"},"bugs":{"url":"https://github.com/COFFEETALES/wasm2lang/issues"},"license":"Apache-2.0","homepage":"https://github.com/COFFEETALES/wasm2lang#readme","repository":{"type":"git","url":"git+https://github.com/COFFEETALES/wasm2lang.git"},"description":"CLI tool that transpiles WebAssembly modules into equivalent asm.js, PHP, or Java source code.","maintainers":[{"name":"coffeetales.net","email":"coffeetales.net@gmail.com"}],"readme":"# wasm2lang\n\n<div align=\"center\">\n\n**Compile once to WebAssembly. Ship everywhere as source code.**\n\n<p align=\"center\">\n  <a href=\"https://github.com/COFFEETALES/wasm2lang/actions/workflows/wasm2lang_ci.yml\"><img src=\"https://img.shields.io/github/actions/workflow/status/COFFEETALES/wasm2lang/wasm2lang_ci.yml?style=flat&label=ci&logo=githubactions&logoColor=white\" alt=\"CI status\" height=\"28\" /></a>\n  <a href=\"https://www.npmjs.com/package/@coffeetales.net/wasm2lang\"><img src=\"https://img.shields.io/npm/v/%40coffeetales.net%2Fwasm2lang.svg?style=flat&label=latest&color=007acc&logo=npm&logoColor=white\" alt=\"npm version\" height=\"28\" /></a>\n  <a href=\"https://coffeetales.github.io/wasm2lang/\"><img src=\"https://img.shields.io/badge/playground-live-111827?style=flat&logo=codepen&logoColor=white\" alt=\"Launch the Playground\" height=\"28\" /></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/COFFEETALES/wasm2lang/stargazers\"><img src=\"https://img.shields.io/github/stars/COFFEETALES/wasm2lang?style=flat&label=stars&color=f59e0b&logo=github&logoColor=white\" alt=\"GitHub stars\" height=\"28\" /></a>\n  <a href=\"https://github.com/COFFEETALES/wasm2lang/issues\"><img src=\"https://img.shields.io/github/issues/COFFEETALES/wasm2lang?style=flat&label=issues&color=0f766e&logo=github&logoColor=white\" alt=\"Open issues\" height=\"28\" /></a>\n  <a href=\"https://github.com/COFFEETALES/wasm2lang/blob/main/CHANGELOG.md\"><img src=\"https://img.shields.io/badge/changelog-what's%20new-059669?style=flat&logo=keepachangelog&logoColor=white\" alt=\"Changelog\" height=\"28\" /></a>\n  <a href=\"https://github.com/sponsors/COFFEETALES\"><img src=\"https://img.shields.io/badge/Sponsor-GitHub%20Sponsors-db2777?style=flat&logo=githubsponsors&logoColor=white\" alt=\"GitHub Sponsors\" height=\"28\" /></a>\n</p>\n\n</div>\n\n---\n\n> **[Try it in the Playground →](https://coffeetales.github.io/wasm2lang/)** -- no install, no server. Pick a sample, pick a backend, see the generated code.\n\n---\n\n`wasm2lang` turns a WebAssembly module into **native source code** that each\nhost toolchain can compile, inline, and optimize directly -- asm.js, JavaScript,\nPHP, or Java. No interpreter. No runtime bridge. No WASM engine embedded at runtime.\n\nWrite portable logic once, compile to `.wasm`, and deploy it anywhere, even\ninto environments that refuse to load WebAssembly modules -- shared PHP hosting,\nlocked-down Java servers, WordPress plugins, browsers without WASM enabled.\n\n## Quick start\n\n```bash\nnpx @coffeetales.net/wasm2lang                                                                                    \\\n --language-out java                                                                                              \\\n --input-data '(module (func (export \"add\") (param i32 i32) (result i32) (i32.add (local.get 0) (local.get 1))))' \\\n --emit-code\n```\n\nThat prints a Java class with an `add` method. Swap `java` for `asmjs`,\n`javascript`, or `php64` and you get the same logic in the target language.\n\nInstall once for repeated use:\n\n```bash\nnpm install @coffeetales.net/wasm2lang\n```\n\n## Why\n\n- **Reach platforms WASM cannot.** Shared PHP hosting. Classloader-locked Java\n  servers. Plugin hosts. Ecosystems where \"add a WASM runtime\" is not an option.\n- **Skip the JIT-over-JIT tax.** Emitted code is compiled by HotSpot, OPcache,\n  or V8 directly -- no opaque runtime sits between the engine and your logic.\n- **One logic base, four ecosystems.** Fix the bug in one `.wasm`, re-emit to\n  every target. Stop drift. Stop duplication.\n\n## Backends\n\n| Backend        | `--language-out` | What you get                                                          |\n|----------------|------------------|-----------------------------------------------------------------------|\n| **asm.js**     | `ASMJS`          | Closest semantic match to WASM; V8 AOT-compiles via `\"use asm\"`.      |\n| **JavaScript** | `JAVASCRIPT`     | Native BigInt i64, typed-array memory, resizable `ArrayBuffer`.       |\n| **PHP**        | `PHP64`          | Pure PHP closures. Runs on shared hosting with zero extensions.       |\n| **Java**       | `JAVA`           | Native `long` i64, `ByteBuffer` heap, `IntVector` SIMD128 via Panama. |\n\nEvery backend is validated against the original `.wasm` on every commit:\n**17 test families × 5 build variants × 4 runtimes**, all producing\nbyte-identical stdout and matching CRC32 memory snapshots.\n\n## Features\n\n- **Structural passes** -- constant-condition folding, loop simplification,\n  block-loop fusion, switch dispatch detection, if-else recovery, block-guard\n  elision, redundant-block removal, local init folding.\n- **Typed coercion elimination** -- no stray `|0`, `Math_fround`, or redundant casts.\n- **Two-step pipelines** -- `--pre-normalized` lets you normalize once, ship\n  the `.wasm`, and emit code later. Pass analysis survives the binary\n  round-trip via a `w2l_codegen_meta` custom section.\n- **Deterministic identifier mangling** -- same key, same output. Feistel-round permutation.\n- **Built-in pass profiling** -- `WASM2LANG_PROFILE=1` flushes per-pass\n  wall-clock timings to stderr. Zero cost when off.\n- **Cast-module imports** -- functions imported from a `\"cast\"` module\n  (`i32_to_f32`, `f64_to_i32`, ...) lower to native type casts.\n- **Spec-compliant trapping** -- NaN and out-of-range inputs trap instead of\n  silently producing wrong results.\n- **Exported mutable globals** -- getter/setter accessors on every backend.\n\n## CLI essentials\n\n```\nwasm2lang [options]\n```\n\n| Flag                         | What it does                                                                                 |\n|------------------------------|----------------------------------------------------------------------------------------------|\n| `--input-file <path>`        | `.wasm` binary or `.wast`/`.wat` text. Use `wast:-` for stdin.                               |\n| `--input-data <wast>`        | Inline WebAssembly text -- no file needed.                                                   |\n| `--language-out <lang>`      | `ASMJS` (default), `JAVASCRIPT`, `PHP64`, `JAVA`.                                            |\n| `--normalize-wasm <bundles>` | Comma list of `binaryen:none\\|min\\|max` and/or `wasm2lang:codegen`. Default: `binaryen:min`. |\n| `--emit-code [name]`         | Emit the generated source; the name becomes the output symbol.                               |\n| `--emit-metadata [name]`     | Emit static memory initialization.                                                           |\n| `--emit-web-assembly [text]` | Re-emit the (normalized) WASM -- binary by default, pass `text` for WAT.                     |\n| `--mangler <key>`            | Deterministic identifier mangling.                                                           |\n| `--define K=V`               | Compile-time defines (e.g. `JAVA_HEAP_SIZE=524288`). Repeatable.                             |\n| `--pre-normalized`           | Input was pre-normalized; recover passes from the custom section.                            |\n| `--out-file <path>`          | Write to a file instead of stdout.                                                           |\n\nRun `wasm2lang --help` for the full option list.\n\n### Heap-size defines\n\nEach backend sizes its heap from the module's declared `memory.initial`\n(pages × 64 KiB). Override with a `--define` when you need extra room for\nruntime allocations beyond the static segments.\n\n| Define            | Backend    |\n| ----------------- | ---------- |\n| `ASMJS_HEAP_SIZE` | asm.js     |\n| `JS_HEAP_SIZE`    | JavaScript |\n| `PHP64_HEAP_SIZE` | PHP        |\n| `JAVA_HEAP_SIZE`  | Java       |\n\nIf the module declares no memory, the heap falls back to 65536 bytes (one page).\n\n## End-to-end example\n\n```bash\nwasm2lang                                          \\\n  --input-file module.wast                         \\\n  --normalize-wasm binaryen:min,wasm2lang:codegen  \\\n  --language-out JAVA                              \\\n  --define JAVA_HEAP_SIZE=524288                   \\\n  --mangler my-secret-key                          \\\n  --emit-metadata memBuffer                        \\\n  --emit-code module                               \\\n  --out-file Module.java\n```\n\nThis reads `.wast`, runs the full normalization + codegen pipeline, mangles\nidentifiers deterministically, and writes a Java class with a `ByteBuffer`\nheap ready for HotSpot.\n\n### Two-step: normalize once, emit later\n\n```bash\n# Normalize + freeze pass analysis into the .wasm custom section:\nwasm2lang --input-file module.wasm                  \\\n          --normalize-wasm binaryen:min,wasm2lang:codegen \\\n          --emit-web-assembly > normalized.wasm\n\n# Later -- possibly on a different machine -- emit any target:\nwasm2lang --input-file normalized.wasm \\\n          --pre-normalized             \\\n          --language-out PHP64         \\\n          --emit-code\n```\n\n## How it works\n\n```\n.wat   ┌────────────────────────────────────────┐\n.wasm >│> parse >> normalize >> passes >> emit >│> source code\n.wast  └────────────────────────────────────────┘\n```\n\n1. **Parse** -- Binaryen reads `.wasm` binary or `.wast` text.\n2. **Normalize** -- optional Binaryen passes restructure IR (flatten, simplify locals, reorder, vacuum).\n3. **Passes** -- wasm2lang's own structural passes recognize and rewrite control-flow patterns.\n4. **Emit** -- a traversal-based emitter walks each function body and produces target-language source with type-aware coercion elimination and identifier mangling.\n\nNo intermediate AST is constructed. Output chunks come straight from the\ntraversal visitor, so memory overhead scales with output size, not module size.\n\n**Why asm.js?** WebAssembly is asm.js's binary evolution -- same linear-memory\nmodel, same integer-coercion semantics, same structured control flow. asm.js\nis a formally specified typed bytecode that happens to be syntactically valid\nJavaScript; V8 still AOT-compiles it via `\"use asm\"`. This makes it the most\nsemantically natural target for WASM transpilation -- close to a round-trip.\n\n## Testing\n\n```bash\nexport SPIDERMONKEY_JS=/path/to/js\nexport PHP_CLI=/path/to/php\nexport JSHELL_CLI=/path/to/jshell\n\nmkdir test_artifacts && cd test_artifacts\n../scripts/wasm2lang_build_tests.sh\n./wasm2lang_run_tests.sh\n```\n\nEvery test is built in five variants (`baseline`, `codegen`, `nomangle`,\n`nopre`, `prenorm`), run through V8, SpiderMonkey, PHP CLI, and jshell, and\ncompared against V8's execution of the original `.wasm` -- byte-identical\nstdout and matching CRC32 memory snapshots required to pass.\n\nSet `WASM2LANG_PROFILE=1` on any invocation to get per-pass wall-clock\ntimings on stderr.\n\n## Building from source\n\n```bash\nyarn closure-make   # → dist_artifacts/wasmxlang.js\n```\n\nTargets Closure Compiler ADVANCED_OPTIMIZATIONS, ES5 strict.\n\n## Changelog\n\nPer-version files live under [`changelog/`](changelog/), indexed in\n[`CHANGELOG.md`](CHANGELOG.md). Current release:\n[**v2026.06.113**](changelog/v2026.06.113.md).\n\n## Contributing\n\nBug reports, issues, and pull requests welcome -- especially around backend\ncoverage, pass behavior, and test fixtures.\n\n---\n\n## Support the project\n\n<div align=\"center\">\n\n`wasm2lang` is an independent, self-funded project -- no company, no venture\nbacking, no grants. Every backend, every pass, every cross-runtime test fixture\nrepresents focused engineering work sustained over time.\n\n**Your sponsorship funds new backends, deeper optimization passes, broader\nWASM coverage (threads, exception handling, more proposals), and the\ncross-runtime validation infrastructure that keeps correctness rigorous.**\n\nIf `wasm2lang` saves you from rewriting logic across languages, unlocks a\ndeployment target a WASM runtime cannot reach, or you simply believe this\nkind of tool should exist -- consider sponsoring.\n\n### [Become a sponsor](https://github.com/sponsors/COFFEETALES)\n\n<a href=\"https://github.com/sponsors/COFFEETALES\"><img src=\"https://img.shields.io/badge/Become%20a%20Sponsor-GitHub%20Sponsors-db2777?style=flat&logo=githubsponsors&logoColor=white\" alt=\"Become a sponsor on GitHub Sponsors\" height=\"28\" /></a>\n\n</div>\n","readmeFilename":"README.md"}