Существует несколько причин, почему js-движки не всегда активно внедряют новые стандарты ECMAScript:
1. Сложность реализации: Новые стандарты могут включать сложные функции и синтаксические конструкции, которые требуют значительных усилий для их реализации в движке. Это может потребовать значительного времени и ресурсов для разработчиков движка.
2. Стадия разработки стандарта: Новые стандарты обычно проходят через несколько стадий разработки, начиная с предложений и заканчивая окончательным утверждением стандарта. В течение этого процесса могут вноситься изменения и корректировки, что может затруднить реализацию стандарта в движке до его окончательной версии.
3. Совместимость существующего кода: Внедрение новых стандартов может привести к неправильной работе или неработоспособности существующего кода, который был написан для предыдущих версий стандарта ECMAScript. Это может быть проблемой, особенно для движков, которые широко используются в промышленном коде.
4. Повышение производительности: Некоторые новые возможности и функции, введенные в новых стандартах, могут иметь негативное влияние на производительность движка. Реализация и оптимизация этих функций может потребовать времени и усилий.
Использование инструментов, таких как Babel, позволяет разработчикам использовать новые возможности ECMAScript даже до их полной поддержки в js-движках. Babel преобразует код на последнем стандарте в совместимый код, который может работать на более старых движках JavaScript. Это облегчает жизнь разработчикам, позволяя им использовать современные возможности языка без ожидания их полной поддержки в движках.
С учетом этих факторов, задержка в поддержке новых возможностей стандарта ECMAScript в js-движках является обычной практикой. Движки обычно стремятся поддерживать новые стандарты, но это требует времени и усилий, чтобы обеспечить стабильность и совместимость существующего кода.