🚀 VS Codeでで入手しましょう!

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

アップデート 1.74.1: このアップデートでは、これらのissueに対処しています。

アップデート 1.74.2: このアップデートでは、これらのissueに対処しています。

アップデート 1.74.3: このアップデートでは、このセキュリティissueに対処しています。

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


Visual Studio Code 2022年11月リリースへようこそ。このバージョンには多くのアップデートが含まれており、皆様に気に入っていただけることを願っています。主なハイライトを以下に示します。

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

Insiders: 最新機能をいち早く試したいですか? nightly Insiders ビルドをダウンロードして、最新のアップデートをすぐにお試しください。

アクセシビリティ

ノートブック実行のオーディオキュー

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

差分レビューモードのオーディオキュー

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

利用可能なオーディオキューに興味がある場合は、[ヘルプ: オーディオキューの一覧表示] ドロップダウンから聞くことができます。

List Audio Cues dropdown

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

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

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

テーマ: ライトピンク (vscode.dev でプレビュー)

ワークベンチ

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

多くの投票があったissue #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.

マージエディター

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

  • Undo/Redoは、コンフリクトの処理済み状態を追跡するようになりました。
  • 入力ビューの [無視] アクションを使用して、結果ビューの [処理済みとしてマーク] アクションの代わりにベースバージョンを受け入れることができます。
  • 両側で同じ変更は自動的に解決されるようになりました。
  • 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操作 (ステージング、アンステージング、変更の破棄、コミット) で git status が完了する前に楽観的に更新されるように変更を加え、ソース管理ビューがより軽快になりました。

新しい機能はデフォルトで有効になっていますが、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 Desktop内のRemote - Tunnels 拡張機能を使用して、どのデバイスからでもマシンに接続できます。

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

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

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

デバッグ

JavaScriptデバッグ

console.profile のサポート

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

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

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

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

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

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

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

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

例:

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

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

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

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

2つの異なるタイプのデバッグセッションを実行している場合に例外ブレークポイントを管理することは、以前はうまく機能しませんでした。現在、デバッグセッションが [呼び出しスタック] ビューでフォーカスされている場合、そのセッションのデバッグタイプに適切なブレークポイントのセットが表示されます。

Exception breakpoints correctly shown per call stack frame

コメント

comments.visible

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

コメントビューバッジ

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

Comments view badge

タスク

問題 matcher 'search' ファイルロケーションメソッド

以前は、問題 matcher は、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) を使用するか、Cmd/Alt + クリックreturn キーワードをクリックするだけです。

ノートブック

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

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

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

Kernel picker with most recently used kernels

フィードバックをお待ちしております。ご意見やご要望は、VS Codeリポジトリでissueを作成してください。

VS Code for the Web

ソース管理

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 Desktopでのエクスペリエンスに合わせています。

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 Desktopのリモートリポジトリで作業を続行

One step commands to continue working in another development environment

また、クラウドに変更を保存することに関連していることを明確にするために、[編集セッション] を [クラウドの変更] に名前変更しました。

拡張機能への貢献

Jupyter

ノートブックセルデバッグの「マイコードのみ」

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

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

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

この機能は、デバッグ、セル編集、セッション再起動、編集を適用してセルを再度デバッグするワークフローで特に役立ちます。

リモート開発拡張機能

Remote Development extensions を使用すると、コンテナ、リモートマシン、または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 拡張機能の進捗状況がさらに進んでいます。この拡張機能を使用すると、プルリクエストとissueの作業、作成、管理を行うことができます。ハイライトは次のとおりです。

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

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

プレビュー機能

プロファイル

過去数か月にわたって、コミュニティから最も要望の多かったものの1つであるVS Codeの プロファイル のサポートに取り組んできました。この機能は、workbench.experimental.settingsProfiles.enabled 設定を介してプレビューで利用できます。ぜひお試しいただき、vscodeリポジトリでissueを作成するか、issue #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リポジトリでissueを作成してお知らせください。extensions.verifySignaturefalse に設定することで、署名検証をオプトアウトできます。今後数か月以内にVS Code Stableで署名検証を有効にする作業を進めています。

リポジトリ署名とは別に、拡張機能パブリッシャー署名の作業も開始しています。

WebでのPython実行

Experimental - Python for the Web 拡張機能にデバッグサポートを追加しました。デバッガーは次の機能をサポートしています。

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

以下のスクリーンショットは、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は、次の拡張機能のコントリビューションポイントのアクティベーションイベントを自動的に入力するようになりました。

コントリビューションポイント 推論されたアクティベーションイベント
commands onCommand
authentication onAuthenticationRequest
languages onLanguage
customEditors onCustomEditor
views onView

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

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

ログ出力チャンネル

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

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

すべてのwebviewの一貫したオリジン

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

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

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

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

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

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

新しいメニューロケーション comments/commentThread/additionalActions を使用すると、拡張機能は常に表示されるボタンをコメントスレッドに追加できます。

Visible button in a comment

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

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

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

いくつかの明確化と新しいプロパティが Debug Adapter Protocol に追加されました。

  • DataBreakpointInfo リクエストに、新しいオプションの frameId プロパティが追加されました。クライアントはこのフラグを使用して、どのスタックフレームに name 変数が含まれているかを指定できます。
  • readMemory リクエストに対して、ファイル終端の動作が指定されるようになりました。

エンジニアリング

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

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

GitHubおよびMicrosoft Authentication拡張機能のバンドルサイズ改善

これら2つの拡張機能のバンドルサイズは、提供する機能や、多くのケース(vscode.devなど)での起動時の重要性を考えると、私たちが望んでいたよりも大きすぎました。このマイルストーンでは、これらの拡張機能のサイズを縮小することに焦点を当て、その結果を以下に示します。

  • GitHub Authentication: 93KB -> 64.9KB
  • Microsoft Authentication: 97KB -> 57.7KB

これは以下の方法で実現されました。

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

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

Electronサンドボックスへの道のり

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

VS Codeサンドボックスモードを試したい場合は、設定で "window.experimental.useSandbox": true を設定できます。機能的な違いに気付かないはずですが、問題が見つかった場合は、私たちに報告してください。

WindowsでWindow Controls Overlayがデフォルトで再度有効になりました

Window Controls Overlay(WCO)がデフォルトで再度有効になりました。以前は8月に有効になっていましたが、右から左に読むシステム言語を使用しているユーザーに対して 間違った側にレンダリング され、FileメニューとEditメニュー項目を覆い隠していたため、再度無効になりました。

主な問題は、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のコントリビューターの皆様に心から感謝申し上げます

Issue tracking

Issue trackingへの貢献

プルリクエスト

vscode への貢献

vscode-css-languageservice への貢献

vscode-eslint への貢献

vscode-js-debug への貢献

vscode-json-languageservice への貢献

vscode-pull-request-github への貢献

debug-adapter-protocol への貢献

devcontainers/cli への貢献