跳到主要内容

Electron 34.0.0

·4 分钟阅读

Electron 34.0.0 已发布!它包括 Chromium 132.0.6834.83、V8 13.2 和 Node 20.18.1 的升级。


Electron 团队很高兴地宣布 Electron 34.0.0 的发布!您可以通过 npm 使用 npm install electron@latest 安装它,或者从我们的发布网站下载它。继续阅读以了解有关此版本的详细信息。

如果您有任何反馈,请在 BlueskyMastodon 上与我们分享,或加入我们的社区 Discord!错误和功能请求可以在 Electron 的 issue 跟踪器中报告。

值得注意的更改

HTTP 压缩共享字典管理 API

HTTP 压缩允许数据在被浏览器接收之前由 Web 服务器压缩。现代版本的 Chromium 支持 Brotli 和 Zstandard,它们是比 gzip 等旧方案性能更好的新型压缩算法,尤其对于文本文件。

自定义共享字典进一步提高了 Brotli 和 Zstandard 压缩的效率。有关更多信息,请参阅Chrome 开发者博客关于共享字典的文章

@felixrieseberg#44950 中添加了以下 API,以管理会话级别的共享字典

  • session.getSharedDictionaryUsageInfo()
  • session.getSharedDictionaryInfo(options)
  • session.clearSharedDictionaryCache()
  • session.clearSharedDictionaryCacheForIsolationKey(options)

无响应渲染器 JavaScript 调用堆栈

当渲染器进程挂起过长时间时,会发生 Electron 的 unresponsive 事件。@samuelmaddock#44204 中添加的新 WebFrameMain.collectJavaScriptCallStack() API 允许您从关联的 WebFrameMain 对象 (webContnets.mainFrame) 收集 JavaScript 调用堆栈。

当存在导致进程挂起的长时间运行的 JavaScript 事件时,此 API 可用于确定帧无响应的原因。有关更多信息,请参阅提议的网络标准崩溃报告 API

主进程
const { app } = require('electron');

app.commandLine.appendSwitch(
'enable-features',
'DocumentPolicyIncludeJSCallStacksInCrashReports',
);

app.on('web-contents-created', (_, webContents) => {
webContents.on('unresponsive', async () => {
// Interrupt execution and collect call stack from unresponsive renderer
const callStack = await webContents.mainFrame.collectJavaScriptCallStack();
console.log('Renderer unresponsive\n', callStack);
});
});
警告

此 API 需要启用 'Document-Policy': 'include-js-call-stacks-in-crash-reports' 标头。有关更多详细信息,请参阅 #45356

堆栈更改

Electron 34 将 Chromium 从 130.0.6723.44 升级到 132.0.6834.83,将 Node 从 20.18.0 升级到 20.18.1,并将 V8 从 13.0 升级到 13.2

新功能

  • 添加了 API 以管理共享字典,从而提高使用 Brotli 或 ZStandard 的压缩效率。新 API 为 session.getSharedDictionaryUsageInfo()session.getSharedDictionaryInfo(options)session.clearSharedDictionaryCache()session.clearSharedDictionaryCacheForIsolationKey(options)#44950
  • 添加了 WebFrameMain.collectJavaScriptCallStack(),用于访问无响应渲染器的 JavaScript 调用堆栈。 #44938
  • 为卸载状态的帧添加了 WebFrameMain.detached
    • 添加了 WebFrameMain.isDestroyed(),用于确定帧是否已被销毁。
    • 修复了当帧正在卸载时,webFrameMain.fromId(processId, frameId) 返回的 WebFrameMain 实例与给定参数不匹配的问题。 #43473
  • 在实用程序进程中添加了错误事件,以支持 V8 致命错误的诊断报告。 #43774
  • 特性:GPU 加速共享纹理离屏渲染。 #42953

重大变更

行为已更改:菜单栏在 Windows 全屏模式下将被隐藏

这使得行为与 Linux 保持一致。先前行为:菜单栏在 Windows 全屏模式下仍然可见。新行为:菜单栏在 Windows 全屏模式下被隐藏。

更正:这之前在 Electron 33 中被列为重大变更,但首次发布是在 Electron 34 中。

停止支持 31.x.y

根据项目的支持策略,Electron 31.x.y 已达到停止支持。鼓励开发者和应用程序升级到较新版本的 Electron。

E34 (25 年 1 月)E35 (25 年 4 月)E36 (25 年 6 月)
34.x.y35.x.y36.x.y
33.x.y34.x.y35.x.y
32.x.y33.x.y34.x.y

下一步

在短期内,您可以期望团队继续专注于跟上构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。

您可以在此处找到 Electron 的公共时间表

有关未来更改的更多信息,请访问计划的重大变更页面。