Рэліз Chrome 74

Кампанія Google прадставіла рэліз web-браўзэра Хром 74. Адначасова даступны стабільны выпуск свабоднага праекта Хром, Які выступае асновай Chrome. Браўзэр Chrome адрозніваецца выкарыстаннем лагатыпаў Google, магчымасцю загрузкі модуля Flash па запыце, наяўнасцю сістэмы адпраўкі апавяшчэнняў у выпадку краху, модулямі для прайгравання абароненага відэакантэнту, сістэмай аўтаматычнай усталёўкі абнаўленняў і перадачай пры пошуку RLZ-параметраў. Наступны выпуск Chrome 75 запланаваны на 4 чэрвеня.

Асноўныя змены в хром 74:

  • Пры наступе падзеі onUnload, выкліканага пры зачыненні старонкі, зараз забаронена выводзіць усплывальныя вокны (блакуецца выклік window.open()), што дазволіць абараніць карыстальнікаў ад прымусовага адкрыцця рэкламных старонак пасля закрыцця сумнеўных сайтаў;
  • У JavaScript-рухавічку рэалізавана з'явіўся новы рэжым JIT-less (сцяг «—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-пераходу);

    Рэліз Chrome 74

  • Для WebAssembly рэалізавана падтрымка патокаў і атамарных аперацый (API WebAssembly Threads і WebAssembly Atomics);
  • Для адасобленай пастаўкі скрыптоў дададзена падтрымка загалоўка "#!", Які вызначае інтэрпрэтатар для запуску. Напрыклад, па аналогіі з іншымі скрыптовымі мовамі, файл JavaScript можа выглядаць прыкладна так:

    #!/usr/bin/env node
    console.log(42);

  • У CSS дададзены новы media-запыт «prefers-reduced-motion«, Які дазваляе сайту вызначыць стан налад у аперацыйнай сістэме, звязаных з адключэннем анімаваных эфектаў. Пры дапамозе прапанаванага запыту ўладальнік сайта можа даведацца, што карыстач адключыў у сябе аніміраваныя эфекты і таксама адключыць розныя анімацыйныя магчымасці на сайце, напрыклад, прыбраць эфект дрыгацення кнопак, выкарыстоўваных для прыцягнення ўвагі;
  • У дадатак да якая з'явілася ў Chrome 72 магчымасці вызначэння публічных палёў рэалізавана падтрымка пазнакі палёў прыватнымі, пасля чаго доступ да іх значэнняў будзе адкрыты толькі ўнутры класа. Для паметкі поля прыватным трэба пазначыць перад імем поля знак «#». Як і ў выпадку з грамадскімі палямі асабістыя характарыстыкі не патрабуюць яўнага выкарыстання канструктара.
  • HTTP-загаловак Feature-Policy, які дазваляе кіраваць паводзінамі API і ўключэннем пэўных магчымасцяў (напрыклад, можна ўключыць сінхронны рэжым працы XMLHttpRequest або адключыць Geolocation API), дапоўнены JavaScript API для кантролю актыўнасці тых ці іншых магчымасцяў. Для распрацоўшчыкаў прапанавана два новыя метады document.featurePolicy і frame.featurePolicy, якія прапануюць тры функцыі:
    allowedFeatures() для атрымання спісу дазволеных для бягучага дамена функцый, allowsFeature() для выбарачнай праверкі ўключэння канкрэтных магчымасцяў і getAllowlistForFeature() для вываду спісу даменаў, для якіх на бягучай старонцы дазволена названая магчымасць;

  • Дададзена эксперыментальная («chrome://flags#enable-text-fragment-anchor») падтрымка рэжыму Scroll-To-Text, які дазваляе фармаваць спасылкі на асобныя словы ці фразы, без відавочнага ўказання ў дакуменце пазнак пры дапамозе тэга «a name» або ўласцівасці «id». Для перадачы спасылкі прапануецца спецыяльны параметр "#targetText=", у якім можна пазначыць тэкст для пераходу. Дапускаецца ўказанне маскі, у якую ўваходзяць фразы, якія паказваюць на пачатак і канец фрагмента з выкарыстаннем коскі ў якасці іх падзельніка (напрыклад, «example.com#targetText=start%20words, end%20words»);
  • У канструктар AudioContext дададзена опцыя sampleRate, якая дазваляе ўсталяваць робімую частату дыскрэтызацыі для аперацый з гукам праз Web Audio API;
  • Дададзена падтрымка класа Intl.Locale, які прадстаўляе метады для разбору і апрацоўкі выстаўляюцца лакаллю параметраў мовы, рэгіёна і напісання, а таксама для чытання і запісы тэгаў пашырэнняў Unicode, захавання карыстацкіх налад лакалі ў серыялізаваным фармаце;
  • механізм Signed HTTP Exchanges (SXG) пашыраны сродкамі для інфармавання распаўсюджвальнікаў кантэнту аб памылках загрузкі падпісанага кантэнту, такіх як праблемы з верыфікацыяй сертыфікатаў. Апрацоўка памылак ажыццяўляецца праз пашырэнні API Network Error Logging. Нагадаем, што SXG дазваляе уладальніку аднаго сайта пры дапамозе лічбавага подпісу аўтарызаваць размяшчэння вызначаных старонак на іншым сайце, пасля чаго ў выпадку звароту да гэтых старонак на другім сайце, браўзэр будзе паказваць карыстачу URL зыходнага сайта, нягледзячы на ​​тое, што старонка загружана з іншага хаста;
  • У клас TextEncoder дададзены метад encodeInto(), які дазваляе запісаць закадаваную радок напрамую ў папярэдне выдзелены буфер. Метад encodeInto() з'яўляецца высокапрадукцыйнай альтэрнатывай метады encode(), які патрабуе выканання аперацыі вылучэння буфера пры кожным звароце.
  • У Service worker забяспечана буферызацыя выкліку client.postMessage() да моманту гатовасці дакумента. Паведамленні, адпраўленыя праз client.postMessage(), будуць утрыманыя да стадыі генерацыі падзеі DOMContentLoaded, усталёўкі onmessage або выкліку startMessages();
  • У адпаведнасці з патрабаваннем спецыфікацыі CSS Transitions дададзены падзеі transitionrun, transitioncancel, transitionstart і transitionend, якія генерыруюцца калі CSS-пераход змешчаны ў чаргу, адмяняецца, пачынае або заканчвае выконвацца.
  • Пры ўказанні праз overrideMimeType() або MIME-тып некарэктнай кадоўкі знакаў для запыту XMLHttpRequest, зараз ажыццяўляецца адкат на UTF-8 замест Latin-1;
  • Абвешчана састарэлым і будзе выдалена ў адным з наступных выпускаў уласцівасць "allow-downloads-without-user-activation", праз якое можна было арганізаваць аўтаматычную загрузку файлаў пры апрацоўцы iframe. У будучыні ініцыяванне загрузкі файлаў без відавочнага дзеяння карыстача будзе забаронена, бо яно актыўна ўжывалася для злоўжыванняў, навязванні загрузак і падстаноўкі частак шкоднаснага ПА на кампутар карыстача. Для пачатку загрузкі абавязкова запатрабуецца клік карыстальніка на той жа старонцы. Першапачаткова ўласцівасць планавалася выдаліць у Chrome 74, але выдаленне было адкладзена да Chrome 76.
  • Для платформы Windows прапанавана апцыянальная цёмная тэма афармлення інтэрфейсу (у мінулым выпуску цёмнае афармленне было падрыхтавана для macOS). Так як цёмнае афармленне амаль ідэнтычна афармленню ў рэжыме інкогніта, для вылучэння прыватнага рэжыму працы замест піктаграмы профілю карыстальніка дададзены спецыяльны індыкатар;
  • Для карпаратыўных карыстальнікаў дададзена магчымасць Воблачнае кіраванне браўзерам Chrome для кіравання наладамі браўзэраў карыстальнікаў праз кансоль Google Admin;

    Рэліз Chrome 74

Акрамя новаўвядзенняў і выпраўленні памылак у новай версіі ўхілена 39 уразлівасцяў. Многія з уразлівасцяў выяўлены ў выніку аўтаматызаванага тэсціравання інструментамі AddressSanitizer, Ачышчальнік памяці, Цэласнасць патоку кіравання, LibFuzzer и AFL. Крытычных праблем, якія дазваляюць абыйсці ўсе ўзроўні абароны браўзэра і выканаць код у сістэме за межамі sandbox-акружэнні, не выяўлена. У рамках праграмы па выплаце грашовай узнагароды за выяўленне ўразлівасцяў для бягучага рэлізу кампанія Google выплаціла 19 прэміі на суму 26837 даляраў ЗША (чатыры прэміі $3000, чатыры прэміі $2000, адна прэмія $1337, чатыры прэміі $1000, тры прэміі $500). Памер 4 узнагароджанняў пакуль не вызначаны.

Крыніца: opennet.ru

Дадаць каментар