Chromium Blog
News and developments from the open source browser project
Smarter garbage collection for smoother browsing and less memory usage
Tuesday, January 5, 2016
Posted by Seth Thompson, V8 Track Commentator In order to ensure a smooth, snappy experience when browsing in Chrome, it’s essential to free unused memory. The garbage collector in the V8 JavaScript engine has been optimized to reclaim memory as quickly as possible to shorten pauses to the main thread of execution. But even small pauses can cause jank when they happen at inopportune moments and block important events like clicks, scrolls, or animation frames. To make garbage collection less noticeable, we’ve integrated Blink’s task scheduler into V8 (starting in M41), so that pauses can be not just short, but intelligently scheduled during moments when the browser is idle. New knowledge of completely inactive pages (such as background tabs), also allows V8 to free larger chunks of memory all at once. The result is reduced jank when browsing and lower memory usage overall. Scheduling garbage collection tasks (red) in otherwise idle periods (blue). Smarter garbage collection makes 3D animations and games play smoothly with reduced lag and stuttering. The new task scheduler integration into V8 provides higher frame-rates more consistently for gameplay and rendering. Between Chrome 41 and Chrome 46, our score for the 3D benchmark OORT Online, which measures smooth rendering of WebGL graphics, increased by up to 33%, just shy of the maximum 10,000 points on a modern desktop. Memory reduction from the new system is particularly pronounced when the browser is idle for a few minutes or more. Leaving a Gmail tab unused for 2.5 minutes, for example, reduces memory consumption by up to 45% between Chrome 45 and previous versions! In addition to providing a smoother, faster browsing experience for the user, these changes empower developers to push the limits of Chrome with more powerful applications and better graphics. Stay tuned for more V8 optimizations and check out our deep dive into garbage collection timing on the new V8 blog for more details.
Chrome 48 Beta: Present to Cast, custom notification buttons, and network estimation
Tuesday, January 5, 2016
Unless otherwise noted, changes described below apply to the newest Chrome Beta channel release for Android, Chrome OS, Linux, Mac, and Windows. Presentation API Historically, sites have been unable to present content to nearby devices, which made it hard to build experiences like a slide “presenter mode” for the mobile web. The latest release of Chrome on Android now allows mobile sites to present to Google Cast devices using the standards-based Presentation API and the Cast Web SDK. Custom buttons on notifications Chrome 42 introduced the ability for users to receive push notifications from websites, allowing users to build deeper relationships with the sites they love. Usage of the feature has grown quickly, with Chrome now delivering more than 350 million push notifications every day. In the latest Chrome release, sites can now add custom buttons to notifications, enabling users to complete tasks entirely within the notification. Notification actions in Chrome 48 on Android Detecting maximum connection speed A user’s mobile phone connects to the internet over anything from high quality WiFi to 2G, which has made it difficult to design the right mobile experience. Developers can now use NetworkInformation.downlinkMax to detect a device's maximum bandwidth so they can send the optimal resources for the connection speed. Sites can also respond to changes in connection quality using the NetworkInformation.onChange event handler. Other features in this release The new DevTools security panel enables developers to understand the security state of a page to help them migrate their websites to HTTPS. Sites can now use FontFaceSet more flexibly with several new iteration methods. WebRTC now supports the VP9 video codec, and can serve HD video at almost half the bandwidth of VP8 or H264. Web Audio JavaScript syntax can now be shortened and simplified with method chaining for AudioNode.connect() and AudioParam.connect() automation methods. The MediaStreamTrack.remote attribute allows sites to detect if a media stream is from a remote source. Sites can now detect key presses from a user without worrying about browser type or operating system using the KeyboardEvent.code attribute. Developers can now leverage JavaScript language behaviors not previously exposed in ES5 or below using the well-known symbols @@isConcatSpreadable, @@toPrimitive. min-width:auto and min-height:auto now work for flex items without flex-basis:auto. Several getAll() methods have been added to IndexedDB to simplify bulk interactions. Minor changes ServiceWorkerRegistration.update() no longer bypasses the cache for update checks within 24 hours, improving spec compliance. The error attribute on IDBRequest and IDBTransaction will now return DOMException instead of DOMError to improve Chrome's spec compliance. The RC4 cipher is no longer supported over HTTPS connections due to several vulnerabilities. The MediaStreamTrack.getSources() method has been deprecated in favor of MediaDevices.enumerateDevices(). SVGGraphicsElement.getTransformToElement has been removed to match the SVG spec. getSVGDocument() has been removed from HTMLFrameElement.prototype to match the spec. SVG glyph-orientation-horizontal and glyph-orientation-vertical properties have been removed in favor of the CSS text-orientation property. SVGElement.offset* properties and SVGPathSeg interfaces have been removed to improve spec compliance. The CSS plus-darker composite operator has been removed to increase spec compliance. The item() method has been removed from TextTrackList and TextTrackCueList to improve spec compliance. Developers can now build robust RTL text experiences using CSS Writing Modes Level 3 without prefixes. CSS font-feature-settings are no longer prefixed. Posted by Anton Vayvod, Presentation MC
Chrome 48 Beta: Present to Cast devices, custom notification buttons, and bandwidth estimation
Tuesday, January 5, 2016
Presentation API Historically, sites have been unable to present content to nearby devices, which made it hard to build experiences like a slide “presenter mode” for the mobile web. The latest release of Chrome on Android now allows mobile sites to present to Google Cast devices using the standards-based Presentation API and the Cast Web SDK. Custom buttons on notifications Chrome 42 introduced the ability for users to receive push notifications from websites, allowing users to build deeper relationships with the sites they love. Usage of the feature has grown quickly, with Chrome now delivering more than 350 million push notifications every day. In the latest Chrome release, sites can now add custom buttons to notifications, enabling users to complete tasks entirely within the notification. Notification actions in Chrome 48 on Android Detecting maximum connection speedA user’s mobile phone connects to the internet over anything from high quality WiFi to 2G, which has made it difficult to design the right mobile experience. Developers can now use NetworkInformation.downlinkMax to detect a device's maximum bandwidth so they can send the optimal resources for the connection speed. Sites can also respond to changes in connection quality using the NetworkInformation.onChange event handler. Other features in this release The new DevTools security panel enables developers to understand the security state of a page to help them migrate their websites to HTTPS. Sites can now use FontFaceSet more flexibly with several new iteration methods. WebRTC now supports the VP9 video codec, and can serve HD video at almost half the bandwidth of VP8 or H264. Web Audio JavaScript syntax can now be shortened and simplified with method chaining for AudioNode.connect() and AudioParam.connect() automation methods. The MediaStreamTrack.remote attribute allows sites to detect if a media stream is from a remote source. Sites can now detect key presses from a user without worrying about browser type or operating system using the KeyboardEvent.code attribute. Developers can now leverage JavaScript language behaviors not previously exposed in ES5 or below using the well-known symbols @@isConcatSpreadable, @@toPrimitive, and @@toStringTag. min-width:auto and min-height:auto now work for flex items without flex-basis:auto. Several getAll() methods have been added to IndexedDB to simplify bulk interactions. Minor changes ServiceWorkerRegistration.update() no longer bypasses the cache for update checks within 24 hours, improving spec compliance. The error attribute on IDBRequest and IDBTransaction will now return DOMException instead of DOMError to improve Chrome's spec compliance. The RC4 cipher is no longer supported over HTTPS connections due to several vulnerabilities. The MediaStreamTrack.getSources() method has been deprecated in favor of MediaDevices.enumerateDevices(). SVGGraphicsElement.getTransformToElement has been removed to match the SVG spec. getSVGDocument() has been removed from HTMLFrameElement.prototype to match the spec. SVG glyph-orientation-horizontal and glyph-orientation-vertical properties have been removed in favor of the CSS text-orientation property. SVGElement.offset* properties and SVGPathSeg interfaces have been removed to improve spec compliance. The CSS plus-darker composite operator has been removed to increase spec compliance. The item() method has been removed from TextTrackList and TextTrackCueList to improve spec compliance. Developers can now build robust RTL text experiences using CSS Writing Modes Level 3 without prefixes. CSS font-feature-settings are no longer prefixed. Posted by Anton Vayvod, Presentation MC
Labels
accessibility
benchmarks
beta
blink
chrome apps
Chrome Frame
chrome web store
Archive
2016
Jan
Feed
Follow @ChromiumDev
Give us feedback in our
Product Forums
.