Вебня
4.66K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Отличные новости! Microsoft передаёт движок ChakraCore в опенсорс коммьюнити. Инженеры компании будут выпускать патчи безопасности до 9 марта 2021, после чего надеются, что разработку подхватит коммьюнити.
Andy Wingo из Igalia опубликовал статью о Baseline #WebAssembly компиляторе в составе SpiderMonkey. Статья скорее вводная, она написана простям языком и объясняет самые основы, которые свойствены не только baseline компилятору из SpiderMonkey, но и V8, и JSC.
На блоге Google для веб-разработчиков опубликована статья об использовании Trusted Types для предотвращения DOM-based XSS атак. Фича должна была появиться в Chrome 82, релиз которого, как мы знаем, будет пропущен. Так что ждём теперь в Chrome 83.
Вышел TypeScript 3.9 Beta. В нём:
- улучшен вывод типов значений, обёрнутых в Promise combinators
- оператор типа awaited отложен на последующие релизы
- значительно увеличена скорость компиляции (например, для material-ui время компиляци уменьшилось на 40%)
- добавлена поддержка комментария // @ts-expect-error, который позволяет указать, что ошибка TypeScript ожидаема (например, для тестов)
- проверку на невызванную функцию теперь работают и в тернарных операторах
- улучшения поддержки редакторов и IDE
- поддержка автоимпорта CommonJS модулей
- улучшения рефакторинга
- несколько breaking changes (да, TypeScript не использует semver)
В Chrome обсуждается возможность включения #WebAssembly SIMD в origin trails для экспериментов на реальных приложениях. Эта фаза должна продлиться с Chrome 84 (изначально был запланирован на 4 августа, но график может поменяться) по Chrome 89, что займет примерно полгода.
Разработчики Edge и Chrome обновили внешний вид элементов форм в Chromium. Эти изменения можно включить флагом chrome://flags/#form-controls-refresh. На десктопах они появятся по умолчанию в Chrome 83, а на Android позже.

https://blog.chromium.org/2020/03/updates-to-form-controls-and-focus.html
В блоге 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.
Росс Кирслинг — участвует в разработке спецификации ECMAScript — написал статью про самую ужасающую часть спецификации — "Tales from "Ecma's Crypt": Annex B.3.3".

В 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
🦠 Сегодня было принято окончательное решение о том, что 76я встреча #TC39, которая должна была пройти со 2 по 4 июня в чикагском офисе PayPal, также будет полностью удалённой из-за карантинных мер и угрозы распространения коронавирусной инфекции.

📅 Последующие запланированные встречи в данный момент остаются оффлайновыми.
21-23 июля — Redmond, Microsoft
22-24 сентября — Tokyo, Bloomberg
17-19 ноября — Budapest, IBM

👀 Также сегодня начнётся 75я встреча TC39, которая также будет полностью удалённой (изначально должна была пройти в Купиертино, Apple), на которой я как всегда буду присутствовать и расскажу всё из первых уст. Актуальную повестку дня можно посмотреть тут.
Доброе утро. Немного апрельских новостей по релизам.

- 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, в котором появится поддержка публичных статических полей классов
Вышла третья часть из серии Understanding the ECMAScript spec о том, как читать и понимать спецификацию.

Предыдущие части:
- первая
- вторая
В блоге 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
Разработчики Chromium начинают откатывать изменения, связанные с SameSite. Указывается, что причина такого решения — COVID-19, и они хотят чтобы банки, онлайн магазины, сайты правительства и здравоохранения работали стабильно.
Node.js вводит некоторые изменения в календарь релизов. Это касается только веток 10 (фаза maintainance продлена) и 12 (релизы будут отложены). Изменения вводятся из-за пандемии COVID-19.