Platform/Games/StatusUpdate: Difference between revisions

no edit summary
No edit summary
Line 1: Line 1:
=Games Platform High-Level Status Update=
=Games Platform High-Level Status=


This page is intended to communicate an evolving status update on what we’ve been working on and what you’ll be seeing shipping in browsers in the near future.  
This page is intended to communicate an evolving status update on what we’ve been working on and what you’ll be seeing shipping in browsers in the near future.  
Line 7: Line 7:
WebAssembly is an emerging standard whose goal is to define a safe, portable, size- and load-time efficient binary compiler target which offers near-native performance — a virtual CPU for the Web. WebAssembly is being developed in a W3C Community Group [https://www.w3.org/community/webassembly/] (CG) whose members [https://www.w3.org/community/webassembly/participants] include Mozilla, Microsoft, Google, and Apple.
WebAssembly is an emerging standard whose goal is to define a safe, portable, size- and load-time efficient binary compiler target which offers near-native performance — a virtual CPU for the Web. WebAssembly is being developed in a W3C Community Group [https://www.w3.org/community/webassembly/] (CG) whose members [https://www.w3.org/community/webassembly/participants] include Mozilla, Microsoft, Google, and Apple.


The WebAssembly Community Group has reached a consensus on the initial version of the standard and interoperable implementations have landed in pre-release Firefox and Chrome channels and are under development in Chakra [https://github.com/Microsoft/ChakraCore/wiki/Roadmap#language-innovation--standards] and JavaScriptCore [https://bugs.webkit.org/show_bug.cgi?id=159775]. The group is now calling for broader feedback during a “Browser Preview” period. If no major issues are found that require significant changes to the standard, the complete implementation currently in Firefox 52 Nightly [https://nightly.mozilla.org/] will ride the trains and be enabled for release in March 2017.
The WebAssembly Community Group has reached a consensus on the initial version of the standard and interoperable implementations have landed in pre-release Firefox and Chrome channels and are under development in Chakra [https://github.com/Microsoft/ChakraCore/wiki/Roadmap#language-innovation--standards] and JavaScriptCore [https://bugs.webkit.org/show_bug.cgi?id=159775]. The group is now calling for broader feedback during a “Browser Preview” period.  
 
'''Ship Status:''' If no major issues are found that require significant changes to the standard, the complete implementation currently in Firefox 52 Nightly [https://nightly.mozilla.org/] will ride the trains and be enabled for release in March 2017.
 


==Improving WebGL Success Rates==
==Improving WebGL Success Rates==
Line 14: Line 17:


In addition, we are excited to say that we appear to be near a significant tipping point, with WebGL availability matching that of Flash. Thanks to game launch success rate data provided by Nordeus [http://www.nordeus.com] for their Top Eleven [https://apps.facebook.com/topeleven] game on Facebook, we can see that nearly 77% (and increasing) of desktop users can successfully play a WebGL title. Firefox telemetry shows that ~77% of Firefox users have the Flash plug-in available for use. As latest versions of browsers spread across the user base, we expect the WebGL success rate to continue to rise.
In addition, we are excited to say that we appear to be near a significant tipping point, with WebGL availability matching that of Flash. Thanks to game launch success rate data provided by Nordeus [http://www.nordeus.com] for their Top Eleven [https://apps.facebook.com/topeleven] game on Facebook, we can see that nearly 77% (and increasing) of desktop users can successfully play a WebGL title. Firefox telemetry shows that ~77% of Firefox users have the Flash plug-in available for use. As latest versions of browsers spread across the user base, we expect the WebGL success rate to continue to rise.
'''Ship Status:''' Currently shipping in all major browsers.


==Standardizing and Shipping WebGL/WebGL 2==
==Standardizing and Shipping WebGL/WebGL 2==
Line 19: Line 24:
WebGL 2 is based on the OpenGL ES 3.0 specification, and offers new features, including 3D textures and 2D texture arrays, ESSL 3.0 (an advanced shading language), integer texture formats and vertex attributes, transform feedback, and uniform blocks for more efficient uploads. It also adds primitive restart, framebuffer blitting and invalidation, separable sampler objects, occlusion queries and pixel buffer objects. Some optional WebGL 1 extensions are now part of the guaranteed core of WebGL 2, including multiple render targets, instanced drawing, depth and floating-point textures, and sRGB support. Also notable is support for the new ETC2 texture format which provides alpha support on a compressed texture, is supported on both desktop and mobile devices, and allows developers to use a single texture format across devices.  
WebGL 2 is based on the OpenGL ES 3.0 specification, and offers new features, including 3D textures and 2D texture arrays, ESSL 3.0 (an advanced shading language), integer texture formats and vertex attributes, transform feedback, and uniform blocks for more efficient uploads. It also adds primitive restart, framebuffer blitting and invalidation, separable sampler objects, occlusion queries and pixel buffer objects. Some optional WebGL 1 extensions are now part of the guaranteed core of WebGL 2, including multiple render targets, instanced drawing, depth and floating-point textures, and sRGB support. Also notable is support for the new ETC2 texture format which provides alpha support on a compressed texture, is supported on both desktop and mobile devices, and allows developers to use a single texture format across devices.  


WebGL 2 is now available in Developer Edition [https://www.mozilla.org/en-US/firefox/developer], and currently going through the quality assurance pipeline and is expected to ship in Firefox 51 in January 2017.
'''Ship Status:''' WebGL 2 is now available in Developer Edition [https://www.mozilla.org/en-US/firefox/developer], and currently going through the quality assurance pipeline and is expected to ship in Firefox 51 in January 2017.


==Addressing 32-Bit Out of Memory Issues (OOMs)==
==Addressing 32-Bit Out of Memory Issues (OOMs)==


A consistent pain point for web developers using compiled code bases and asm.js is hitting out of memory conditions on 32-Bit browsers. To address this 32-Bit OOM challence, we have proposed a new Large-Allocation header [https://gist.github.com/mystor/5739e222e398efc6c29108be55eb6fe3]. This header tells the browser to make a best-effort attempt to load the document in an unfragmented content process, which should greatly decrease the OOM failure rate for top-level browsing contexts. We aim to ensure that if the conditions for a cross-process navigation are met, web apps are able to reliably allocate a gigabyte of contiguous address space. We have a prototype under way and are discussing with other browsers to see if this makes sense as a common solution.  
A consistent pain point for web developers using compiled code bases and asm.js is hitting out of memory conditions on 32-Bit browsers. To address this 32-Bit OOM challenge, we have proposed a new Large-Allocation header [https://gist.github.com/mystor/5739e222e398efc6c29108be55eb6fe3]. This header tells the browser to make a best-effort attempt to load the document in an unfragmented content process, which should greatly decrease the OOM failure rate for top-level browsing contexts. We aim to ensure that if the conditions for a cross-process navigation are met, web apps are able to reliably allocate a gigabyte of contiguous address space.  
 
'''Ship Status:''' We have a prototype under way and are discussing with other browsers to see if this makes sense as a common solution.  


==Migration to 64-Bit Browsers==
An additional opportunity is to encourage users toward using a 64-Bit browser, which allows applications to use huge amounts of physical memory. This means that address space exhaustion (or OOMs) are basically impossible.  
An additional opportunity is to encourage users toward using a 64-Bit browser, which allows applications to use huge amounts of physical memory. This means that address space exhaustion (or OOMs) are basically impossible.  


Line 33: Line 41:
* 3% are running 64-bit Firefox already.
* 3% are running 64-bit Firefox already.


As nearly three-quarters of Firefox users are running 32-bit Firefox on 64-bit Windows, there is a huge opportunity to improve the ability of those users to run large web apps by accelerating the shift to 64-bit. As such, we are targeting April 2017 (Firefox 53) to change the Firefox installer to default to 64-bit for new installs or reinstalls for eligible users. Upgrading existing 32-bit browser users on 64-bit OSes to a 64-bit browser is not part of this roll-out phase. Our current thinking is to upgrade 32-bit users in the second half of 2017.
As nearly three-quarters of Firefox users are running 32-bit Firefox on 64-bit Windows, there is a huge opportunity to improve the ability of those users to run large web apps by accelerating the shift to 64-bit.  
 
'''Ship Status:''' We are targeting April 2017 (Firefox 53) to change the Firefox installer to default to 64-bit for new installs or reinstalls for eligible users. Upgrading existing 32-bit browser users on 64-bit OSes to a 64-bit browser is not part of this roll-out phase. Our current thinking is to upgrade 32-bit users in the second half of 2017.


==Standardizing and Shipping SharedArrayBuffer==
==Standardizing and Shipping SharedArrayBuffer==


SharedArrayBuffer has been highly anticipated by web developers for years, as it is a key step toward enabling JavaScript to take full advantage of modern multi-core hardware [https://blog.mozilla.org/javascript/2015/02/26/the-path-to-parallel-javascript/]. In addition, SharedArrayBuffer is an important prerequisite for standardizing and shipping first-class multi-threading to WebAssembly in the coming months after WebAssembly’s initial release. SharedArrayBuffer is enabled by default in Firefox Developer Edition, [https://www.mozilla.org/en-US/firefox/developer/] and is now ready for release, pending final security approval.
SharedArrayBuffer has been highly anticipated by web developers for years, as it is a key step toward enabling JavaScript to take full advantage of modern multi-core hardware [https://blog.mozilla.org/javascript/2015/02/26/the-path-to-parallel-javascript/]. In addition, SharedArrayBuffer is an important prerequisite for standardizing and shipping first-class multi-threading to WebAssembly in the coming months after WebAssembly’s initial release.  
 
'''Ship Status:''' SharedArrayBuffer is enabled by default in Firefox Developer Edition, [https://www.mozilla.org/en-US/firefox/developer/] and is now ready for release, pending final security approval.
18

edits