Вебня
4.67K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Custom Elements и Shadow DOM получили статус “в разработке” на вебсайте Platform Status MS Edge
https://developer.microsoft.com/en-us/microsoft-edge/platform/status/customelements/
https://developer.microsoft.com/en-us/microsoft-edge/platform/status/shadowdom/
В свежем Safari Technology Preview 67 среди прочего добавились Pointer Events (под флагом). Браузеры на основе WebKit — единственные среди популярнейших, в которых Pointer Events не было. Также в релизе очередная пачка улучшений WebRTC и медиа, фиксы CSS, Houdini CSS Custom Properties and Values API (под флагом), незначительные улучшения и оптимизации JS, исправления нескольких Web API, Shadow DOM, Web Animations, Web Inspector, Web Driver и WebSQL.
https://webkit.org/blog/8419/release-notes-for-safari-technology-preview-67/
Class fields вышли на стадию ревью в JavaScriptCore (JS движке, используемом в браузерах WebKit)
https://bugs.webkit.org/show_bug.cgi?id=174212#c52
https://github.com/tc39/proposal-class-fields/pull/140#issuecomment-428878848

У одно представителя китайского JS-коммьюнити и спикера из Шанхая бомбануло от процесса принятия решений комитетом TC39. А один из членов TC39 якобы нашептал ему, что часто многие члены комитета не согласны с различными предложениями в ECMAScript, но не хотят “раскачивать лодку”. No comments. Кстати, он в отличие от многих других негодующих осилил прочитать в FAQ о том, почему не private, а # (сам FAQ здесь, если еще не читали).
А вы как считаете, приватные свойства в JavaScript нужны?
anonymous poll

Нужны – 220
👍👍👍👍👍👍👍 69%

Не нужны – 73
👍👍 23%

Не могу определиться – 27
👍 8%

👥 320 people voted so far. Poll closed.
JavaScript движок Nashorn впервые попал в JDK 8 версии как замена движку Rhino. Релиз состоялся в декабре 2012. В свежем JDK 11 Nashorn все еще входит в поставку, но помечен как deprecated. Инженеры Oracle решили, что ECMAScript развивается слишком быстро и поддержка собственного JS движка отнимает слишком много времени. В JDK 12 Nashorn возможно уже не будет.
https://bugs.java.com/view_bug.do?bug_id=JDK-8202786
Замена движку Nashorn уже разрабатывается Oracle, и это GraalVM — расширение виртуальной машины JVM, созданное для поддержки разных языков. Graal (основная часть GraalVM) может быть использован и как ahead-of-time, и как just-in-time компилятор. Одной из ключевых возможностей проекта является одновременная поддержка различных языков программирования. Как вы уже догадались, GraalVM умеет в том числе JavaScript (а также умеет работать с npm и поддерживает все API Node.js). Кроме того, GraalVM имеет отличную поддержку ECMAScript, вплоть до текущей версии ES2018, а также кое-что из будущего ES2019, в чем вы можете убедиться, заглянув в таблицу совместимости. В данный момент GraalVM находится статусе Release Candidade. Свежайшая на данный момент версия 1.0 RC7 выпущена 2 октября, бинарники доступны для операционных систем Windows, macOS, Linux.

Исходники проекта GraalVM и сборки Graal.js можно найти на GitHub:
https://github.com/oracle/graal
https://github.com/graalvm/graaljs
Помните пропозал global, который оказался несовместим с вебом? Освежить память можно, например, тут. Проблема в YUI от Yahoo, который неправильно юзает moment.js. Его (`global`) не так давно переименовали в globalThis и он уже без флага будет доступен в доступен в Chrome 70, который выйдет 16 октября. Его вот уже переименовали даже в репке предложений
https://github.com/tc39/proposals/pull/157/files
А чуть ранее я обновил тесты и результаты для таблицы совместимости.
Вангую, что globalThis попадет в ES2019.
Если вы интересуетесь Web Audio API, то срочно подписывайтесь в твиттере на Ruth John, она замечательная. А недавно она обновила документацию по Web Audio API на MDN. Посмотрите как здорово стало!
https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API
В Node 11, которая, напомню, выйдет через 10 дней, вероятно будет V8 версии 7.0. А значит добавится поддержка следующих фич ECMAScript:
- асинхронные генераторы
- BigInt
- глобальный объект станет также доступен под идентификатором globalThis
- Array.prototype.flat и Array.prototype.flatMap
- Promise.prototype.finally
- optional catch binding
- RegExp named capture groups
- RegExp Unicode Property Escapes
- String.prototype.trimStart и String.prototype.trimEnd
- Symbol.prototype.description
- обновленный Function.prototype.toString
Недовольство JS коммьюнити по поводу class fields (и конкретно private fields) не утихает. Старые issues закрываются, открываются новые. Просто взгляните на список ишью в репке пропозала
https://github.com/tc39/proposal-class-fields/issues?q=is%3Aissue
В одном из тредов появлялся Allen Wirfs-Brock (один из самых важных людей в истории развития ECMAScript), которого там заменшнили. Аллен сказал, что также не поддерживает текущую версию предложения. Кажется я об этом еще не говорил, но среди тех, кто также недолюбливает эту версию есть Brendan Eich (создатель JavaScript) и Kevin Smith (активный член комитета, чемпион нескольких предложений в ES, в том числе альтернативного https://github.com/zenparsing/js-classes-1.1).
Многие приходят к выводу, что из class fields нужно оставить только class properties (приватные поля по сути не являются свойствами класса или его прототипа, поэтому и был введен новый термин “fields”). И вот тут, судя по всему, будут разворачиваться дальнейшие события https://github.com/tc39/proposal-class-fields/issues/144
Вебня via @vote
А вы как считаете, приватные свойства в JavaScript нужны? anonymous poll Нужны – 220 👍👍👍👍👍👍👍 69% Не нужны – 73 👍👍 23% Не могу определиться – 27 👍 8% 👥 320 people voted so far. Poll closed.
Специально не писал свою точку зрения на этот счет, чтобы не повлиять на результаты. На самом деле я также считаю, что можно обойтись без private class fields, а авторы библиотек могут использовать WeakMap или другие ухищрения, чтобы скрыть что-то от юзеров своих библиотек (React.__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, я смотрю на тебя).
This media is not supported in your browser
VIEW IN TELEGRAM
Google зарелизили V8 7.0 beta, в которой появилось превью потоков в WebAssembly под флагом.
https://v8.dev/blog/v8-release-70
Спецификация Pointer Events Level 2 получила статус Proposed Recommendation и 13 ноября собирается стать Candidate Recommendation. Часто новые версии спек от W3C включают раздел об изменениях по сравнению с предыдущей версией, но в данном документе я ее не нашел. Если кто-то из читателей все-таки выяснит какие изменения принесет Level 2, то обязательно напишите мне.
https://www.w3.org/TR/2018/PR-pointerevents2-20181016/