На втором дне текущего #TC39 пропозал .item() method on all the built-in indexables взял stage 3. О том, в чём польза этого предложения для JavaScript разработчиков, а также как этот метод позволит улучшить DOM API, в статье Axel Raushcmayer.
https://2ality.com/2020/09/item-method.html
P.S. в этот раз я не веду лайвы с TC39 из-за крайне неудобной таймзоны проведения, поэтому все окончательные результаты выложу одним сообщением (скорее всего уже завтра).
https://2ality.com/2020/09/item-method.html
P.S. в этот раз я не веду лайвы с TC39 из-за крайне неудобной таймзоны проведения, поэтому все окончательные результаты выложу одним сообщением (скорее всего уже завтра).
GitHub
GitHub - tc39/proposal-relative-indexing-method: A TC39 proposal to add an .at() method to all the basic indexable classes (Array…
A TC39 proposal to add an .at() method to all the basic indexable classes (Array, String, TypedArray) - GitHub - tc39/proposal-relative-indexing-method: A TC39 proposal to add an .at() method to al...
Извиняюсь за то, что целую неделю не было новостей. Было очень много других дел. А новостей накопилось очень много. Главная из них, пожалуй, это то, что на прошлой неделе была встреча #TC39, о результатах которой стоит рассказать.
Результаты 78 встречи TC39 (21 - 24 сентября)
🚀 ECMA402 пропозал Intl.DisplayNames переходит на stage 4 (слайды)
✅ пропозал .item() переходит на stage 3 (слайды)
✅ Import Assertions переходят на stage 3 (слайды)
🐥 ECMA402 Intl Enumeration API переходит на stage 2 (слайды)
🐥 Class static initialization block переходит на stage 2 (слайды)
🐥 Resizable and growable ArrayBuffers переходит на stage 2 (слайды)
🐣 новое предложение String.dedent переходит на stage 1 (слайды)
🐣 новое предложение ECMA402 Intl.DisplayNames V2 переходит на stage 1 (слайды)
🐣 новое предложение ECMA402 Intl.Locale info переходит на stage 1 (слайды)
🐣 новое предложение Error Cause переходит на stage 1 (слайды)
🐣 новое предложение Double-Ended Iterator and Destructuring переходит на stage 1 (слайды)
🐣 новое предложение Standardized Debug переходит на stage 1 (слайды)
🐣 новое предложение Modulus and Additional Integer Math переходит на stage 1 (слайды)
Не продвинулись на следующий stage по результатам встречи:
- Class Access Expressions остаётся на stage 2 (слайды)
- Ergonomic Brand Checks for Private Fields остаётся на stage 2 (слайды)
- Builtin Modules остаётся на stage 1 (слайды)
- Unused Function Parameters не смог продвинуться на stage 1 (слайды)
Обновления по пропозалам:
- Numeric literal suffixes stage 1 обновление (слайды)
- Withdrawing TypedArray stride stage 1 обновление — пропозал снимается и не будет дальше развиваться
- JSON Modules stage 2 обновление (слайды)
- Records & Tuples stage 2 обновление (слайды)
- Decorators stage 2 обновление (слайды)
- Temporal stage 2 обновление (слайды)
- Status update for class fields, private methods, static class features (слайды) — все 3 эти stage 3 пропозала будут объединены перед продвижением на stage 4
Принятые нормативные изменения:
- Explicitly specify order of operations in MakeTime
- Move proto out of annex B
- Align detached buffer semantics with web reality
- Specify order of name and length for built-in functions
- Arbitrary Strings as export/import names
Другие обсуждения:
- F.p.bind with infinite-length functions
- Date arithmetic (слайды)
- Move outreach groups to the TC39 org
- GetOption in ECMA-262
- Process document clarifications
- Conformance for enumerable options in 262 and 402 (слайды)
Результаты 78 встречи TC39 (21 - 24 сентября)
🚀 ECMA402 пропозал Intl.DisplayNames переходит на stage 4 (слайды)
✅ пропозал .item() переходит на stage 3 (слайды)
✅ Import Assertions переходят на stage 3 (слайды)
🐥 ECMA402 Intl Enumeration API переходит на stage 2 (слайды)
🐥 Class static initialization block переходит на stage 2 (слайды)
🐥 Resizable and growable ArrayBuffers переходит на stage 2 (слайды)
🐣 новое предложение String.dedent переходит на stage 1 (слайды)
🐣 новое предложение ECMA402 Intl.DisplayNames V2 переходит на stage 1 (слайды)
🐣 новое предложение ECMA402 Intl.Locale info переходит на stage 1 (слайды)
🐣 новое предложение Error Cause переходит на stage 1 (слайды)
🐣 новое предложение Double-Ended Iterator and Destructuring переходит на stage 1 (слайды)
🐣 новое предложение Standardized Debug переходит на stage 1 (слайды)
🐣 новое предложение Modulus and Additional Integer Math переходит на stage 1 (слайды)
Не продвинулись на следующий stage по результатам встречи:
- Class Access Expressions остаётся на stage 2 (слайды)
- Ergonomic Brand Checks for Private Fields остаётся на stage 2 (слайды)
- Builtin Modules остаётся на stage 1 (слайды)
- Unused Function Parameters не смог продвинуться на stage 1 (слайды)
Обновления по пропозалам:
- Numeric literal suffixes stage 1 обновление (слайды)
- Withdrawing TypedArray stride stage 1 обновление — пропозал снимается и не будет дальше развиваться
- JSON Modules stage 2 обновление (слайды)
- Records & Tuples stage 2 обновление (слайды)
- Decorators stage 2 обновление (слайды)
- Temporal stage 2 обновление (слайды)
- Status update for class fields, private methods, static class features (слайды) — все 3 эти stage 3 пропозала будут объединены перед продвижением на stage 4
Принятые нормативные изменения:
- Explicitly specify order of operations in MakeTime
- Move proto out of annex B
- Align detached buffer semantics with web reality
- Specify order of name and length for built-in functions
- Arbitrary Strings as export/import names
Другие обсуждения:
- F.p.bind with infinite-length functions
- Date arithmetic (слайды)
- Move outreach groups to the TC39 org
- GetOption in ECMA-262
- Process document clarifications
- Conformance for enumerable options in 262 and 402 (слайды)
GitHub
GitHub - tc39/proposal-intl-displaynames: Get localized display names for languages, scripts, regions and others. https://tc39…
Get localized display names for languages, scripts, regions and others. https://tc39.github.io/proposal-intl-displaynames/ - tc39/proposal-intl-displaynames
А по результатам вчерашней встречи #WebAssembly Community Group, продвинулись следующие пропозалы:
- Memory 64 отправляется на phase 2
- Relaxed dead code validation будет отправлен на phase 1 как только будет создан репозиторий под организацией WebAssembly на GitHub
- Memory 64 отправляется на phase 2
- Relaxed dead code validation будет отправлен на phase 1 как только будет создан репозиторий под организацией WebAssembly на GitHub
GitHub
meetings/CG-09-29.md at main · WebAssembly/meetings
WebAssembly meetings (VC or in-person), agendas, and notes - meetings/CG-09-29.md at main · WebAssembly/meetings
На прошлой неделе вышел Tor Browser 10, который теперь основан на Firefox ESR 78.3.0 (самая свежая ESR ветка, в Tor Browser 10 использовалась ESR 68) и Tor 0.4.4.5.
https://blog.torproject.org/new-release-tor-browser-100
https://blog.torproject.org/new-release-tor-browser-100
blog.torproject.org
New Release: Tor Browser 10 | Tor Project
Tor Browser 10.0 for Desktop is now available from the Tor Browser download page and also from our distribution directory.
Из новостей фронтенд библиотек с прошлой недели:
Команда React выпустила новый JSX Transform, который позволит использовать JSX без импорта React в модуль, немного уменьшит размер бандла, а также создаст основу для дальнейших нововведений
Вышли Early Preview Release библиотек LitElement 3.0 и lit-html 2.0. Там много изменений, в том числе breaking, но большинство из них не должны задеть большинство пользователей. Из интересного стоит отметить поддержку серверного рендеринга в новом lit-html.
Команда React выпустила новый JSX Transform, который позволит использовать JSX без импорта React в модуль, немного уменьшит размер бандла, а также создаст основу для дальнейших нововведений
Вышли Early Preview Release библиотек LitElement 3.0 и lit-html 2.0. Там много изменений, в том числе breaking, но большинство из них не должны задеть большинство пользователей. Из интересного стоит отметить поддержку серверного рендеринга в новом lit-html.
legacy.reactjs.org
Introducing the New JSX Transform – React Blog
This blog site has been archived. Go to react.dev/blog to see the recent posts. Although React 17 doesn’t contain new features, it will provide support for a new version of the JSX transform. In this post, we will describe what it is and how to try it. What’s…
https://dev.to/alabulei1/high-performance-and-safe-ai-as-a-service-in-node-js-43lg
Занимательная статья о том, как написать своё веб-приложение для распознования лиц на Node.js и Rust (через #WebAssembly). Для этого используется вируальная машина Second State VM и прилагающийся к ней compiler toolchain, который делает биндинги из JS в Rust через wasm-bindgen.
Занимательная статья о том, как написать своё веб-приложение для распознования лиц на Node.js и Rust (через #WebAssembly). Для этого используется вируальная машина Second State VM и прилагающийся к ней compiler toolchain, который делает биндинги из JS в Rust через wasm-bindgen.
DEV Community
Face Detection in Node.js with Rust and WebAssembly
We introduced how to call Rust functions from Node.js in the last article. This article will introduc...
Вышел Node.js 14.3.0 с поддержкой именованных импортов ESM для CJS модулей и libuv 1.40.0.
https://nodejs.org/en/blog/release/v14.13.0/
https://nodejs.org/en/blog/release/v14.13.0/
NPAPI — старый (создан в 1995 году) API от Netscape для расширения функциональности браузеров. Именно NPAPI помогал запускать Flash, Silverlight, Java апплеты, отображать PDF и DJVu документы. Все эти расширения были практически неконтролируемы, что приводило к проблемам с безопасностью и стабильностью. Последним, что до сих пор останавливает вендоров браузеров перед тем, чтобы отказаться от NPAPI совсем, является Flash. Adobe ещё в 2017 году объявил, что поддержка Flash прекратится в январе 2021. Firefox собирается прекратить поддержку NPAPI именно в эту дату. Chrome прекратил поддержку ещё в сентябре 2015, но вместе с тем стал поддерживать Flash через собственную технологию PPAPI. Эта поддержка закончится также в январе 2021. Поддержка NPAPI в WebKit (и Safari) уже удалена из кодовой базы и будет прекращена в конце 2020.
Подробнее обо всём этом в статье Adrian Perez из Igalia, который занимаетя WebKitGTK и WPE.
https://perezdecastro.org/2020/webkitgtk-npapi-sunsetting.html
Подробнее обо всём этом в статье Adrian Perez из Igalia, который занимаетя WebKitGTK и WPE.
https://perezdecastro.org/2020/webkitgtk-npapi-sunsetting.html
perezdecastro.org
Sunsetting NPAPI support in WebKitGTK (and WPE)
Так, я тут снова был очень занят работой, и за это время накопилось много новостей. Некоторые, которые достаточно сильно уже осветили везде, я пропущу (например, про срачики вокруг хактоберфеста), но постов все равно будет много, поэтому возможно лучше будет замьютить канал на время, если вы не хотите отвлекаться.
Представлен рантайм Elsa — конкурент Deno и Node.js на движке QuickJS. Elsa написана на Go и имеет фичи, аналогичные рантайму Deno.
GitHub
GitHub - elsaland/elsa: ❄️ Elsa is a minimal runtime for JavaScript and TypeScript written in Go
❄️ Elsa is a minimal runtime for JavaScript and TypeScript written in Go - elsaland/elsa
Выложены записи с сентябрьской встречи #TC39. Напомню, что основные результаты этой встречи я собрал вот тут.
GitHub
notes/meetings/2020-09 at master · tc39/notes
TC39 meeting notes. Contribute to tc39/notes development by creating an account on GitHub.
43 разных способа создать веб компонент <my-counter/> со сравнением кода, результирующим размером бандла и показателями скорости парсинга JS и создания DOM дерева.
https://webcomponents.dev/blog/all-the-ways-to-make-a-web-component/
https://webcomponents.dev/blog/all-the-ways-to-make-a-web-component/
WebComponents.dev
All the Ways to Make a Web Component - Feb 2022 Update
Compare coding style, bundle size and performance of 61 different ways to make a Web Component.
В кодовую базу WebKit добавлена поддержка Streams API для TextDecoder API. Такая поддержка позволит комбинировать Encoding API со стримами Fetch API и других, а также реализовать backpressure.
Описание: https://github.com/ricea/encoding-streams/blob/master/stream-explainer.md
Патч в трекере WebKit: https://trac.webkit.org/changeset/266668/webkit
В данный момент поддержка стримов в Encoding API также реализована в браузерах на основе Chromium (с версии 71). Поддержка в браузерах на основе Gecko (таких как Firefox) ещё не реализована.
Описание: https://github.com/ricea/encoding-streams/blob/master/stream-explainer.md
Патч в трекере WebKit: https://trac.webkit.org/changeset/266668/webkit
В данный момент поддержка стримов в Encoding API также реализована в браузерах на основе Chromium (с версии 71). Поддержка в браузерах на основе Gecko (таких как Firefox) ещё не реализована.
Forwarded from Defront — про фронтенд-разработку и не только (Alexander Myshov)
Вчера зарелизился Webpack 5 с огромным количеством изменений.
TLDR
В новой версии была улучшена скорость сборки. Была улучшена поддержка долгосрочного кэширования бандлов. Улучшен tree shaking. Реализован новый подход для работы с ассетами. Добавлена новая фича Module Federation. Удалены полифиллы для Node.js-модулей. Код сборки может генерироваться в стандарте ES2015.
Подробнее
Улучшена скорость сборки благодаря кэшированию на диске служебных данных между разными сборками (Persistent Caching).
Было проделано много работы для улучшения tree-shaking. В новой версии Webpack использует статический анализ для построения графа зависимостей, благодаря чему удаляется больше неиспользуемого кода. Также Webpack благодаря статическому анализу определяет модули без сайд-эффектов и не включает их в бандл, если они не используются. Был улучшен tree-shaking CommonJS-модулей.
Было упрощено использование ассетов. Теперь не нужно устанавливать дополнительные загрузчики, например, file-loader, url-loader, raw-loader. Сергей Мелюков в феврале публиковал статью про ассеты в Webpack 5, рекомендую почитать.
С пятой версии стала доступна ещё одна новая фича — Module Federation. Благодаря ей приложение может прозрачно заимствовать код из других приложений. Это позволяет делать интересные вещи, например, разделить одно большое SPA на несколько небольших. Это SPA с точки зрения пользователя будет работать как одно целое, но может разрабатываться и деплоиться разными командами независимо друг от друга.
Улучшена совместимость с Web-платформой: добавлена поддержка Top Level Await, JSON Modules, WASM Modules, import.meta.
Четвёртая версия Webpack могла генерировать код сборки только в стандарте в ES5. С пятой версии код сборки может генерироваться в стандарте ES2015.
Были удалены полифиллы для Node.js (
В общем, релиз очень большой. Ребята проделали огромную работу. В статье написано, что есть вероятность появления проблем при использовании свежей версии, но начинать миграцию сборки уже можно. Разработчики ждут нашего фидбека и сообщений об ошибках.
#webpack #release #bundle
https://webpack.js.org/blog/2020-10-10-webpack-5-release/
TLDR
В новой версии была улучшена скорость сборки. Была улучшена поддержка долгосрочного кэширования бандлов. Улучшен tree shaking. Реализован новый подход для работы с ассетами. Добавлена новая фича Module Federation. Удалены полифиллы для Node.js-модулей. Код сборки может генерироваться в стандарте ES2015.
Подробнее
Улучшена скорость сборки благодаря кэшированию на диске служебных данных между разными сборками (Persistent Caching).
Было проделано много работы для улучшения tree-shaking. В новой версии Webpack использует статический анализ для построения графа зависимостей, благодаря чему удаляется больше неиспользуемого кода. Также Webpack благодаря статическому анализу определяет модули без сайд-эффектов и не включает их в бандл, если они не используются. Был улучшен tree-shaking CommonJS-модулей.
Было упрощено использование ассетов. Теперь не нужно устанавливать дополнительные загрузчики, например, file-loader, url-loader, raw-loader. Сергей Мелюков в феврале публиковал статью про ассеты в Webpack 5, рекомендую почитать.
С пятой версии стала доступна ещё одна новая фича — Module Federation. Благодаря ей приложение может прозрачно заимствовать код из других приложений. Это позволяет делать интересные вещи, например, разделить одно большое SPA на несколько небольших. Это SPA с точки зрения пользователя будет работать как одно целое, но может разрабатываться и деплоиться разными командами независимо друг от друга.
Улучшена совместимость с Web-платформой: добавлена поддержка Top Level Await, JSON Modules, WASM Modules, import.meta.
Четвёртая версия Webpack могла генерировать код сборки только в стандарте в ES5. С пятой версии код сборки может генерироваться в стандарте ES2015.
Были удалены полифиллы для Node.js (
node.Buffer
, node.console
, node.process
, crypto
и т.п.) Когда появился Webpack, npm чаще всего использовали для распространения Node.js-модулей, поэтому в то время имело смысл поставлять со сборщиком полифиллы. Сейчас ситуация изменилась — в npm есть много кода, который можно использовать и в Node.js, и в браузерах. Также очень много внимания сегодня уделяют размеру генерируемого кода, а полифиллы Node.js могут добавлять очень много кода. Но не все рады удалению полифиллов. Синдре Сорхусу — автору многих библиотек в экосистеме Node.js — это решение не понравилось. Он пишет про то, что не будет исправлять проблемы, связанные с Webpack 5.В общем, релиз очень большой. Ребята проделали огромную работу. В статье написано, что есть вероятность появления проблем при использовании свежей версии, но начинать миграцию сборки уже можно. Разработчики ждут нашего фидбека и сообщений об ошибках.
#webpack #release #bundle
https://webpack.js.org/blog/2020-10-10-webpack-5-release/
webpack
Webpack 5 release (2020-10-10) | webpack
webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.
В блоге V8 очередная классная статья о сборщике мусора V8 и оптимизации Slack tracking, позволяющей выделить дополнительную память для изменения структуры объектов (до семи раз) прежде чем будет применена оптимизация с использованием hidden classes.
v8.dev
Slack tracking in V8 · V8
A detailed look into the V8 slack tracking mechanism.
Mozilla закрывает сайт, на котором ранее публиковались все изменения совместимости.
https://www.fxsitecompat.dev/en-CA/blog/2020/sunsetting-fxsitecompat/
П.С. также продолжаются увольнения сотрудников Mozilla. Так, например, недавно были уволены Paul Rouget, работавший над веб платформой и Servo, и Benjamin Bouvier из команды wasm / Cranelift.
https://www.fxsitecompat.dev/en-CA/blog/2020/sunsetting-fxsitecompat/
П.С. также продолжаются увольнения сотрудников Mozilla. Так, например, недавно были уволены Paul Rouget, работавший над веб платформой и Servo, и Benjamin Bouvier из команды wasm / Cranelift.
Не так давно вышел Chrome 86. Из нового:
- File System Access API вышел из origin trial и теперь доступен по умолчанию. Этот API разрабатывается в рамках Web Platform Incubator Community Group, не является стандартом W3C и разработан исключительно инженерами Google.
- добавлен новый origin trial WebHID для подключения различных устройств вроде геймпадов, джойстиков, LED и т.д.
- добавлен origin trial Multi-Screen Window Placement API для программируемого расположения окон при использовании нескольких мониторов
- новый CSS селектор
А также:
- защита от отправки данных форм по HTTP при HTTPS соединении
- поддержка FTP отключена по умолчанию
- мета-тег battary-savings
- и много всего другого (см ссылки ниже)
Наиболее полный список изменений: https://support.google.com/chrome/a/answer/7679408#86
Ещё один список изменений: https://blog.chromium.org/2020/09/chrome-86-improved-focus-highlighting.html
Видео: https://www.youtube.com/watch?v=GNuG-5m4Ud0
- File System Access API вышел из origin trial и теперь доступен по умолчанию. Этот API разрабатывается в рамках Web Platform Incubator Community Group, не является стандартом W3C и разработан исключительно инженерами Google.
- добавлен новый origin trial WebHID для подключения различных устройств вроде геймпадов, джойстиков, LED и т.д.
- добавлен origin trial Multi-Screen Window Placement API для программируемого расположения окон при использовании нескольких мониторов
- новый CSS селектор
:focus-visible
, псевдо-элемент ::marker
А также:
- защита от отправки данных форм по HTTP при HTTPS соединении
- поддержка FTP отключена по умолчанию
- мета-тег battary-savings
- и много всего другого (см ссылки ниже)
Наиболее полный список изменений: https://support.google.com/chrome/a/answer/7679408#86
Ещё один список изменений: https://blog.chromium.org/2020/09/chrome-86-improved-focus-highlighting.html
Видео: https://www.youtube.com/watch?v=GNuG-5m4Ud0
Chrome Developers
New in Chrome 86 - Chrome Developers
Chrome 86 is rolling out now! The file system access API is now available in stable. There are new origin trials for Web HID and the Multi-Screen Window placement API. There's some new stuff in CSS, and plenty more. Let's dive in and see what's new for developers…
Также вышел Safari Technology Preview 114 с большим количеством изменений:
- улучшения табов Elements, Sources, Network, Timelines, Audit в веб инспекторе
- различные исправления парсера JS, мелкие изменения для полного соответствия спецификации в корнер кейсах, много улучшений Intl API
- улучшения полей ввода типов date и time
- очень много исправлений и улучшений Web Audio
- WebGL 2 теперь включен по умолчанию, поддержка WebGL 2 в Offscreeen Canvas
- исправления и улучшения CSS
- ленивая загрузка айфреймов и изображений
- исправления и улучшения Media и MediaRecorder
- улучшения WebRTC
- исправления рендеринга анимаций и шрифтов, исправления прокрутки
- исправления некоторых других Web API
- улучшения табов Elements, Sources, Network, Timelines, Audit в веб инспекторе
- различные исправления парсера JS, мелкие изменения для полного соответствия спецификации в корнер кейсах, много улучшений Intl API
- улучшения полей ввода типов date и time
- очень много исправлений и улучшений Web Audio
- WebGL 2 теперь включен по умолчанию, поддержка WebGL 2 в Offscreeen Canvas
- исправления и улучшения CSS
- ленивая загрузка айфреймов и изображений
- исправления и улучшения Media и MediaRecorder
- улучшения WebRTC
- исправления рендеринга анимаций и шрифтов, исправления прокрутки
- исправления некоторых других Web API
WebKit
Release Notes for Safari Technology Preview 114
Safari Technology Preview Release 114 is now available for download for macOS Big Sur and macOS Catalina.
На прошлой неделе я был в гостях у подкаста Фронтенд Юность. Поговорили о #TC39, JavaScript и о пиве. Кажется немного прогнал там местами (ещё сам не слушал), но в целом, надеюсь, должно быть интересно.
https://twitter.com/frontend_u/status/1315392088243154945
https://twitter.com/frontend_u/status/1315392088243154945
Twitter
Фронтенд Юность
В гостях легендарный Сергей Рубанов @chicoxyzzy. За пивком поболтали про TC39, JavaScript и, конечно же, пиво🍻 https://t.co/2u5xTYTPhT
Только что закончилась встреча #WebAssembly Community Group. Из главного:
- у пропозала Relaxed Dead Code Validation, который попал на phase 1 на прошлой встрече, начальное описание, автор представил доклад и собирается представлять его к продвижениею на phase 2 на следующей встрече 27го октября.
- был предложен способ определения поддержки фич в SIMD (слайды)
- у пропозала Relaxed Dead Code Validation, который попал на phase 1 на прошлой встрече, начальное описание, автор представил доклад и собирается представлять его к продвижениею на phase 2 на следующей встрече 27го октября.
- был предложен способ определения поддержки фич в SIMD (слайды)