サーバーサイド JavaScript プラットフォーム Node.js 19.0 が利用可能

JavaScript でネットワーク アプリケーションを実行するためのプラットフォームである Node.js 19.0 がリリースされました。 Node.js 19 は、2023 年 18 月まで更新が利用できる通常のサポート ブランチです。 今後数日以内に Node.js 2025 ブランチの安定化が完了し、LTS ステータスが取得され、16.0 年 2023 月までサポートされます。 Node.js 14.0 の以前の LTS ブランチのメンテナンスは 2023 年 XNUMX 月まで、前々年の LTS ブランチ XNUMX は XNUMX 年 XNUMX 月まで続きます。

主な改善点:

  • V8 エンジンは、Chromium 10.7 で使用されるバージョン 107 に更新されました。Node.js 18 ブランチと比較したエンジンの変更点の中で、新しい関数 formatRange を追加する Intl.NumberFormat API の 8.1.0 番目のバージョンの実装が注目されます。 ()、formatRangeToParts() および selectRange()、セットのグループ化、丸めおよび精度設定の新しいオプション、文字列を 8.19.2 進数として解釈する機能。 含まれている依存関係 llhttp XNUMX および npm XNUMX も更新されました。
  • 実験的な「node -watch」コマンドは、インポートされたファイルが変更されたときにプロセスが再起動されることを保証する監視モードの実装とともに提案されています(たとえば、「node -watchindex.js」が実行されると、プロセスはIndex.js が変更されると自動的に再起動されます)。
  • すべての送信 HTTP/HTTPS 接続について、HTTP 1.1 キープアライブ メカニズムのサポートが有効になっており、同じ接続内で複数の HTTP リクエストを処理するために一定時間接続を開いたままにします。 Keep-Alive により、スループットとパフォーマンスの向上が期待されます。 デフォルトでは、接続オープンのタイムアウトは 5 秒に設定されています。 サーバー応答の Keep-Alive HTTP ヘッダーの解析のサポートが HTTP クライアント実装に追加され、Keep-Alive を使用した非アクティブなクライアントの自動切断が Node.js HTTP サーバー実装に追加されました。
  • WebCrypto API は、Ed25519、Ed448、X25519、および X448 アルゴリズムを使用する関数を除き、安定したカテゴリに移行されました。 WebCrypto モジュールにアクセスするには、globalThis.crypto または require('node:crypto').webcrypto を使用できるようになりました。
  • DTrace、SystemTap、および ETW (Event Tracing for Windows) トレース ツールのサポートは削除されました。適切なサポート計画がない場合に最新の状態に維持するのは複雑であるため、そのメンテナンスは不適切であると考えられました。

Node.js プラットフォームは、Web アプリケーションのサーバー メンテナンスと、通常のクライアントおよびサーバー ネットワーク プログラムの作成の両方に使用できます。 Node.js のアプリケーションの機能を拡張するために、モジュールの大規模なコレクションが用意されています。その中には、HTTP、SMTP、XMPP、DNS、FTP、IMAP、POP3 サーバーとクライアントの実装を備えたモジュール、統合用モジュールが含まれています。さまざまな Web フレームワーク、WebSocket および Ajax ハンドラー、DBMS コネクタ (MySQL、PostgreSQL、SQLite、MongoDB)、テンプレート エンジン、CSS エンジン、暗号化アルゴリズムと認証システム (OAuth) の実装、XML パーサーを使用します。

多数の並列リクエストを確実に処理するために、Node.js はノンブロッキング イベント処理とコールバック ハンドラーの定義に基づいた非同期コード実行モデルを使用します。 接続を多重化するためにサポートされているメソッドは、epoll、kqueue、/dev/poll、および select です。 接続の多重化には、Unix システム上の libev および Windows 上の IOCP のアドオンである libuv ライブラリが使用されます。 libeio ライブラリはスレッド プールの作成に使用され、c-ares はノンブロッキング モードで DNS クエリを実行するために統合されています。 ブロッキングを引き起こすすべてのシステム コールはスレッド プール内で実行され、シグナル ハンドラーと同様に、名前のないパイプ (パイプ) を介して作業の結果を転送します。 JavaScript コードの実行は、Google が開発した V8 エンジンを使用して提供されます (さらに、Microsoft は Chakra-Core エンジンを備えたバージョンの Node.js を開発しています)。

Node.js の核心は、Perl AnyEvent、Ruby Event Machine、Python Twisted フレームワーク、および Tcl イベント実装に似ていますが、Node.js のイベント ループは開発者から隠されており、実行中の Web アプリケーションでのイベント処理に似ています。ブラウザで。 Node.js のアプリケーションを作成するときは、たとえば、「var result = db.query("select..");」を実行する代わりに、イベント駆動型プログラミングの詳細を考慮する必要があります。 作業の完了を待機し、その後結果を処理することで、Node.js は非同期実行の原則を使用します。 コードは「db.query("select..", function (result) {結果処理});」に変換され、制御が即座に次のコードに渡され、データが到着するとクエリ結果が処理されます。

出所: オープンネット.ru

コメントを追加します