Aller au contenu principal

S3 Bucket Migration

· 2 mins de lecture

Electron is changing its primary S3 bucket, you may need to update your build scripts


What is happening?

A significant amount of Electron's build artifacts are uploaded to an S3 bucket called gh-contractor-zcbenz. As part of ongoing infrastructure/ownership migrations that started way back in 2020, we will be changing everything that used gh-contractor-zcbenz from its old home in S3 to a new storage system hosted at https://artifacts.electronjs.org. The path prefix that most of our assets use is changing slightly as well. Examples are included below:

Avant : https://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist/v17.0.0/node.lib Après : https://artifacts.electronjs.org/headers/dist/v17.0.0/node.lib

The important things here are the Hostname changed and the /atom-shell prefix changed. Another example, this time for debug symbols:

Avant : https://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/symbols/path/to/symbol.pdb Après : https://artifacts.electronjs.org/symbols/path/to/symbol.pdb

Again, the hostname changed and the /atom-shell prefix was changed.

How might this impact you?

Anyone using standard build tooling such as electron-rebuild, electron-packager or @electron/get won't have to do anything. This should be the majority of people.

For anyone directly referencing the S3 bucket, you must update your reference to point at the hostname and update the path as well.

What about existing data?

Most data that existed on the gh-contractor-zcbenz bucket has been cloned into the new storage system. This means all debug symbols and all headers have been copied. If you relied on some data in that bucket that hasn't been copied over please raise an issue in electron/electron and let us know.

The current gh-contractor-zcbenz S3 bucket will not be actively deleted. However, we can't guarantee how long that bucket will be left alive. We strongly recommend updating to target the new bucket as soon as possible.

Electron 18.0.0

· 4 mins de lecture

Electron 18.0.0 est disponible ! Cette version inclue les mises à jour vers Chromium 100, V8 10.0, et Node.js 16.13.2. Lisez la suite ci-dessous pour plus de détails !


La team Electron est excitée d'annoncer la sortie de Electron 18.0.0 ! Vous pouvez l'installer via npm install electron@latest ou le télécharger depuis notre site officiel. Lisez la suite pour plus de détails sur cette version et veuillez partagez vos commentaires et remarques !

Changements notables

Changement de le cadence de publication d'Electron

À partir d'Electron 15, Electron publiera une nouvelle version stable majeure toutes les 8 semaines. Vous pouvez lire les détails complets ici.

De plus Electron passera des trois dernières versions supportées aux quatre dernières versions jusqu'en mai 2022. Consultez notre document de gestion des versions pour plus d’informations sur le contrôle de version dans Electron. Après Electron 2022, nous reviendrons à supporter les trois dernières versions.

Changements de la Stack

Nouveautés de cette version

  • Added ses.setCodeCachePath() API for setting code cache directory. #33286
  • Removed the old BrowserWindowProxy-based implementation of window.open. This also removes the nativeWindowOpen option from webPreferences. #29405
  • Added 'focus' and 'blur' events to WebContents. #25873
  • Added Substitutions menu roles on macOS: showSubstitutions, toggleSmartQuotes, toggleSmartDashes, toggleTextReplacement. #32024
  • Ajout d'un événement first-instance-ack au flux app.requestSingleInstanceLock() , permettant aux utilisateurs de transmettre de façon transparente des données de la première instance à la seconde instance. #31460
  • Added support for more color formats in setBackgroundColor. #33364

Voir les notes de version 18.0.0 pour une liste complète des nouvelles fonctionnalités et des modifications.

Modifications & changements majeurs de l’API

Vous trouverez ci-dessous les changements de rupture introduits dans Electron 18. Vous trouverez plus d’informations sur ces changements et les changements futurs sur la pagechangements de rupture prévus.

Supprimé : nativeWindowOpen

Avant Electron 15, window.open utilisait par défaut BrowserWindowProxy. Cela signifiait, entre autres incompatibilités, que window.open('about:blank') ne fonctionnait pas pour ouvrir des fenêtres enfants scriptables de manière synchrone. Depuis Electron 15, nativeWindowOpen est activé par défaut.

See the documentation for window.open in Electron for more details. Removed in #29405

Fin du support pour 14.x.y

Electron 14.x.y a atteint la limite pour le support conformément à la politique d'assistance du projet. Nous encourageons les développeurs à mettre à jour vers une version plus récente d'Electron et de faire de même avec leurs applications.

À partir d'Electron 15, nous passeront de trois dernières versions supportées aux quatre dernières versions jusqu'en mai 2022 avec Electron 19. Après Electron 19, nous reviendrons à supporter les trois dernières versions. Cette version de support du changement fait partie de notre nouveau changement de cadence. Veuillez consulter notre article de blog pour plus de détails ici.

E15 (Sep'21)E16 (Nov'21)E17 (Fév'23)E18 (Mar'22)E19 (Mai'22)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

Et maintenant ?

À court terme, vous pouvez compter sur l’équipe pour continuer a se concentrer sur le développement des principaux composants qui composent Electron, notamment Chromium, Node et V8. Bien que nous veillions à ne pas faire trop de promesses concernant les dates de publication, notre plan est de publier de nouvelles versions majeures d'Electron avec de nouvelles versions de ces composants environ tous les 2 mois.

Vous pouvez trouver la chronologie publique d'Electron ici.

Vous trouverez plus d’informations sur les changements futurs sur la page changements de rupture prévus.

Le Google Summer of Code 2022

· 2 mins de lecture

L'équipe d'Electron est excitée de vous annoncer que nous allons participer au Google Summer of Code pour la première fois cette année!


Qu'est ce que le Google Summer of Code?

Le Google Summer of Code (GSoC) est un programme de mentorat annuel qui rassemble plusieurs projets de logiciel open source avec des contributeurs potentiels. Récemment ouvert seulement pour les étudiants, n'importe qui ayant 18 ans et plus peut désormais s'inscrire pour le GSoC.

Pour plus d'informations, rendez-vous sur la page d'accueil du Summer of Code.

Comment s'inscrire ?

Êtes-vous intéressé à collaborer avec Electron? Si vous êtes nouveau ou débutant dans la contribution de l'open source, nous vous invitons à postuler !

Dans le but d'être sélectionné comme contributeur Electron pour le Google Summer of Code, vous allez devoir soumettre une candidature. Les candidatures ouvriront le 4 avril 2002 et s'arrêterons le 19 avril 2022. Vous pouvez suivre les actualités et directives pour les candidatures du Google Summer of Code ici.

Envie de postuler ? Premièrement, regardez les cinq idées brouillons de projets que nous avons préparé. Toutes les idées listées sont actuellement ouvertes aux propositions. Nous acceptons également de nouvelles idées que nous n'avons pas proposées dans la liste des projets.

Votre candidature devra inclure :

  • Votre proposition, avec un document écrit qui décrit en détail votre plan de ce que vous comptez achever au cours de cet été.
  • Votre expérience en tant que développeur. Si vous avez un C.V, merci de l'inclure une copie, par ailleurs, parlez-nous de vos expériences passées en mettant l'accent sur vos expériences techniques pertinentes.

Un guide détaillé de ce qu'il faut soumettre dans le cadre de votre candidature Electron est ici.

Vous pouvez également lire le guide officiel pour les étudiants et contributeurs du GSoC afin d'obtenir de précieux conseils sur la préparation de votre candidature.

Si vous souhaitez discuter de proposition de projet ou si vous avez des questions, visitez notre canal Discord #gsoc-general !

Références

Electron 17.0.0

· 4 mins de lecture

Electron 17.0.0 est disponible ! Cette version inclue les mises à jour vers Chromium 98, V8 9.8, et Node.js 16.13.0. Lisez la suite ci-dessous pour plus de détails !


La team Electron est excitée d'annoncer la sortie de Electron 17.0.0 ! Vous pouvez l'installer via npm install electron@latest ou le télécharger depuis notre site officiel. Lisez la suite pour plus de détails sur cette version et veuillez partagez vos commentaires et remarques !

Changements notables

Changement de le cadence de publication d'Electron

À partir d'Electron 15, Electron publiera une nouvelle version stable majeure toutes les 8 semaines. Vous pouvez lire les détails complets ici.

De plus Electron passera des trois dernières versions supportées aux quatre dernières versions jusqu'en mai 2022. Consultez notre document de gestion des versions pour plus d’informations sur le contrôle de version dans Electron. Après Electron 2022, nous reviendrons à supporter les trois dernières versions.

Changements de la Stack

Nouveautés de cette version

  • Ajout de webContents.getMediaSourceId(), peut être utilisé avec getUserMedia pour obtenir un flux pour un contenu Web. #31204
  • Déprécie webContents.getPrinters() et introduit webContents.getPrintersAsync(). #31023
  • Dorénavant desktopCapturer.getSources n’est plus disponible que dans le processus principal. #30720

Voir les notes de version 17.0.0 pour une liste complète des nouvelles fonctionnalités et des modifications.

Changements majeurs avec rupture de compatibilité

Vous trouverez ci-dessous les changements de rupture introduits dans Electron 17. Vous trouverez plus d’informations sur ces changements et les changements futurs sur la pagechangements de rupture prévus.

desktopCapturer.getSources dans le moteur de rendu

Dorénavant l’API desktopCapturer.getSources n’est plus disponible que dans le processus principal. Cela a été modifié afin d'améliorer la sécurité par défaut des applications Electron.

Changements d'API

Il n’y a pas de changement d’API dans Electron 17.

Modifications: éléments supprimés et dépréciés

  • L’utilisation de l’API desktopCapturer.getSources dans le moteur de rendu est supprimée. Consultez ceci pour plus d’informations sur comment remplacer cette API dans votre application.

Fin du support pour 13.x.y

Electron 13.x.y a atteint la limite pour le support conformément à la politique d'assistance du projet. Nous encourageons les développeurs à mettre à jour vers une version plus récente d'Electron et de faire de même avec leurs applications.

À partir d'Electron 15, nous passeront de trois dernières versions supportées aux quatre dernières versions jusqu'en mai 2022 avec Electron 19. Après Electron 19, nous reviendrons à supporter les trois dernières versions. Cette version de support du changement fait partie de notre nouveau changement de cadence. Veuillez consulter notre article de blog pour plus de détails ici.

E15 (Sep'21)E16 (Nov'21)E17 (Fév'23)E18 (Mar'22)E19 (Mai'22)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

Et maintenant ?

À court terme, vous pouvez compter sur l’équipe pour continuer a se concentrer sur le développement des principaux composants qui composent Electron, notamment Chromium, Node et V8. Bien que nous veillions à ne pas faire trop de promesses concernant les dates de publication, notre plan est de publier de nouvelles versions majeures d'Electron avec de nouvelles versions de ces composants environ tous les 2 mois.

Vous pouvez trouver la chronologie publique d'Electron ici.

Vous trouverez plus d’informations sur les changements futurs sur la page changements de rupture prévus.

Avis d’obsolescence de Spectron

· 2 mins de lecture

Spectron sera déprécié le 1er février 2022.


À partir de février 2022, Spectron sera officiellement déclaré obsolète par l'équipe d'Electron.

Pourquoi déprécier Spectron ?

Bien que Spectron ait constamment publié de nouvelles versions pour chaque nouvelle version d’Electron, le projet a eu très peu de maintenance et d’améliorations depuis plus d’un an et n’a actuellement aucun mainteneur à temps plein. En plus avec la sortie du module remote du noyau Electron pour être mis dans un module externe avec Electron 14, Spectron devra subir une réécriture majeure pour continuer à fonctionner de manière fiable.

Après avoir examiné plusieurs options disponibles pour maintenir la maintenance de Spectron, l'équipe d'Electron a décidé de déprécier Spectron en 2022.

Chronologie de dépréciation

Ce qui suit est notre calendrier de dépréciation prévu :

  • De Novembre 2021 à Janvier 2022: L'équipe d'Electron continuera à accepter les pull requests de la communauté.
  • janvier 2022: Une version finale de l’avertissement de la dépréciation de Spectron sera publiée.
  • 1er février 2022: Le dépôt de Spectron sera marqué comme "archivé". Plus aucune demande de pull request ne sera acceptée.

Après le 1er février 2022, Electron conservera le dépôt Spectron indéfiniment, afin que d'autres puissent toujours effectuer des fork ou utiliser le code existant dans leurs projets. Nous espérons que cela permettra d' assurer une période de transition plus longue à tous les projets pouvant encore dépendre de Spectron.

Alternatives à Spectron

Si vous utilisez actuellement Spectron dans votre projet et que vous souhaitez migrer vers une solution de test alternative, vous pouvez lire notre guide pour les tests automatisés ici.

Nous pouvons actuellement recommaner plusieurs autres alternatives à Spectron, notamment Playwright et WebDriverIO. Des tutoriels officiels pour chaque option peuvent être trouvés dans notre documentation de test automatisé.

Et maintenant ?

L'équipe d'Electron vous remercie d'utiliser Spectron et Electron. Nous comprenons que beaucoup d'entre vous dépendent de Spectron pour tester leurs applications et voulons vous rendre cette transition la plus simple possible. Merci d'avoir choisi Electron !

Electron 16.0.0

· 4 mins de lecture

Electron 16.0.0 est disponible ! Cette version inclue les mises à jour vers Chromium 96, V8 9.6, et Node.js 16.9.1. Lisez la suite ci-dessous pour plus de détails !


La team Electron est excitée d'annoncer la sortie de Electron 16.0.0 ! Vous pouvez l'installer via npm install electron@latest ou le télécharger depuis notre site officiel. Lisez la suite pour plus de détails sur cette version et veuillez partagez vos commentaires et remarques !

Changements notables

Changement de le cadence de publication d'Electron

À partir d'Electron 15, Electron publiera une nouvelle version stable majeure toutes les 8 semaines. Vous pouvez lire les détails complets ici.

De plus Electron passera des trois dernières versions supportées aux quatre dernières versions jusqu'en mai 2022. Consultez notre document de gestion des versions pour plus d’informations sur le contrôle de version dans Electron. Après Electron 2022, nous reviendrons à supporter les trois dernières versions.

Changements de la Stack

Nouveautés de cette version

  • Prise en charge de l’API WebHID. #30213
  • Ajout d'un paramètre de données à app.requestSingleInstanceLock pour le partage de données entre instances. #30891
  • Transmission de la securityOrigin dans un nouveau champ de la propriété details du gestionnaire de requêtes d'autorisations multimédia. #31357
  • Ajout de commandLine.removeSwitch. #30933

Voir les notes de version 16.0.0 pour une liste complète des nouvelles fonctionnalités et des modifications.

Changements majeurs avec rupture de compatibilité

Vous trouverez ci-dessous les changements majeurs introduits dans Electron 16. Vous trouverez plus d’informations sur ces changements et les changements futurs sur la pagechangements de rupture prévus.

Compilation de modules natifs

Si votre projet utilise node-gyp pour compiler les modules natifs, vous devrez peut-être l'appeler avec --force-process-config en fonction de la configuration de votre projet et de votre version d'Electron. Vous trouverez plus d’informations sur ce changement à l’adresse #2497.

Changement de comportement : l'implémentation de crashReporter utilise Crashpad sous Linux

L’implémentation sous-jacente de l’API crashReporter sur Linux est passée de Breakpad à Crashpad, l’alignant sur Windows et Mac. En conséquence, les processus enfants sont désormais automatiquement monitorés et l’appel de process.crashReporter.start dans les processus enfants de Node n’est plus nécessaire (ni conseillé d'ailleurs, car il démarrerait une deuxième instance du rapporteur Crashpad).

Il y a aussi quelques changements subtils dans la façon dont les annotations seront signalées sous Linux, notamment les valeurs longues ne seront plus présentées dans plusieurs annotations suffixées par __1, __2 etc., mais seront plutôt tronquées à la taille limite des annotations (nouvelle et plus longue).

Changements d'API

Il n’y a pas de changement d’API dans Electron 16.

Modifications: éléments supprimés et dépréciés

  • L’utilisation de l’API desktopCapturer.getSources dans le moteur de rendu est Obsolète et sera supprimée. Cette modification améliore la sécurité par défaut des applications Electron. Consultez ceci pour plus d’informations sur comment remplacer cette API dans votre application.

Fin du support pour 12.x.y

Electron 12.x.y a atteint la limite pour le support conformément à la politique d'assistance du projet. Nous encourageons les développeurs à mettre à jour vers une version plus récente d'Electron et de faire de même avec leurs applications.

À partir d'Electron 15, nous passeront de trois dernières versions supportées aux quatre dernières versions jusqu'en mai 2022 avec Electron 19. Après Electron 19, nous reviendrons à supporter les trois dernières versions. Cette version de support du changement fait partie de notre nouveau changement de cadence. Veuillez consulter notre article de blog pour plus de détails ici.

E15 (Sep'21)E16 (Nov'21)E17 (Fév'23)E18 (Mar'22)E19 (Mai'22)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

Et maintenant ?

À court terme, vous pouvez compter sur l’équipe pour continuer a se concentrer sur le développement des principaux composants qui composent Electron, notamment Chromium, Node et V8. Bien que nous veillions à ne pas faire trop de promesses concernant les dates de publication, notre plan est de publier de nouvelles versions majeures d'Electron avec de nouvelles versions de ces composants environ tous les 2 mois.

Vous pouvez trouver la chronologie publique d'Electron ici.

Vous trouverez plus d’informations sur les changements futurs sur la page changements de rupture prévus.

A Quiet Place (Dec'21)

· 2 mins de lecture

Le projet Electron fera une pause pour le mois de décembre 2021 et reviendra gonflé à bloc en janvier 2022.

via GIPHY


Ce qui ne changera pas en Décembre

  1. Les versions zero-day et autres versions majeures liées à la sécurité seront publiées si nécessaire. Les incidents de sécurité doivent être signalés via SECURITY.md.
  2. Les Rapports du Code de Conduite et la modération se poursuivront.

Ce qui sera différent en Décembre

  1. No new Beta or Stable releases in December. No Nightly releases for the last two weeks of December.
  2. À quelques exceptions près, il n'y aura pas de ré-éxamen de pull request ni de merge.
  3. Aucune mise à jour de suivi de tickets sur aucun dépôt.
  4. Aucune aide de débogage de la part des mainteneurs sur Discord.
  5. Aucune mise à jour du contenu des réseaux sociaux.

Mais pourquoi donc?

In short, while maintainers are happy and engaged with the project, THE WORLD IS TIRED. December is a quiet month for most companies, so we want to give our maintainers a chance to recharge. Nous encourageons les autres projets à envisager des mesures similaires.

Should I be worried about the future of Electron?

Non. We are able to take this step because the project is in good shape. Tout le monde attend 2022 avec impatience, et nous nous attendons à de bonnes choses à venir!

Electron 15.0.0

· 4 mins de lecture

Electron 15.0.0 est disponible ! Cette version inclue les mises à jour vers Chromium 94, V8 9.4, et Node.js 16.5.0. Nous avons ajouté des mises à jour de l'API pour window.open, des corrections de bugs et des améliorations générales. Lisez la suite ci-dessous pour plus de détails !


L'équipe d'Electron est heureuse d'annoncer la sortie d'Electron 15.0.0 ! Vous pouvez l'installer via npm install electron@latest ou le télécharger depuis notre site officiel. Lisez la suite pour plus de détails sur cette version et veuillez partagez vos commentaires et remarques !

Changements notables

Changement de le cadence de publication d'Electron

À partir d'Electron 15, Electron sortira une nouvelle version stable majeure toutes les 8 semaines. Vous pouvez lire les détails complets ici.

De plus, Electron les versions supportées passeront des trois dernières aux quatre dernières versions jusqu'en mai 2022. Consultez notre document de versioning pour plus d'informations sur le versioning dans Electron.

Changements de la Stack

Nouveautés de cette version

  • nativeWindowOpen: true n'est plus expérimental, et est maintenant la valeur par défaut.
  • Ajout de safeStorage API de cryptage de chaînes. #30430
  • Ajout de l’événement ' frame-created' à WebContents qui l'emet lorsqu’une frame est créé dans la page. #30801
  • Ajout des informations de redimensionnement edge à l'événement BrowserWindowde will-resize. #29199

Voir les notes de version 15.0.0 pour une liste complète des nouvelles fonctionnalités et des modifications.

Changements majeurs avec rupture de compatibilité

Vous trouverez ci-dessous les changements de rupture introduits dans Electron 15. Vous trouverez plus d’informations sur ces changements et les changements futurs sur la pagechangements de rupture prévus.

Modification par défaut : nativeWindowOpen a la valeur par défaut true

Avant Electron 15, window.open utilisait par défaut BrowserWindowProxy. Cela signifiait, entre autres incompatibilités, que window.open('about:blank') ne fonctionnait pas pour ouvrir des fenêtres enfants scriptables de manière synchrone. nativeWindowOpen: true n'est plus expérimental, et est maintenant la valeur par défaut.

Consultez la documentation de window.open dans Electron pour plus de détails.

Changements d'API

  • Ajout de l’événement ' frame-created' à WebContents qui l'emet lorsqu’une frame est créé dans la page. #30801
  • Ajout de safeStorage API de cryptage de chaînes. #30430
  • Ajout d'une option signal à dialog.showMessageBox. #26102
  • Ajout d’un electron fuse pour appliquer les signatures de code sur le fichier app.asar chargé par votre application. Nécessite le dernier module asar (v3.1.0 ou supérieur). #30900
  • Ajout de fuses pour désactiver les NODE_OPTIONS et --inspect arguments de débogage dans les applications empaquetées. #30420
  • Ajout d’une nouvelle propriété MenuItem.userAccelerator pour lire les remplacements d’accélérateur macOS attribués par l’utilisateur. #26682
  • Ajout d’une nouvelle propriété app.runningUnderARM64Translation pour détecter l’exécution sous Rosetta sur Apple Silicon ou WOW sur Windows pour ARM. #29168
  • Ajout d’une nouvelle imageAnimationPolicy préférence Web pour contrôler la façon dont les images sont animées. #29095
  • Ajout de la prise en charge de l’envoi d’objets blob sur le context bridge. #29247

Modifications: éléments supprimés et dépréciés

Aucune API n'a été supprimée ou dépréciée.

Versions supportées

À partir d'Electron 15, nous passeront de trois dernières versions supportées aux quatre dernières versions jusqu'en mai 2022 avec Electron 19. Après Electron 19, nous reviendrons à supporter les trois dernières versions. Cette version de support du changement fait partie de notre nouveau changement de cadence. Veuillez consulter notre article de blog pour plus de détails ici.

Nous encourageons les développeurs à mettre à jour vers une version plus récente d'Electron et de faire de même avec leurs applications.

E15 (Sep'21)E16 (Nov'21)E17 (Fév'23)E18 (Mar'22)E19 (Mai'22)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

Et maintenant ?

À court terme, vous pouvez compter sur l’équipe pour continuer a se concentrer sur le développement des principaux composants qui composent Electron, notamment Chromium, Node et V8. Bien que nous veillions à ne pas faire de promesses à propos des dates de publication, notre plan est la sortie de nouvelles versions majeures d'Electron avec de nouvelles versions de ces composants environ un trimestre.

Vous pouvez trouver la chronologie publique d'Electron ici.

Vous trouverez plus d’informations sur les changements futurs sur la page changements de rupture prévus.

Electron 14.0.0

· 7 mins de lecture

Electron 14.0.0 est disponible ! Cette version inclue les mises à jour pour Chromium 93, V8 9.3, et Node. js. Nous avons ajouté plusieurs mises à jour de l'API, des corrections de bugs et des améliorations générales. Lisez la suite ci-dessous pour plus de détails !


La team Electron est excitée d'annoncer la sortie de Electron 14.0.0 ! Vous pouvez l'installer via npm install electron@latest ou le télécharger depuis notre site officiel des versions. Lisez la suite pour plus de détails sur cette version et veuillez partagez vos commentaires et remarques !

Changements notables

Changement de le cadence de publication d'Electron

Beginning in September 2021 with Electron 15, Electron will release a new major stable version every 8 weeks. Vous pouvez lire les détails complets ici. Electron 15 will begin beta on September 1, 2021 and stable release will be on September 21, 2021. Vous pouvez trouver la chronologie publique d'Electron ici. Additionally, Electron will be changing supported versions from latest three versions to latest four versions until May 2022. See see our versioning document for more detailed information about versioning in Electron.

Changements de la Stack

Nouveautés de cette version

  • Default Changed: nativeWindowOpen now defaults to true. (voir la documentation)
  • Child windows no longer inherit BrowserWindow construction options from their parents. #28550
  • Ajout de la nouvelle API session.storagePath pour obtenir le chemin des données spécifiques à la session sur le disque. #28665
  • Ajout de process.contextId utilisé par @electron/remote. #28007
  • Added experimental cookie encryption support behind an Electron Fuse. #29492

Voir les notes de version 14.0.0 pour une liste complète des nouvelles fonctionnalités et des modifications.

Changements majeurs avec rupture de compatibilité

Vous trouverez ci-dessous les changements majeurs introduits dans Electron 14. More information about these and future changes can be found on the Planned Breaking Changes page.

Supprimé : app.allowRendererProcessReuse

The app.allowRendererProcessReuse property has been removed as part of our plan to more closely align with Chromium's process model for security, performance and maintainability.

Pour des informations plus détaillées, voir #18397.

Suppression : Browser Window Affinity

The affinity option when constructing a new BrowserWindow has been removed as part of our plan to more closely align with Chromium's process model for security, performance and maintainability.

Pour des informations plus détaillées, voir #18397.

API modifiée : window.open()

The optional parameter frameName no longer sets the title of the window. This behavior now follows the specification described by the native documentation for the windowName parameter.

If you were using this parameter to set the title of a window, you can instead use the win.setTitle(title) method.

Supprimé : worldSafeExecuteJavaScript

worldSafeExecuteJavaScript has been removed with no alternative. Please ensure your code works with this property enabled. It has been enabled by default since Electron 12.

Vous serez affecté par ce changement si vous utilisez webFrame.executeJavaScript ou webFrame.executeJavaScriptInIsolatedWorld. Vous devrez vous assurer que les valeurs renvoyées par l’une ou l’autre de ces méthodes sont prises en charge par l’API Context Bridge car ces méthodes utilisent la même sémantique de transmission de valeur.

Valeur par défaut modifié : nativeWindowOpenest par défaut à true

Avant Electron 14, window.open utilisait par défaut BrowserWindowProxy. Cela signifiait, entre autres incompatibilités, que window.open('about:blank') ne fonctionnait pas pour ouvrir des fenêtres enfants scriptables de manière synchrone. nativeWindowOpen n'est plus expérimental, et est maintenant la valeur par défaut.

Consultez la documentation de window.open dans Electron pour plus de détails.

Supprimé: BrowserWindowConstructorOptions héritées des fenêtres parentes

Avant d'Electron 14, les fenêtres ouvertes avec window.open héritaient des options du constructeur BrowserWindow telles que transparent et resizable de leur fenêtre parente. Beginning with Electron 14, this behavior has been removed and windows will not inherit any BrowserWindow constructor options from their parents.

À la place, vous devez définir explicitement les options de la nouvelle fenêtre avec setWindowOpenHandler:

webContents.setWindowOpenHandler((details) => {
return {
action: 'allow',
overrideBrowserWindowOptions: {
// ...
},
};
});

Supprimé : additionalFeatures

La propriété additionalFeatures de new-window et l'événement did-create-window de WebContents qui étaient dépréciés ont été supprimés. Comme new-window utilise des arguments de positions, l'argument est toujours présent mais sera toujours un tablea vide []. (Note: the new-window event itself is already deprecated and has been replaced by setWindowOpenHandler.) Les clés sans valeur dans les features d'une window seront désormais représentées par des clés avec la valeur true dans l'objet options.

// Supprimé avec Electron 14
// Triggered by window.open('...', '', 'my-key')
webContents.on('did-create-window', (window, details) => {
if (details.additionalFeatures.includes('my-key')) {
// ...
}
});

// Replace with
webContents.on('did-create-window', (window, details) => {
if (details.options['my-key']) {
// ...
}
});

Supprimé: module remote

Deprecated in Electron 12, the remote module has now been removed from Electron itself and extracted into a separate package, @electron/remote. The @electron/remote module bridges JavaScript objects from the main process to the renderer process. This lets you access main-process-only objects as if they were available in the renderer process. This is a direct replacement for the remote module. See the module's readme for migration instructions and reference.

Changements d'API

  • Added BrowserWindow.isFocusable() method to determine whether a window is focusable. #28642
  • Ajout de la propriété d'instance WebFrameMain.visibilityState. #28706
  • Added disposition, referrer and postBody to the details object passed to the window open handler registered with setWindowOpenHandler. #28518
  • Ajout de process.contextId utilisé par @electron/remote. #28007
  • Added experimental cookie encryption support behind an Electron Fuse. #29492
  • Added missing resourceType conversions for webRequest listener details: font, ping, cspReport, media, webSocket. #30050
  • Ajout de la nouvelle API session.storagePath pour obtenir le chemin des données spécifiques à la session sur le disque. #28665
  • Added support for Windows Control Overlay on macOS. #29986
  • Added support for directing Chromium logging to a file with --log-file=.../path/to/file.log. Also, it's now possible to enable logging from JavaScript by appending command-line switches during the first JS tick. #29963
  • Added support for the des-ede3 cipher in node crypto. #27897
  • Added a ContextBridgeMutability feature that allows context bridge objects to be mutated. #27348

Modifications: éléments supprimés et dépréciés

Les API suivantes ont été supprimées ou sont désormais dépréciées :

  • The remote module has been removed after being deprecated in Electron 12. #25734
  • Child windows no longer inherit BrowserWindow construction options from their parents. #28550
  • Removed deprecated additionalFeatures property from new-window and did-create-window WebContents events. #28548
  • Removed the deprecated app.allowRendererProcessReuse and BrowserWindow affinity options. #26874
  • The submitURL option for crashReporter.start is no longer a required argument when uploadToServer is false. #28105

Fin du support pour 11.x.y

Electron 11.x.y a atteint la limite pour le support conformément à la politique d'assistance du projet. Nous encourageons les développeurs à mettre à jour vers une version plus récente d'Electron et de faire de même avec leurs applications.

Et maintenant ?

À court terme, vous pouvez compter sur l’équipe pour continuer a se concentrer sur le développement des principaux composants qui composent Electron, notamment Chromium, Node et V8. Bien que nous veillions à ne pas faire de promesses à propos des dates de publication, notre plan est la sortie de nouvelles versions majeures d'Electron avec de nouvelles versions de ces composants environ un trimestre.

For information on planned breaking changes in upcoming versions of Electron, see our Planned Breaking Changes.

WebView2 et Electron

· 7 mins de lecture

Au cours des dernières semaines, nous avons reçu plusieurs questions sur les différences entre la nouvelle WebView2 et Electron.

Les deux équipes ont pour but de transposer la technologie du web pour les application de Bureau de la meilleure façon possible et une comparaison faite en commun est en cours de discussion.

Electron et WebView2 sont des projets en évolution rapide et constante. Nous avons rassemblé un bref aperçu des similitudes et des différences entre Electron et WebView2 telles qu’elles existent aujourd’hui.


Vue d’ensemble de l’architecture

Electron et WebView2 sont tous deux issus des source de Chromium pour le rendu du contenu Web. À proprement parler, WebView2 est généré à partir des sources de Edge, mais Edge est construit à l’aide d’un fork de Chromium. Electron ne partage aucune DLL avec Chrome. Les fichiers binaires WebView2 sont liés fortement à Edge (canal stable à compter d’Edge 90), et partagent certains éléments. Voir le mode de distribution Evergreen pour plus d'informations.

Les applications Electron regroupent et distribuent toujours la version exacte d’Electron avec laquelle elles ont été développées. WebView2 a deux options pour la distribution. Vous pouvez soit empaqueter la même bibliothèque WebView2 utilisée pour le développement de votre application, soit utiliser une version partagée du runtime pouvant être déjà présente sur le système. WebView2 fournit des outils pour chaque approche, y compris un programme d’installation d’amorçage au cas où le runtime partagé serait manquant. WebView2 est inclus dans Windows 11.

Les applications qui incluent des frameworks sont responsables de leur mise à jour et ce même pour les versions mineures de sécurité. Pour les applications utilisant le runtime partagé WebView2, WebView2 possède son propre programme de mise à jour, similaire à Chrome ou Edge, qui s’exécute indépendamment de votre application. La mise à jour du code de l’application ou de l’une de ses dépendances est toujours une responsabilité du développeur, comme avec Electron. Electron et WebView2 ne sont pas gérés par Windows Update.

Electron et WebView2 héritent tous deux de l’architecture multi-processus de Chromium - à savoir, un processus principal unique qui communique avec un ou plusieurs processus de rendu. Ces processus sont entièrement séparés des autres applications exécutées sur le système. Chaque application Electron est une arborescence de processus séparée qui contient un processus de navigation racine, des processus utilitaires et éventuellement d'autres processus de rendu. Les applications WebView2 qui utilisent le même dossier de données utilisateur (comme le ferait une suite d’applications), partagent les processus qui ne concernent pas le rendu. Les applications WebView2 utilisant différents dossiers de données ne partagent pas de processus.

  • Modèle des processus d'Electron:

    Modèle des processus d'Electron

  • Modèle de processus des applications basées sur WebView2 :

    Schéma du modèle du processus WebView2

Pour en savoir plus sur le modèle de processus de WebView2, et sur le modèle de processus d' Electron, cliquez ici.

Electron fournit des API pour les besoins courants des applications de bureau telles que les menus, l'accès au système de fichiers, les notifications et plus encore. WebView2 est un composant destiné à être intégré dans un framework d'application tel que WinForms, WPF, WinUI ou Win32. WebView2 ne fournit pas d'API vers le système d'exploitation en dehors de la norme web via JavaScript.

Node.js est intégré dans Electron. Les applications Electron peuvent utiliser n'importe quelle API Node.js, module ou node-native-addon depuis le moteur de rendu et les processus principaux. Une application WebView2 ne suppose pas dans quel langage ou infrastructure le reste de votre application est écrit. Votre code JavaScript doit transmettre par proxy tout accès au système d’exploitation via le processus application-hôte.

Electron s'efforce de maintenir la compatibilité avec l'API web, y compris les API développées à partir du Projet Fugu. Nous avons un aperçu de la compatibilité de l’API Fugu d’Electron. WebView2 maintient une liste similaire de différences d'API par rapport à Edge.

Electron a un modèle de sécurité configurable pour le contenu web, qui va de l'accès complet au bac à sable. Le contenu WebView2 est toujours en bac à sable. Electron a une documentation de sécurité complète sur le choix de votre modèle de sécurité. WebView2 dispose également des : bonnes pratiques de sécurité.

Les sources d'Electron sont maintenues et disponibles sur GitHub. Les applications peuvent modifier et leurs propres version d'Electron. Les sources de WebView2 ne sont pas disponibles sur GitHub.

Résumé rapide:

ElectronWebView2
Installation des dépendancesChromiumEdge
Source disponible sur GitHubOuiNon
Partage des DLL Edge/ChromeNonOui (à compter de Edge 90)
Runtime partagé entre applicationsNonFacultatif
API d’applicationOuiNon
Node.jsOuiNon
Mode bac à sableFacultatifToujours
Nécessite un Framework d'applicationNonOui
Plateformes supportéesMac, Win, LinuxWin (Mac/Linux prévu)
Partage de processus entre applicationsJamaisFacultatif
Mises à jour du framework gérées parApplicationWebView2

Discussion sur les performances

En ce qui concerne le rendu de votre contenu web, nous nous attendons à peu de différence de performance entre Electron, WebView2 et tout autre moteur de rendu basé sur Chromium. Nous avons créé ossatures d'applications construites à l'aide d'Electron, C++ + WebView2, et C# + WebView2 pour les personnes intéressées à étudier les différences potentielles de performance.

Il y a quelques différences qui entrent en jeu en dehors du rendu de contenu web, et les gens d'Electron, WebView2, Edge, et d'autres personnes ont exprimé leur intérêt à travailler sur une comparaison détaillée, y compris les PWAs.

La communication inter-processus(IPC)

Nous voulons mettre en évidence immédiatement une différence , car nous pensons qu'il s'agit souvent d'une considération de performance dans les applications Electron.

Dans Chromium, le processus du navigateur agit comme un courtier d'IPC entre les moteurs de rendu en bac à sable et le reste du système. Tandis qu'Electron autorise les processus de rendu sans bac à sable (sandbox), de nombreuses applications choisissent d'activer le sandbox pour plus de sécurité. WebView2 a toujours le sandbox activé, donc pour la plupart des applications Electron et WebView2 les IPC peuvent affecter les performances globales.

Même si Electron et WebView2 ont des modèles de processus similaires, les IPC sous-jacents diffèrent. La communication entre JavaScript et C++ ou C# nécessite du marshalling, le plus souvent vers une chaîne JSON. La sérialisation/parsing JSON est une opération coûteuse, et les goulots d’étranglement IPC peuvent avoir un impact négatif sur les performances. À partir de Edge 93, WV2 utilisera CBOR pour les événements du réseau.

Electron prend en charge les IPC directement entre deux processus via l'API MessagePorts , qui utilise l'algorithme de clonage structuré. Les applications qui tirent parti de cela peuvent éviter de payer le tribut de la sérialisation JSON lors de l'envoi d'objets entre processus.

Récapitulatif

Electron et WebView2 ont un certain nombre de différences, mais ne vous attendez pas à une grande différence par rapport à la façon dont ils effectuent le rendu du contenu web. En définitive, l'architecture d'une application et ses bibliothèques/ frameworks JavaScript ont un impact plus important sur la mémoire et les performances que tout autre chose car de toute façon Chromium est Chromium peu importe où il fonctionne.

Remerciements spéciaux à l'équipe WebView2 pour avoir examiné ce post, et s'assurer que nous avons une vue actualisée de l'architecture WebView2. Ils seront heureux de recevoir tout commentaire sur le projet.