import { parse, print } from 'sh-syntax' const text = "echo 'Hello World!'" const ast = await parse(text) const newText = await print(ast, { // `originalText` is required for now, hope we will find better solution later originalText: text, })
import { getProcessor } from 'sh-syntax' // choose your own way to load the WASM file // with `fetch` const processor = getProcessor(() => fetch('http://cdn.jsdelivr.net/npm/sh-syntax@latest/main.wasm'), ) // with `wasm?init` via `vite` import initWasm from 'sh-syntax/wasm?init' const processor = getProcessor(initWasm) const parse = (text, options) => processor(text, options) const print = (textOrAst, options) => { if (typeof textOrAst === 'string') { return processor(textOrAst, { ...options, print: true, }) } return processor(textOrAst, options) } // just like node again const text = "echo 'Hello World!'" const ast = await parse(text) const newText = await print(ast, { originalText: text })
clk: ~2.81 GHz cpu: Apple M1 Max runtime: node 18.20.8 (arm64-darwin) benchmark avg (min ⦠max) p75 / p99 (min ⦠top 1%) ------------------------------------------- ------------------------------- sh-syntax 18.33 ms/iter 18.56 ms â ââ (17.48 ms ⦠20.83 ms) 19.09 ms âââ â âââ â â ( 28.52 kb ⦠9.82 mb) 890.46 kb âââââââââââââââââââââ 5.07 ipc ( 1.22% stalls) 99.36% L1 data cache 56.96M cycles 288.57M instructions 39.27% retired LD/ST (113.32M) sh-syntax (synckit) 18.38 ms/iter 18.82 ms âââ ââ ââ (17.63 ms ⦠19.06 ms) 19.04 ms ââââ ââ âââ â (291.31 kb ⦠312.45 kb) 292.09 kb âââââââââââââââââââââ 1.11 ipc ( 11.51% stalls) 40.34% L1 data cache 434.86k cycles 484.78k instructions 19.58% retired LD/ST ( 94.92k) mvdan-sh 79.47 ms/iter 78.95 ms â (71.22 ms ⦠126.09 ms) 80.84 ms â â â â â â â â â â ( 8.18 mb ⦠9.70 mb) 8.83 mb âââââââââââââââââââââ 5.18 ipc ( 1.05% stalls) 99.04% L1 data cache 249.41M cycles 1.29G instructions 34.41% retired LD/ST (444.42M) summary sh-syntax 1x faster than sh-syntax (synckit) 4.34x faster than mvdan-sh
You can try it with running node benchmark
by yourself. Here is the benchmark source code.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4