Denoについて

Deno は、 Node.js の開発者である、Ryan Dahlによって作らた、 新しいJS/TSランタイムです。

Deno は、Node.js に比べ、以下の特徴があります。

Ryan Dehl は、Node.js に対して以下の後悔をもっているということで、 Deno を開発したと語っています。

  1. Promise の排除

    Node.js では、 JavaScript の非同期処理の抽象的な 実装を助ける Promise の実装を排除してしまっていた。 このため、Node.js の非同期実装は古いものが多く なってしまっていた。

  2. 安全性

    Node.js で利用している JavaScript エンジンである V8 自体のサンドボックスはセキュリティー的に優秀ではある。 しかし、アプリケーションランタイムしての Node.js は、 十分なセキュリティーを持てていなかった。

  3. ビルドシステム

    V8(Chrome)のビルドシステムである GYP を継続して使ってしまっていた。 その間に、GN(Ninja)などの新しいビルドシステムが登場しても、 Node.js は、古いGYPを使いつづけてしまった。

  4. package.json

    NPMや、yarn などのパッケージシステムが構成管理の情報を取得する package.json の仕組みが良くなかった。 モジュールで集中管理される構成情報は、不要だった。 各ソースの import に相対パスと URL で記述出きれば、必要なimport ソースファイルの参照は行えるので、モジュールをファイルシステム上 にコピーする package.json 的な管理は不要だった

  5. node_modules

    node_modules は、モジュール解決アルゴリズムを非常に複雑にして しまった。また、 ブラウザのセマンティクスから大きく逸脱しているが、 この方針をいまさら undo させることはできない。

  6. ".js"の拡張子なしでのrequire("module")

    必ずしも明示的でない。 Web Browser では、scriptタグのsrcアトリビュートで ".js"を省略することはできないので、Web Browser との親和性を考えるとよろ しくない

  7. index.js

    html の index.html にあわせて実装をしたが、module loader を複雑にした だけであまり実用的ではなかった。

なお、 Deno が、 Node のアナグラムであるところも、Ryan Dehl が Node.js の反省からプロジェクトが進められたのがわかる気がします。

参考 URL