Telegram Web Link
Вышел V8 версии 8.6. Что нового:
- в кодовую базу добавлен фаззер, который подходит для тестирования разных движков и основан на 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
Вышел 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/
Выпущен отчет совместимости браузеров MDN 2020, выпущенный совместно компаниями Google и Mozilla (также при участии сотрудников Samsung, Microsoft и некоторых других). В нём опубликованы результаты опросов разработчиков относительно совместимости браузеров, удовлетворенности, “болевых точках”, проблемах конкретных разделов веб платформы и проблемах браузеров и платформ, на которых они работают.

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/
На втором дне текущего #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 из-за крайне неудобной таймзоны проведения, поэтому все окончательные результаты выложу одним сообщением (скорее всего уже завтра).
Извиняюсь за то, что целую неделю не было новостей. Было очень много других дел. А новостей накопилось очень много. Главная из них, пожалуй, это то, что на прошлой неделе была встреча #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 (слайды)
А по результатам вчерашней встречи #WebAssembly Community Group, продвинулись следующие пропозалы:
- Memory 64 отправляется на phase 2
- Relaxed dead code validation будет отправлен на phase 1 как только будет создан репозиторий под организацией WebAssembly на GitHub
На прошлой неделе вышел 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
Из новостей фронтенд библиотек с прошлой недели:

Команда React выпустила новый JSX Transform, который позволит использовать JSX без импорта React в модуль, немного уменьшит размер бандла, а также создаст основу для дальнейших нововведений

Вышли Early Preview Release библиотек LitElement 3.0 и lit-html 2.0. Там много изменений, в том числе breaking, но большинство из них не должны задеть большинство пользователей. Из интересного стоит отметить поддержку серверного рендеринга в новом lit-html.
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 14.3.0 с поддержкой именованных импортов ESM для CJS модулей и libuv 1.40.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
Так, я тут снова был очень занят работой, и за это время накопилось много новостей. Некоторые, которые достаточно сильно уже осветили везде, я пропущу (например, про срачики вокруг хактоберфеста), но постов все равно будет много, поэтому возможно лучше будет замьютить канал на время, если вы не хотите отвлекаться.
Представлен рантайм Elsa — конкурент Deno и Node.js на движке QuickJS. Elsa написана на Go и имеет фичи, аналогичные рантайму Deno.
Выложены записи с сентябрьской встречи #TC39. Напомню, что основные результаты этой встречи я собрал вот тут.
43 разных способа создать веб компонент <my-counter/> со сравнением кода, результирующим размером бандла и показателями скорости парсинга JS и создания DOM дерева.

https://webcomponents.dev/blog/all-the-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) ещё не реализована.
Хотел написать о релизе webpack 5, но вспомнил, что в @defront уже всё отлично написано за меня.
Вчера зарелизился 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 ( 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/
В блоге V8 очередная классная статья о сборщике мусора V8 и оптимизации Slack tracking, позволяющей выделить дополнительную память для изменения структуры объектов (до семи раз) прежде чем будет применена оптимизация с использованием hidden classes.
2025/07/08 08:58:36
Back to Top
HTML Embed Code: