Вышел V8 версии 8.6. Что нового:
- в кодовую базу добавлен фаззер, который подходит для тестирования разных движков и основан на Babel
- отдельная оптимизация для
-
- небольшие изменения для соответствия нормативным изменениям, принятым в спецификацию
- #WebAssembly SIMD (phase 3 пропозал, доступный в V8 под origin trial) теперь работает и в компиляторе Liftoff
- ускорены вызовы из wasm в JS
-
https://v8.dev/blog/v8-release-86
- в кодовую базу добавлен фаззер, который подходит для тестирования разных движков и основан на Babel
- отдельная оптимизация для
Number.prototype.toString
, применяемого к небольшим целым числам-
Atomics.wake
окончательно убран (он был заменён Atomics.notify
ранее)- небольшие изменения для соответствия нормативным изменениям, принятым в спецификацию
- #WebAssembly SIMD (phase 3 пропозал, доступный в V8 под origin trial) теперь работает и в компиляторе Liftoff
- ускорены вызовы из wasm в JS
-
Isolate::HasPendingBackgroundTasks
— новый API, который позволит эмбеддерам определить существуют ли в инстансе Isolate незавершенные фоновые задачиhttps://v8.dev/blog/v8-release-86
v8.dev
V8 release v8.6 · V8
V8 release v8.6 brings respectful code, performance improvements, and normative changes.
Вышел Firefox 81. Изменений, интересных нам как разработчикам, очень мало, они касаются усиления безопасности при использовании айфреймов и воркеров, выпиливания специфичных только для Mozilla нестандартных фич.
Изменения для разработчиков: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/81
Изменения для пользователей: https://www.mozilla.org/en-US/firefox/81.0/releasenotes/
Изменения совместимости: https://www.fxsitecompat.dev/en-CA/releases/81/
Изменения для разработчиков: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/81
Изменения для пользователей: https://www.mozilla.org/en-US/firefox/81.0/releasenotes/
Изменения совместимости: https://www.fxsitecompat.dev/en-CA/releases/81/
MDN Web Docs
Firefox 81 for developers
This article provides information about the changes in Firefox 81 that will affect developers. Firefox 81 was released on September 22, 2020.
Выпущен отчет совместимости браузеров MDN 2020, выпущенный совместно компаниями Google и Mozilla (также при участии сотрудников Samsung, Microsoft и некоторых других). В нём опубликованы результаты опросов разработчиков относительно совместимости браузеров, удовлетворенности, “болевых точках”, проблемах конкретных разделов веб платформы и проблемах браузеров и платформ, на которых они работают.
https://mdn-web-dna.s3-us-west-2.amazonaws.com/MDN-Browser-Compatibility-Report-2020.pdf
https://mdn-web-dna.s3-us-west-2.amazonaws.com/MDN-Browser-Compatibility-Report-2020.pdf
Katie Hempenius о том, как CDN помогают улучшить производительность сайтов и сэкономить стоимость их обслуживания.
https://web.dev/content-delivery-networks/
https://web.dev/content-delivery-networks/
web.dev
Content delivery networks (CDNs) | Articles | web.dev
This article provides a comprehensive overview of content delivery networks (CDNs). In addition, it explains how to choose, configure, and optimize a CDN setup.
На втором дне текущего #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.