{"id":22813,"date":"2018-09-19T14:59:40","date_gmt":"2018-09-19T18:59:40","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=22813"},"modified":"2020-12-24T11:58:32","modified_gmt":"2020-12-24T16:58:32","slug":"safari-12","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2018\/09\/19\/safari-12\/","title":{"rendered":"Safari 12"},"content":{"rendered":"<p><a href=\"https:\/\/daringfireball.net\/linked\/2018\/09\/17\/safari-12-favicons\">John Gruber<\/a>:<\/p>\n<blockquote cite=\"https:\/\/daringfireball.net\/linked\/2018\/09\/17\/safari-12-favicons\">\n<p>My favorite new feature today, <a href=\"https:\/\/daringfireball.net\/2017\/08\/safari_should_display_favicons_in_its_tabs\">of course<\/a>, is the ability to <a href=\"https:\/\/twitter.com\/rmondello\/status\/1041738183296245762\">show website favicons in Safari tabs<\/a> &mdash; a feature now available in Safari 12 and iOS 12. They&rsquo;re off by default, but the way they work on Mac, iPad, and iPhone is just perfect.<\/p>\n<\/blockquote>\n\n<p>This is great.<\/p>\n\n<p><a href=\"https:\/\/twitter.com\/rmondello\/status\/1041735960386367488\">Ricky Mondello<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/rmondello\/status\/1041735960386367488\">\n<p>I&rsquo;m going to highlight a few iCloud Keychain, Safari, and WebKit features and improvements that mean a lot to me. (Thread&#8230;)<\/p>\n<p>[&#8230;]<\/p>\n<p>While you&rsquo;re in Safari 12&rsquo;s preferences on macOS, stop by the Passwords pane, which has a new look and a feature to show you where you&rsquo;re reusing passwords.<\/p>\n<p>[&#8230;]<\/p>\n<p>The link to change your password for a website through iCloud Keychain on iOS 12 and Safari 12 allows for web developers to help streamline the password change process.<\/p>\n<p>[&#8230;]<\/p>\n<p>If you&rsquo;ve ever had a website insist on using a pop-up window to do something important, you&rsquo;ll appreciate Safari 12&rsquo;s new affordance for allowing a blocked pop-up from a website.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/sixcolors.com\/post\/2018\/09\/give-new-life-to-old-extensions-in-safari-12\/\">Dan Moren<\/a>:<\/p>\n<blockquote cite=\"https:\/\/sixcolors.com\/post\/2018\/09\/give-new-life-to-old-extensions-in-safari-12\/\">\n<p>Firstly, Safari no longer supports extensions cryptographically signed by developers themselves. The browser also implements a new Safari App Extensions API, which doesn&rsquo;t have all the features of the previous, now deprecated extension API, <a href=\"http:\/\/safarikeywordsearch.aurlien.net\">causing some developers to cease work on extensions<\/a>.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/eclecticlight.co\/2018\/09\/19\/safari-12-a-good-step-forward-but-mind-the-extensions\/\">Howard Oakley<\/a>:<\/p>\n<blockquote cite=\"https:\/\/eclecticlight.co\/2018\/09\/19\/safari-12-a-good-step-forward-but-mind-the-extensions\/\">\n<p>There is, though, a worrying anomaly in Safari 12&rsquo;s handling of plugins. XProtect is the tool which determines the oldest version of vulnerable plugins such as Flash which are permitted to operate. With Apple&rsquo;s six-month neglect of updating the XProtect database, macOS and Safari 12 currently tolerate six-month old versions of Flash and other vulnerable plugins.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/stackoverflow.com\/a\/52394459\/6311\">hax<\/a> (via <a href=\"https:\/\/news.ycombinator.com\/item?id=18021835\">Hacker News<\/a>):<\/p>\n<blockquote cite=\"https:\/\/stackoverflow.com\/a\/52394459\/6311\"><p>Per my testing, the bug is due to the optimization of array initializers in which all values are primitive literals.  For example, <code>() =&gt; [1, null, 'x']<\/code> will result in such an array; all returned array references from this lambda will link to the same memory address, and some method like <code>toString()<\/code> will be cached. Normally, any mutable operation on such arrays will copy the data to a separate memory space and link to it; this is called <a href=\"https:\/\/en.wikipedia.org\/wiki\/Copy-on-write\">copy-on-write<\/a>, or CoW for short.<\/p>\n<p>The <code>reverse()<\/code> method mutates the array, so it should trigger a copy-on-write. Apparently, it no longer does so, which causes the bug you&rsquo;re seeing.<\/p><\/blockquote>\n\n<p>Previously: <a href=\"https:\/\/mjtsai.com\/blog\/2018\/09\/07\/ghostery-lite\/\">Ghostery Lite<\/a>, <a href=\"https:\/\/mjtsai.com\/blog\/2017\/08\/11\/safari-should-display-favicons-in-its-tabs\/\">Safari Should Display Favicons in Its Tabs<\/a>, <a href=\"https:\/\/mjtsai.com\/blog\/2018\/06\/08\/intelligent-tracking-prevention-2-0\/\">Intelligent Tracking Prevention 2.0<\/a>.<\/p>\n\n<p id=\"safari-12-update-2018-09-27\">Update (2018-09-27): <a href=\"https:\/\/twitter.com\/nebelch\/status\/1045367220870606848\">Chris Nebel<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/nebelch\/status\/1045367220870606848\">\n<p>Notice Safari launching faster in macOS #Mojave, especially if you have a HDD?  You&rsquo;re welcome.<\/p>\n<p>[&#8230;]<\/p>\n<p>1. Safari no longer loads a redundant listing of all your LocalStorage databases at launch.  This could take several seconds on an HDD.<\/p>\n<p>2. Safari now only spawns WebContent processes at launch for tabs that are visible.  This is a big deal if you have State Restoration on and leave lots of tabs open; it saves around half a second per tab on an HDD.<\/p>\n<\/blockquote>\n\n<p id=\"safari-12-update-2018-10-03\">Update (2018-10-03): <a href=\"https:\/\/blog.malwarebytes.com\/security-world\/2018\/09\/safari-users-where-did-your-extensions-go\/\">William Tsing<\/a>:<\/p>\n<blockquote cite=\"https:\/\/blog.malwarebytes.com\/security-world\/2018\/09\/safari-users-where-did-your-extensions-go\/\">\n<p>&ldquo;Safari turned off extensions that slow down web browsing.&rdquo; In the most literal sense, this is true. &nbsp;Browsing without any extensions at all would most likely be fractionally faster. This is not&nbsp;why&nbsp;Safari turned them off, however.<\/p>\n<p>&ldquo;You can find newer extensions in the App Store.&rdquo; This is literally true. But can you find newer versions of the specific extensions referenced? Who knows? The extensions in the screenshot at the top were most likely turned off because they did not come from the extension gallery to begin with, and only one had a new app extension available at time of writing.<\/p>\n<p>Apple does not communicate&nbsp;any of this via the dialog box.<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>John Gruber: My favorite new feature today, of course, is the ability to show website favicons in Safari tabs &mdash; a feature now available in Safari 12 and iOS 12. They&rsquo;re off by default, but the way they work on Mac, iPad, and iPhone is just perfect. This is great. Ricky Mondello: I&rsquo;m going to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2018-09-19T18:59:43Z","apple_news_api_id":"db2f1688-e0a9-43f7-8a53-d8b88ec753a0","apple_news_api_modified_at":"2020-12-24T16:58:35Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAABQ==","apple_news_api_share_url":"https:\/\/apple.news\/A2y8WiOCpQ_eKU9i4jsdToA","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[131,905,2026,1417,31,1610,346,30,1609,981,103,328],"class_list":["post-22813","post","type-post","status-publish","format-standard","hentry","category-technology","tag-bug","tag-extensions","tag-favicons","tag-icloud-keychain","tag-ios","tag-ios-12","tag-javascript","tag-mac","tag-macos-10-14","tag-passwords","tag-safari","tag-webkit"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/22813","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=22813"}],"version-history":[{"count":5,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/22813\/revisions"}],"predecessor-version":[{"id":22965,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/22813\/revisions\/22965"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=22813"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=22813"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=22813"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}