Node.js開発者がリリース 最近 の発売 の最初の重要なバージョン での 1.0 これはXNUMX年間の開発の後に来ます。 これは JavaScriptとTypeScriptアプリケーションを別々に実行するためのプラットフォーム、サーバー上で実行されるコントローラーを作成するために使用できます。 ない これはNode.jsのブランチではなく、ゼロから作成された新しいプロジェクトです。
Node.jsのように、Deno V8JavaScriptエンジンを使用、Chromiumベースのブラウザでも使用されます。 主な動機 新しいJavaScriptプラットフォームを作成する Node.jsアーキテクチャで発生した概念上のエラーを削除したいという願望でした より安全な環境をユーザーに提供します。
安全性を高めるために、V8エンジン周辺のリンクはRust言語で書かれています。 これにより、メモリの解放後のメモリ領域へのアクセス、nullポインタの参照、バッファ制限の超過など、メモリの低レベルの作業によって発生する多くの脆弱性が回避されます。
プロジェクトコードはMITライセンスの下で配布され、Linux、Windows、およびmacOS用にコンパイルされています。
Deno1.0の新機能
プラットフォームのこの新しいバージョン、 Deno名前空間でのAPI安定化が強調表示されていますどれが アプリケーションとオペレーティングシステムの相互作用を担当します。 まだ安定していないソフトウェアインターフェイスはデフォルトで非表示になっており、不安定モードで起動した場合にのみ使用できます。
新しいバージョンが形成されると、そのようなAPIは徐々に安定します。 setTimeout()やfetch()などの一般的な関数を含むグローバル名前空間のAPIは、一般的なWebブラウザーのAPIに可能な限り近く、ブラウザーのWeb標準に従って開発されています。 プラットフォームコードで直接使用されるRustAPI、およびDenoランタイム用のプラグインを開発するためのインターフェイスは、まだ安定しておらず、進化し続けています。
さらに、 彼はセキュリティオリエンテーションに取り組んだことが際立っています ファイルアクセスのデフォルト設定では、ネットワーク機能と環境変数へのアクセスはデフォルトでロックされており、明示的に含める必要があります。 デフォルトでは、アプリケーションはサンドボックスで分離された環境で実行されます また、明示的な特権がないとシステム機能にアクセスできません。
一方、新バージョンの発表では、 JavaScriptに加えてTypeScriptのネイティブサポート。 タイプを確認してJavaScriptを生成するには、 標準のTypeScriptコンパイラが使用されます。 V8でのJavaScript解析と比較してパフォーマンスが低下します。 将来的には、TypeScriptタイプチェックシステムの独自の実装を準備する予定です。これにより、TypeScript処理のパフォーマンスを大幅に向上させることができます。
ランタイムは、単一のスタンドアロン実行可能ファイルの形式で提供されます (「ない」)。 Denoを使用してアプリケーションを実行するには、外部依存関係がなく、システムに特別なインストールを必要としない、プラットフォーム用の実行可能ファイルをダウンロードするだけで十分です。サイズは約20MBです。 同時に、denoはモノリシックアプリケーションではなく、個別に使用できるRustのボックスパックのコレクション(deno_core、rusty_v8)です。
ランタイムに加えて、プラットフォーム Denoはパッケージマネージャーとしても機能し、コード内のURLからモジュールにアクセスできます。 URLによって外部サーバーからダウンロードされたファイルはキャッシュされます。 モジュールバージョンへのリンクは、URL内のバージョン番号の指示によって決定されます。
際立っている他の革新の このバージョン1.0:
- このプラットフォームは、アプリケーションでのHTTPネットワーク要求を効果的に処理し、高性能のネットワークアプリケーションを作成するように設計されています。
- Denoと通常のWebブラウザの両方で実行できるユニバーサルWebアプリケーションを作成する機能。
- モジュールの標準セットの存在。その使用には、外部の依存関係へのリンクは必要ありません。 標準コレクションのモジュールも、互換性について監査およびテストされています。
- フレームワークは、統合された依存関係検査システム( "deno info"コマンド)であり、コードをフォーマットするためのユーティリティ(deno fmt)です。
- すべてのアプリケーションスクリプトをXNUMXつのJavaScriptファイルに組み合わせることができます。