V8 JavaScriptエンジンとRust言語を使用したJavaScript/TypeScriptランタイム「Deno」の開発チームは、最新バージョンとなる「Deno 1.31」を2月24日(現地時間)に公開した。DenoはMITライセンスで公開しているオープンソース・ソフトウェア。
「Deno 1.31」ではまず、「package.json」ファイルに対応した。このファイルはパッケージ・マネージャー「npm」で使用するもので、プロジェクトの名称や、バージョン、プロジェクトが依存しているパッケージなどをJSON形式で記述するものだ。Denoはこのファイルを自動的に検知し、コマンドを1回実行するだけで依存しているパッケージをすべてインストールすることが可能になる。
また、バージョン1.15から「実験的」という位置付けで提供してきたNode.js互換機能が安定版となった。これにより、Node.jsのAPIに依存するパッケージをnpmでインストールするときに「--unstable」というフラグを付ける必要がなくなった。それでも、Node.js互換機能にはバグが残っているというが、開発チームは数週間以内に残っているバグを解消するとしている。
そしてNode.jsとの互換性を保つ層を、Denoのランタイムに取り込んだ。これまで、Node.jsとの互換性を保つ層は、独立したライブラリとして提供してきたが、Denoをバージョン・アップするたびに互換層を追加でダウンロードしなければならなかった。さらに、互換層のデータ・サイズが大きくなってきており、アプリケーションの起動時間が長くなっていた。
さらに、DenoアプリケーションからC/C++言語などで開発した関数などの呼び出しを可能にするFFI(Foreign Function Interface)に大きな変更が加わった。前バージョンまではFFIのポインタ(pointer)をDenoでは数値型(number型あるいはBigInt型)として扱ってきたが、今回の新バージョンからはオブジェクトとして扱う。このオブジェクトはV8 JavaScriptエンジンが直接生成するもので、V8の「Fast API」にも準拠している。その結果、FFIでポインタを利用するコードの実行速度が向上する。ただし、新バージョンでFFIのポインタを使用する場合はコードの書き換えが必要になる。
加えて、今回の新バージョンから、Denoが使用するV8 JavaScriptエンジンのバージョンが10.9から11.0となった。
この記事は参考になりましたか?
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です