VS Codeのエージェントモードを拡張するには、を試してください!

2022年11月 (バージョン 1.74)

更新 1.74.1: この更新プログラムでは、これらの問題が解決されています。

更新 1.74.2: この更新プログラムでは、これらの問題が解決されています。

更新 1.74.3: この更新プログラムでは、このセキュリティ上の問題が解決されています。

ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


Visual Studio Code 2022年11月リリースへようこそ。このバージョンには、皆さんが気に入るであろう多くの更新が含まれています。主なハイライトをいくつかご紹介します。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com更新 にアクセスしてください。

Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。

アクセシビリティ

ノートブック実行時の音声キュー

ノートブックのセルが実行を完了したときに、音声キューが鳴るようになりました。セルが正常に実行されたか、失敗したかを示すために、キューは異なります。

差分レビューモードの音声キュー

差分エディターで次の差分へ移動がトリガーされると、カーソルが挿入された行にあるか、削除された行にあるかを示す特定の音声キューが再生されます。

利用可能な音声キューについて興味がある場合は、ヘルプ: 音声キューのリストドロップダウンからそれらを聞くことができます。

List Audio Cues dropdown

設定エディターのインジケーター、ホバー、リンクがキーボードで操作できるようになりました。一部のリンクのスタイルも、設定エディター全体での一貫性を向上させるために調整されています。

設定エディターのインジケーターホバーは、タブストップとキーボードフォーカスの維持に関して、はるかに優れた動作をするようになりました。この改善された動作はまだ試験的であり、現在は VS Code 全体のすべてのホバーではなく、設定エディターのインジケーターホバーのみで有効になっています。

Navigating settings and a Modified elsewhere indicator in the Settings editor using the keyboard

テーマ: Light Pink (vscode.dev でプレビュー)

ワークベンチ

エクスプローラーの自動表示ロジックのカスタマイズ

非常に多くの支持を得ていた問題 #87956 (「特定のフォルダーごとに explorer.autoReveal を設定できるようにする」) は、新しい設定 explorer.autoRevealExclude の導入によって修正されました。この設定を使用すると、自動表示が有効になっている場合 (explorer.autoReveal、デフォルト true)、エクスプローラーで自動表示されるファイルを構成できます。autoRevealExclude 設定は、ファイルの除外にglob パターンを使用し、files.exclude と同様に when 句を介した兄弟マッチングもサポートします。

デフォルト値は node と bower モジュールを除外します。

{
  "explorer.autoRevealExclude": {
    "**/node_modules": true,
    "**/bower_components": true
  }
}

ビューコンテナごとのバッジを非表示にする

ビューコンテナを右クリックしてビューコンテナを非表示にできたのと同様に、コンテナのバッジ (アクティビティバー、パネル、セカンダリサイドバーに表示) を非表示にできるようになりました。バッジは、特定のビューコンテナの数値、アイコン、または進行状況インジケーター (例: ソース管理ビューの保留中の変更数) を表示することがよくあります。

A context menu is triggered on the Source Control view showing a Hide Badge entry. This is then selected and the blue number one badge disappears. Triggering the context menu again shows a Show Badge entry which brings the blue badge number one badge back.

マージエディター

このリリースでは、マージエディターに対するいくつかの改善とバグ修正が含まれています。主なハイライトは次のとおりです。

  • 元に戻す/やり直しが、競合の処理済み状態を追跡するようになりました。
  • 入力ビューの無視アクションは、結果ビューの処理済みとしてマークアクションの代わりに、ベースバージョンを受け入れるために使用できます。
  • 両側で同じ変更は、自動的に解決されるようになりました。
  • git blame 機能を提供する拡張機能は、incoming、current、および base エディターで動作するようになりました。

ディスク上の拡張機能をインストールする

開発者: 場所から拡張機能をインストール... コマンドを使用して、ローカルディスクドライブ上にある拡張機能をインストールできるようになりました。このコマンドは、拡張機能の .vsix ファイルの場所を選択するためのプラットフォームフォルダーダイアログを開きます。

エディター

CJK 文字の新しい単語区切りオプション

新しい設定 editor.wordBreak を使用すると、CJK 文字の後に折り返し点を挿入しないようにすることができます。keepAll で設定すると、折り返しアルゴリズムは CJK 文字の後のテキストを同じ行に保持しようとします。この設定は、他のスクリプトの文字には影響しません。

OpenType フォントの新しいフォント設定

OpenType フォントバリエーションをサポートする一部の新しいフォントは、フォントウェイト軸などの特定の軸を調整して、font-weight CSS プロパティでは設定できないフォントウェイトを実現できます。CSS では、これは font-variation-settings プロパティで実現されます。そのようなフォントを使用している場合、editor.fontVariationstrue に設定できるようになり、VS Code はフォントウェイトの設定に "wght" 表示軸を使用します。フォントが他の軸をサポートしている場合、例えば "editor.fontVariations": "'ital' 0.5" のように直接設定することも可能です。

新しいインデントサイズ設定

新しい設定 editor.indentSize が導入され、インデントサイズ (インデントを構成するスペースの数) をタブサイズ (タブ文字を表示するために使用されるスペースの数) から切り離すことができるようになりました。これは、タブとスペースのインデントが混在するファイルを扱う場合に便利で、手動のインデント設定を使用している場合にのみ適用できます。

以下は構成例です。

"editor.detectIndentation": false,
"editor.insertSpaces": true,
"editor.tabSize": 8,
"editor.indentSize": 2

インライン補完を部分的に受け入れるコマンド

コマンドインライン提案の次の単語を受け入れる (editor.action.inlineSuggest.acceptNextWord) は、現在のインライン提案の次の単語/非単語セグメントを受け入れるために使用できます。現在、インライン提案の最初の行の一部のみを受け入れることができます。このコマンドはまだ開発中であり、将来のリリースに向けて、代替の分割ルールと共にキーボードショートカットを検討しています。

ソース管理

安全でない Git リポジトリを管理する

VS Code はすべての Git 操作を実行するために git.exe を使用します。Git 2.35.2 以降、リポジトリが潜在的に安全でないと見なされるため、現在のユーザー以外のユーザーが所有するフォルダー内のリポジトリで Git 操作を実行することはできなくなりました。

このリリース以降、潜在的に安全でないリポジトリを開こうとすると、VS Code はソース管理ビューにウェルカムビューとエラー通知を表示します。ウェルカムビューと通知の両方に、潜在的に安全でないリポジリポジトリのリストを確認し、それらを安全とマークして開くことができる安全でないリポジトリを管理コマンドが表示されます。安全でないリポジトリを管理コマンドは、コマンドパレットでも利用できます。リポジトリを安全とマークすると、リポジトリの場所が safe.directory Git 設定に追加されます。

オプティミスティックなユーザーインターフェースの更新

Git 操作を実行した後、ソース管理ビューが更新される前にデータモデルを更新するために一連の git コマンド (例: git status) が実行されます。これらのコマンドの実行に数秒かかるシナリオ (例: 大規模なモノレポを扱う場合) があり、ソース管理ビューが更新されるまでに遅延が発生していました。

このマイルストーンでは、git status が完了する前に、一部の Git 操作 (ステージ、アンステージ、変更の破棄、コミット) についてソース管理ビューがオプティミスティックに更新されるように変更を加え、より機敏なソース管理ビューを実現しました。

新しい機能はデフォルトで有効になっていますが、git.optimisticUpdate: false を使用して無効にすることができます。

コミットアクションボタンの改善

コミットアクションボタンがセカンダリコミットコマンド (例: コミット & 同期) を実行している場合、ボタンのラベルが実行中のコマンドを正しく反映するようになりました。コミットボタンは、進行状況を示すアニメーションも表示します。

ターミナル

ターミナルクイックフィックスの改善

ターミナルクイックフィックスは、エディターでのエクスペリエンスと連携するために、コードアクションコントロールで表示されるようになりました。

A Quick Fix is triggered in the terminal and a menu is presented with a play button to the left of the action's label

ターミナルドロップダウンのタスクアクション

タスクの実行タスクの構成コマンドがターミナルドロップダウンに表示され、発見しやすさとアクセスしやすさが向上しました。

The last section of the terminal dropdown menu contains Run Task and Configure Tasks commands

リモート開発

リモートトンネルが、VS Code Stable でプレビュー機能として利用可能になりました。リモートトンネルを使用すると、どのデバイスからでも、どこからでも VS Code を使って安全にマシンにアクセスできます。リモートトンネルアクセスを有効にするには、次のいずれかの方法でできます。

  • アカウントメニューまたはコマンドパレットからリモートトンネルアクセスをオンにするを選択します。
  • VS Code がインストールされ、PATH が通っているマシンから code tunnel を実行します。
  • 新しい VS Code CLI をダウンロードし、./code tunnel を実行します。

トンネルアクセスがオンになると、vscode.dev を使用するか、VS Code デスクトップ内からRemote - Tunnels 拡張機能を使用して、任意のデバイスからマシンに接続できます。

詳細については、機能を発表するブログ投稿またはリモートトンネルのドキュメントを確認してください。

テーマ: Codesong (vscode.dev でプレビュー)

注: スタンドアロンの code-server CLI を使用していた場合、代わりに VS Code CLI (最新の VS Code デスクトップまたは上記のスタンドアロンダウンロードを介して) を使用する必要があります。

デバッグ

JavaScriptデバッグ

console.profile のサポート

JavaScript デバッガーが console.profile をサポートするようになりました。デバッガーで実行すると、console.profile()console.profileEnd() の間のコードの CPU プロファイルが収集されます。

console.profile();
doSomeExpensiveWork();
console.profileEnd();

結果として生成された .cpuprofile ファイルはワークスペースフォルダーに保存され、VS Code の組み込みのプロファイルビューアーを使用して開いて表示できます。

ネストされたソースマップのサポート

特にモノレポのセットアップでは、ソースコードが一度コンパイルされてから、再度再コンパイルまたはバンドルされることがあります。多くの場合、これにより、結果のバンドルのソースマップが最初のステップで作成されたコンパイル済みファイルを参照することになります。

JavaScript デバッガーはソースマップを自動的に再帰的に解決するようになり、追加の手順なしで元のソースファイルをデバッグできるようになりました。

serverReadyAction に killOnServerStop プロパティが追加されました

serverReadyActionlaunch.json 機能を使用すると、ユーザーは Web サーバーを起動するデバッグセッションを開始し、サーバーが起動したら、そのサーバーの URL に移動したブラウザーのデバッグを自動的に開始できます。新しいプロパティ killOnServerStop が追加され、これを true に設定すると、サーバーのデバッグセッションが停止したときに、新しいブラウザーデバッグセッションが自動的に停止するようになります。

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "https://:%s",
    "action": "debugWithEdge",
    "killOnServerStop": true
  }
}

上記の例では、元の Launch Program デバッグセッションが停止すると、自動的に開始された Edge デバッグセッションも停止します。

フォーカスされているデバッグセッションの例外ブレークポイントの表示

以前は、2 種類の異なるデバッグセッションを実行している場合の例外ブレークポイントの管理がうまくいきませんでした。今回、呼び出し履歴ビューでデバッグセッションにフォーカスが当てられると、そのセッションのデバッグタイプに対応する正しいブレークポイントのセットが表示されるようになりました。

Exception breakpoints correctly shown per call stack frame

コメント

comments.visible

新しい設定 comments.visible を使用すると、エディターのコメント機能 (コメントバーとエディター内のコメントピークビュー) をオフにできます。セッション中にエディターのコメント機能のオン/オフを切り替えるには、コメント: エディターのコメント機能を切り替えるコマンドを引き続き使用できます。コメントビューでコメントを選択すると、常にコメント機能がオンになります。

コメントビューのバッジ

コメントビューには、未解決のコメントの数のバッジが表示されます。

Comments view badge

タスク

問題マッチングの「search」ファイルロケーションメソッド

以前は、問題マッチングは fileLocation プロパティを介して、問題のあるファイルをどこで探すかを正確に知る必要がありました。サポートされていたメソッドは、absoluterelative、または autoDetect (まず相対パスをチェックし、失敗した場合に絶対パスを探す) でした。

しかし、ネストされたサブディレクトリに存在するスクリプトを使用するワークスペースでは、異なるスクリプトが統一された方法 (例えば、ワークスペースのベースディレクトリからの相対パス) でファイルパスを報告することがめったになかったため、タスクの設定が困難でした。

この問題を解決するために、search という新しいファイルロケーションメソッドが追加されました。このメソッドを使用すると、再帰的なファイルシステム検索が実行され、キャプチャされたパスがすべて特定されます。

以下の例は、search ファイルロケーションメソッドの設定方法を示しています (ただし、すべてのパラメーターはオプションです)。

"problemMatcher": {
    // ...
    "fileLocation": [
        "search",
        {
            "include": [ // Optional; defaults to ["${workspaceFolder}"]
                "${workspaceFolder}/src",
                "${workspaceFolder}/extensions"
            ],
            "exclude": [ // Optional
                "${workspaceFolder}/extensions/node_modules"
            ]
        }
    ],
    // ...
}

注意: ユーザーは時間のかかるファイルシステム検索 (例: node_modules ディレクトリ内を検索する) を引き起こさないように注意し、exclude プロパティを適切に設定してください。

言語

TypeScript 4.9

VS Code は TypeScript 4.9 を同梱するようになりました。この主要なアップデートには、satisfies オペレーター自動アクセサーなどの新しい TypeScript 言語機能が導入されています。ツール側では、ファイル監視の改善や、その他多くの修正と改善が行われています。

このアップデートの詳細については、TypeScript 4.9 のアナウンスをご覧ください。

return で定義へ移動

JavaScript と TypeScript は、return キーワードで定義へ移動を実行して、リターン元の関数の先頭にすばやくジャンプする機能をサポートするようになりました。これは、長く、複雑な、または深くネストされた関数を扱う場合に役立ちます。これには定義へ移動コマンド/キーバインディング (F12) を使用するか、単に return キーワード上で Cmd/Alt + クリック を行うことができます。

ノートブック

カーネルピッカーの実験: 最近使用したカーネル

最近使用したカーネルをピッカーの最上部に表示する新しいノートブックカーネルピッカーが追加されました。これはオプトインの実験機能であり、notebook.kernelPicker.type 設定を mru に設定することで有効にできます。

使用されていないカーネルは、セカンダリピッカーの別のカーネルを選択...に移動されます。このピッカーは、最新のJupyter 拡張機能がインストールされている場合、すべてのカーネルをそのソース (例: Jupyter カーネル、Python 環境など) ごとにグループ化します。

Kernel picker with most recently used kernels

皆様からのフィードバックをお待ちしております。VS Code リポジトリで課題を作成してください。

Web 用 VS Code

ソース管理

VS Code for the Web は、GitHub および Azure Repos リポジトリを編集する際に以下の設定をサポートするようになりました。

  • "git.branchRandomName.enabled" - VS Code for the Web でブランチを作成するときにランダムなブランチ名を生成します。
  • "git.branchRandomName.dictionary" - VS Code for the Web でブランチを作成するときに、ランダムなブランチ名を生成するための単語辞書を指定します。
  • "git.closeDiffOnOperation" - コミット、変更のステージング、アンステージングなどのソース管理操作を実行した後、差分エディターを閉じます。

さらに、VS Code for the Web では、保護されたブランチについてステータスバーとブランチピッカーにロックアイコンが表示され、VS Code デスクトップのエクスペリエンスと統一されました。

Lock icon for protected branches in the Status bar and branch picker

最後に、VS Code for the Web のソース管理アクションボタンを使用して、変更を直接リポジトリのリモートにコミットしてプッシュできるようになりました。

Commit & Push using source control action button

コミットする前に変更を検証したい場合は、アクションボタンのドロップダウンにあるセカンダリの作業を続行...アクションを使用して、作業中の変更を別の開発環境に持ち運ぶこともできます。

作業を続行の改善

GitHub または Azure Repos リポジトリにいる場合、作業中の変更を特定の開発環境に持ち運ぶための便利なワンステップコマンドがコマンドパレットで利用できるようになりました。

  • 新しい Codespace で作業を続行する
  • ローカルクローンで作業を続行する
  • VS Code デスクトップのリモートリポジトリで作業を続行する

One step commands to continue working in another development environment

また、作業中の変更をクラウドに保存することに関連することを明確にするために、編集セッションクラウドの変更に名称変更しました。

拡張機能への貢献

Jupyter

ノートブックセルのデバッグのための「自分のコードのみ」

「自分のコードのみ」デバッグ機能を使用すると、デバッガーが Python ライブラリのコードをステップ実行するか、または自分のソースコードのみをステップ実行するかを決定できます。これはノートブックセルのデバッグ時にデフォルトで有効になっていますが、"jupyter.debugJustMyCode": false を設定することで無効にし、ライブラリコードをステップ実行できるようにすることができます。最高の体験を得るためには、環境内の debugpy を >=1.6.3 にアップグレードしてください。以前は、debugJustMyCode 設定は対話型ウィンドウでデバッグする場合にのみ適用されていましたが、現在はノートブックエディターでも利用できるようになりました。

ノートブックセルのデバッグセッションの再起動をサポート

デバッグツールバーの再起動コマンドは、現在のデバッグセッションを再起動します。以前は、ノートブックのデバッグセッションでエラーが発生していましたが、現在はサポートされています。残念ながら、対話型ウィンドウでは適切にサポートできません。

この機能は、デバッグし、セルを編集し、その後デバッグセッションを再起動して編集を適用した状態で再度セルをデバッグするワークフローで特に便利です。

リモート開発拡張機能

リモート開発拡張機能を使用すると、コンテナ、リモートマシン、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。このリリースのハイライトは次のとおりです。

  • Dev Container の GPU サポート
  • Dev Container の Cygwin / Git Bash ソケット転送
  • Remote - Tunnels 拡張機能 - SSH を必要とせずにリモートマシンに接続します。

新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで確認できます。

GitHub Pull Requests and Issues

プルリクエストとイシューの作業、作成、管理ができるGitHub Pull Requests and Issues 拡張機能は、さらに進歩しました。主なハイライトは次のとおりです。

  • パーマリンクコマンドのノートブックサポート。
  • プルリクエストのチェックステータス (継続的インテグレーション (CI) の進行中、レビューが必要、CI 失敗など) がプルリクエストツリービューに表示されます。
  • PR の vscode.dev リンクは、プルリクエスト概要からコピーできます。
  • プルリクエストの次の差分へ移動コマンドは、チェックアウトされた PR のファイル全体で次の差分に移動します。

その他のハイライトについては、拡張機能の0.56.0 リリース変更ログをご覧ください。

プレビュー機能

プロファイル

この数か月間、コミュニティからの最も人気のある要望の 1 つである VS Code のプロファイルのサポートに取り組んできました。この機能は、workbench.experimental.settingsProfiles.enabled 設定を介してプレビューで利用できます。ぜひ試して、vscode リポジトリで課題を作成するか、課題 #116740 にコメントしてフィードバックをお寄せください。

プロファイルの共有

プロファイルを GitHub に gist としてエクスポートして共有できるようになりました。VS Code は GitHub アカウントを使用して秘密の gist を作成し、他のユーザーと共有するためのリンクを提供します。そのリンクを開くと、VS Code は共有プロファイルをインストールするかどうかを尋ねます。プロファイルをエクスポートまたはインポートする際に、VS Code はプレビューを表示するため、エクスポートまたはインポートするデータをそれぞれ確認して選択できます。

GitHub にプロファイルをエクスポートし、そのリンクをコピーして他のユーザーと共有するビデオです。

Exporting a Profile

このビデオは、共有リンクを開いてプロファイルをインポートする方法を示しています。

Importing a Profile

拡張機能の署名と検証

11月中旬から、Visual Studio Marketplace にアップロードされたすべての VS Code 拡張機能は、VS Marketplace によって署名されます。このプロセスはリポジトリ署名と呼ばれます。すべての拡張機能のインストールと更新で、VS Code は拡張機能パッケージの署名を検証します。署名と署名検証により、拡張機能パッケージの整合性と信頼性を保証できます。

署名検証は現在、VS Code Insiders でのみ行われています。問題に気づいた場合は、vscode リポジトリで課題を作成してお知らせいただくか、extensions.verifySignaturefalse に設定することで署名検証をオプトアウトできます。今後数か月以内に VS Code Stable で署名検証を有効にするよう取り組んでいます。

リポジトリ署名とは別に、拡張機能発行者の署名についても作業を開始しています。

Web での Python 実行

実験的 - Web 用 Python 拡張機能にデバッグサポートを追加しました。デバッガーは以下の機能をサポートしています。

  • ブレークポイントの設定
  • 関数のステップインとステップアウト
  • モジュールをまたがるデバッグ
  • デバッグコンソールでの変数の評価
  • 統合ターミナルでのプログラムのデバッグ

以下のスクリーンショットは、Hello World プログラムのデバッグを示しています。

Python debugging in VS Code for the Web

注意: 拡張機能を使用するには、ブラウザーの URL に引き続き ?vscode-coi= というクエリパラメーターを追加する必要があります。

拡張機能作成

宣言された拡張機能のコントリビューションに対する暗黙的なアクティベーションイベント

このマイルストーンでは、拡張機能が package.json で特定の拡張機能のコントリビューションを宣言している場合、アクティベーションイベントを明示的にリストする必要があるという要件を削除しました。

以前は、拡張機能が package.json ファイルでコマンド mycommand を提供すると宣言した場合、コマンドが正常に実行されるように、package.jsonactivationEvents フィールドに対応する onCommand:mycommand アクティベーションイベントもリストする必要がありました。これは面倒でエラーが発生しやすく、大きな package.json ファイルにつながる可能性がありました。

VS Code は、以下の拡張機能コントリビューションポイントについて、アクティベーションイベントを自動的に設定するようになりました。

コントリビューションポイント 推測されるアクティベーションイベント
コマンド onCommand
authentication onAuthenticationRequest
言語 onLanguage
customEditors onCustomEditor
views onView

拡張機能の作成者は、これらの推測されるアクティベーションイベントを拡張機能から安全に削除できるようになりました。削除する場合は、拡張機能が以前のバージョンの VS Code と互換性があると見なされないように、VS Code エンジンの要件を更新してください。

    "engines": {
        "vscode": "^1.74.0"
    },

ログ出力チャンネル

このマイルストーンでは、LogOutputChannel API を確定しました。この API を使用して、拡張機能からのメッセージをログに記録するために使用されるログ出力チャネルを作成できるようになりました。

また、アプリケーションの現在のログレベルを示し、アプリケーションのログレベルが変更されたときにイベントを発生させるために、env 名前空間のlogLevel プロパティとonDidChangeLogLevel イベントを確定しました。

すべての Web ビューの一貫したオリジン

前回のイテレーションでの作業に引き続き、VS Code のすべての Web ビューはカスタムオリジンを維持しようとします。1.74 では、これはカスタムエディターで使用される Web ビューにも拡張されます。

これにより、Web ビューのコンテンツがより多くの場合でキャッシュできるようになり、パフォーマンスが向上します。詳細と拡張機能作成者として注意すべき事項については、以前のリリースノートを参照してください。

拡張機能の README でのビデオタグのサポート

拡張機能は README で <video> タグを使用できるようになりました。ビデオは VS Code Marketplace と VS Code の拡張機能ビューページの両方でサポートされています。.gif と比較して、ビデオファイルは高品質で、多くの場合サイズも小さくなります。音声を含めることもできます!

VS Code 自体では特定のビデオおよびオーディオ形式のみがサポートされていることに注意してください。現在、<video>srcposter には相対パスではなく、フルパスを使用する必要があります。

コメントスレッドの追加アクション

新しいメニューの場所 comments/commentThread/additionalActions により、拡張機能はコメントスレッドに常に表示されるボタンを提供できるようになりました。

Visible button in a comment

vsce から @vscode/vsce への名称変更

VS Code の拡張機能マネージャーである vsce ツールは、@vscode/vsce に名称変更されました。これは、このツールをライブラリとして使用している人にとっては破壊的変更です。CLI ツールは引き続き vsce と呼ばれ、npm install -g @vscode/vsce でインストールできます。

デバッグアダプタープロトコル

デバッグアダプタープロトコルにいくつかの明確化と新しいプロパティが追加されました。

  • The DataBreakpointInfo request has a new optional frameId property. Clients can use this flag to specify which stack frame contains a name variable.
  • readMemory リクエストのファイル末尾の動作が指定されるようになりました。

エンジニアリング

プロパティとメソッドの名前マングリング

当社の製品ビルドは、プロパティとメソッドの名前をマングルするようになりました。これにより、メインバンドルのサイズが約 13% (-1.5 MB) 削減され、コードの読み込み時間が約 5% 短縮されました。

GitHub & Microsoft 認証拡張機能のバンドルサイズ改善

これらの 2 つの拡張機能のバンドルサイズは、提供される機能と、多くの場合 (vscode.dev など) 起動時にどれほど重要であるかを考慮すると、望ましいサイズよりも大きくなっていました。このマイルストーンでは、これらの拡張機能のサイズを減らすことに注力し、その結果は次のとおりです。

  • GitHub 認証: 93 KB -> 64.9 KB
  • Microsoft 認証: 97 KB -> 57.7 KB

これは、次のことによって達成されました。

  • Node.js と Web で容易に利用できる機能を提供する Node モジュールに依存しない (およびバンドルしない) ようにしました (例: Crypto.randomUUID() を優先して uuid を削除)。
  • node-fetch を Node.js と Web の両方で使用するのではなく、Node.js でのみ使用するようにしました。
  • サイズが大幅に縮小された @vscode/extension-telemetry の最新バージョンを採用しました。

このプロセスで機能が失われることはなく、これらの拡張機能はサイズが縮小されたため、より高速にフェッチされ、読み込まれるようになりました。

Electron サンドボックスの旅

Electron のサンドボックスを有効にするための進捗状況については、最近のブログ記事「VS Code をプロセスサンドボックスへ移行する」をご覧ください。この詳細な記事では、技術のタイムラインを提示し、VS Code のサンドボックス化をサポートするために行われた段階的な変更について説明しています。

VS Code のサンドボックスモードを試したい場合は、設定で "window.experimental.useSandbox": true を設定できます。機能的な違いはほとんどないはずですが、問題が見つかった場合はお知らせください。

Windows でのウィンドウコントロールオーバーレイがデフォルトで再有効化されました

ウィンドウコントロールオーバーレイ (WCO) がデフォルトで再有効化されました。以前は 8 月に有効になっていましたが、右から左へ記述するシステム言語を使用しているユーザーにとって間違った側にレンダリングされファイル編集メニュー項目を覆い隠してしまうため、再度無効化されていました。

主な問題は、VS Code がアプリケーションのロケールを Electron に渡していなかったため、Electron が WCO をどこに配置するかを決定するためにシステムロケールを使用していたことでした。しかし、VS Code は Electron の app.getLocale() API に依存してシステム言語を取得し、推奨する言語パックを決定していました。そして、アプリケーションのロケールを Electron に渡すと、app.getLocale() がシステム言語ではなく同じロケールを返すという結果になっていました。

この問題を修正するために、Electron に新しい app.getPreferredSystemLanguages() API を追加しました。これにより、Electron にロケールを渡した後でも、VS Code の言語パック推奨機能に使用するシステム言語を取得しつつ、WCO を右側に保持できるようになりました。

VS Code with the custom title bar along with Paint's title bar. The screenshot is taken on Windows 11 with the system language in Arabic, showing that the WCO is on the right for VS Code, which is in English, while it is on the left for Paint, which is in Arabic.

組み込み拡張機能が vscode-nls の代わりに新しい l10n API を使用するようになりました

先月、新しいローカリゼーション (l10n) API を安定化させました。今月は、Microsoft/vscode リポジトリにあるすべての拡張機能でその API を採用しました。言語サーバーを vscode-nls の代わりに @vscode/l10n を使用するように移行する必要があるほか、チームが所有する他のいくつかの拡張機能 (JS Debug、Python、Jupyter Notebooks など) もありますが、すべての拡張機能に対して単一のローカリゼーションストーリーへと正しい方向に進んでいます。

注目すべき修正点

  • 166171 拡張機能のヒントモーダルにあるデフォルトのスクロールバーを削除します。
  • microsoft/vscode-jupyter#11745 変数ビューアーが低速化と不安定性の原因となる

ありがとうございます

最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-css-languageserviceへの貢献者

vscode-eslintへの貢献者

vscode-js-debugへの貢献者

vscode-json-languageserviceへの貢献

vscode-pull-request-githubへの貢献者

debug-adapter-protocolへの貢献者

devcontainers/cliへの貢献