Замена движку 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
Исходники проекта GraalVM и сборки Graal.js можно найти на GitHub:
https://github.com/oracle/graal
https://github.com/graalvm/graaljs
GitHub
GitHub - oracle/graal: GraalVM compiles applications into native executables that start instantly, scale fast, and use fewer compute…
GraalVM compiles applications into native executables that start instantly, scale fast, and use fewer compute resources 🚀 - oracle/graal
Вебня
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?