2024 年 9 月 (版本 1.94)
更新 1.94.1:此更新解决了此安全问题。
更新 1.94.2:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:Universal Intel silicon | 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 Chat 中拥有一个 Copilot Chat 模型选择器控件,用于选择聊天对话使用的模型版本。
内联聊天中的 GPT-4o
我们将 Copilot 内联聊天升级到 GPT-4o,以便您在编辑器中使用聊天时获得更快、更准确和更高质量的代码和解释。
聊天中的公共代码匹配
您可以允许 GitHub Copilot 返回可能匹配 GitHub.com 上公共可用代码的代码。当您的组织订阅或个人订阅启用此功能时,Copilot 代码补全已经为您提供了检测到的匹配项的详细信息。我们现在也会在 Copilot Chat 中向您显示这些公共代码匹配项。
如果您的组织或订阅启用了此功能,您可能会在响应末尾看到一条消息,其中包含一个查看匹配项链接。如果您选择该链接,将打开一个编辑器,其中显示匹配的代码引用的详细信息及更多详细信息。
在 GitHub 博客上获取关于 GitHub Copilot 中的代码引用的更多信息。
聊天中的文件建议
在聊天输入字段中,您现在可以键入 #<filename>
来获取文件名建议,并快速将它们作为上下文附加到您的提示中。这适用于支持文件附件的聊天位置,例如聊天视图、快速聊天、内联聊天和笔记本聊天。
改进的聊天响应中的文件链接
我们改进了 Copilot 响应中提到的任何工作区文件路径的渲染。当您询问@workspace
问题时,这些路径非常常见。
您首先注意到的是,指向工作区文件的路径现在包含一个文件图标。这使您可以轻松地在聊天响应中区分它们。文件图标基于您当前的文件图标主题。
这些路径是交互式链接,只需选择它们即可打开相应的文件。您甚至可以使用拖放功能将文件在新编辑器组中打开,或者在拖放前按住Shift键将其插入文本编辑器。
默认情况下,这些链接仅显示文件名,但您可以将鼠标悬停在其上查看完整的文件路径。
您还可以右键单击其中一个路径以打开上下文菜单,其中包含其他命令,例如复制资源的相对路径,或在操作系统文件资源管理器中显示文件。
我们计划在接下来的迭代中进一步改进工作区路径的渲染,并对响应中的符号名称进行类似改进。
拖放文件以添加聊天上下文
您现在可以通过将工作台中的文件或编辑器选项卡直接拖到聊天中,轻松地将其他文件作为聊天提示的上下文。对于内联聊天,按住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 Chat 中使用 @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,现在需要使用另一个帐户。
现在可以通过多种方式事后更改该首选项。
-
活动栏中的帐户菜单 > <您的帐户> > 管理受信任的扩展 > 选择扩展的齿轮图标
-
扩展视图 > 使用 auth 的扩展的上下文菜单(或齿轮图标) > 选择帐户首选项
-
扩展详细视图 > 齿轮图标 > 选择帐户首选项
选择其中任何一个选项都会带您到一个快速选择器,您可以在其中更改扩展使用的帐户。
更改扩展的帐户首选项时,这会向扩展发送一个事件,由扩展自行正确处理。如果您没有看到预期的行为,请针对该扩展报告问题,以便处理帐户首选项体验。
此外,如果您对此流程有任何反馈,请告知我们。
查看与配置文件关联的文件夹和工作区
在此里程碑中,我们在配置文件编辑器中引入了一个文件夹和工作区部分。此部分集中列出了与特定配置文件关联的所有文件夹和工作区。从此部分,您可以添加或修改文件夹,或在新窗口中打开文件夹或工作区。
跨所有配置文件更新扩展
在此里程碑中,我们引入了跨所有配置文件更新扩展的功能。如果您有多个配置文件并想保持扩展版本同步,这将非常有用。以前,您必须切换到每个配置文件并更新该配置文件的扩展。
扩展视图中的警告
扩展视图现在在存在任何无效扩展或因版本不兼容而被禁用的扩展时,会显示警告徽章和相关信息。
在资源管理器中查找
我们改进了资源管理器视图中的查找功能,使其更容易在大型项目中搜索文件。您可以使用键盘快捷方式 ⌥⌘F (Windows, Linux Ctrl+Alt+F) 在文件资源管理器中打开查找控件。搜索时,您可以在模糊匹配和连续匹配之间切换,以获得更灵活的结果。
请注意,在搜索期间,某些上下文菜单操作会暂时禁用。请继续关注即将到来的更多改进!
发行说明
我们的发行说明中有一个简化的语法来引用设置 (setting.name),在发行说明编辑器中显示时,它还具有现在熟悉的设置齿轮图标渲染。
编辑器
内嵌提示改进
我们添加了 editor.inlayHints.maximumLength 设置,它控制内嵌提示在多少字符后被截断。
我们还修订了内嵌提示的更新策略,现在在输入时,它们应该会更快更新,但不会导致光标发生任何水平移动。
实验性编辑上下文
在此里程碑中,我们引入了一个新的实验性设置 editor.experimentalEditContextEnabled。此设置启用了 EditContext API 以增强 VS Code 中的编辑体验。采用 EditContext API 使我们能够修复某些 IME 组合错误。总的来说,我们相信它将长期改进编辑体验,最终将默认启用。
启用此设置后,请务必重新加载 VS Code 窗口才能利用它。
源代码管理
源代码管理图视图改进
上一个里程碑,我们添加了新的源代码管理图视图。此里程碑,我们一直在努力扩展新添加的视图中的可用功能,并完善视图的布局。
仓库选择器
当您打开包含多个仓库的文件夹/工作区时,源代码管理图视图标题会显示一个仓库选择器。默认情况下,源代码管理图视图显示活动仓库,与状态栏中的信息匹配。您可以使用仓库选择器将源代码管理图视图锁定到特定仓库。
历史项引用选择器
在此里程碑中,我们在源代码管理图视图标题中添加了一个新的历史项引用选择器。您可以使用此引用选择器将图表中显示的历史项过滤到不同的分支,或查看多个分支。
默认情况下,历史项引用选择器设置为 Auto
,它渲染当前历史项引用、其远程以及可选基础的图表。
历史项操作
在此里程碑中,我们扩展了源代码管理历史项上下文菜单中的可用操作列表。我们添加了从历史项创建新分支/标签、cherry-pick 历史项以及签出(分离)项的操作。
源代码管理图设置
在此里程碑中,我们添加了一组新设置,以便您可以自定义图表
- scm.graph.badges - 控制在源代码管理图视图中显示哪些徽章
- scm.graph.pageOnScroll - 控制当您滚动到列表末尾时,源代码管理图视图是否加载下一页项目
- scm.graph.pageSize - 在源代码管理图视图中显示和加载更多项时,默认的项目数量
笔记本
跨单元格的多光标支持(预览)
通过设置 notebook.multiCursor.enabled,笔记本编辑器现在支持单元格之间的多光标编辑。目前,这只能通过快捷方式 Ctrl+D 触发,并支持核心编辑器操作以及有限的编辑器命令子集。
Diff 编辑器显示文档元数据更改
笔记本 diff 编辑器现在还显示对文档元数据所做的更改,例如内核信息和单元格语言。
在 diff 视图中折叠未更改的区域
笔记本 diff 视图现在遵循设置 diffEditor.hideUnchangedRegions.enabled。启用后,未更改的代码块默认折叠,这使得在大笔记本中查看更改更容易。
Web Worker 中的笔记本序列化(实验性)
此版本引入了一项实验性功能,可在 Web Worker 中启用笔记本序列化。这有助于减少在处理大型笔记本时扩展主机进程中主线程的阻塞时间。默认情况下,此功能处于禁用状态,但可以通过将 ipynb.experimental.serialization 设置为 true
来启用。
调试
支持数据着色
VS Code 支持调试适配器协议中的新文本样式功能。这使“变量”视图、“监视”视图、悬停和调试控制台中的数据可以通过 ANSI 转义序列进行着色。
JavaScript 调试器
改进的 HTML 元素显示
我们改进了 HTML 元素在 JavaScript 调试器中的显示方式。以前,它们被渲染为简单的对象,难以导航。现在,它们更接近于 DOM 结构,并且我们利用新的着色功能提供一些基本的语法高亮。
启动配置中 Node 命令的自动补全
现在,对于安装在 node_modules
中的命令行应用程序,launch.json
文件中提供了一个新的自动补全辅助功能。这使得为 vitest
或 nest
等工具设置调试更加容易。
更整洁的已加载源视图
我们更改了 Node.js 内置模块、评估脚本和 WebAssembly 模块的源路径结构方式,以使已加载源视图更整洁、更容易浏览。
语言
TypeScript 5.6
我们的 JavaScript 和 TypeScript 支持现在使用 TypeScript 5.6。此重大更新包含许多语言和工具改进,以及重要的错误修复和性能优化。
您可以在 TypeScript 博客上阅读有关 TypeScript 5.6 发布的所有信息。我们还在以下部分中包含了一些工具亮点。
检测一些常见的“总是为真”的编程错误
假设您在 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.
,您只需键入 myv
、.
、p
、.
,其中第一个 .
接受 myVariable
的补全,第二个 .
接受 property
的补全。
这些提交字符现在由 TypeScript 计算,这意味着它们可以更好地考虑程序的结构。我们还可以随着时间的推移继续改进对它们的支持。
提交字符默认启用,但可以通过将 editor.acceptSuggestionOnCommitCharacter 设置为 false
来禁用。
自动导入的排除模式
新的 autoImportSpecifierExcludeRegexes
允许您使用正则表达式从特定包中排除自动导入。例如,要排除 lodash 等模块的子目录中的自动导入,您可以设置
{
"typescript.preferences.autoImportSpecifierExcludeRegexes": ["^lodash/.*$"]
}
您可以使用 JavaScript 的 javascript.preferences.autoImportSpecifierExcludeRegexes 和 TypeScript 的 typescript.preferences.autoImportSpecifierExcludeRegexes 来配置此项。有关更多详细信息,请参阅TypeScript 5.6 发行说明
远程开发
远程开发扩展允许您使用 开发容器、通过 SSH 或远程隧道连接的远程机器,或者适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。
亮点包括
- 通过 SSH/隧道连接到 Kubernetes 容器
- 手动指定 GPU 可用性
您可以在远程开发发行说明中了解有关这些功能的更多信息。
对扩展的贡献
Python
运行带覆盖率的测试
您现在可以在 VS Code 中运行带覆盖率的 Python 测试了!要运行带覆盖率的测试,请在测试资源管理器中选择覆盖率运行图标,或从您通常触发测试运行的任何菜单中选择“运行带覆盖率”。如果您使用 pytest,Python 扩展将使用 pytest-cov
插件运行覆盖率;如果是 unittest,则使用 coverage.py
运行。
覆盖率运行完成后,编辑器中会突出显示行以指示行级覆盖率。这些可以在底部的运行结果面板中通过“关闭测试覆盖率”或“查看测试覆盖率”(位于最新测试运行下方)进行关闭和重新打开。此外,测试资源管理器中测试选项卡下方会出现一个测试覆盖率选项卡,同样带有烧杯图标,您也可以在命令面板 (⇧⌘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 中的 Shell 集成
Python 扩展现在包含一个设置,用于选择启用或禁用 PYTHONSTARTUP
脚本,该脚本在您键入 python
或任何其他方式在终端中启动 Python REPL 之前运行。如果您选择启用,则可以使用终端 Shell 集成的功能,例如命令装饰、重新运行命令、运行最近的命令(如果在 Mac 或 Linux 中)。您可以通过设置 python.terminal.shellIntegration.enabled 启用此功能。
Pylance 语言服务器模式
有一个新设置 python.analysis.languageServerMode,使您可以在我们当前的 IntelliSense 体验和针对性能优化的轻量级体验之间进行选择。
如果您不需要全面的 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 拉取请求
GitHub 拉取请求扩展取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和议题。请查看该扩展 0.98.0 版本更新日志以了解亮点。
扩展开发
移除桌面应用中的自定义分配器
在此版本中,我们已将版本 1.78 添加到桌面应用程序扩展主机中的自定义分配器移除。此自定义分配器充当桥梁,支持针对 Electron 运行时构建的与 V8 沙盒不兼容的 Node.js 本机插件。您可以参考此跟踪议题以获取更多上下文。
我们已确保排名前 5000 的扩展不受此更改的影响。如果您的扩展或扩展的依赖项受到此更改的影响,您可以尝试以下补救建议
- 如果您的扩展使用 n-api,则在使用外部数组缓冲区时将返回状态
napi_no_external_buffers_allowed
。在这种情况下,您可以切换使用 API 的复制版本 napi_create_buffer_copy。 - 如果您的扩展使用 node-addon-api,则请参阅此文档以获取替代 API 和编译时设置。
- 如果您想避免复制带来的性能开销,您可以使用 V8 分配器来确保缓冲区后备存储与 V8 沙盒兼容。
我们还添加了遥测功能,用于识别可能受影响的扩展和本机插件,以便我们能够主动联系扩展作者并在可能的情况下提供帮助。如果您的扩展受到影响,并且以上建议均无效,请在我们的讨论帖中评论,我们将乐意提供帮助。
调试适配器协议
我们规范了如何在调试适配器协议中变量和输出的显示中对文本进行着色和样式设置。着色通过 ANSI 控制序列实现,并且要求客户端和调试适配器在其初始化请求和能力中分别声明 supportsANSIStyling
。
预览功能
多个 GitHub 帐户
现在可以在 VS Code 中同时登录多个 GitHub 帐户。
此功能默认在 VS Code Insiders 中启用。在 VS Code Stable 版本中,您可以使用 github.experimental.multipleAccounts 设置将其打开。
以下是您可能需要多个帐户的几个场景
- 使用帐户 1 用于设置同步,使用帐户 2 用于 GitHub 拉取请求扩展
- 使用帐户 1 用于 GitHub 扩展(推送),使用帐户 2 用于 GitHub Copilot
要使用此功能,只需触发登录操作(使用设置同步等内置功能或扩展),您将看到登录到其他帐户的选项。如果您稍后需要更改帐户,此功能与新的帐户首选项快速选择器也很好地配合。
虽然大多数功能应该继续与您现有的扩展一起正常工作,但有些行为可能尚未完全适应这个多帐户世界。如果您认为有改进的空间,请在这些扩展上提交问题。借助相对较新的 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 能够使用操作系统的身份验证状态。因此,为了尽量减少中断,我们将先完成这项工作,然后再广泛启用此功能。话虽如此,如果您热切地想尝试这种新的身份验证方式,欢迎试用并向我们提供反馈。
您可以在议题 #178740 中查看此 MSAL 过渡在所有 VS Code 中的详细状态。
TypeScript 5.7
此版本包含对即将发布的 TypeScript 5.7 版本的初步支持。有关详细信息,请查看TypeScript 5.7 计划。
要开始使用 TypeScript 5.7 的预览版本,请安装TypeScript Nightly 扩展。
提议的 API
语言模型工具
我们继续迭代我们的 LanguageModelTool
API。该 API 包含两个主要部分
-
扩展注册工具的能力。工具是旨在由语言模型使用的功能片段。例如,读取文件的 Git 历史记录。
-
语言模型支持工具的机制,例如扩展在发出请求时传递工具、语言模型请求工具调用以及扩展将工具调用的结果传回。
在此里程碑中,我们添加了工具在运行前请求用户确认的能力。这对于可能具有副作用的工具很有帮助。
请查看议题 #213274 以获取更多详细信息或向我们提供反馈。
注意:该 API 仍在积极开发中,并且会发生变化。
工程改进
VS Code 正在交付 ESM
我们终于在 VS Code Stable 版本中发布了 ESM 工作。这意味着 VS Code 核心的所有层(electron、node.js、浏览器、worker)在 JavaScript 中使用 import
和 export
语法进行模块加载和导出。我们遗留的 AMD 加载器的所有用法均已禁用,并将在 10 月份的技术债务周中移除。
迁移到 ESM 大幅度提升了启动性能。首先,移除了很多 AMD 开销,其次主工作台 bundle 大小也减少了 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 持续占用 200% 以上的 CPU
- 10054 [WSL]:当
localhostForwarding = false
时,“端口”选项卡错误地报告 WSL 中的端口已转发到本地
鸣谢
最后但并非最不重要的是,向 VS Code 的贡献者致以衷心的感谢。
问题跟踪
对问题跟踪的贡献
拉取请求
对 vscode
的贡献
- @BABA983 (BABA)
- 修复终端选项卡选择功能异常 PR #224394
- 注册折叠导入操作 PR #227216
- @BlackHole1 (Kevin Cui): ci: ensure retry logic consistency PR #226038
- @Cecil0o0 (hj): chore: rm unreached ignore items when build extensions. PR #227906
- @dangerman (Anees Ahee): 修复图片预览透明度网格缩放问题 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 聚焦建议详情 PR #190096
- @juliapz (Julia Pozdeeva): 防止查找小部件在 AUX 窗口中被裁剪 PR #229001
- @marrej (Marcus Revaj): # 在重构预览中渲染文件创建 PR #226950
- @nojaf (Florian Verdonck)
- 使用 Worker 序列化笔记本 PR #226632
- 在 ErrorNoTelemetry 消息中包含 id PR #226715
- @PhantomPower82: 优化入门页面 (fix #226991) PR #226994
- @rafamerlin (Rafael Merlin): 使内嵌提示长度可配置 PR #221276
- @rehmsen (Ole)
- 在
setup
中初始化测试变量以避免顺序依赖。 PR #226596 - 支持每个笔记本单元格多个注释小部件。 PR #226770
- 在
- @remcohaszing (Remco Haszing): 将 test-results.xml 添加到 .gitignore PR #214238
- @repraze (Thomas Dubosc): fix: 在 browser/hover.css 中将 end 替换为 flex-end PR #224102
- @segevfiner (Segev Finer): 为自定义文本编辑器采用扩展主机重启 PR #225985
- @SimonSiefke (Simon Siefke): fix: 调试视图中的内存泄漏问题 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): 添加了新的“管理依赖项”部分,修复了一个拼写错误 PR #7617
- @harrydowning (Harry Downing): 移除关于预发布标签的不正确陈述 PR #7593
- @listsarah (Sarah Listzwan): 关闭议题 #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): fix: 不要在 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