Как стать автором
Обновить

Комментарии 4

Что ж, будем автора комментировать критиковать. И ещё переводчику: не она, а он.

Релиз Safari 16.4 казался близким, но мы не знали точно, потому что его
график был неизвестен. Что нам делать? Они внесли изменение, но проблема
сохранилась? Или исправление ещё не внесено?

Исправление внесено - не внесено? Я в тонкостях Safari не разбираюсь, но Webkit разрабатывается публично, проследить по истории коммитов можно. Не говорю, что не без лишней работы, но такого красного словца автора бы лишил - можно не гадать, а посмотреть или, как минимум, прикинуть окно релиза. Ибо:

Также учтите, что единственный способ узнать, что же реально выпустят в
версии браузера — это просто вручную тестировать каждый релиз Safari

см. предыдущий параграф.

В Safari 16.4 добавили поддержку OffscreenCanvas, но только контекст "2d"
— поддержки WebGL по-прежнему не было. Для рендеринга Construct
требуется WebGL. Поэтому он видел, что OffscreenCanvas поддерживается,
создавал воркера, создавал OffscreenCanvas, затем получал null
для контекста WebGL, после чего происходит сбой и пользователь видел
пустой экран. На самом деле, это была самая крупная проблема из всех.
Из-за него ломался весь объём имеющегося веб-контента. Мы выпустили второй экстренный патч

Это случается, когда код пишет ChatGPT используя примеры со StackOverflow. Читаем доку и как избежать экстренных патчей:

OffscreenCanvas.getContext()

The OffscreenCanvas.getContext() method returns a drawing context for an offscreen canvas, or null if the context identifier is not supported.

Не обработали пограничный случай? И сколько у вас таких? Очевидно, в этой ситуации fallback имелся.

Я не ожидала, что браузер выпустят с частью контекстов

При этом, как я понимаю, пройти мимо getContext() вообще невозможно, в нем указывается тип контекста (webgl, 2d, webgl2) и при подсветке доки должно было быть описание про null (в IDE же встроена дока?) Ну хоть сознался.

Прочитав соответствующую спецификацию, я всё ещё не могу сказать, будучи веб-разработчиком

Но вину признать отказывается (и копает не там).

Safari тогда следовало отложить реализацию OffscreenCanvas до того, как
появится поддержка WebGL, и тогда бы весь соответствующий веб-контент
продолжил работать.

Собственно из-за чего мой комментарий в таком тоне. Все вокруг виноваты, что веб...разработчики API не читает.

В остальном критика хороша, как и то, что баги засылают. Молодец, что добился compat хака для Construct. Иначе бы старые релизы на просторах инета сломались.

Как вы предлагаете по истории коммитов wetbkit определить, что и когда попадёт в релиз?

Сафари - дерьмо, которое постоянно что-нибудь новое ломает.

Чтобы не быть голословным придется расписать весь таймлайн и уже по нему судить, но началось всё с этой цитаты:

Также учтите, что единственный способ узнать, что же реально выпустят в
версии браузера — это просто вручную тестировать каждый релиз Safari

Поехали.

Я надлежащим образом отправила issue 17 февраля.

  1. 2023-02-17: New issue

  2. 2023-02-27: Chris Dumez бисектит, откуда ростут ноги.

  3. 2023-02-27: Brandon продебажил, сделал (быстрый) фикс, сделал PR. PR замержили через 6 часов.

  4. 2023-03-13: Ashley говорит, что всё еще не видит фикса в Safari TP 165.

  5. 2023-03-13: Chris Dumez отвечает, что фикс в коммите 260923@main (см. PR), а последний коммит в TP только 260848@main (25-26 февраля, в зависимости от часового пояса).

То есть тут мы видим, что просто следя за коммитами, можно увидеть, залетел ли твой PR/коммит/фикс в очередной TP или нет.

TP 165: This release includes WebKit changes between: 260164@main…260848@main. -- НЕТ

TP 166: This release includes WebKit changes between: 260849@main…261247@main. -- ДА

Правда говоря, в changelog от TP о нем не написано.

  1. Safari TP 163: 2023-02-08 (репорт базируется на этой версии)

  2. Safari TP 164: 2023-02-22

  3. Safari TP 165: 2023-03-08

  4. Safari TP 166: 2023-03-23 (fix landed)

  5. Safari 16.4: 2023-03-28

  6. Safari TP 167: 2023-04-05

Мое возражение о том, что якобы надо тестировать "каждый релиз". Ну нет, как минимум TP 165 не надо было, если бы он ориентировался на историю коммитов. И если это он сказал не для красного словца (это у него получилось), то я не знаю, лукавит он, либо откровенно врёт для привлечения внимания.

ЧТО попадает в стабильный релиз Safari - тут да, он прав. Стопроцентного списка изменений нету. Мне как человеку далекому не понятно, по какому принципу формируются их стабильные релизы. Последний TP всегда вливается как есть или Apple бэкпортит некоторые коммиты на предыдущую версию? Это решающий вопрос. Ему должно быть виднее, он-то с опытом?

Ashley:

> I'd add that I don't know what "public seeding" means, how long it takes, or

> how long "soon" means, so I still don't know if release will be in 2 days, 2

> weeks or 2 months.

Ответ:

Looking at previous year release cycles may be helpful.

Хотя ответ Эшли на это тоже резонен: кто знает, изменилась ли у них политика за год или нет. Но этот другой баг репорт примечателен другим: выяснилось, что их Construct основывался на неправильном поведении Chrome в плане устройства webworker IDs. Короче говоря, в багтрекере ему ответили, что Firefox и Safari работают по спеке, а Хром нет. И пока Хром это поведение не подправит, надо исправить код, который тогда заработает и в Safari и в Firefox. Ему даже вариант решения описали (комментарий 16).

Что же он отвечает? (комментарий 17)

For now, I have added code that does user-agent sniffing and blanket disables our use of OffscreenCanvas on Safari. // это по поводу проблемы из статьи

...

I will also look in to updating the SW to map client IDs for workers, but similarly we will have to be careful how we roll that out. // это ответ на №16

Я тут (в очередной раз) с него офигел. По-первых, ИСПОЛЬЗОВАТЬ USER-AGENT В 2023 ГОДУ ДЛЯ ОБНАРУЖЕНИЯ ФИЧ? Он серьезно? Во-вторых, то как отписался по поводу второго, у меня сомнения, что тут они поступят как-то иначе. Очевидно, нужен client-side детект, потому что мир одним только Хромом не ограничен.

So the site relies on a Chrome bug.

https://bugs.chromium.org/p/chromium/issues/detail?id=832071

Probably there is a need of a comment on this bug to say that the current behavior creates an issue for Safari (by setting the wrong expectations for webdevs.)

One question though. Ashley, does your application currently break in Firefox? (as Firefox and Safari share the same behavior).

I would recommend not doing User-Agent sniffing. Would it be possible to detect the different behavior with what Youenn provided? The returned objects being different that would make a better switch mode than UA sniffing. That would also make the system independent of any release dates.

В том случае, да, они детектят на стороне клиента, но всё же.

Вкупе с тем, что я без детальных разборов показал, где собака зарыта (нечтение документации, необработка null, хотя именно это и описано), мне кажется, что ОН пытается выглаживать проблемы своей команды (буквально) погроммистов административными методами -- капанье всем на мозги в багтрекере. И что на тот момент они так и не нашли место, с которого начинается "неработа offscreen canvas api", а именно getContext(...), которая возвращает null. Вместо этого user-agent. Занавес.

И последний "административный метод" -- сей блог-пост. И если от этого действительно что-то в Apple изменится -- к сожалению, от эмоциональных писанин и Твиттера сегодня толку больше, чем от "спокойной связи" -- то хорошо, а если он и в самом деле начнет заниматься с европейскими регуляторами (как он грозился) -- то ещё лучше.

По остальным перечисленным пунктам я его комментировать не могу, т.к. не веб-разработчик. А так как OffscreenCanvas был центром статьи, да ещё и преподнесен так слёзно - то на этом я на нем и оторвался.

"Фикс" OffscreenCanvas - это проследить в дебаггере от какого места идет ошибка. И не надо будет недели вырванных волос хотфиксов на 3 дня. Опять же, повторюсь, добиться compat-workaround от Webkit/Apple - тут он да, молодец.

Safari для игр это зло.
Вдвойне - если это мобильное Safari.

Как хоббийный геймразработчик, я надеюсь, что в аду есть специальный круг ада для разработчиков Safari, а для разработчиков мобильной версии Safari, которая еще и со своей же десктопной версией совместима абы как -- еще и конкурсы интересные там же.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории