Apple pushes out third Safari Technology Preview release

Apple has now pushed out the third release — and second update — for the recently launched Safari Technology Preview, giving developers a chance to test out yet more change before they head to the public version of Safari. This release comes exactly two weeks after the previous update, which itself appeared two weeks after the initial launch of the program.

If you're a developer interested in testing out the latest release, here's a taste of the changes and updates you can look forward to in Release 3.

JavaScript

  • Added support for Symbol.isConcatSpreadable per the ES6 spec
  • Made RegExp constructor get the Symbol.match property to decide if an object should be constructed like a RegExp object per the ES6 spec
  • Changed String.match and String.search to use RegExp constructor per the ES6 spec
  • Corrected how function declarations are hoisted per the ES6 spec
  • Improved parsing of ES6 arrow functions
  • Added RegExp.prototype[@@split] and made String.prototype.split use it per the ES6 spec
  • Added RegExp.prototype[@@search]
  • Updated the treatment of invoking methods on RegExp.prototype per the ES6 spec
  • Made more test cases pass with ES6 RegExp unicode flag
  • Added support for caching accesses to arguments.length for a performance speed-up
  • Corrected the behavior of throw() for generators yielding to an inner generator per draft ECMAScript spec

CSS

  • Implemented the functional :host() pseudo class
  • Improved support for SVG cursor images
  • Started using OpenType math fonts by default for MathML
  • Fixed measurement of hanging punctuation
  • Improved hyphenation when the last line in a paragraph only contains one syllable of a word
  • Fixed a layout problem affecting CSS Grid items without a static inline position in RTL languages
  • Fixed positioned items with gaps for CSS Grid
  • Added support for CSS Grid grid-template-columns repeat(auto-fill, …) and repeat(auto-fit, …)
  • Fixed positioned items with content alignment in CSS Grids
  • Started using grid-template-areas to determine the explicit grid
  • Corrected CSS Grid layout by using the margin box for non-auto minimum sizes

Web APIs

  • Added support setting and retrieving Blob values in IndexedDB
  • Corrected MessageEvent.source result once window has been fully created
  • Improved stability when the first child of a shadow root is a comment node
  • Made CSS be a proper constructor on the window object with static functions
  • Exposed the Crypto constructor on the window object
  • Added support for display: contents on elements
  • Fixed FontFace so it will be properly reject the returned promise if Content Security Policy blocks all the URLs
  • Made FontFaceSet handle null correctly
  • Corrected DOMTokenList.contains() so it does not throw an exception
  • Made Selection.deleteFromDocument not delete a character when the selection is a caret per the spec
  • Improved the IndexedDB bindings to better match the spec
  • Made AudioBufferSourceNode.buffer nullable
  • Improved stability handling a wheel event that closes a frame

Web Inspector

  • Made it possible to expand objects in the Instances heap snapshot view to see what it retains
  • Improved performance dramatically in the Timelines tab when recording pages with a lot of rapid activity and for long recordings
  • Improved JavaScript pretty printing performance by using Esprima and by no longer blocking the main thread
  • Improved the profiler's sampling rate to get closer to a 1ms sample frequency
  • Improved filtering in Open Quickly dialog
  • Made the Open Quickly dialog keep its resource list up to date
  • Stopped trying to match color patterns in JavaScript source code to improve performance of large resources
  • Changed take snapshot navigation button to a camera glyph
  • Corrected source code location links in the JavaScript profile Call Trees view
  • Made XHRs and Web Workers full-text searchable
  • Improved the appearance of DOM nodes in object previews
  • Improved the tab bar rendering when the tabs are small
  • Corrected dock controls disappearing from the toolbar after leaving fullscreen
  • Started remembering the zoom factor as a persistent setting across sessions
  • Corrected sourceMappingURL not being used when sourceURL was also set
  • Started localizing sizes and times by using Number.prototype.toLocaleString
  • Made sourceMappingURL work more reliably across reloads

Rendering

  • Improved the time to display for some pages — allowing a short page header to render immediately before other content populates later
  • Fixed page tile layers disappearing when graphics acceleration is unavailable
  • Made font-size: 0 render as 0 width when text-rendering: optimizeLegibility is used
  • Corrected focus ring drawing at incorrect location on image map with a CSS transform
  • Made negative letter-spacing affect the right edge of the content's visual overflow
  • Corrected compositing for WebGL based canvases after they changed size
  • Started clearing the rendered icon on < input type=file > when an empty files list is set
  • Improved performance of border-collapse: collapse on tables
  • Improved rendering of select[multiple] to better match other browsers
  • Fixed backdrop filter so it honors visibility: hidden

Security

  • Made nested browsing context created for object or embed respect Content Security Policy's object-src directive
  • Started ignoring Content Security Policy meta tags if it is not a descendent of per the spec
  • Started ignoring report-only Content Security Policy directives delivered via meta tag per the spec
  • Started ignoring paths in Content Security Policy URL matching after redirects per spec
  • Removed support for X-Frame-Options in per the spec

Networking

  • Stopped speculatively revalidating cached redirects
  • Stopped cacheing responses with Content-Range headers to avoid serving incorrect results
  • Fixed clearing the application cache when removing website data in Privacy preferences

Accessibility

  • Changed the application role description to "web application" to avoid confusion with the top-level system application description
  • Made presentation role be preferred over child and <desc> elements in SVG content</desc>

To recap, Safari Technology Preview is meant to give developers a way to experiment with new technologies before they head to the release version of the browser. If you want to try the browser, you can install right alongside Safari with a download from Apple. If you've already installed a previous version, you should be able to grab today's update from the Mac App Store.

Comments are closed.