Вебня
4.69K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
С сегодняшнего дня мастер ветка репозитория спецификации содержит версию ES2020, а ES2019 выделен в отдельную ветку. Напомню, что следуя документу процесса TC39, feature freeze ES2019 происходит после январской встречи, а все последующие предложения в спецификацию, которые достигнут stage 4, попадут уже в ES2020. Официальный релиз ES2019 произойдет в июле.

https://twitter.com/bterlson/status/1101226568985174016
Hashbang Grammar добавили в SpiderMonkey. В Firefox Nightly изменение пока не доехало, но скоро выкатится (а в Chrome Canary 74 уже есть). Такой синтаксис нужен для запуска скриптов в unix-системах интерпретатором (в случае с js это в основном, конечно, NodeJS). Поддержка на уровне языка позволит считать такую строку комментарием и соответственно игнорировать её. Так можно переиспользовать скрипты как из CLI окружений, так и в движках JavaScript.

https://bugzilla.mozilla.org/show_bug.cgi?id=1519097
В Firefox собираются сделать String.prototype.matchAll доступным без каких-либо флагов во всех сборках. На данный момент эта фича доступна только в Nightly.

https://bugzilla.mozilla.org/show_bug.cgi?id=1531830
Бенедикт Мойрер (команда Google V8) опубликовал свои исследования производительности конкатенации строк в JavaScript и конкретно в V8.
bit.ly/fast-string-concatenation-in-javascript
Рабочая группа W3C Web Authentication опубликовала W3C Recommendation спецификации Web Authentication: An API for accessing Public Key Credentials Level 1 (WebAuthn). Этот API позволяет веб-приложениям использовать простую и надежную аутентификацию и уже поддерживатся в Windows 10, Android, а также браузерах Chrome, Firefox, Edge и Safari. Подробнее в пресс-релизе от W3C и FIDO Alliance:
https://www.w3.org/2019/03/pressrelease-webauthn-rec.html
Совсем забыл написать вчера огненную новость 🔥 (но возможно Вы уже в курсе).
В Chrome 73, который выйдет уже через неделю (12 марта) убрали поддержку Web Components v0, что привело к поломке некоторых сайтов, например… YouTube. Этот видеосервис от Google использует JavaScript библиотеку Polymer 1.0, основанную на устаревшей версии веб-компонентов и добавляет полифиллы для всех браузеров, кроме основанных на Chromium. Проверки на версию Chromium на YouTube до сих пор нет, поэтому в Canary он выглядит как на скриншоте. Представители команды Polymer прокомментировали это под твитом от Веса Боса.
Данный факт стал причиной появления множества шуток с использованием слогана от команды Polymer “Use the platform”.
Пока разработчики JavaScript движков занимаются имплементацией приватных полей классов (а разработчики V8 уже реализовали их и добавили без флага в Chrome 74), споры вокруг этого предложения в спецификацию не угасают. Одна из свежих issue: “private fields will break vue/mobx”. Также можно почитать последние комментарии из “Private members break proxies”.
На только что завершившейся встрече #WebAssembly Community Group был достигнут консенсус по переносу предложения Bulk memory operations с phase 2 на phase 3 (фаза имплементации). В настоящее время это предложение уже реализовано в SpiderMonkey и V8.
Релиз Safari TP 77 с изменениями в WebRTC, обновлениями CSS Grid, исправлениями доступности, улучшениями Web inspector и пр.
https://webkit.org/blog/8658/release-notes-for-safari-technology-preview-77/
В Firefox 67 собираются убрать флаг для динамических импортов и включить их подефолту.
https://bugzilla.mozilla.org/show_bug.cgi?id=1517546
А вот это интересно. Некоторые члены #TC39 отказываются принять динамические импорты в стандарт из-за проблем безопасности. При этом они уже заимплеменчены во всех браузерах (относительно Firefox см. новость выше).
https://twitter.com/_gsathya/status/1103430437920104448
String.prototype.matchAll теперь доступен в Firefox 67 Nightly без флага
https://bugzilla.mozilla.org/show_bug.cgi?id=1531830
Вышел Chrome 73.

Из изменений в JavaScript:
- Object.fromEntries()
- String.prototype.matchAll()
- Atomics.wake() переименован в Atomics.notify() в соответствии с изменениями в спецификации

Другие изменения:
- добавлена поддержка PWA на всех платформах, и теперь они доступны везде
- Signed HTTP Exchanges
- Constructable style sheets
- тёмный режим теперь доступен на macOS

https://developers.google.com/web/updates/2019/03/nic73
В кодовую базу Firefox наконец-то добавили флаг для включения Class Fields. Ждем в ближайшем обновлении Firefox Nightly
https://bugzilla.mozilla.org/show_bug.cgi?id=1529758
В V8 7.4 добавился JIT-less режим, который позволяет использовать движок на платформах с запретом аллокации памяти для исполнения команд непривилигированными приложениями на таких платформах как iOS, Smart TV и игровых консолях или же запретить такие аллокации принудительно для дополнительной безопасности.
https://v8.dev/blog/jitless
В Chrome 74 (в данный момент beta) добавлен первый модуль из Layered APIsKV Storage. Он представляет собой асинхронную замену Local Storage и реализован поверх IndexedDB. На TPAC 2018 было достигнуто соглашение, согласно которому после выхода из инкубационного периода KV Storage планируется добавить в спецификацию IndexedDB.

https://developers.google.com/web/updates/2019/03/kv-storage
Предложение Function.prototype.toString переименовано в Function implementation hiding. Предлагается использовать директиву ”hide implementation”, которая как и директива ”use strict” может быть использована на уровне файла исходников или на уровне фунции.
https://github.com/tc39/proposal-function-implementation-hiding