Компания Google представила (https://chromereleases.googleblog.com/2019/04/stable-channel...) релиз web-браузера Chrome 74 (http://www.google.com/chrome). Одновременно доступен (https://www.chromium.org/developers/calendar) стабильный выпуск свободного проекта Chromium (http://dev.chromium.org/), выступающего основой Chrome. Браузер Chrome отличается (https://code.google.com/p/chromium/wiki/ChromiumBrowserVsGoo...) использованием логотипов Google, возможностью загрузки модуля Flash по запросу, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого видеоконтента, системой автоматической установки обновлений и передачей при поиске RLZ-параметров (https://www.opennet.dev/opennews/art.shtml?num=26822). Следующий выпуск Chrome 75 запланирован на 4 июня.Основные (https://support.google.com/chrome/a/answer/7679408) изменения (https://productforums.google.com/forum/#!forum/chrome) в (https://blog.chromium.org/2019/03/chrome-74-beta-reducing-un...) Chrome (https://developers.google.com/web/updates/2019/) 74 (https://v8.dev/blog/v8-release-74):
- При наступлении события onUnload, вызываемого при закрытии страницы, теперь запрещено (https://developers.google.com/web/updates/2018/12/chrome-72-...) выводить всплывающие окна (блокируется вызов window.open()), что позволит защитить пользователей от принудительного открытия рекламных страниц после закрытия сомнительных сайтов;
- В JavaScript-движке реализована (https://v8.dev/blog/v8-release-74) появился новый режим JIT-less (https://v8.dev/blog/jitless) (флаг "--jitless"), дающий возможность выполнить JavaScript без применения JIT (используется только интерпретатор) и без выделения исполняемой памяти в процессе выполнения кода. Отключение JIT может быть полезным для повышения безопасности при работе с потенциально опасными web-приложениями, а также для обеспечения сборки на платформах, запрещающих использование JIT (например, в iOS, на некоторых Smart TV и игровых консолях. При отключении JIT производительность выполнения JavaScript снижается на 40% в тесте Speedometer 2.0 и на 80% в тесте Web Tooling Benchmark, но при симуляции работы с YouTube отмечено снижение производительности лишь на 6%. Потребление памяти при этом уменьшается незначительно, всего на 1.7%;
- В V8 также предложена большая порция новых оптимизаций. Например, на 60% ускорено выполнение вызовов функций, в которых число фактически переданных параметров не соответствует указанному при определении функции числу аргументов. Ускорен доступ к своействам DOM при помощи функции get, что положительно повлияло на производительность фреймворка Angular. Ускорена работа парсинга JavaScript: оптимизация декодировщика UTF-8 позволила поднять производительность парсера в режиме streaming (разбор по мере загрузки) на 8%, а исключение лишних операций дедупликации дало прирост ещё на 10.5%;- Проведена работа по снижению потребления памяти движка JavaScript.
Добавлен код для очистки кэша байткода, который занимает примерно 15% от всего размера кучи. В сборщик мусора добавлена стадия для вытеснения из кэша редко скомпилированного байткода для используемых функций или функций, вызываемых только при инициализации. Решение о чистке принимается на основании новых счётчиков, учитывающих последнее время обращения к байткоду. Указанное изменение позволило снизить потребление памяти на 5–15% без негативного влияния на производительность. Дополнительно, в компиляторе байткода исключена генерация заведомо неиспользуемого кода, например, который следует после return или break (если на него нет Jump-перехода);- Для WebAssembly реализована (https://developers.google.com/web/updates/2018/10/wasm-threads) поддержка потоков и атомарных операций (API WebAssembly Threads и WebAssembly Atomics);
- Для обособленной поставки скриптов добавлена поддержка заголовка "#!", определяющего интерпретатор для запуска. Например, по аналогии с другими скриптовыми языками, файл JavaScript может выглядеть примерно так:
#!/usr/bin/env node
console.log(42);
- В CSS добавлен новый media-запрос "prefers-reduced-motion (https://drafts.csswg.org/mediaqueries-5/#prefers-reduced-motion)", позволяющий сайту определить состояние настроек в операционной системе, связанных с отключением анимированных эффектов. При помощи предложенного запроса владелец сайта может (https://developers.google.com/web/updates/2019/03/prefers-re...) узнать, что пользователь отключил у себя анимированные эффекты и также отключить различные анимационные возможности на сайте, например, убрать эффект дрожания кнопок, используемых для привлечения внимания;- В дополнение к появившейся в Chrome 72 возможности определения публичных полей реализована поддержка (https://developers.google.com/web/updates/2018/12/class-fields) пометки полей приватными, после чего доступ к их значениям будет открыт только внутри класса. Для пометки поля приватным следует указать перед именем поля знак "#". Как и в случае с публичными полями приватные свойства не требуют явного использования конструктора.
- HTTP-заголовок Feature-Policy, позволяющий управлять поведением API и включением определённых возможностей (например, можно включить синхронный режим работы XMLHttpRequest или отключить Geolocation API), дополнен JavaScript API (https://developers.google.com/web/updates/2018/06/feature-po...) для контроле активности тех или иных возможностей. Для разработчиков предложено два новых метода document.featurePolicy и frame.featurePolicy, предлагающих три функции:
allowedFeatures() для получения списка разрешённых для текущего домена функций, allowsFeature() для выборочной проверки включения конкретных возможностей и getAllowlistForFeature() для вывода списка доменов, для которых на текущей странице разрешена указанная возможность;- Добавлена экспериментальная ("chrome://flags#enable-text-fragment-anchor") поддержка режима Scroll-To-Text (https://www.opennet.dev/opennews/art.shtml?num=50156), позволяющего формировать ссылки на отдельные слова или фразы, без явного указания в документе меток при помощи тега "a name" или свойства "id". Для передачи ссылки предлагается специальный параметр "#targetText=", в котором можно указать текст для перехода. Допускается указание маски, включающей фразы, указывающие на начало и конец фрагмента с использованием запятой в качестве их разделителя (например, "example.com#targetText=start%20words, end%20words");
- В конструктор AudioContext добавлена опция sampleRate (https://www.chromestatus.com/feature/5136778254090240), позволяющая установить делаемую частоту дискретизации для операций со звуком через Web Audio API;
- Добавлена поддержка класса Intl.Locale ([https://www.chromestatus.com/feature/4936310187884544), предоставляющего методы для разбора и обработки выставляемых локалью параметров языка, региона и начертания, а также для чтения и записи тегов расширений Unicode, сохранения пользовательских настроек локали в сериализированном формате;- Механизм Signed HTTP Exchanges (https://wicg.github.io/webpackage/draft-yasskin-http-origin-...) (SXG) расширен средствами для информирования (https://www.chromestatus.com/feature/5687904902840320) распространителей контента об ошибках загрузки подписанного контента, таких как проблемы с верификацией сертификатов. Обработка ошибок производится через расширения API Network Error Logging (https://developers.google.com/web/updates/2018/09/reportinga...). Напомним, что SXG позволяет (https://www.opennet.dev/opennews/art.shtml?num=50033) владельцу одного сайта при помощи цифровой подписи авторизовать размещения определённых страниц на другом сайте, после чего в случае обращения к этим страницам на втором сайте, браузер будет показывать пользователю URL исходного сайта, несмотря на то, что страница загружена с другого хоста;
- В класс ...
URL: https://chromereleases.googleblog.com/2019/04/stable-channel...
Новость: https://www.opennet.dev/opennews/art.shtml?num=50559
>Браузер Chrome отличается ... возможностью загрузки модуля Flash по запросуChromium тоже умеет скачивать Flash. А вот чем действительно отличается Chrome так это наличием DRM-модуля libwidevinecdm.
Вы список до конца дочитайте, там написано "модулями для воспроизведения защищённого видеоконтента".
# это не молодежно, надо 50 тире а затем 30 тильд.Ну вот есть же нормальное слово private, всем понятное. Эх все через одно место делается.
Да, блин, учитывая, что для статиков добавили ключевое слово, а все приватные члены, которых в классе должно быть большинство, увеличили на один уродливый символ, который будет сильно выделяться в коде.По хорошему, JS должен стремиться к TS, по крайней мере, к адекватным его частям. Особенно, если перенимает функционал, который уже есть в TS.
Но, видимо, Майкрософт, NIH-синдром и еще какие-то тараканы в голове портят и так не самый стройный язык.
Зачем думать если можно костылять?— ЖС
А лиса не решилась поддерживать SXG?
Они дали статус harmful данной технологии - https://mozilla.github.io/standards-positions/
так чтос корее всего будут упираться до последнего. Сафари кстати тоже не хочет поддерживать это. Хромоподобные браузеры подтянутся, куда им деваться.
При наступлении события onUnload, вызываемого при закрытии страницы, теперь запрещено выводить всплывающие окна (блокируется вызов window.open()), что позволит защитить пользователей от принудительного открытия рекламных страниц после закрытия сомнительных сайтов;
>>Note: This feature was actually removed in Chrome 74. We apologize for the mistake.
>Note: This feature was actually removed in Chrome 74. We apologize for the mistake. \Это вырванная из контекста фраза из примечания к выпуску Chrome _72_, которая говорит о том, что изменение подейсвует в Chrome 74, а не в Chrome 72, как они изначально сообщили.
https://developers.google.com/web/updates/2018/12/chrome-72-...
Нет никаких причин считать, что JIT влияет на безопасность. В Эпол как всегда наидиотничали.
JIT противоречит главному правилу построения безопасных ОС,- разрешает изменять исполняемый код.Оптимизация должна проходить на этапе компиляции,а jit это не естественный костыль открывающий дыру.
Linux+PAX, OpenBSD и другие ОС корректно работающие с памятью не разрешают запуск программы изменяющих исполняемый код.
В GNU Octave тоже это наконец поняли и добавили к configure опцию --disable-jit.
> JIT противоречит главному правилу построения безопасных ОС,- разрешает изменять исполняемый код.
> Оптимизация должна проходить на этапе компиляции,а jit это не естественный костыль открывающий дыру.
> Linux+PAX, OpenBSD и другие ОС корректно работающие с памятью не разрешают запуск программы изменяющих исполняемый код.В целом согласен. Перепощу свою же интересную (на мой взгляд) ссылку из соседнего треда: https://marc.info/?l=openbsd-misc&m=152872551609819&w=2 - Тео Де Раадт о безопасности Chrome и FF.
Интересные, в контексте обсуждения, цитаты:
> In a browser, there are 2 main security components you want: The main security advantage is privsep. The other is W^X jit.
> chrome was designed to be privsep
> From where I stand, I think it (Firefox - прим.) fails to be privsep because the various process initializations still need way too much, and tasks aren't being done in the right process. I think firefox is still only 2 process classes, whereas chrome is 6 or 7.
> BTW, the jit in chrome isn't W^X. So chrome is behind in one sense, because the jit in firefox is W^X [well not truly, it uses two mappings of the same object, and if the attacker can find the shadow he can play, but it is still raising the bar]В целом, из написанного Тео следует, что в Chrome архитектура больше ориентирована на безопасность.
Что гугл заботливо компенсирует своими зондами (это уже я, а не Тео).
Забавно как новость об этом релизе совпала с этой новостью: https://www.opennet.dev/opennews/art.shtml?num=50565
А ключ гпг для дебовской репы так и не обновили :(
> одна премия $1337за что такую элитную премию выплатили интересно?
>В JavaScript-движке V8 реализован новый режим JIT-less (флаг "--jitless"), дающий возможность выполнить JavaScript без применения JIT (используется только интерпретатор) и без выделения исполняемой памяти в процессе выполнения кода.АНБшники решили что для сохранения хрома в безопасных системах лучше выкинуть с него jit...
Скомпильте кто с --jitless попробуйте запустить в системе linux c PAX и отпишите здесь. Я не верю что они поправили в хроме работу с памьятью.
Вы хорошо пишите.
Но s/выкинуть с него/выкинуть из него/
создайте папку в панели закладок в ней еще пару папок в них еще пару... сохраните в последних по 2-3 ссылки
И Вы убедитесь какое же говно этот хром...
+1. Обновил до этой версии, сразу же заметил, что перед открытием каких-либо диалогов/меню, сначала на их месте появляется долю секунды чёрное пятно, а потом отрисовывается содержимое. И по ощущениям, каждый раз он становится хуже и хуже. То ли дело Firefox, с каждой новой версией ощущается, как браузер становится лучше.
Там хотят что-то сделать с закладками, придется переходить на seamonkey.
> Там хотят что-то сделать с закладками, придется переходить на seamonkey.Что именно? Не встречал подобной инфы.
Да всё там на надо менять. Выглядит страшно как из прошлого века.
Естественно, что у Mozilla не куча ресурсов, поэтому не всё сразу.
То есть дерево совсем уберут? А сами-то разработчики каким браузером планируют пользоваться?
> что перед открытием каких-либо диалогов/меню, сначала на их месте появляется долю секунды чёрное пятноНу это что-то с видеосистемой
В Firefox - всё ок. И в других браузерах - тоже. Только Chrome так чудить стал с этого выпуска. При этом, у меня Nvidia выключена, только графика Intel.
> В Firefox - всё ок.У тебя линукс? Ну на нём и Firefox сильно отстаёт от того же Chrome по производительности отрисовки. Этак раза в два.
Две стороны одной медали - большая скорость, но глючность при проблемах с видеосистемой.
>У тебя линукс?Тут у всех Linux. Это же опеннет.
>Ну на нём и Firefox сильно отстаёт от того же Chrome по производительности отрисовки.
Наоборот. У меня Firefox шустрее Хрома работает. Разве что, всякие там Gapps, более быстрые в Хроме. Но тут уже была недавно новость, как Гугл специально делает ошибки в Gapps для Firefox.
ни когда не понимал в чем глобальное преимущество хромого перед лисой (да знаю там своя атмосфера но альфабет это такая такое)
отдельный браузер для логина в гугл
Ещё удалён флаг #disable-hyperlink-auditing
>новый режим JIT-less (флаг "--jitless")Как его включить? В chrome://flags/ его нет. Или это нужно весь хром переустанавливать с этим параметром? Это в линукс если что.
Версия 74.0.3729.157 (Официальная сборка), (64 бит) Chromium на FreeBSD сегодня появилась.