查看原文
其他

Electron 6.0.0发布,改进对Promise的支持

局长 开源中国 2020-09-02
Electron 6.0.0 稳定版已正式发布,此版本的更新内容包括升级组件修复 bug 以及引入新特性等。有意思的是,团队表示这是首次在同一天同时发布与 Electron 稳定版对应的 Chrome 稳定版(Chrome 76)。

可通过 npm install electron@latest 命令进行升级,或者从下载页面下载新版本。

Electron 是 GitHub 开发的跨平台桌面应用开发工具,支持使用 Web 技术开发桌面应用,其基于 C++ 开发,GUI 核心来自于 Chromium,而 JavaScript 引擎使用 V8。

更新内容

Electron 的核心组件是 Chromium、Node.js 与 V8,按照国际惯例它一般都会与这些项目保持同步更新,以提供最新的 JavaScript 特性、性能改进和安全修复。在此版本中这三者分别升级到了:Chromium 76.0.3809.88、Node.js 12.4.0、V8 7.6.303.22。
除了针对组件的更新,此版本还包括对 Electron API 的改进。完整列表请查看发布说明,值得关注的如下:
Promisification

Electron 6.0 继续践行从 5.0 版本开始的现代化方案,以改进对 Promise 的支持。

下面的函数现在会返回 Promises 并支持旧版的基于回调的调用:
  • contentTracing.getCategories() #16583

  • contentTracing.getCategories() #16583

  • contentTracing.getTraceBufferUsage() #16600

  • contents.executeJavaScript() #17312

  • cookies.flushStore() #16464

  • cookies.get() #16464

  • cookies.remove() #16464

  • cookies.set() #16464

  • dialog.showCertificateTrustDialog() #17181

  • inAppPurchase.getProducts() #17355

  • inAppPurchase.purchaseProduct()#17355

  • netLog.stopLogging() #16862

  • session.clearAuthCache() #17259

  • session.clearCache() #17185

  • session.clearHostResolverCache() #17229

  • session.clearStorageData() #17249

  • session.getBlobData() #17303

  • session.getCacheSize() #17185

  • session.resolveProxy() #17222

  • session.setProxy() #17222

  • webContents.hasServiceWorker() #16535

  • webContents.printToPDF() #16795

  • webContents.savePage() #16742

  • webFrame.executeJavaScript() #17312

  • webFrame.executeJavaScriptInIsolatedWorld() #17312

  • webviewTag.executeJavaScript() #17312

下面的函数现在有两种形式,分别是同步和基于 Promise 的异步:
  • dialog.showMessageBox()/dialog.showMessageBoxSync() #17298

  • dialog.showOpenDialog()/dialog.showOpenDialogSync() #16973

  • dialog.showSaveDialog()/dialog.showSaveDialogSync() #17054

下面的函数会返回 Promises:
  • app.dock.show() #16904

Electron Helper (Renderer).app, Electron Helper (GPU).app 和 Electron Helper (Plugin).app

由于要启用 hardened runtime(强化运行时) 功能,这会限制可写可执行内存(writable-executable memory)和加载由不同团队 ID 签名的代码,另外还需要向 Helper 授予专用的代码签名权限。

因此,为了将这些权限限定在需要它们的的流程类型(process types),Chromium 添加了三个新的 Helper.app 变体:一个用于渲染器 (Electron Helper (Renderer).app)、一个用于 GPU 进程 (Electron Helper (GPU).app),还有一个用于插件 (Electron Helper (Plugin).app)。

使用 electron-osx-sign 对其 Electron App 进行代码签名的开发者不会对他们的构建逻辑进行任何变更,如果使用自定义脚本对 App 进行签名,则应确保三个新的 Help 应用程序已正确签名。

为了使用这些新的 helper 正确打包应用程序,我们需要使用 electron-packager@14.0.4 或更高版本。如果正在使用 electron-builder,建议遵循此 issue 来跟踪对新 helper 的支持。

结束对 3.x.y 的支持

根据版本支持计划,Electron 3.x.y 已经到达 EOF 阶段,官方不再对其提供支持。

未来计划

短期来看,团队会继续升级 Electron 的核心组件,包括 Chromium、Node 和 V8。至于更新频率,计划是每季度发布一次新的主要版本,同时对核心组件进行升级。7.0.0 的暂定发布时间表列出了 Electron 7 开发周期中的关键时间节点。如需获取有关 Electron 版本的更多信息,请查看「阅读原文」。

开源中国征稿啦!


开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 400 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。


现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。投稿详情及联系方式请参见:我要投稿

推荐阅读

5门可能衰落的编程语言

Blender 2.80发布:全新UI、实时渲染引擎 Eevee

9012年,Linus 终于意识到没什么人在用软盘了

最常见的 Git 错误都有哪些,如何解决它们?

这款数据库将企业版功能100%开源还不收费,why?

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存