2024年9月 (バージョン 1.94)
アップデート 1.94.1: このアップデートでは、このセキュリティ問題に対処しています。
アップデート 1.94.2: このアップデートでは、これらの問題に対処しています。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel シリコン | Linux: deb rpm tarball Arm snap
Visual Studio Code 2024年9月リリースへようこそ。このバージョンには多くのアップデートが含まれており、皆様に気に入っていただけることを願っています。主なハイライトは以下のとおりです。
- エクスプローラーで検索 - 改善された検索コントロールで、エクスプローラービュー内のファイルをすばやく検索できます。
- ソース管理グラフ - ソース管理グラフのフィルタリングオプションとインタラクティブ性が向上しました。
- Pythonテストカバレッジ - カバレッジ付きでPythonテストを実行し、エディターで豊富な結果を得られます。
- ESM - ESMへの移行により、VS Codeの起動が高速化されました。
- アカウント設定 - 拡張機能に使用するアカウントを指定します。
- ネイティブREPLでのCopilot - ネイティブREPLでコード補完とインラインチャットを利用できます。
- チャットコンテキストの改善 - ファイルのドラッグ&ドロップまたはIntelliSenseを使用して、より関連性の高いチャットコンテキストを実現します。
- テスト環境のセットアップ - ワークスペースのテストフレームワークのセットアップに関するヘルプが得られます。
これらのリリースノートをオンラインで読むには、code.visualstudio.comのアップデートにアクセスしてください。Insiders: 最新機能をいち早く試してみたいですか?Insidersビルドをダウンロードして、最新のアップデートをいち早くお試しください。
GitHub Copilot
チャットで言語モデルを切り替える
以前にお知らせしたように、OpenAI o1モデルの早期アクセスにサインアップできます。アクセス権を取得すると、VS CodeのCopilotチャットにCopilotチャットモデルピッカーコントロールが表示され、チャットの会話に使用するモデルバージョンを選択できます。
インラインチャットのGPT-4o
CopilotインラインチャットをGPT-4oにアップグレードし、エディターでチャットを使用する際に、より高速、高精度、高品質のコードと説明を提供できるようにしました。
チャットでのパブリックコードマッチング
GitHub CopilotがGitHub.comで公開されているコードと一致する可能性のあるコードを返すことを許可できます。この機能が組織サブスクリプションまたは個人サブスクリプションで有効になっている場合、Copilotコード補完はすでに検出された一致に関する詳細を提供していました。Copilotチャットでもパブリックコードの一致を表示するようになりました。
組織またはサブスクリプションでこれが有効になっている場合、応答の最後に一致を表示リンクを含むメッセージが表示される場合があります。リンクを選択すると、一致するコード参照の詳細を示すエディターが開きます。
GitHubブログのGitHub Copilotでのコード参照の詳細をご覧ください。
チャットでのファイル提案
チャット入力フィールドで、#<ファイル名>
と入力すると、ファイル名の候補が表示され、コンテキストとしてプロンプトにすばやく添付できます。これは、チャットビュー、クイックチャット、インラインチャット、ノートブックチャットなど、ファイル添付をサポートするチャットロケーションで機能します。
チャット応答のファイルリンクの改善
Copilotの応答で言及されているワークスペースファイルパスのレンダリングを改善しました。これらのパスは、@workspace
の質問をする際によく使用されます。
最初に気づくのは、ワークスペースファイルへのパスにファイルアイコンが含まれるようになったことです。これにより、チャット応答で簡単に区別できます。ファイルアイコンは、現在のファイルアイコンテーマに基づいています。
これらのパスはインタラクティブリンクであるため、選択するだけで対応するファイルを開くことができます。ドラッグ&ドロップを使用してファイルを新しいエディターグループで開いたり、Shiftキーを押しながらドロップしてテキストエディターに挿入したりすることもできます。
デフォルトでは、これらのリンクにはファイル名のみが表示されますが、カーソルを合わせると完全なファイルパスが表示されます。
これらのパスの1つを右クリックして、リソースへの相対パスのコピーや、オペレーティングシステムのファイルエクスプローラーでのファイルの表示など、追加のコマンドを含むコンテキストメニューを開くこともできます。
今後のイテレーションでワークスペースパスのレンダリングをさらに改善し、応答のシンボル名についても同様の改善を行う予定です。
ファイルをドラッグ&ドロップしてチャットコンテキストを追加
ワークベンチからチャットにファイルまたはエディタータブを直接ドラッグすることで、チャットプロンプトのコンテキストとして追加のファイルを簡単に追加できるようになりました。インラインチャットの場合、Shiftキーを押しながらファイルをドロップすると、エディターで開く代わりにコンテキストとして追加されます。
履歴に含まれるファイル添付
チャットリクエストに関連するコンテキストとして、ファイルまたはエディターの選択範囲を添付する方法は複数あります。以前は、このコンテキストは現在のリクエストに対してのみ追加され、フォローオンリクエストの履歴には含まれていませんでした。現在、これらの添付ファイルは履歴に保持されるため、再添付する必要なく参照し続けることができます。
PythonネイティブREPLでのインラインチャットと補完
Python拡張機能で使用されるネイティブREPLエディターで、入力ボックスで直接Copilotインラインチャットとコード補完がサポートされるようになりました。
ノートブックで生成されたコードを受け入れて実行する
Copilotインラインチャットを使用してノートブックでコードを生成する場合、インラインチャットから生成されたコードを受け入れて直接実行できるようになりました。
ノートブックチャットで変数を添付する
ノートブックでCopilotを使用する場合、Jupyterカーネルからリクエストに変数を添付できるようになりました。変数を追加すると、チャットリクエストのコンテキストをより正確に制御できるため、Copilotからより関連性の高い応答を得ることができます。
#
の後に変数名を入力するか、📎コントロール(⌘/ (Windows、Linux Ctrl+/))をインラインチャットで使用してコンテキスト変数を追加します。
リフレッシュされたチャットユーザーエクスペリエンス
チャットビューをリフレッシュし、クリーンで新しいウェルカムエクスペリエンスを提供し、チャット入力エリアのレイアウトを更新しました。@
ボタンを使用して、組み込みのものとインストールした拡張機能からのチャット参加者の両方を含む、利用可能なチャット参加者とスラッシュコマンドのリストを簡単に見つけることができます。チャット入力ボックスに/
または@
を入力して、参加者とスラッシュコマンドを見つけることもできます。
セマンティック検索結果(プレビュー)
設定: github.copilot.chat.search.semanticTextResults
検索ビューでは、ファイル全体で完全一致検索を実行できます。Copilotを使用して、セマンティックに関連性の高い検索結果を提供する機能を検索ビューに追加しました。
この機能はまだプレビュー段階であり、デフォルトでは設定は有効になっていません。ぜひ試してみて、ご意見をお聞かせください!
テスト失敗の修正(プレビュー)
設定: github.copilot.chat.fixTestFailure.enabled
失敗したユニットテストの診断を支援する特殊なロジックを追加しました。このロジックは、/fix
スラッシュコマンドによって一部のシナリオでトリガーされ、/fixTestFailure
スラッシュコマンドで直接呼び出すこともできます。コマンドはデフォルトでチャットで有効になっていますが、github.copilot.chat.fixTestFailure.enabled設定で無効にできます。
自動テストセットアップ(実験的)
設定: github.copilot.chat.experimental.setupTests.enabled
ワークスペースのテストセットアップを構成するのに役立つ実験的な/setupTests
スラッシュコマンドを追加しました。このコマンドは、テストフレームワークを推奨し、セットアップと構成の手順を提供し、VS Codeでのテスト統合を提供するVS Code拡張機能を提案できます。これにより、コードのテストを開始するための時間と労力を節約できます。
/tests
コマンドを使用してコードのテストを生成する場合、ワークスペースでそのような統合がまだセットアップされていないように見える場合は、/setupTests
とテスト拡張機能を推奨できます。
チャットからデバッグを開始(実験的)
設定: github.copilot.chat.experimental.startDebugging.enabled
このマイルストーンでは、実験的な/startDebugging
スラッシュコマンドを改善しました。このコマンドを使用すると、起動構成を簡単に見つけたり作成したりして、アプリケーションのデバッグをシームレスに開始できます。Copilotチャットで@vscode
を使用すると、/startDebugging
がデフォルトで使用できるようになりました。
コマンドセンターでのチャット(実験的)
設定: chat.commandCenter.enabled
チャットにアクセスするためのコマンドセンターエントリを実験中です。さまざまなチャットエクスペリエンスを開始したり、プロンプトにコンテキストを添付したりするなど、関連するすべてのチャットコマンドにすばやくアクセスできます。チャットコマンドセンターエントリを表示するには、コマンドセンター自体を有効にする必要があることに注意してください。
改善された時間的コンテキスト(実験的)
設定: github.copilot.chat.experimental.temporalContext.enabled
時間的コンテキストを使用すると、インラインチャットに最近開いたファイルまたは編集したファイルをチャットコンテキストの一部として考慮するように指示できます。この機能を改善し、皆様に試していただくことをお勧めします。
カスタム指示(実験的)
設定: github.copilot.chat.experimental.codeGeneration.useInstructionFiles
設定: github.copilot.chat.experimental.testGeneration.instructions
前回のマイルストーンで、カスタムコード生成指示を導入しました。ワークスペースの.github/copilot-instructions.md
ファイルでコード生成の共有指示を定義するようにこの機能をさらに拡張しました。これらの共通指示は、個人のコード生成指示を補完します。github.copilot.chat.experimental.codeGeneration.useInstructionFiles設定でコード生成指示ファイルを有効にします。
さらに、設定でテスト生成の指示を定義したり、ファイルからインポートしたりできるようになりました。たとえば、常に特定のユニットテストフレームワークをテストに使用する場合などです。github.copilot.chat.experimental.testGeneration.instructions設定でテスト生成指示を構成します。
アクセシビリティ
はじめに
ヘルプメニューに、アクセシビリティ機能の概要ウォークスルーが追加され、アクセシビリティオプションをより簡単に探索して利用できるようになりました。このウォークスルーでは、アクセシビリティヘルプダイアログ、アクセシビリティシグナル、キーボードショートカットなどの機能を紹介します。
コメントアクセシビリティの改善
コメントスレッドコントロールのアクセシブルビューを導入しました。このビューには関連するエディターコンテキストが含まれており、エディターとアクセシブルビューを切り替える必要なく、集中力を維持できます。同様に、コメントパネルのアクセシブルビューにもエディターコンテキストが提供されるようになりました。
キーボードを使用してエディターからコメントコントロールにすばやく移動できるコメント: 現在行のコメントにフォーカスコマンドも導入しました。エディターでコメント付き範囲を次へ/前へ移動する新しいアクションもあります。コメント: 次のコメント付き範囲に移動とコメント: 前のコメント付き範囲に移動。
ワークベンチ
拡張機能のアカウント設定を変更する
今回のイテレーションでは、拡張機能の優先アカウントを変更するエクスペリエンスを改善する方法を検討しました。たとえば、複数のGitHubアカウントがあり、誤って間違ったアカウントでGitHub Copilotにサインインし、別のアカウントを使用する必要がある場合などです。
事後的に、複数の方法でその設定を変更できるようになりました。
-
アクティビティバーのアカウントメニュー > <アカウント名> > 信頼された拡張機能の管理 > 拡張機能の歯車アイコンを選択
-
拡張機能ビュー > 認証を使用する拡張機能のコンテキストメニュー(または歯車アイコン) > アカウント設定を選択
-
拡張機能の詳細ビュー > 歯車アイコン > アカウント設定を選択
これらのオプションのいずれかを選択すると、拡張機能が使用するアカウントを変更できるクイックピッカーが表示されます。
拡張機能のアカウント設定を変更すると、イベントが拡張機能に送信され、適切に処理するのは拡張機能次第です。期待どおりの動作が見られない場合は、その拡張機能に関する問題を報告して、アカウント設定エクスペリエンスを処理できるようにしてください。
このフローに関するフィードバックがあればお知らせください。
プロファイルに関連付けられたフォルダーとワークスペースを表示する
今回のマイルストーンでは、プロファイルエディターにフォルダーとワークスペースセクションを導入しました。このセクションには、特定プロファイルに関連付けられているすべてのフォルダーとワークスペースが中央の場所から一覧表示されます。このセクションから、フォルダーを追加または変更したり、新しいウィンドウでフォルダーまたはワークスペースを開いたりできます。
すべてのプロファイルで拡張機能を更新する
今回のマイルストーンでは、すべてのプロファイルで拡張機能を更新する機能が導入されました。これは、複数のプロファイルがあり、拡張機能のバージョンを同期させたい場合に便利です。以前は、各プロファイルに切り替えて、そのプロファイルの拡張機能を更新する必要がありました。
拡張機能ビューの警告
拡張機能ビューに、無効な拡張機能またはバージョンの非互換性により無効になっている拡張機能がある場合に、警告バッジと関連情報が表示されるようになりました。
エクスプローラーで検索
エクスプローラービューの検索機能を改善し、大規模プロジェクトでファイルを検索しやすくしました。⌥⌘F (Windows、Linux Ctrl+Alt+F)キーボードショートカットを使用して、ファイルエクスプローラーで検索コントロールを開くことができます。検索中に、ファジーマッチングと連続マッチングを切り替えて、より柔軟な結果を得ることができます。
検索中は一部のコンテキストメニューアクションが一時的に無効になることに注意してください。今後の改善にご期待ください!
リリースノート
リリースノートで設定を参照するための構文を簡略化しました(setting.name)。これにより、リリースノートエディターに表示される際におなじみの設定ギアレンダリングも表示されます。
エディター
インレイヒントの改善
editor.inlayHints.maximumLength設定を追加しました。これは、インレイヒントが切り捨てられる文字数を制御します。
インレイヒントの更新戦略も見直し、入力中にインレイヒントがより早く更新されるようにしましたが、カーソルの水平方向の動きは発生させないようにしました。
実験的な編集コンテキスト
今回のマイルストーンでは、新しい実験的な設定editor.experimentalEditContextEnabledを導入しました。この設定により、EditContext APIを使用してVS Codeでの編集エクスペリエンスを強化できます。EditContext APIを採用したことで、特定のIME構成バグを修正できました。一般的に、長期的には編集エクスペリエンスが向上し、最終的にはデフォルトで有効になると考えています。
この設定を有効にした後、VS Codeウィンドウをリロードして、この機能を活用してください。
ソース管理
ソース管理グラフビューの改善
前回のマイルストーンで、新しいソース管理グラフビューを追加しました。今回のマイルストーンでは、新しく追加されたビューで利用可能な機能を拡張し、ビューのレイアウトを洗練することに取り組んできました。
リポジトリピッカー
複数のリポジトリを含むフォルダー/ワークスペースを開くと、ソース管理グラフビューのタイトルにリポジトリピッカーが表示されます。デフォルトでは、ソース管理グラフビューにはステータスバーの情報に合わせてアクティブなリポジトリが表示されます。リポジトリピッカーを使用して、ソース管理グラフビューを特定のリポジトリにロックできます。
履歴項目参照ピッカー
今回のマイルストーンでは、新しい履歴項目参照ピッカーをソース管理グラフビューのタイトルに追加しました。この参照ピッカーを使用して、グラフに表示される履歴項目を別のブランチにフィルタリングしたり、複数のブランチを表示したりできます。
デフォルトでは、履歴項目参照ピッカーはAuto
に設定されており、現在の履歴項目参照、そのリモート、およびオプションのベースのグラフをレンダリングします。
履歴項目アクション
今回のマイルストーンでは、ソース管理履歴項目のコンテキストメニューで使用できるアクションのリストを拡張しました。履歴項目から新しいブランチ/タグを作成したり、履歴項目をチェリーピックしたり、項目を(デタッチド)チェックアウトしたりするアクションを追加しました。
ソース管理グラフ設定
今回のマイルストーンでは、グラフをカスタマイズできるように、新しい設定セットを追加しました。
- scm.graph.badges - ソース管理グラフビューに表示されるバッジを制御します
- scm.graph.pageOnScroll - ソース管理グラフビューでリストの最後にスクロールしたときに次のページをロードするかどうかを制御します
- scm.graph.pageSize - ソース管理グラフビューに表示するデフォルトの項目数と、より多くの項目をロードする際の項目数
ノートブック
セル間のマルチカーソルサポート(プレビュー)
ノートブックエディターで、notebook.multiCursor.enabled設定を使用してセル間のマルチカーソル編集がサポートされるようになりました。現在、これはCtrl+Dショートカットでのみトリガーでき、コアエディターアクションとエディターコマンドの限定されたサブセットをサポートしています。
差分エディターにドキュメントメタデータの変更が表示される
ノートブック差分エディターに、カーネル情報やセル言語など、ドキュメントメタデータに加えられた変更も表示されるようになりました。
差分ビューで変更されていないリージョンを折りたたむ
ノートブック差分ビューで、diffEditor.hideUnchangedRegions.enabled設定が尊重されるようになりました。有効にすると、変更されていないコードブロックはデフォルトで折りたたまれ、大きなノートブックでの変更の確認が容易になります。
Webワーカーでのノートブックシリアライズ(実験的)
このリリースでは、Webワーカーでのノートブックシリアライズを可能にする実験的な機能が導入されました。これは、大きなノートブックを操作する際に、Extension Hostプロセスのメインスレッドのブロック時間を短縮するのに役立ちます。デフォルトでは、この機能は無効になっていますが、ipynb.experimental.serializationをtrue
に設定すると有効にできます。
デバッグ
データ色付けのサポート
VS Codeは、デバッグアダプタープロトコルからの新しいテキストスタイリング機能をサポートしています。これにより、変数ビュー、ウォッチビュー、ホバー、およびデバッグコンソールのデータをANSIエスケープシーケンスで色付けできます。
JavaScriptデバッガー
HTML要素の表示の改善
JavaScriptデバッガーでのHTML要素の表示方法を改善しました。以前は、HTML要素はナビゲートが難しい単純なオブジェクトとしてレンダリングされていました。現在では、DOM構造をより忠実に反映し、新しい色付け機能を活用して基本的な構文ハイライトを提供しています。
起動構成でのNodeコマンドのオートコンプリート
node_modules
にインストールされているコマンドラインアプリケーション用の新しいオートコンプリートヘルパーがlaunch.json
ファイルで使用できるようになりました。これにより、vitest
やnest
などのツールのデバッグを簡単にセットアップできます。
よりクリーンなロード済みソースビュー
Node.js組み込みモジュール、評価されたスクリプト、およびWebAssemblyモジュールのソースパスの構造化方法を変更し、ロード済みソースビューをノイズが少なく、参照しやすくしました。
言語
TypeScript 5.6
JavaScriptおよびTypeScriptのサポートでTypeScript 5.6を使用するようになりました。このメジャーアップデートには、多くの言語とツール改善、および重要なバグ修正とパフォーマンス最適化が含まれています。
TypeScript 5.6リリースの詳細については、TypeScriptブログをご覧ください。以下のセクションでは、いくつかのツールのハイライトも紹介します。
一般的な「常に真」となるプログラミングミスの検出
JavaScriptまたはTypeScriptで正規表現を使用しているとしましょう。次のようなコードを記述します。
const str = '...'
if (/\d+(\.\d+)?/) {
...
} else {
...
}
おっと!正規表現で.test()
を呼び出すのを忘れているようです。つまり、if
条件は常にtrueと評価されます。これは私たちが望むものではありません。
この問題は指摘されれば明らかですが、このようなミスは驚くほど簡単に発生し、VS Codeで実際の問題を引き起こしたことさえあります!ありがたいことに、TypeScriptはプログラムで最も一般的な「常に真」となるエラーの一部を報告するようになりました。これには、決して値にならない値に対してif
条件をテストしたり、片側が到達不能な条件式(/abc/ ?? /xyz/
など)が含まれます。
TypeScriptリリースノートで、この機能の仕組みに関する例と詳細を確認してください。
リージョン優先診断
非常に長いJavaScriptまたはTypeScriptファイルで作業していますか?リージョン優先診断のおかげで、型エラーの診断が少し早く表示され始めるはずです。これは、ファイル全体の診断がまだ計算中であっても、現在表示されているコードの診断を取得して最初に表示しようとすることを意味します。
この最適化は、数千行の複雑なファイルに最も関連性があります。小さなファイルでは、変更に気づかない場合があります。
JavaScriptおよびTypeScriptのコミット文字の改善
コミット文字は、入力時に補完を自動的に受け入れることで、コーディングを高速化できます。たとえば、JavaScriptとTypeScriptでは、.
はコミット文字と見なされることがよくあります。つまり、myVariable.property.
と入力するには、最初に.
でmyVariable
の補完を受け入れ、2番目の.
でproperty
の補完を受け入れて、myv
、.
、p
、.
と入力するだけで済みます。
これらのコミット文字はTypeScriptによって計算されるようになり、プログラムの構造をより適切に考慮できるようになりました。また、時間の経過とともにサポートを改善し続けることができます。
コミット文字はデフォルトで有効になっていますが、editor.acceptSuggestionOnCommitCharacter を false
に設定することで無効にできます。
Auto-Imports の除外パターン
新しい autoImportSpecifierExcludeRegexes
設定を使用すると、正規表現を使用して特定のパッケージからの自動インポートを除外できます。たとえば、lodash のようなモジュールのサブディレクトリからの自動インポートを除外するには、次のように設定します。
{
"typescript.preferences.autoImportSpecifierExcludeRegexes": ["^lodash/.*$"]
}
これは、JavaScript の場合は javascript.preferences.autoImportSpecifierExcludeRegexes、TypeScript の場合は typescript.preferences.autoImportSpecifierExcludeRegexes 設定を使用して構成できます。詳細については、TypeScript 5.6 リリースノートを参照してください。
リモート開発
Remote Development 拡張機能を使用すると、Dev Container、SSH または Remote Tunnels 経由のリモートマシン、または Windows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。
主な機能は次のとおりです。
- SSH/トンネル経由で Kubernetes コンテナにアタッチ
- GPU の可用性を手動で指定
これらの機能の詳細については、Remote Development リリースノートを参照してください。
拡張機能への貢献
Python
カバレッジ付きでテストを実行
VS Code でカバレッジ付きの Python テストを実行できるようになりました! カバレッジ付きでテストを実行するには、テストエクスプローラーのカバレッジ実行アイコンを選択するか、通常テスト実行をトリガーする任意のメニューから「カバレッジ付きで実行」を選択します。Python 拡張機能は、pytest を使用している場合は pytest-cov
プラグインを使用し、unittest の場合は coverage.py
を使用してカバレッジを実行します。
カバレッジ実行が完了すると、エディターで行レベルのカバレッジが強調表示されます。これらは、最下部の実行結果パネルで閉じたり、再度開いたりできます。そこには、最新のテスト実行の下に「テストカバレッジを閉じる」または「テストカバレッジを表示」と表示されます。さらに、テストエクスプローラーの「テスト」タブの下に「テストカバレッジ」タブがビーカーアイコン付きで表示され、コマンドパレットの Testing: Focus on Test Coverage View (⇧⌘P (Windows、Linux Ctrl+Shift+P)) で移動することもできます。このパネルでは、ワークスペース内の各ファイルとフォルダーの行およびブランチカバレッジメトリクスを表示できます。
カバレッジ付きの Python テストの実行に関する詳細については、Python ドキュメントを参照してください。テストカバレッジに関する一般的な情報については、VS Code のテストカバレッジドキュメントを参照してください。
Python のデフォルト問題マッチャー
Python 拡張機能にデフォルトの問題マッチャーが含まれるようになり、Python コードの問題追跡が簡素化され、よりコンテキストに沿ったフィードバックが提供されるようになりました。統合するには、task.json
のタスクに "problemMatcher": "$python"
を追加します。問題マッチャーは、タスクの出力をスキャンしてエラーと警告を探し、[問題] パネルに表示することで、開発ワークフローを強化します。
以下は、Python のデフォルト問題マッチャーを使用する task.json
ファイルの例です。
{
"version": "2.0.0",
"tasks": [
{
"label": "Run Python",
"type": "shell",
"command": "${command:python.interpreterPath}",
"args": ["${file}"],
"problemMatcher": "$python"
}
]
}
Python ターミナル REPL のシェル統合
Python 拡張機能に、ターミナルで python
と入力したり、Python REPL を起動する他の方法を入力する前に実行される PYTHONSTARTUP
スクリプトのオプトイン/アウト設定が含まれるようになりました。オプトインすると、Mac または Linux の場合、コマンド装飾、コマンドの再実行、最近使用したコマンドの実行など、ターミナルシェル統合の機能を使用できます。これは、python.terminal.shellIntegration.enabled 設定で有効にできます。
Pylance 言語サーバーモード
現在の IntelliSense エクスペリエンス、またはパフォーマンスのために最適化された軽量のエクスペリエンスのいずれかを選択できる新しい設定 python.analysis.languageServerMode が追加されました。
IntelliSense 機能の全範囲を必要とせず、Pylance を可能な限りリソースフレンドリーにしたい場合は、python.analysis.languageServerMode を light
に設定できます。それ以外の場合は、現在 Pylance で使用しているエクスペリエンスを継続するには、default
に設定できます。
この新しい機能は、次の設定のデフォルト値をオーバーライドします。
設定 | light モード |
default モード |
---|---|---|
"python.analysis.exclude" | ["**"] | [] |
"python.analysis.useLibraryCodeForTypes" | false | true |
"python.analysis.enablePytestSupport" | false | true |
"python.analysis.indexing" | false | true |
上記の設定は、デフォルト値をオーバーライドするために個別に変更することもできます。
GitHub プルリクエスト
プルリクエストと issue の操作、作成、管理を可能にする GitHub Pull Requests 拡張機能でさらに進捗がありました。拡張機能の 0.98.0 リリースの変更ログを確認して、主な機能について学んでください。
拡張機能の作成
デスクトップアプリのカスタムアロケータを削除
このバージョンでは、バージョン 1.78 でデスクトップアプリケーション拡張機能ホストに追加されたカスタムアロケータを削除しました。このカスタムアロケータは、Electron ランタイムに対してビルドされた V8 sandbox と互換性のない Node.js ネイティブアドオンをサポートするためのブリッジとして機能します。詳細については、こちらの追跡 issue を参照してください。
上位 5000 件の拡張機能がこの変更の影響を受けないことを確認しました。拡張機能または拡張機能の依存関係がこの変更の影響を受ける場合は、次の修復の提案を試すことができます。
- 拡張機能が n-api を使用している場合、外部配列バッファーを使用するとステータス
napi_no_external_buffers_allowed
が返されます。その場合は、API のコピーバージョン napi_create_buffer_copy を使用するように切り替えることができます。 - 拡張機能が node-addon-api を使用している場合は、代替 API とコンパイル時の設定について、こちらのドキュメントを参照してください。
- コピーによるパフォーマンスコストを回避したい場合は、V8 アロケータを使用して、バッファーバッキングストアが V8 sandbox と互換性があることを確認できます。
影響を受ける可能性のある拡張機能とネイティブアドオンを特定するためのテレメトリも追加しました。これにより、拡張機能の作成者にプロアクティブに連絡を取り、可能な場合は支援を提供できます。拡張機能が影響を受けており、上記の提案がどれも機能しない場合は、ディスカッションスレッドにコメントしてください。喜んでお手伝いします。
デバッグアダプタープロトコル
Debug Adapter Protocol の変数と出力の表示でテキストを色付けおよびスタイル設定する方法を正式化しました。色付けは ANSI 制御シーケンスを介して機能し、クライアントとデバッグアダプターの両方が、それぞれの初期化リクエストと機能で supportsANSIStyling
をサポートしている必要があります。
プレビュー機能
複数の GitHub アカウント
VS Code で複数の GitHub アカウントに同時にログインできるようになりました。
この機能は、VS Code Insiders ではデフォルトで有効になっています。VS Code の Stable ビルドでは、github.experimental.multipleAccounts 設定でオンにできます。
複数のアカウントが必要になる可能性のあるシナリオをいくつか示します。
- 設定同期には Account1 を使用し、GitHub Pull Request 拡張機能には Account2 を使用する
- GitHub 拡張機能 (プッシュ用) には Account1 を使用し、GitHub Copilot には Account2 を使用する
この機能を使用するには、ログインアクション(設定同期のような組み込み機能または拡張機能のいずれかを使用)をトリガーするだけで、別のアカウントにログインするオプションが表示されます。この機能は、後でアカウントを変更する必要がある場合に備えて、新しいアカウントの優先クイック選択ともうまく連携します。
ほとんどのことは既存の拡張機能で引き続き動作するはずですが、一部の動作は、このマルチアカウントの世界ではまだ完全にうまく機能しない可能性があります。改善の余地があると思われる場合は、それらの拡張機能で issue をオープンしてください。比較的新しい vscode.authentication.getAccounts('github')
API の助けを借りて、拡張機能は複数のアカウントを処理するための多くの機能を持っています。
次のイテレーションでは、この機能をすべてのユーザーに対してデフォルトでオンにする予定です。
MSAL ベースの Microsoft 認証
Microsoft 認証スタックで MSAL (Microsoft Authentication Library) を使用するように移行を進めています。これは大規模な取り組みでしたが、このイテレーションで大きな進捗がありました。この作業はすべての VS Code クライアントに及び、VS Code と VS Code for the Web が含まれます。
-
vscode.dev では、すべての Microsoft 認証リクエストに対してブラウザベースの
MSAL.js
を有効にしました。言い換えれば、vscode.dev は完全に MSAL になりました。 -
デスクトップクライアントである VS Code の場合、この機能は設定 microsoft.useMsal の背後にあります。オペレーティングシステムの認証状態を VS Code が使用できるようにするブローカーフローへの移行を計画しているため、現時点では設定の背後にあります。そのため、中断を可能な限り少なくするために、これを広く有効にする前に、まずその作業を行います。とはいえ、この新しい認証をぜひ試してみたい場合は、試してフィードバックをお寄せください。
VS Code 全体での MSAL への移行の詳細なステータスは、Issue #178740 で確認できます。
TypeScript 5.7
このリリースには、今後の TypeScript 5.7 リリースの初期サポートが含まれています。詳細については、TypeScript 5.7 プランを確認してください。
TypeScript 5.7 のプレビュービルドの使用を開始するには、TypeScript Nightly 拡張機能をインストールしてください。
提案されたAPI
言語モデルのツール
LanguageModelTool
API の反復処理を続けています。API には 2 つの主要な部分があります。
-
拡張機能がツールを登録する機能。ツールとは、言語モデルで使用することを目的とした機能の一部です。たとえば、ファイルの Git 履歴を読み取ることなどです。
-
言語モデルがツールをサポートするメカニズム。たとえば、拡張機能がリクエストを行うときにツールを渡すこと、言語モデルがツールの呼び出しをリクエストすること、拡張機能がツールの呼び出しの結果を返信することなどです。
このマイルストーンでは、ツールが実行前にユーザーの確認を要求する機能を追加しました。これは、何らかの副作用がある可能性のあるツールに役立ちます。
詳細またはフィードバックについては、issue #213274 を参照してください。
注: API はまだ活発に開発中であり、変更される可能性があります。
エンジニアリング
VS Code 向けに ESM が出荷されています
VS Code Stable リリースで ESM の作業を最終的に出荷しています。つまり、VS Code コアのすべてのレイヤー (electron、node.js、ブラウザ、worker) は、モジュールのロードとエクスポートに JavaScript の import
および export
構文を使用します。レガシー AMD ローダーのすべての使用箇所は無効になり、10 月の債務削減ウィークの一環として削除されます。
ESM への移行により、起動パフォーマンスが大幅に向上します。まず、AMD のオーバーヘッドが大幅に削減されますが、メインのワークベンチバンドルサイズも 10% 以上削減されます。
ESM に完全に移行したため、VS Code のエンジニアリングシステムを改善する予定です。ESM により、多くの最新のツールが動作するようになり、これに関する詳細を近い将来共有できることを非常に楽しみにしています。
注: 拡張機能はこの変更の影響を受けず、ESM 経由でロードされません。詳細については、https://github.com/microsoft/vscode/issues/130367 を参照してください。
デフォルトのパッケージマネージャーとして NPM を使用
2024 年 9 月初旬に、microsoft/vscode リポジトリのパッケージ管理のために、yarn から npm への切り替えを完了しました。この決定は、VS Code の特定の要件に基づいており、次の基準を中心に行われました。
- パフォーマンス: 当初はパフォーマンス上の理由から yarn に移行しましたが、npm も現在では要件を満たすことができます。
- セキュリティ: エクスポージャーを制限し、依存するツールの数を減らすことで、サプライチェーンをより安全にします。
注目すべき修正
- 226401 fileWatcher が CPU を 200% 以上消費し続ける
- 10054 [WSL]: [ポート] タブで、
localhostForwarding = false
の場合に WSL のポートがローカルに転送されていると誤って報告される
謝辞
最後になりましたが、VS Code のコントリビューターに心から 感謝申し上げます。
Issue 追跡
Issue 追跡への貢献
プルリクエスト
vscode
への貢献
- @BABA983 (BABA)
- ターミナルタブの選択が正しく機能しない問題を修正 PR #224394
- インポートアクションの折りたたみ登録 PR #227216
- @BlackHole1 (Kevin Cui): ci: リトライロジックの一貫性を確保 PR #226038
- @Cecil0o0 (hj): chore: 拡張機能をビルドする際に、到達不能な無視アイテムを削除。 PR #227906
- @dangerman (Anees Ahee): Image Preview の透明グリッドのスケーリングを修正 PR #226505
- @g-cappai (Gianluca Cappai): Markdown プレビューで HTML アンカーリンクを開く問題を修正 PR #228633
- @gabritto (Gabriela Araujo Britto): [typescript-language-features] 展開可能なホバー PR #228255
- @gjsjohnmurray (John Murray)
- プレビューエディタータブのホバーにアクションを追加 PR #226023
- ワークスペース拡張機能のアクティベーション失敗メッセージのタイプミスを修正 PR #227348
- ステータスバーのデバッグパネルのツールチップのキャピタライゼーションを修正 (fix #228088) PR #228089
- @henricryden: check-requirements-linux.sh で libc.so.6 の追加検索パス PR #227713
- @janssen-tiobe (janssen): 修正: [問題] パネルのテーブルビューでのアグレッシブな URI エンコード PR #224841
- @jeanp413 (Jean Pierre): 初期ターミナルのサイズがリロードで不正になる問題を修正 PR #225554
- @jjaeggli (Jacob Jaeggli): ctrl+alt+space で suggest details にフォーカスすることをドキュメント化 PR #190096
- @juliapz (Julia Pozdeeva): AUX ウィンドウで検索ウィジェットが切り取られないようにする PR #229001
- @marrej (Marcus Revaj): # リファクタリングプレビューでファイルの作成をレンダリング PR #226950
- @nojaf (Florian Verdonck)
- Worker を使用して Notebook をシリアル化 PR #226632
- ErrorNoTelemetry メッセージに id を含める PR #226715
- @PhantomPower82: Getting Started ページの修正 (fix #226991) PR #226994
- @rafamerlin (Rafael Merlin): インレイヒントの長さを設定可能にする PR #221276
- @rehmsen (Ole)
- 順序依存性を避けるために
setup
でテスト変数を初期化。 PR #226596 - ノートブックセルごとに複数のコメントウィジェットをサポート。 PR #226770
- 順序依存性を避けるために
- @remcohaszing (Remco Haszing): .gitignore に test-results.xml を追加 PR #214238
- @repraze (Thomas Dubosc): 修正: browser/hover.css で end を flex-end にスワップ PR #224102
- @segevfiner (Segev Finer): カスタムテキストエディターに ext host の再起動を採用 PR #225985
- @SimonSiefke (Simon Siefke): 修正: デバッグビューのメモリリーク PR #225334
- @sunnylost (sunnylost): extensions: テーブルセルのコンテンツを段落要素でラップ PR #228365
- @tisilent (xiejialong): エディター GPU レンダリングのフォールバックを追加 PR #228414
- @tmm1 (Aman Karmani): macOS で createDirectoryWatcher(~/Library) の tsserver リクエストを無視 PR #227653
vscode-docs
への貢献
- @0dinD (Odin Dahlström): サポートされている Java バージョンを更新 PR #7561
- @alexwkleung (Alex Leung): Jupyter サーバー URL 入力スクリーンショットを更新 PR #7584
- @DiskCrasher (Mike): コード内の "!" の欠落を修正 PR #7595
- @gaganshera (Gaganjot Singh): prompt-crafting.md を更新 PR #7555
- @harish-s-developer (Harish Srinivasan): 新しい依存関係の管理セクションを追加、タイプミスを 1 つ修正 PR #7617
- @harrydowning (Harry Downing): プレリリースタグに関する誤った記述を削除 PR #7593
- @listsarah (Sarah Listzwan): Issue #7536 をクローズ: 「埋め込みプログラミング言語」を更新 PR #7539
- @mistymadonna (Misty Hays): Azure 拡張機能のホームページを更新、新しい入門ページを作成 PR #7520
- @muzimuzhi (Yukai Chou): タイプミス、欠落しているインラインコードマークアップを追加 PR #7589
- @partev: URL リダイレクトを修正 PR #7608
- @Sarke (Peter Stalman): 別の Flatpak/KDE5 ウォレットの回避策 PR #7606
- @seaniyer (Sean): publishing-extension.md を更新 PR #7540
- @vinistock (Vinicius Stock): Ruby リンクを新しいドキュメントを指すように更新 PR #7607
- @wjandrea (William Andrea)
vscode-extension-samples
への貢献
- @liu3hao (Weihao): 欠落しているアクティベーションイベントを追加 PR #1057
vscode-js-debug
への貢献
- @lucacasonato (Luca Casonato): 修正: Deno で NODE_OPTIONS を挿入しない PR #2080
vscode-jupyter
への貢献
- @rchiodo (Rich Chiodo): display_name の変更もカーネル変更イベントを引き起こすようにする PR #15967
vscode-languageserver-node
への貢献
- @StellaHuang95 (Stella):
CodeAction
でllmGenerated
プロパティをサポート PR #1557
vscode-pull-request-github
への貢献
vscode-python-debugger
への貢献
- @rchiodo (Rich Chiodo): debugpy 情報を最新の出荷バージョンに更新 PR #462
vscode-vsce
への貢献
- @mlasson (Marc Lasson): オプションヒントのタイプミスを修正 PR #1046
vscode-wasm
への貢献
- @mlugg (Matthew Lugg): ストリームのバグを修正 PR #196
language-server-protocol
への貢献
- @aschaber1 (Alexander Schaber): chore:
kubernets
からkubernetes
へのタイプミスを修正 PR #2013 - @dawedawe (dawe): CompletionParams のドキュメントのタイプミスを修正 PR #2019
- @didrikmunther (Didrik Munther): pullDiagnostics.md のスペルミスを修正 PR #2022
- @InSyncWithFoo (InSync)
- @SamB (Samuel Bronson): servers.md を更新: vscode-markdown-languageserver を移動 PR #2012
- @sh-cho (Seonghyeon Cho): fluent-bit 言語サーバーの実装を追加 PR #2016
- @StellaHuang95 (Stella):
CodeAction
でllmGenerated
プロパティをサポート PR #2020