Вебня
4.67K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Замена движку 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/
Хорошо, что есть 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 уже найти
Интересный проект от 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
Всеволод @jabher подсказывает, что на самом деле Origin Trial работает только для 0.5% пользователей. То есть экспериментальный проект написать специально для всех юзеров не получится, это только для внедрения в продакшн.
В трекере Firefox начинают имплементить class fields. Соответствующий тикет завели и заассайнили Bugzilla
https://bugzilla.mozilla.org/show_bug.cgi?id=1499448
Вышел Chrome 70. Из нового:
- десктопные PWA
- Credential Management API: Public Key Credentials
- имена для WebWorkers
https://developers.google.com/web/updates/2018/10/nic70?linkId=58284450#named-workers