に参加して、VS Code の AI 支援開発について学びましょう。

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

アップデート 1.74.1: このアップデートでは、これらの問題が解決されています。

アップデート 1.74.2: このアップデートでは、これらの問題が解決されています。

アップデート 1.74.3: このアップデートでは、このセキュリティ問題が解決されています。

ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | 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 でプレビュー)

Workbench

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

多くの賛成票を得た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.

マージエディター

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

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

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

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

Editor

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でプレビュー機能として利用可能になりました。リモートトンネルを使用すると、SSHを必要とせずに、どのデバイスからでも、どこからでもVS Codeでマシンに安全にアクセスできます。リモートトンネルアクセスを有効にするには、次のいずれかを行います

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

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

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

テーマ: 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プロパティを追加

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

タスク

問題マッチャーの「検索」ファイル場所メソッド

以前、問題マッチャーは、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 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設定は対話型ウィンドウでのデバッグでのみ尊重されていましたが、現在はノートブックエディタでも利用できるようになりました。

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

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

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

リモート開発拡張機能

リモート開発拡張機能を使用すると、コンテナー、リモートマシン、またはLinux 用 Windows サブシステム (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 #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 実行

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 は、以下の拡張機能の貢献ポイントについて、アクティベーションイベントを自動的に入力するようになりました。

貢献ポイント 推論されたアクティベーションイベント
コマンド onCommand
authentication onAuthenticationRequest
言語 onLanguage
customEditors onCustomEditor
views onView

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

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

ログ出力チャンネル

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

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

すべてのウェブビューで一貫したオリジン

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

これにより、ウェブビューコンテンツがより多くのケースでキャッシュされるため、パフォーマンスが向上します。詳細と拡張機能の作者としての注意点については、以前のリリースノートを参照してください。

拡張機能の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への名称変更

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

Debug Adapter Protocol

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

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

エンジニアリング

プロパティとメソッドの名前の難読化

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

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

GitHub および Microsoft 認証拡張機能のバンドルサイズは、提供する機能と多くのケース(vscode.dev など)での起動時の重要性を考えると、私たちが望むよりも大きくなっていました。このマイルストーンでは、これらの拡張機能のサイズ削減に注力し、以下の結果が得られました。

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

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

  • Node.jsおよびWebで簡単に利用できる機能を提供するnodeモジュールへの依存(およびバンドル)をやめました(例: Crypto.randomUUID()を優先してuuidを削除)。
  • Node.jsとWebの両方でnode-fetchを使用するのではなく、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月に有効化されていましたが、右から左へのシステム言語を使用しているユーザーで間違った側にレンダリングされファイル編集メニュー項目を覆い隠してしまうため、再度無効化されていました。

主な問題は、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 Notebookなど)も移行する必要がありますが、すべての拡張機能で単一のローカライゼーションのストーリーに向けて正しい方向に進んでいます。

注目すべき修正点

  • 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への貢献

© . This site is unofficial and not affiliated with Microsoft.