Вебня – Telegram
Вебня
4.68K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Если кто-то еще не в курсе, Apple прекращает поддержку OpenGL и OpenCL начиная с macOS Mojave и iOS 12. В этих версиях операционных систем данные API все еще будут работать, но не будут обновляться и впоследствии могут быть удалены. Apple предлагает вместо них использовать Metal 2. Официальной поддержки Vulkan API (пришедшему на смену OpenGL) на macOS и iOS нет, но есть опенсорс проект MoltenVK от Khronos Group (создателей OpenGL и Vulkan), который позволяет биндить Vulkan в Metal. Но как это все отразится на WebGL, который основан на OpenGL ES? Сотрудники Apple обещают, что WebGL в Safari продолжит работать (https://forums.developer.apple.com/message/314676#314676). В Chrome и Firefox (а также в Qt Framework) уже использется слой совместимости ANGLE, который позволяет транспилировать язык шейдеров GLSL (OpenGL) в HLSL (Direct3D) на платформах Windows. Вероятно им придется использовать нечто подобное на операционках от Apple. Для совместимости OpenGL ES и Metal существует MoltenGL от всё тех же Khronos Group, правда, в отличие от MoltenVK, он платный и проприетарный.
@maxgraey предложил написать также о WebGPU.
WebGPU — это новый API, предложенный Apple, который будет работать поверх DirectX 12, Metal и Vulkan.
https://webkit.org/blog/7380/next-generation-3d-graphics-on-the-web/
WebGPU публично поддерживается такими компаниями как Apple, Microsoft, Mozilla, Google, Intel, AMD, Яндекс (карты), Epic (Unreal Engine), Unity Technologies (Unity3D). В данный момент рабочая имплементация существует в виде experimental feature (включается в разделе develop) в Safari. В июне Google объявил о своем намерении заимплементить WebGPU в Chrome.
https://groups.google.com/a/chromium.org/forum/m/#!topic/blink-dev/dxqWTSvyhDg

Основной репозиторий WebGPU находится здесь: https://github.com/gpuweb/gpuweb

А вот ANGLE-подобный слой совместимости для Chromium’ов: https://github.com/google/nxt-standalone
16 августа пройдет встреча TC39 по спецификации ECMA402. Это спецификация интернационализации (aka Intl). Повестка дня тут.
Вчера оказывается был созвон по пропозалу декораторов. Вот стенограмма (еще не влита в мастер ветку, может незначительно меняться)
https://github.com/tc39/proposal-decorators/blob/master/meetings/2018-08-07.md

update: влили в том же виде, ссылку обновил
Object rest / spread не попадут в Edge 18. Печально ☹️
https://github.com/Microsoft/ChakraCore/pull/5268#issuecomment-411438657
Ко мне доехал мой Oculus Go. Так что возможно теперь буду еще писать про эксперименты с WebVR. Кстати, если знаете что там за браузер такой, на основе чего он, и можно ли установить туда нормальные хром / файрфокс, то напишите мне пожалуйста (@chicoxyzzy).

Если что, цены на модель 64 Гб в России доходят до 30 килорублей. Я заказывал с Амазона за ~$280 ($249 + приоритетная доставка). Шло 4 суток.

-------------------

upd: нашел вот такую инфу. Хромиум 61 (такой же как в Electron 2). Неплохо. Значит даже WebAssembly должен быть.
https://developer.oculus.com/documentation/vrweb/latest/concepts/carmel-getting-started/
Между тем, вышел Babel 7 RC. До релиза осталось совсем недолго.
https://github.com/babel/babel/releases
Думаю, что можно не переводить. Ну и фолловьте меня в твиттере заодно.

https://twitter.com/chicoxyzzy/status/1027881659998371841

upd: заслал пулл реквест Surma, и он уже даже задеплоил изменения на https://ishoudinireadyyet.com
В эти выходные видимо без новостей. Так случилось, что у меня день рождения. До понедельника.
W3C CSS Working Group опубликовала 2 новых Candidate Recommendation (https://www.w3.org/TR/2018/CR-css-scroll-snap-1-20180814/ и https://www.w3.org/TR/2018/CR-css-values-3-20180814/), а также First Public Working Draft новой версии последней (https://www.w3.org/TR/2018/WD-css-values-4-20180814/)

Также W3C опубликовала Candidate Recommendation TTML2 для синхронизации текста во времени
https://www.w3.org/blog/news/archives/7243
Девненько ничего не писал, да и до середины сентября вообще с этим будет сложно. Тем не менее, какие-то новости буду пытаться писать время от времени не смотря ни на что. И вот очень горячая новость: релиз Babel 7 запланирован на пятницу, но я вам ничего не рассказывал 🙊
Интересный API для координации ресурсов между контекстами (табами, воркерами)
https://github.com/WICG/web-locks/blob/master/EXPLAINER.md
Там же другие ссылки и объяснение почему нельзя было зареюзать Atomics, которые используются в SharedArrayBuffer.

В данный момент Web Locks API находится на этапе Editor’s Draft в Web Platform Incubator Community Group (это инкубатор предложений для w3c). API позволяет “захватить” ресурс в одном из контекстов и запланировать доступ к ресурсу из других контекстов.

Пример использования API
async function get_lock_then_write() {
await navigator.locks.request('resource', async lock => {
await async_write_func();
});
}

async function get_lock_then_read() {
await navigator.locks.request('resource', {mode: 'shared'}, async lock => {
await async_read_func();
});
}


Интересно, что текущий пропозал Web Locks упоминает AbortSignal, который используется в данный момент для отмены fetch-запроса в современных браузерах. Explaner пропозала предостерегает о возможных дедлоках. Наконец-то дедлоки в вебе! JavaScript, ты теперь совсем взрослый 😄

За подробными примерами, юзкейсами, альтернативными пропозалами и FAQ проходите по ссылке в начале этого сообщения.
А в WebKit сегодня попал вот такой вот патч:
https://bugs.webkit.org/attachment.cgi?id=347525&action=diff

Это Web Share API, который тоже продвигается WICG (Web Platform Incubator Community Group) и описывается вот здесь https://github.com/WICG/web-share/blob/master/docs/explainer.md

Это предложение стандарта позволяет делиться контентом не только с системными сервисами операционных систем и нативными приложениями, но и с другими веб приложениями. Для того, чтобы последние могли принимать шейры, существует отдельный пропозал, спека, которого разрабатывается отдельно, а explaner лежит вот тут https://github.com/WICG/web-share-target/blob/master/docs/explainer.md

В хроме для Android этот API поддерживается с версии 61 и был анонсирован 2 года назад https://developers.google.com/web/updates/2016/09/navigator-share
Секрет про пятничный Babel 7 теперь не секрет, полчаса назад Генри анонсировал его в своем твиттере.
https://twitter.com/left_pad/status/1031700991186489344
Вебня
Интересный API для координации ресурсов между контекстами (табами, воркерами) https://github.com/WICG/web-locks/blob/master/EXPLAINER.md Там же другие ссылки и объяснение почему нельзя было зареюзать Atomics, которые используются в SharedArrayBuffer. В данный…
Ах да. Совсем забыл написать к чему я это. Этот API будет добавлен в Chrome 69, который выйдет уже 4 сентября (а днем позже, 5 сентября, выйдет еще и Firefox 62, но об этом позже).

Вот полный список фич, которые появятся в этой версии
https://www.chromestatus.com/features/5706155347148800

Вот блогпост от команды хромиума на эту тему
https://blog.chromium.org/2018/08/chrome-69-beta-av1-video-decoder-css.html

В общем, будет весьма интересный релиз. Будет несколько крутых CSS-фич (хотя лично я CSS недолюбливаю и вообще верстать не умею). Будет офигеннейшая штука — OffscreenCanvas для рендеринга в веб воркерах. Поддержка flat и flatMap для массивов добавится в v8. Будет несколько прикольных API (включая упомянутый Web Locks API), улучшения ServiceWorker, API веб аутентификации, WebRTC.
В SpiderMonkey влили Object.fromEntries. Ждем в Firefox 63 (релиз запланирован на 23 октября)
Сам пропозал https://github.com/tc39/proposal-object-from-entries