Вебня
4.7K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
А тем временем продолжают кипеть страсти вокруг приватных свойств. Помимо альтернативного предложения о приватных символах (о котором я уже рассказывал), появилось дополнение к основным предложениям о приватных полях и приватных методахnew.initialize (на самом деле решает также и проблемы модификации цепочки прототипов). Но и это еще не всё. Появилось также предложение приватные декларации (честно говоря, по имеющейся информации я пока слабо понимаю мотивацию этого предложения).

Все эти три новых пропозала будут представлены уже менее чем через 2 недели на январской встрече #TC39.
Слайды к будущим презентациям:
- Private fields and methods refresher: Why they are based on WeakMaps
- Private Symbols for stage 1
- new.initialize for stage 1
- Private Declarations
Microsoft собираются заимплементить в Chromium расширение для системы модулей в ECMAScript — HTML модули. Изначально HTML модули были представлены Google на конференции BlinkOn в 2017 году. Это предложение решает многие проблемы, которые были у HTML imports (засорение глобального объекта, блокировка основного потока при парсинге HTML import и т.д.). Microsoft также обещают имплементацию HTML модулей в Edge. Safari и Firefox заявили о своей поддержке этой идеи на TPAC 2018.
Как-то совершенно незаметно в декабре вышел браузер Samsung Internet 8.2 (при том, что на официальной странице браузера на Samsung Developers указаны версии 6.4 и 7.2 Beta). Internet 8.2 основан на Chromium 63, а значит включает такие фичи как ES-модули и WebAssembly. Кроме того, уже доступна версия 9.2 Beta, которая включает обновление до Chromium 67 (добавит поддержку Custom Elements v1, CSS Paint API, Resize Observer, BigInt, отменяемый Fetch). Эта версия Chromium вышла в мае 2018, текущая актуальная версия Chromium 71 вышла 4 декабря 2018. Chromium 72 и основанный на этой версии Chrome 72 выйдут 29 января, в один день с Firefox 65.
Новость со вчерашней встречи по WebGPU (об этой технологии я писал ранее, например, здесь). Разработчики Chromium планируют добавить поддержку WebGPU под флагом в середине этого года. Стабильный релиз планируется не раньше 2020 года. Напомню, что Safari уже имеет поддержку WebGPU под флагом. Вопрос о языке шейдеров все еще открыт. Им может стать как WHLSL (развитие HLSL из Direct3D), так и SPIR-V.
Интересная статья от Бенедикта Мойрера из команды V8 про падение производительности при использовании Object.freeze(), Object.seal() и Object.preventExtensions().
https://docs.google.com/document/d/1X6zO5F_Zojizn2dmo_ftaOWsY8NltPHUhudBbUzMxnc/preview
Вышел Safari TP 74 с обновлениями Web Authentication, поддержкой WebRTC MDNS ICE, visual viewport API. В релизных записях также вспомнили по отменяемый фетч, который на самом деле был добавлен в 73 версии.

https://webkit.org/blog/8566/release-notes-for-safari-technology-preview-74/
Динамические импорты (которые были добавлены в Firefox 66) теперь будут включены по умолчанию в ночных сборках Firefox начиная с версии 67.
https://bugzilla.mozilla.org/show_bug.cgi?id=1522491
Если вдруг кто-то все ещё не верит в победу тайпскрипта даже после новости о миграции jest с flow на тайпскрипт, есть ещё новости. И будут ещё.
https://github.com/yarnpkg/yarn/issues/6953
За хайлайт спасибо @denysdovhan!
24 января вышла операционная система macOS Mojave 10.14.4 beta 1 (сборка для разработчиков), в которой браузер Safari обновился до версии 12.1 (14607.1.22) и теперь включает все наработки из Safari Technology Preview. Со стороны JS это stage 3 предложения globalThis, Object.fromEntries, Well-formed JSON.stringify. Со стороны CSS и различных Web API — CSS Conical Gradients, IntersectionObserver, Web Animations API, Color input type, Datalist element, Web Share API, AbortController & AbortSignal.
Вышла вторая версия JavaScript фреймворка для создания data-driven приложений на React с использованием GraphQL, Relay 2.0. Странно, что об этом практически ничего не слышно, хотя релизу уже два дня. Также в релизных записях указано, что переход на новую версию контекста в React ломает серверный рендеринг. Обещают починить это в 2.0.0-rc.2 (который вообще-то вышел 6 дней назад 🤷‍♂️)
https://github.com/facebook/relay/releases/tag/v2.0.0
Сегодня произойдет несколько интересных событий:
- релиз Chrome 72
- релиз Firefox 65
- начнется встреча комитета TC39, которая пройдет с 29 по 31 января, и после которой произойдет feature freeze спецификации ES2019

Обо всех этих событиях я еще расскажу подробнее.
Релиз Chrome 72 в большей степени интересен добавлением (stage 3) синтаксиса для публичных полей класса (инстанса и статических), которые уже давно используются многими пользователями Babel и TypeScript.
Еще одно интересное нововведение — User Activation API, который позволит предотвратить назойливое поведение веб страниц (автозапуск звука или видео, window.open(), requestFullScreen() и т.д.).
Других фичи релиза:
- Intl.ListFormat
- различные улучшения ServiceWorker
- улучшения WebRTC
- stage 3 пропозал Well-formed JSON.stringify

Полный список изменений можно посмотреть здесь.
Кстати, менее 5 минут назад обновился патч с поддержкой class fields в JavaScriptCore (JS движке в составе Webkit)
https://bugs.webkit.org/show_bug.cgi?id=174212#c69
В Firefox 65 добавятся:
- поддержка stage 3 предложения globalThis
- поддержка env() в CSS
- поддержка формата изображений WebP
О, оправдания подвезли.
Почему разработчики Flow игнорировали опенсорс-сообщество и чем они занимались весь прошлый год: официальное объяснение и позиция касательно перехода части проектов Facebook на TypeScript → https://medium.com/p/54239c62004f
Планы развития поддержки #WebAssembly в Rust на 2019

https://github.com/fitzgen/rfcs-1/blob/2019-roadmap/text/000-2019-roadmap.md
Firefox 65 вышел.

Релизные записи: https://www.mozilla.org/en-US/firefox/65.0/releasenotes/
Обзор новых фич: https://www.mozilla.org/en-US/firefox/65.0/whatsnew/
Первые новости с 68й встречи #TC39, которая проходит прямо сейчас в офисе GoDaddy:
- принято нормативное изменение Treat IterationStatements uniformly in Annex B.3.5
- принято нормативное изменение Add "name" property for classes as part of ClassDefinitionEvaluation (слайды)
- принято нормативное изменение %TypedArray%.prototype.sort stability