2024年9月(版本1.94)

更新 1.94.1: 此更新解决了这个安全问题

更新 1.94.2: 此次更新解决了这些问题

下载:Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


欢迎来到2024年9月发布的Visual Studio Code。此版本中有许多更新,我们希望您会喜欢,一些关键亮点包括:

如果您想在线阅读这些发布说明,请访问更新code.visualstudio.com上。 内测用户:想要尽快尝试新功能吗?您可以下载每晚的内测版构建,并在最新更新可用时立即尝试。

GitHub Copilot

在聊天中切换语言模型

之前,我们宣布您可以注册以提前访问OpenAI o1模型。一旦获得访问权限,您将在VS Code的Copilot Chat中拥有一个Copilot Chat模型选择器控件,以选择用于聊天对话的模型版本。

聊天视图中的Copilot模型选择器控件允许切换到另一种语言模型。

GPT-4o 在行内聊天中

我们已经将Copilot内联聊天升级到GPT-4o,以便在您在编辑器中使用聊天时,为您提供更快、更准确和更高质量的代码和解释。

聊天中的公共代码匹配

您可以允许GitHub Copilot返回可能与GitHub.com上公开可用代码匹配的代码。当此功能为您的组织订阅个人订阅启用时,Copilot代码补全已经为您提供了检测到的匹配的详细信息。我们现在也在Copilot Chat中为您显示这些公共代码的匹配。

如果为您的组织或订阅启用了此功能,您可能会在响应末尾看到一条消息,其中包含一个查看匹配项链接。如果您选择该链接,将打开一个编辑器,向您显示匹配代码引用的详细信息以及更多细节。

聊天代码引用示例。

获取更多关于GitHub Copilot中的代码引用的信息,请访问GitHub博客。

聊天中的文件建议

在聊天输入字段中,您现在可以输入#来获取文件名建议,并快速将它们作为上下文附加到您的提示中。这适用于支持文件附件的聊天位置,例如聊天视图、快速聊天、内联聊天和笔记本聊天。

我们改进了Copilot响应中提到的任何工作区文件路径的渲染。当你询问@workspace问题时,这些路径非常常见。

你首先会注意到的是,工作区文件的路径现在包含一个文件图标。这使你可以轻松地在聊天响应中区分它们。文件图标基于你当前的文件图标主题

响应中的工作区文件路径现在使用文件图标呈现。

这些路径是交互式链接,因此只需选择它们即可打开相应的文件。您甚至可以使用拖放操作在新编辑器组中打开文件,或在按住Shift键后将其插入文本编辑器。

默认情况下,这些链接只显示文件名,但你可以将鼠标悬停在它们上面以查看完整的文件路径。

悬停在工作区路径上以查看完整的工作区路径。

你也可以右键点击这些路径中的一个,打开一个带有额外命令的上下文菜单,例如复制资源的相对路径,或在操作系统的文件资源管理器中显示该文件。

聊天中工作区路径的上下文菜单提供了打开文件或复制其路径的选项。

我们计划在接下来的迭代中进一步改进工作区路径的渲染,并对响应中的符号名称进行类似的改进。

拖放文件以添加聊天上下文

现在,您可以通过将文件或编辑器选项卡从工作台直接拖入聊天中,轻松附加额外文件作为聊天提示的上下文。对于Inline Cat,按住Shift并拖放文件以将其添加为上下文,而不是在编辑器中打开它。

历史中包含的文件附件

有多种方法可以将文件或编辑器选择作为相关上下文附加到您的聊天请求中。以前,此上下文仅添加到当前请求中,并未包含在后续请求的历史记录中。现在,这些附件会保留在历史记录中,因此您可以继续引用它们,而无需重新附加。

聊天对话显示Copilot在多个提示中跟踪附加文件。

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 现在默认可用。

用户在面板聊天中输入 /startDebugging flask app port 3000,并提供了启动配置。

指挥中心聊天(实验性)

设置: chat.commandCenter.enabled

我们正在试验一个用于访问聊天的命令中心入口。它提供了快速访问所有相关聊天命令的功能,比如启动不同的聊天体验或将上下文附加到您的提示中。请注意,命令中心本身需要启用,聊天命令中心入口才会显示。

聊天命令中心按钮和相关聊天操作的下拉菜单。

改进的时间上下文(实验性)

设置: github.copilot.chat.experimental.temporalContext.enabled

通过时间上下文,您可以指示Inline Chat将最近打开或编辑的文件视为聊天上下文的一部分。我们已经改进了这一功能,并邀请大家来尝试一下。

自定义指令(实验性)

设置: 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),在发布说明编辑器中显示时,它还具有现在熟悉的设置齿轮渲染效果。

在发布说明中设置URL可以直接导航到设置编辑器。

编辑器

内嵌提示改进

我们添加了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 编辑器现在支持通过设置 notebook.multiCursor.enabled 在单元格之间进行多光标编辑。目前,这只能通过快捷键 Ctrl+D 触发,并支持核心编辑器操作以及有限的编辑器命令子集。

差异编辑器显示文档元数据更改

笔记本差异编辑器现在还可以显示对文档元数据的更改,例如内核信息和单元格语言。

Notebook 差异编辑器显示文档元数据的并排更改。

在差异视图中折叠未更改的区域

笔记本差异视图现在遵循设置 diffEditor.hideUnchangedRegions.enabled。启用后,默认情况下未更改的代码块会被折叠,这使得在大型笔记本中查看更改更加容易。

差异编辑器将未更改的代码块显示为折叠状态。

在Web Worker中的Notebook序列化(实验性)

此版本引入了一个实验性功能,可以在Web Worker中启用笔记本序列化。当您处理大型笔记本时,这有助于减少扩展主机进程中的主线程阻塞时间。默认情况下,此功能是禁用的,但可以通过将ipynb.experimental.serialization设置为true来启用。

调试

支持数据着色

VS Code 支持来自调试适配器协议的新文本样式功能。这使得变量视图、监视视图、悬停提示和调试控制台中的数据可以通过 ANSI 转义序列进行着色。

JavaScript 调试器

HTML元素的改进显示

我们已经改进了HTML元素在JavaScript调试器中的显示方式。以前,它们被渲染为简单的对象,难以导航。现在,它们更接近地反映了DOM结构,并且我们利用新的着色功能提供了一些基本的语法高亮。

JavaScript调试控制台中的HTML元素被着色。

启动配置中Node命令的自动补全

launch.json文件中,现在有一个新的自动补全助手可用于安装在node_modules中的命令行应用程序。这使得为vitestnest等工具设置调试变得更加容易。

更清晰的已加载资源视图

我们改变了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条件总是评估为真。这不是我们想要的。

尽管这个问题在被指出时显而易见,但像这样的错误出人意料地容易发生,甚至已经在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.preferences.autoImportSpecifierExcludeRegexes 来配置 JavaScript,以及使用 typescript.preferences.autoImportSpecifierExcludeRegexes 来配置 TypeScript。更多详情请参阅 TypeScript 5.6 发布说明

远程开发

Remote Development extensions 允许您使用 Dev Container、通过 SSH 连接的远程机器或 Remote Tunnels,或者 Windows Subsystem for Linux (WSL) 作为全功能的开发环境。

亮点包括:

  • 通过SSH/隧道连接到Kubernetes容器
  • 手动指定GPU可用性

您可以在远程开发发布说明中了解更多关于这些功能的信息。

对扩展的贡献

Python

运行带有覆盖率的测试

你现在可以在VS Code中运行带有覆盖率的Python测试了!要运行带有覆盖率的测试,请在测试资源管理器中选择覆盖率运行图标,或从你通常触发测试运行的任何菜单中选择“使用覆盖率运行”。如果你使用的是pytest,Python扩展将通过使用pytest-cov插件来运行覆盖率,或者使用coverage.py来运行unittest的覆盖率。

一旦覆盖率运行完成,编辑器中的行会突出显示以表示行级覆盖率。这些可以通过底部的运行结果面板关闭和重新打开,在最近的测试运行下会显示“关闭测试覆盖率”或“查看测试覆盖率”。此外,在测试资源管理器的测试选项卡下方会出现一个测试覆盖率选项卡,同样带有一个烧杯图标,你也可以通过命令面板中的测试:聚焦测试覆盖率视图导航到该选项卡(⇧⌘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

此新功能覆盖了以下设置的默认值:

Setting light mode default mode
"python.analysis.exclude" ["**"] []
"python.analysis.useLibraryCodeForTypes" false true
"python.analysis.enablePytestSupport" false true
"python.analysis.indexing" false true

上述设置仍可单独更改以覆盖默认值。

GitHub 拉取请求

GitHub Pull Requests扩展方面取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。查看0.98.0版本的更新日志以了解亮点。

扩展开发

移除桌面应用中的自定义分配器

在此版本中,我们移除了在1.78版本中添加到桌面应用程序扩展主机的自定义分配器。此自定义分配器充当支持与V8沙箱不兼容的Node.js原生插件的桥梁,这些插件是针对Electron运行时构建的。您可以参考此跟踪问题以获取更多背景信息。

我们已经确保前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的稳定版本中,您可以通过github.experimental.multipleAccounts设置来启用此功能。

以下是您可能需要多个账户的几种情况:

  • 使用Account1进行设置同步,使用Account2进行GitHub拉取请求扩展
  • 使用 Account1 用于 GitHub 扩展(用于推送)和 Account2 用于 GitHub Copilot

要使用此功能,只需触发登录操作(无论是通过内置功能如设置同步还是通过扩展),您将获得登录到不同帐户的选项。如果您需要在稍后阶段更改帐户,此功能还与新的帐户偏好快速选择很好地配合使用。

虽然大多数情况下,您现有的扩展应该可以继续正常工作,但某些行为可能在这个多账户世界中还不能完美配合。如果您认为有改进的空间,请务必在那些扩展上提出问题。借助相对较新的vscode.authentication.getAccounts('github') API,扩展在处理多个账户方面拥有很大的能力。

下一次迭代,我们计划默认对所有用户启用此功能。

基于MSAL的微软认证

我们一直在努力让我们的微软认证堆栈使用MSAL(微软认证库)。这是一项巨大的工程,但在这个迭代中我们已经取得了很大的进展。这项工作涵盖了所有VS Code客户端,因此包括VS Code和VS Code for the Web

  • 对于vscode.dev,我们已经为所有Microsoft身份验证请求启用了基于浏览器的MSAL.js。换句话说,vscode.dev现在完全依赖于MSAL。

  • 对于VS Code桌面客户端,我们将此功能放在了一个设置后面,microsoft.useMsal。目前它被放在一个设置后面,因为我们计划转向代理流程,这将使VS Code能够使用操作系统的认证状态。因此,为了尽可能减少中断,我们将在广泛启用此功能之前先完成这项工作。也就是说,如果您渴望尝试这种新的认证方式,欢迎您尝试并为我们提供反馈。

您可以在Issue #178740中查看VS Code中所有向MSAL过渡的详细状态。

TypeScript 5.7

此版本包括对即将发布的TypeScript 5.7版本的初步支持。查看TypeScript 5.7计划以获取详细信息。

要开始使用 TypeScript 5.7 的预览版本,请安装 TypeScript Nightly 扩展

提议的API

语言模型工具

我们继续迭代我们的LanguageModelTool API。该API包含两个主要部分:

  1. 扩展程序注册工具的能力。工具是语言模型使用的功能片段。例如,读取文件的Git历史记录。

  2. 语言模型支持工具的机制,例如在发出请求时传递工具的扩展,语言模型请求工具调用,以及扩展返回工具调用的结果。

在这个里程碑中,我们增加了工具在运行前请求用户确认的功能。这对于可能有一些副作用的工具很有帮助。

查看问题 #213274以获取更多详细信息或向我们提供反馈。

注意: API仍在积极开发中,内容将会有所变化。

工程

ESM 正在为 VS Code 发布

我们终于在我们的VS Code稳定版本中发布了ESM工作。这意味着VS Code核心的所有层(electron、node.js、浏览器、workers)都使用importexport语法在JavaScript中进行模块加载和导出。我们旧版AMD加载器的所有使用已被禁用,并将在十月的债务周期间移除。

转向ESM极大地提高了启动性能。一方面,移除了大量的AMD开销,同时主工作台的包大小也减少了超过10%:

图表显示主包加载时间的趋势,引入ESM后显示大幅下降。

既然我们已经完全转换为ESM,我们计划改进VS Code的工程系统。使用ESM,许多现代工具将为我们工作,我们非常兴奋在不久的将来分享更多关于此的详细信息。

注意: 扩展不受此更改影响,也不会通过ESM加载,详情请参见 https://github.com/microsoft/vscode/issues/130367

使用NPM作为默认包管理器

2024年9月初,我们已经在microsoft/vscode仓库中完成了从yarn到npm的包管理切换。这一决定基于VS Code的特定需求,并围绕以下标准进行:

  • 性能:我们最初因为性能原因转向了yarn,现在npm也能满足我们的需求
  • 安全性:我们通过限制暴露和减少依赖的工具数量来使我们的供应链更加安全

显著的修复

  • 226401 文件监视器持续消耗CPU超过200%
  • 10054 [WSL]: 当localhostForwarding = false时,端口选项卡错误地报告WSL中的端口被转发到本地

感谢您

最后但同样重要的是,向VS Code的贡献者们表示衷心的感谢

问题跟踪

对我们问题跟踪的贡献:

拉取请求

vscode 的贡献:

vscode-docs的贡献:

vscode-extension-samples的贡献:

vscode-js-debug 的贡献:

vscode-jupyter 的贡献:

vscode-languageserver-node的贡献:

vscode-pull-request-github 的贡献:

vscode-python-debugger 的贡献:

vscode-vsce 的贡献:

vscode-wasm 的贡献:

language-server-protocol的贡献: