Команда Electron рада объявить о выпуске Electron 6.0.0! You can install it with npm via npm install electron@latest
or download it from our releases website. The release is packed with upgrades, fixes, and new features. We can't wait to see what you build with them! Continue reading for details about this release, and please share any feedback you have!
What's New
Today marks a first for the Electron project: this is the first time we've made a stable Electron release on the same day as the corresponding Chrome stable release! 🎉
Much of Electron's functionality is provided by the core components of Chromium, Node.js, and V8. Electron keeps up-to-date with these projects to provide our users with new JavaScript features, performance improvements, and security fixes. Each of these packages has a major version bump in Electron 6:
- Chromium
76.0.3809.88
- Node.js
12.4.0
- V8
7.6.303.22
This release also includes improvements to Electron's APIs. The release notes have a more complete list, but here are the highlights:
Promisification / Промисификация
Electron 6.0 continues the modernization initiative started in 5.0 to improve Promise support.
These functions now return Promises and still support older callback-based invocation:
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
These functions now have two forms, synchronous and Promise-based asynchronous:
dialog.showMessageBox()
/dialog.showMessageBoxSync()
#17298
dialog.showOpenDialog()
/dialog.showOpenDialogSync()
#16973
dialog.showSaveDialog()
/dialog.showSaveDialogSync()
#17054
These functions now return Promises:
Electron Helper (Renderer).app
, Electron Helper (GPU).app
and Electron Helper (Plugin).app
In order to enable the hardened runtime, which restricts things like writable-executable memory and loading code signed by a different Team ID, special code signing entitlements needed to be granted to the Helper.
To keep these entitlements scoped to the process types that require them, Chromium added three new variants of the Helper app: one for renderers (Electron Helper (Renderer).app
), one for the GPU process (Electron Helper (GPU).app
) and one for plugins (Electron Helper (Plugin).app
).
Folks using electron-osx-sign
to codesign their Electron app shouldn't have to make any changes to their build logic. If you're codesigning your app with custom scripts, you should ensure that the three new Helper applications are correctly codesigned.
In order to package your application correctly with these new helpers you need to be using electron-packager@14.0.4
or higher. If you are using electron-builder
you should follow this issue to track support for these new helpers.
Критические изменения
-
This release begins laying the groundwork for a future requirement that native Node modules loaded in the renderer process be either N-API or Context Aware. The reasons for this change are faster performance, stronger security, and reduced maintenance workload. Read the full details including the proposed timeline in this issue. This change is expected to be completed in Electron v11.
-
net.IncomingMessage
headers have changed slightly to more closely match Node.js behavior, particularly with the value of set-cookie
and how duplicate headers are handled. #17517.
-
shell.showItemInFolder()
now returns void and is an asynchronous call. #17121
-
Apps must now explicitly set a log path by calling the new function app.setAppLogPath()
before using app.getPath('log')
. #17841
End of Support for 3.x.y
Per our support policy, 3.x.y has reached end of life. Developers and applications are encouraged to upgrade to a newer version of Electron.
Программа отзывов