В блоге V8 вышла статья о сжатии указателей в движке. Вместо 64-битных указателей используются отступы в 32 байта, компрессия и декомпрессия которых происходит при записи и чтении. Это позволило уменьшить размер кучи примерно на 40% на популярных сайтах, что в свою очередь уменьшило потребление памяти процесса рендерера на 20%. Кроме того, снизилась утилизация центрального процессора и время работы сборщика мусора.
Ross Kirsling, разработчик из Sony в команде WebKit, некоторое время назад в IRC канале TC39 вместе с другими делегатами обсуждал особености пункта 3.3 дополнения B в спецификации ECMA-262 — Block-Level Function Declarations Web Legacy Compatibility Semantics, которое браузеры должны имплементировать для сохранения совместимости со старыми сайтами. Обсуждения этой одной из самых непредсказуемых частей спецификации вылилось в статью, о которой уже успел написать Defront.
Forwarded from Defront — про фронтенд-разработку и не только
Росс Кирслинг — участвует в разработке спецификации ECMAScript — написал статью про самую ужасающую часть спецификации — "Tales from "Ecma's Crypt": Annex B.3.3".
В JavaScript всегда была возможность использовать блоки (
Довольно сложно уместить подробный разбор статьи в небольшой пост, поэтому рекомендую заглянуть в источник, если вас заинтересовал этот кейс.
#js #specification
https://dev.to/rkirsling/tales-from-ecma-s-crypt-annex-b-3-3-56go
В JavaScript всегда была возможность использовать блоки (
{} ) не только с операторами if, while, for, но и как обособленную синтаксическую конструкцию (standalone block). Спецификация не описывала ситуацию, когда внутри блока определялась функция, поэтому исторически в разных браузерах этот сценарий был реализован по-разному. Для исправления этой проблемы в спецификацию был добавлен раздел, который фактически говорит о том, что определение функции внутри блока должно себя вести одновременно как var и let. Например, вот этот код не в strict-режиме выведет в консоль 1:var a = -1;
(function () {
const printOuter = () => console.log(a);
{
a = 1;
function a() {}
a = 2;
printOuter();
}
})();
Довольно сложно уместить подробный разбор статьи в небольшой пост, поэтому рекомендую заглянуть в источник, если вас заинтересовал этот кейс.
#js #specification
https://dev.to/rkirsling/tales-from-ecma-s-crypt-annex-b-3-3-56go
DEV Community
Tales from "Ecma's Crypt": Annex B.3.3 👻
Arguably the most horrifying part of the ECMAScript specification concerns the question: "What happ...
🦠 Сегодня было принято окончательное решение о том, что 76я встреча #TC39, которая должна была пройти со 2 по 4 июня в чикагском офисе PayPal, также будет полностью удалённой из-за карантинных мер и угрозы распространения коронавирусной инфекции.
📅 Последующие запланированные встречи в данный момент остаются оффлайновыми.
21-23 июля — Redmond, Microsoft
22-24 сентября — Tokyo, Bloomberg
17-19 ноября — Budapest, IBM
👀 Также сегодня начнётся 75я встреча TC39, которая также будет полностью удалённой (изначально должна была пройти в Купиертино, Apple), на которой я как всегда буду присутствовать и расскажу всё из первых уст. Актуальную повестку дня можно посмотреть тут.
📅 Последующие запланированные встречи в данный момент остаются оффлайновыми.
21-23 июля — Redmond, Microsoft
22-24 сентября — Tokyo, Bloomberg
17-19 ноября — Budapest, IBM
👀 Также сегодня начнётся 75я встреча TC39, которая также будет полностью удалённой (изначально должна была пройти в Купиертино, Apple), на которой я как всегда буду присутствовать и расскажу всё из первых уст. Актуальную повестку дня можно посмотреть тут.
GitHub
agendas/2020/03.md at main · tc39/agendas
TC39 meeting agendas. Contribute to tc39/agendas development by creating an account on GitHub.
В Firefox Nightly 76 включили AudioWorklet API по умолчанию.
https://bugzilla.mozilla.org/show_bug.cgi?id=1616723
https://bugzilla.mozilla.org/show_bug.cgi?id=1616723
bugzilla.mozilla.org
1616723 - set "dom.audioworklet.enabled" on Nightly
RESOLVED (karlt) in Core - Web Audio. Last updated 2020-03-30.
#WebAssembly Custom Annotation Syntax перемещается на phase 3 (фаза имплементации) по результатам встречи Community Group 31 марта.
GitHub
GitHub - WebAssembly/annotations: Proposal for Custom Annotation Syntax in the Text Format
Proposal for Custom Annotation Syntax in the Text Format - GitHub - WebAssembly/annotations: Proposal for Custom Annotation Syntax in the Text Format
Доброе утро. Немного апрельских новостей по релизам.
- Python 2 🐍 вроде как всё 💀 (но сперва должна выйти еще версия 2.7.18, спасибо @bro0ke).
- Node.js 10 LTS 🐢🚀 в этом месяце переходит в статус Maintainance, а 21 апреля ожидается релиз Node.js 14.
- сегодня или завтра должен произойти feature freeze ES2020 🧊 и мастер должен будет стать ES2021 (но с этим есть некоторые проблемы, об этом сегодня позже в отчете о первом дне встречи TC39)
- релиза Chrome 82, который был намечен на 28 апреля, не будет 🦠
- 7 апреля выйдет Firefox 75, в котором появится поддержка публичных статических полей классов
- Python 2 🐍 вроде как всё 💀 (но сперва должна выйти еще версия 2.7.18, спасибо @bro0ke).
- Node.js 10 LTS 🐢🚀 в этом месяце переходит в статус Maintainance, а 21 апреля ожидается релиз Node.js 14.
- сегодня или завтра должен произойти feature freeze ES2020 🧊 и мастер должен будет стать ES2021 (но с этим есть некоторые проблемы, об этом сегодня позже в отчете о первом дне встречи TC39)
- релиза Chrome 82, который был намечен на 28 апреля, не будет 🦠
- 7 апреля выйдет Firefox 75, в котором появится поддержка публичных статических полей классов
В V8 началась работа по имплементации пропозала Promise.any (stage 3)
https://bugs.chromium.org/p/v8/issues/detail?id=9808#c10
https://bugs.chromium.org/p/v8/issues/detail?id=9808#c10
GitHub
GitHub - tc39/proposal-promise-any: ECMAScript proposal: Promise.any
ECMAScript proposal: Promise.any. Contribute to tc39/proposal-promise-any development by creating an account on GitHub.
Вышла третья часть из серии Understanding the ECMAScript spec о том, как читать и понимать спецификацию.
Предыдущие части:
- первая
- вторая
Предыдущие части:
- первая
- вторая
v8.dev
Understanding the ECMAScript spec, part 3 · V8
Tutorial on reading the ECMAScript specification
В блоге WebKit вышла статья обо всех нововведениях в Safari 13.1. Список внушительный:
- Pointer and Mouse Events on iPadO
- Web Animations API
- Async Clipboard API
- JavaScript Improvements
- ResizeObserver
- HTML enterkeyhint Attribute
- CSS Shadow Parts
- More CSS Additions
- Media APIs
- Subtitles and Captions
- WebRTC Legacy Audio and Proxy Support
- Performance Improvements
- Security Improvements
- Intelligent Tracking Prevention Updates
- Web Platform Quality Improvements
- Web Inspector Updates
- Customized AR QuickLook
- Pointer and Mouse Events on iPadO
- Web Animations API
- Async Clipboard API
- JavaScript Improvements
- ResizeObserver
- HTML enterkeyhint Attribute
- CSS Shadow Parts
- More CSS Additions
- Media APIs
- Subtitles and Captions
- WebRTC Legacy Audio and Proxy Support
- Performance Improvements
- Security Improvements
- Intelligent Tracking Prevention Updates
- Web Platform Quality Improvements
- Web Inspector Updates
- Customized AR QuickLook
WebKit
New WebKit Features in Safari 13.1
This year’s spring releases of Safari 13.1 for macOS Catalina, iPadOS, iOS, and watchOS bring a tremendous number of WebKit improvements for the web across Apple’s platforms.
Andy Wingo написал статью о добавлении фичи Multi-value (phase 4) в SpiderMonkey.
GitHub
multi-value/Overview.md at master · WebAssembly/multi-value
Proposal to add multi-values to WebAssembly. Contribute to WebAssembly/multi-value development by creating an account on GitHub.
Разработчики Chromium начинают откатывать изменения, связанные с SameSite. Указывается, что причина такого решения — COVID-19, и они хотят чтобы банки, онлайн магазины, сайты правительства и здравоохранения работали стабильно.
Chromium Blog
Temporarily rolling back SameSite Cookie Changes
UPDATE 5/28: We are going to resume the rollout with the stable release of Chrome M84. More details . With the stable release of Chrome 8...
Node.js вводит некоторые изменения в календарь релизов. Это касается только веток 10 (фаза maintainance продлена) и 12 (релизы будут отложены). Изменения вводятся из-за пандемии COVID-19.
Гуглеры написали статью Ensure your website is available and usable for everyone during COVID-19. Кажется в ближайшее время компания собирается эксплуатировать трендовое инфекционное заболевание везде, где только можно.
web.dev
Ensure your website is available and usable for everyone during COVID-19
How to ensure that the core functionality of your website is always available, accessible, secure, usable, discoverable, and fast.
Ещё в 2018 WHATWG заметили, что браузеры не следуют спецификации HTML и начинают исполнять
Кстати, сегодня должен выйти Firefox 75.
<script defer> ещё до того, как завершен парсинг стилей. Единственным браузером, который соблюдал спецификацию, был старый дохромиумный Microsoft Edge. Firefox 76 (выйдет 5 мая) изменяет свое поведение, чтобы ожидать загрузку и парсинг стилей до начала исполнения отложенных скриптов. Проверить поведение уже можно в Firefox 76 Nightly.Кстати, сегодня должен выйти Firefox 75.
GitHub
<script defer> needs to wait for style sheets · Issue #3890 · whatwg/html
See https://bugzilla.mozilla.org/show_bug.cgi?id=1404468 and in particular https://bugzilla.mozilla.org/show_bug.cgi?id=1404468#c58 by @bzbarsky. There's various sites that depend on style ...
Вышла версия 11.2 Beta браузера Samsung Internet для Android. Из нового:
- кастомизация UI
- новая фича приватности Block unwanted webpages
- улучшенный анти-трекинг
- опция для блокировки открытия приложений по ссылке
- кастомизация UI
- новая фича приватности Block unwanted webpages
- улучшенный анти-трекинг
- опция для блокировки открытия приложений по ссылке
Medium
New Features in Samsung Internet Beta!
11.2 has landed in the Play Store, download it to try out new features.
🥁Все главные результаты 75й встречи #TC39 в одном посте.
🚀 предложение import.meta перешло на stage 4 (слайды)
✅ предложение Logical Assignment Operators переходит на stage 3 (слайды)
🐣 новое предложение Number.range & BigInt.range отправляется на stage 1 (слайды)
🐣 новое предложение Ergonomic brand checks for Private Fields отправляется на stage 1
🐣 новое предложение Compartments переходит на stage 1
🐣 новое ECMA402 предложение Intl.NumberFormat V3 переходит на stage 1 (слайды)
Не продвинулись на следующий stage:
- TypedArray stride parameter не переходит на stage 2 (слайды)
- this argument reflection of functions не переходит на stage 1 (слайды)
- Relax Hashbang Syntax не переходит на stage 1 (слайды)
Обновления предложений:
- Temporal (stage 2) (слайды)
- Decorators (stage 2) (слайды)
- Decimal (stage 1) (слайды)
- у Pattern Matching (stage 1) новые чемпионы
- для добавления новых типов Record и Tuple (stage 1) понадобились два новых пропозала RefCollection и Deep Path Properties in Record Literals, которые теперь stage 0 (слайды)
Принятые нормативные изменения в спецификацию:
- Surrogate pairs in RegExp capture groups
- SharedArrayBuffer станет опциональным для хостов, что делает многопоточной необязательным требованием к имплементациям
- опшнл чейнинг теперь можно будет использовать с приватными идентификаторами. При это было решено, что попытка o?.#field все еще должна приводить к выбросу исключения
- WeakRefs FinalizationRegistry API
- исправления Atomics.waitAsync
- Generically forbid extensions of all 402 methods
- Aligning atomics with wasm: allow it on non-shared ArrayBuffers
Другие презентации:
- отчёт секретариата TC39. Из интересной статистики: на стандарты TC39 (и в первую очередь спецификацию JavaScript, ECMA-262) приходится половина скачиваний всех стандартов Ecma; очень много посещений страниц у устаревших версий спецификиции — ES6/ES2015 и ES5.1
- отчёт редакторов ECMA-262. Была создана ветка для версии стандарта ES2020, опубликован релиз кандидат. Мастер ветка теперь 2021.
- отчёт редакторов ECMA-402. Была создана ветка для версии стандарта 2020 года и опубликован релиз кандидат. Мастер ветка теперь 2021.
- презентация от Google об изменении графиков релизов Chrome
- всем пропозалам, которые хотят получить stage 1, теперь обязательно нужно иметь публичный репозиторий
- Gus Caplan из OpenJS Foundation представил свой проект engine262, который представляет собой реализацию движка JavaScript на языке JavaScript и используется, например, мейнтейнерами Test262 suite
- (Remote) Plenary 2020 - 2021
- на прошлой встрече в процессы комитета были внесены некоторые изменения. По этим изменениям была представлена презентация.
🚀 предложение import.meta перешло на stage 4 (слайды)
✅ предложение Logical Assignment Operators переходит на stage 3 (слайды)
🐣 новое предложение Number.range & BigInt.range отправляется на stage 1 (слайды)
🐣 новое предложение Ergonomic brand checks for Private Fields отправляется на stage 1
🐣 новое предложение Compartments переходит на stage 1
🐣 новое ECMA402 предложение Intl.NumberFormat V3 переходит на stage 1 (слайды)
Не продвинулись на следующий stage:
- TypedArray stride parameter не переходит на stage 2 (слайды)
- this argument reflection of functions не переходит на stage 1 (слайды)
- Relax Hashbang Syntax не переходит на stage 1 (слайды)
Обновления предложений:
- Temporal (stage 2) (слайды)
- Decorators (stage 2) (слайды)
- Decimal (stage 1) (слайды)
- у Pattern Matching (stage 1) новые чемпионы
- для добавления новых типов Record и Tuple (stage 1) понадобились два новых пропозала RefCollection и Deep Path Properties in Record Literals, которые теперь stage 0 (слайды)
Принятые нормативные изменения в спецификацию:
- Surrogate pairs in RegExp capture groups
- SharedArrayBuffer станет опциональным для хостов, что делает многопоточной необязательным требованием к имплементациям
- опшнл чейнинг теперь можно будет использовать с приватными идентификаторами. При это было решено, что попытка o?.#field все еще должна приводить к выбросу исключения
- WeakRefs FinalizationRegistry API
- исправления Atomics.waitAsync
- Generically forbid extensions of all 402 methods
- Aligning atomics with wasm: allow it on non-shared ArrayBuffers
Другие презентации:
- отчёт секретариата TC39. Из интересной статистики: на стандарты TC39 (и в первую очередь спецификацию JavaScript, ECMA-262) приходится половина скачиваний всех стандартов Ecma; очень много посещений страниц у устаревших версий спецификиции — ES6/ES2015 и ES5.1
- отчёт редакторов ECMA-262. Была создана ветка для версии стандарта ES2020, опубликован релиз кандидат. Мастер ветка теперь 2021.
- отчёт редакторов ECMA-402. Была создана ветка для версии стандарта 2020 года и опубликован релиз кандидат. Мастер ветка теперь 2021.
- презентация от Google об изменении графиков релизов Chrome
- всем пропозалам, которые хотят получить stage 1, теперь обязательно нужно иметь публичный репозиторий
- Gus Caplan из OpenJS Foundation представил свой проект engine262, который представляет собой реализацию движка JavaScript на языке JavaScript и используется, например, мейнтейнерами Test262 suite
- (Remote) Plenary 2020 - 2021
- на прошлой встрече в процессы комитета были внесены некоторые изменения. По этим изменениям была представлена презентация.
GitHub
agendas/2020/03.md at main · tc39/agendas
TC39 meeting agendas. Contribute to tc39/agendas development by creating an account on GitHub.
Новый пропозал https://github.com/bmeck/proposal-from-import предлагает добавить синтаксис
from "foo" import {bar}; для импорта модулей. Это поможет редакторам кода легко имплементировать подсказки автодополнения.GitHub
GitHub - bmeck/proposal-from-import: AKA: make code completion work.
AKA: make code completion work. Contribute to bmeck/proposal-from-import development by creating an account on GitHub.
Вышел Firefox 75.
Из интересного:
- поддержка атрибута loading для тега
- поддержка функций min(), max() и clamp() в CSS
- улучшения accessibility
- поддержа Public static class fields (stage 3)
- поддержка Intl.Locale (ECMA-402 выпуска 2020)
- улучшения Web Animations API
Списки изменений:
- для разработчиков
- для пользователей
- совместимости
Из интересного:
- поддержка атрибута loading для тега
<img>- поддержка функций min(), max() и clamp() в CSS
- улучшения accessibility
- поддержа Public static class fields (stage 3)
- поддержка Intl.Locale (ECMA-402 выпуска 2020)
- улучшения Web Animations API
Списки изменений:
- для разработчиков
- для пользователей
- совместимости
Вебня
Вышел Firefox 75. Из интересного: - поддержка атрибута loading для тега <img> - поддержка функций min(), max() и clamp() в CSS - улучшения accessibility - поддержа Public static class fields (stage 3) - поддержка Intl.Locale (ECMA-402 выпуска 2020) - улучшения…
Вышла статья на Mozilla Hacks с описанием главных фич Firefox 75.
https://hacks.mozilla.org/2020/04/firefox-75-ambitions-for-april/
https://hacks.mozilla.org/2020/04/firefox-75-ambitions-for-april/
Mozilla Hacks – the Web developer blog
Firefox 75: Ambitions for April
Firefox 75 is chock full of handy new dev tooling: instant evaluation in the web console, event breakpoints for WebSockets, and more. New web platform features include HTML lazy loading ...
Состоялся отложенный ранее выпуск Chrome 81. В нём появились:
- поддержка NFC (в рамках origin trial)
- Hit Test API для обнаружения позиций пересечения объектов WebXR и реального мира
- Badging API
- V8 получил поддержку Intl.DiaplayNames (stage 3).
Более подробно нововведения и изменения рассмотрены в статье на блоге Chromium.
Ещё статьи:
- What's new in Chrome DevTools (81)
- Chrome 81 deprecations & removals
- ChromeStatus.com updates for Chrome 81
- What's new in JavaScript in Chrome 81
Короткое обзорное видео: https://www.youtube.com/watch?v=ihjL0mcnlQs
- поддержка NFC (в рамках origin trial)
- Hit Test API для обнаружения позиций пересечения объектов WebXR и реального мира
- Badging API
- V8 получил поддержку Intl.DiaplayNames (stage 3).
Более подробно нововведения и изменения рассмотрены в статье на блоге Chromium.
Ещё статьи:
- What's new in Chrome DevTools (81)
- Chrome 81 deprecations & removals
- ChromeStatus.com updates for Chrome 81
- What's new in JavaScript in Chrome 81
Короткое обзорное видео: https://www.youtube.com/watch?v=ihjL0mcnlQs
Chrome Developers
New in Chrome 81 - Chrome Developers
Chrome 81 is rolling out now! App icon badging graduates from it's origin trial. Hit testing for augmented reality is now available in the browser. Web NFC starts its origin trial. And I've got an update on the adjusted Chrome release schedule. Let's dive…