最近お気に入りの Deno は、mjs が ts としてコンパイルされてしまう問題あり、deno upgrade --version 1.0.3 として回避中。いっそ、TypeScriptなしのランタイムにしてweb互換性を上げるのはどうだろう?
思うだけでなく、作ってみることができるのがオープンソースのいいところ。手始めにJavaScriptエンジンChakraCoreを使って、コンソール上でサクッとJavaScriptを動かせる js-cmd を作ってみました。
100って2進法にすると何だっけ?サクッと1行、JavaScriptが動かせるコマンドバージョン。
$ js "(100).toString(2)" 1100100
組み込みコマンドは、標準出力する console.log と別名として、Rubyっぽく p だけを定義。
「taisukef/js-cmd: JavaScript on command line with ChakraCore」(今はmacOS用のみ)
C++で作ったメインソース js.cpp は、264行。ChakraCoreのサンプルソースにコマンドを組み込み、エラー処理を加えただけです。
NodeやDenoが使っているJavaScriptエンジンは、GoogleのChromeでも使われているv8、ChakraCoreは旧EdgeやInternet Explorerで使われていたMicrosoft製のChakraCore。 性能比較をしてみて、用途に会うものを使うのもいいですね。
オリジナルJavaScriptランタイムづくり、ぜひ挑戦してみてください!