Comme l’a déclaré Zibi Braniecki, ingénieur logiciel senior chez Mozilla qui participe au développement du langage de script à la base de JavaScript, la version 2018 d'ECMAScript, qui sortira probablement en juin, est en bonne voie : quatre propositions de fonctionnalités sont finalisées et quatre autres sont à l'étude. Voici celles qui ont été finalisées et seront incluses dans la spécification ECMAScript 2018.

- Suppression de la restriction syntaxique des séquences d'échappement dans les modèles étiquetés du template pour permettre l'intégration d’autres langages, y compris des langages spécifiques du type DSL ou Latex. Actuellement, les restrictions sur les séquences d’échappement et notamment sur le littéral de modèle « escape » posent problème. La révision corrige le comportement des littérales et autorise leur utilisation pour les DSL de sorte que les programmeurs peuvent créer leurs propres mini-langages si nécessaire.

- Ajout de l’indicateur « s » (dotAll) pour les expressions rationnelles, afin de rendre le comportement de ces expressions cohérent. « La fonctionnalité doit remédier aux limitations dans lesquelles le point (.) dans les expressions rationnelles ne correspond pas aux caractères de fin de ligne », comme l’a expliqué l'auteur Axel Rauschmeyer. L'indicateur « s » modifie cela. Cet indicateur fonctionnera sur une base opt-in, de sorte que les modèles d'expressions régulières existants ne seront pas affectés.

- Itérateurs asynchrones : ajout du support syntaxique pour l'itération asynchrone en utilisant les protocoles AsyncIterable et AsyncIterator. Cette fonctionnalité permet d'ajouter une proposition d’itération « for-await-of » et d’ajouter une syntaxe pour créer des fonctions et des méthodes de générateur asynchrone.

- Propriétés Rest/Spread : elles apportent une amélioration syntaxique mineure.

« Les itérateurs asynchrones permettent d’écrire une nouvelle classe de logiciels et donc de résoudre de nouvelles classes de problèmes », a encore déclaré Zibi Braniecki. Cette fonctionnalité combine deux fonctions puissantes apparues ces dernières années dans JavaScript : les opérations asynchrones et les itérateurs/générateurs. Les générateurs et les itérateurs permettent une exécution de code peu raffinés tandis que les opérations asynchrones empêchent un blocage du code. Combinées ensemble, ces fonctions permettent aux développeurs d'écrire du code un peu grossier, mais dont l’exécution restera fluide.

Des fonctions intégrées cette année dans les navigateurs

Comme l’a indiqué par ailleurs Zibi Braniecki, « quatre autres propositions pouvant faciliter la programmation avec JavaScript sont également à l'étude » :

- Assertions Regexp (expression rationnelle) arrières (Lookbehind) : corrigent une lacune avec les assertions zéro-largeur « Lookarounds » qui renvoient à une chaîne sans modifier quoi que ce soit. Actuellement, les assertions « Lookaround » peuvent être utilisées vers l'avant, mais pas vers l'arrière. Avec des assertions de type « lookbehind », les développeurs pourraient vérifier qu'un motif est ou n'est pas précédé d'un autre. Par exemple, faire correspondre un montant en dollars sans capturer le signe « dollar ».

- La propriété d’échappement Unicode de Regexp fournit aux développeurs une meilleure solution pour accéder aux propriétés de caractères Unicode. La propriété d’échappement sous la forme \p{…} et \P{…} serait ajoutée.

- Propriété Promise.prototype.finally : permettrait d’écrire du code plus propre quand un programmeur ne ferme pas le socket ou ne nettoie pas la mémoire. Une classe d'erreurs serait supprimée.

- Mise à jour de la fonction Function.prototype.toString. La méthode toString () renverrait une chaîne représentant le code source d'une fonction.

Zibi Braniecki pense que les fonctionnalités ECMAScript 2018 seront implémentées dans les navigateurs cette année. Certaines ont déjà été mises en œuvre. S’il considère la mise à jour ECMAScript 2018 comme assez modeste, celui-ci prévoit l’arrivée de fonctionnalités plus importantes l’an prochain. En particulier autour des itérateurs asynchrones et de l'extension des classes qui font actuellement l’objet de discussions. Un brouillon de la spécification ECMAScript 2018 est disponible sur GitHub, ainsi qu’une liste des propositions.