Вебня
4.66K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Вебня
Новый релиз Safari Technology Preview 101 включает новые фичи Web Inspector, улучшения Web Animations, исправления для Media, обновления различных Web API.
Ого! Никто и не обратил внимание (и в релизных записях этого тоже нет), а между тем, в Safari Technology Preview 101 появилась поддержка публичных полей экземпляра класса под флагом useClassFields!

https://trac.webkit.org/changeset/254653/webkit
В V8 собираются вытащить приватные методы и аксессоры из-под флага.

https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/HLpO-HC8aKc/TT32fUNPBAAJ
Вышел Babel 7.9.0 с поддержкой TypeScript 3.8, обновлённым JSX transform, поддержкой новых типов Record и Tuple (stage 1), а также обновлением preset-env, в который добавились оптимизации размера бандла благодаря preset-modules.
В Google решили пропустить выпуск Chrome 82. Графики выпусков версий также будут скорректированы. Напомню, что ранее был отложен выпуск Chrome 81, который так до сих пор и не выпущен. Он должен был быть выпущен 17 марта. Версии Google Chrome привязаны к соответствующим версиям движка V8 (например, в версии Chrome 83 будет V8 8.3), так что скорее всего Chrome просто пытается догнать свой движок, который смог продолжать регулярные релизы. Выпуск Chrome 83 пока что намечен на 9 июня.
Вышел Prettier 2.0 aka Prettier 2020 с очень большим количеством изменений и нововведений в форматировании JavaScript, TypeScript, Flow, CSS, SCSS, Less, HTML, Vue, Angular, Handlebars, GraphQL, Markdown и MDX. Релиз содержит breaking changes, на которые стоит обратить внимение перед обновлением.

https://prettier.io/blog/2020/03/21/2.0.0.html
Несколько часов назад в SpiderMonkey (JavaScript движок, используемый в Firefox) добавили поддержку флага s (dotAll) для регулярных выражений (ES2018). В течение дня поддержка фичи должна появиться в Firefox Nightly 76.
Microsoft и Google вместе работают над тем, чтобы движок V8, используемый в Edge и Chrome, догнал в тестах JetStream 2 и Octane движок JavaScriptCore, используемый в WebKit. Для этого ведётся работа над промежуточным JIT-компилятором TurboProp, который по сути является заимствованием из архитектуры JavaScriptCore.

На скриншоте приведён тест двухфазовой компиляции проекта TypeScript. Сначала компилируется более старая (предыдущая) версия комилятора TypeScript (TSC), которая затем компилирует последнюю версию TSC. JavaScriptCore на этих тестах примерно в 1.32-1.42 раза быстрее V8.
Ой, что-то я пропустил новость о том, что месяц назад (25 февраля), вышел релиз Scala.js 1.0.0 (а 10 марта уже и патч 1.0.1 с багфиксами). Как и предполагалось ранее, RC2 стал финальной версией. Изменений довольно много, осовные из них:
- улучшенный интероп с JavaScript бибилиотеками
- улучшено портирование кода со Scala/JVM
- улучшенная производительность
Вышли macOS 10.15.4 и iOS 13.4, а с ними и Safari 13.1. По этому случаю в блоге WebKit вышла статья Full Third-Party Cookie Blocking And More о приватности в новой версии браузера.
Движок JavaScriptCore получил поддержку Promise.allSettled (ES2020), Numeric Separators (stage 3). Кроме того появилась поддержка фунций CSS фукций max, min и clamp, значения свойства display: contents. Ещё из нового: Picture-in-Picture, отключение TLS 1.0/1.1, поддержка ResizeObserver, MediaRecorder API и частичная реализация Web Animations API.
Также вышел LLVM 10.0.0. Нас конечно же больше всего интересует что там с #WebAssembly:
- Multivalue function signatures теперь поддерживаются в объектных файлах WebAssembly
- новая инструкция atomic.fence
- поддержка Thread-Local Storage (TLS)
- значительное улучшение поддержки SIMD

Кроме того, Clang 10.0.0 научился использовать wasm-opt для уменьшения размера, если тот есть в PATH.

Полный список релизных записей LLVM и тулинга:
https://llvm.org/releases/10.0.0/docs/ReleaseNotes.html
https://llvm.org/releases/10.0.0/tools/clang/docs/ReleaseNotes.html
https://llvm.org/releases/10.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html
https://llvm.org/releases/10.0.0/tools/lld/docs/ReleaseNotes.html
https://llvm.org/releases/10.0.0/tools/polly/docs/ReleaseNotes.html
https://llvm.org/releases/10.0.0/projects/libcxx/docs/ReleaseNotes.html
Все 3 находящиеся на phase 4 пропозала в #WebAssembly, а именно Non-trapping float-to-int conversions, Sign-extension operators и Multi-value, будут переведены на phase 5 (добавлены в стандарт) на встрече wasm WG 8го апреля.
Отличные новости! 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