Вебня
https://github.com/tc39/proposal-class-fields/pull/140#issuecomment-428878848 У одно представителя китайского JS-коммьюнити и спикера из Шанхая бомбануло от процесса принятия решений комитетом TC39. А один из членов TC39 якобы нашептал ему, что часто многие…
@StGeass поделился своей статьей про Private Fields для тех, кому было лень читать и переводить FAQ из сообщения выше.
https://medium.com/@StGeass/esnext-private-fields-5b4b3b7a7047
https://medium.com/@StGeass/esnext-private-fields-5b4b3b7a7047
Medium
ESNext: Private Fields
Начиная с ES5 мы видим движение языка (в основном сахаризацию синтаксиса) в сторону ООП.
Помните пропозал
https://github.com/tc39/proposals/pull/157/files
А чуть ранее я обновил тесты и результаты для таблицы совместимости.
Вангую, что
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
https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API
Вебня
В свежем Safari Technology Preview 67 среди прочего добавились Pointer Events (под флагом). Браузеры на основе WebKit — единственные среди популярнейших, в которых Pointer Events не было. Также в релизе очередная пачка улучшений WebRTC и медиа, фиксы CSS,…
Вот так теперь выглядит таблица поддержки Houdini браузерами. Может быть скоро сможем анимировать кастом пропертис. Edge, поднажми.
В Node 11, которая, напомню, выйдет через 10 дней, вероятно будет V8 версии 7.0. А значит добавится поддержка следующих фич ECMAScript:
- асинхронные генераторы
-
- глобальный объект станет также доступен под идентификатором
-
-
- optional catch binding
-
-
-
-
- обновленный
- асинхронные генераторы
-
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
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, я смотрю на тебя).Справедливости ради, у реализации на викмапах тоже есть проблемы.
Смотреть пункт 2
https://github.com/tc39/proposal-class-fields/blob/master/PRIVATE_SYNTAX_FAQ.md#why-is-encapsulation-a-goal-of-this-proposal
Смотреть пункт 2
https://github.com/tc39/proposal-class-fields/blob/master/PRIVATE_SYNTAX_FAQ.md#why-is-encapsulation-a-goal-of-this-proposal
GitHub
proposal-class-fields/PRIVATE_SYNTAX_FAQ.md at main · tc39/proposal-class-fields
Orthogonally-informed combination of public and private fields proposals - proposal-class-fields/PRIVATE_SYNTAX_FAQ.md at main · tc39/proposal-class-fields
Google зарелизили V8 7.0 beta, в которой появилось превью потоков в WebAssembly под флагом.
https://v8.dev/blog/v8-release-70
https://v8.dev/blog/v8-release-70
v8.dev
V8 release v7.0 · V8
V8 v7.0 includes WebAssembly threads, Symbol.prototype.description, and embedded built-ins on more platforms!
Спецификация Pointer Events Level 2 получила статус Proposed Recommendation и 13 ноября собирается стать Candidate Recommendation. Часто новые версии спек от W3C включают раздел об изменениях по сравнению с предыдущей версией, но в данном документе я ее не нашел. Если кто-то из читателей все-таки выяснит какие изменения принесет Level 2, то обязательно напишите мне.
https://www.w3.org/TR/2018/PR-pointerevents2-20181016/
https://www.w3.org/TR/2018/PR-pointerevents2-20181016/
www.w3.org
Pointer Events
The features in this specification extend or modify those found in Pointer Events, a W3C Recommendation that describes events and related interfaces for handling hardware agnostic pointer input from devices including a mouse, pen, touchscreen, etc. For compatibility…
Хорошо, что есть https://t.me/webstandards_ru, у которых можно прочитать про то, что как-то случайно упустил ❤️
Forwarded from Веб-стандарты (Веб-стандарты)
Планы разработчиков WebKit на 2018–2019 годы: Pointer Events, прототип JS-движка для Node.js, новые контролы форм, поддержка @page для печати, CSP 3, развитие сервис-воркеров, полировка веб-компонентов, и многое другое, всего около 200 новых возможностей https://trac.webkit.org/wiki/WebKitFeatureFocus2018-2019
Вебня
Спецификация Pointer Events Level 2 получила статус Proposed Recommendation и 13 ноября собирается стать Candidate Recommendation. Часто новые версии спек от W3C включают раздел об изменениях по сравнению с предыдущей версией, но в данном документе я ее не…
Саша @StGeass потрудился и нашел эту информацию, за что ему огромное спасибо 👍. Цитирую:
Там почти и нет изменений, кроме всяких уточнений (типа devices теперь hardware and platforms) и расширения референсов, есть только следующие сколько-либо заметные изменения:
Раньше DOMException при передаче несуществующего pointerId в любом из методов порождал ошибку с именем NotFoundError, а теперь InvalidPointerId
5.1.3.1 Attributes and Default Actions
Раньше для всех перечисляемых событий в таблице, composed должен был быть выставлен в true, а detail (https://www.w3.org/TR/2018/CR-pointerevents2-20180522/#bib-UIEVENTS) выставлен в 0
Теперь всё тоже самое, но composed true не выставляется для pointerenter и pointerleave
10.4 Implicit Release of Pointer Capture
Поменяли формулировку, с "When the pointer capture target override is removed from its ownerDocument's tree" на "When the pointer capture target override is no longer connected ([DOM4])"
Подробности по этим изменениям можно в https://github.com/w3c/pointerevents//issues уже найти
Там почти и нет изменений, кроме всяких уточнений (типа devices теперь hardware and platforms) и расширения референсов, есть только следующие сколько-либо заметные изменения:
Раньше DOMException при передаче несуществующего pointerId в любом из методов порождал ошибку с именем NotFoundError, а теперь InvalidPointerId
5.1.3.1 Attributes and Default Actions
Раньше для всех перечисляемых событий в таблице, composed должен был быть выставлен в true, а detail (https://www.w3.org/TR/2018/CR-pointerevents2-20180522/#bib-UIEVENTS) выставлен в 0
Теперь всё тоже самое, но composed true не выставляется для pointerenter и pointerleave
10.4 Implicit Release of Pointer Capture
Поменяли формулировку, с "When the pointer capture target override is removed from its ownerDocument's tree" на "When the pointer capture target override is no longer connected ([DOM4])"
Подробности по этим изменениям можно в https://github.com/w3c/pointerevents//issues уже найти
www.w3.org
Pointer Events
The features in this specification extend or modify those found in Pointer Events, a W3C Recommendation that describes events and related interfaces for handling hardware agnostic pointer input from devices including a mouse, pen, touchscreen, etc. For compatibility…
Интересный проект от Google
https://github.com/GoogleChrome/OriginTrials
Тут можно зааплаить свой проект на включение эксперементальных фич для всех пользователей. То есть если у юзера не включены флаги, то хром включит их для вашего веб сайта автоматически.
Доступные фичи:
- Cookie Store API
- EME Extension - Policy Check
- EventTiming
- Experimental support for native AEC
- Feature Policy JS API
- RTCPeerConnection.id
- Shape Detection API
- Stale While Revalidate
- Web Locks
- WebAssembly Threads
- WebXR Device API (For Chrome M69+)
- WebXR Gamepad Support
https://github.com/GoogleChrome/OriginTrials
Тут можно зааплаить свой проект на включение эксперементальных фич для всех пользователей. То есть если у юзера не включены флаги, то хром включит их для вашего веб сайта автоматически.
Доступные фичи:
- Cookie Store API
- EME Extension - Policy Check
- EventTiming
- Experimental support for native AEC
- Feature Policy JS API
- RTCPeerConnection.id
- Shape Detection API
- Stale While Revalidate
- Web Locks
- WebAssembly Threads
- WebXR Device API (For Chrome M69+)
- WebXR Gamepad Support
GitHub
GoogleChrome/OriginTrials
Enabling safe experimentation with web APIs. Contribute to GoogleChrome/OriginTrials development by creating an account on GitHub.
В трекере Firefox начинают имплементить class fields. Соответствующий тикет завели и заассайнили Bugzilla
https://bugzilla.mozilla.org/show_bug.cgi?id=1499448
https://bugzilla.mozilla.org/show_bug.cgi?id=1499448
bugzilla.mozilla.org
1499448 - Implement public and private instance fields proposal
RESOLVED (khyperia) in Core - JavaScript Engine. Last updated 2019-02-22.
Вышел Chrome 70. Из нового:
- десктопные PWA
- Credential Management API: Public Key Credentials
- имена для WebWorkers
https://developers.google.com/web/updates/2018/10/nic70?linkId=58284450#named-workers
- десктопные PWA
- Credential Management API: Public Key Credentials
- имена для WebWorkers
https://developers.google.com/web/updates/2018/10/nic70?linkId=58284450#named-workers
Google Developers
New in Chrome 70 | Web
| Google Developers
| Google Developers
What's new in Chrome 70 for developers?
Мой репозиторий с предложениями в #WebAssembly перенесли в организацию WebAssembly на GitHub https://github.com/WebAssembly/proposals. Мейнтейнить репозиторий по прежнему буду я.
GitHub
GitHub - WebAssembly/proposals: Tracking WebAssembly proposals
Tracking WebAssembly proposals. Contribute to WebAssembly/proposals development by creating an account on GitHub.