Platform/Games/StatusUpdate: Difference between revisions

No edit summary
 
(5 intermediate revisions by the same user not shown)
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.
'''Ship Status:''' The initial version of WebAssembly released in Firefox in March 2017. Future versions will focus on threading and performance improvements.
 
'''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 23: Line 21:
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.  


'''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.
'''Ship Status:''' WebGL 2 shipped in Firefox 51 in January 2017. We are now focusing on ongoing performance improvements.


==Addressing 32-Bit Out of Memory Issues (OOMs)==
==Addressing 32-Bit Out of Memory Issues (OOMs)==
Line 29: Line 27:
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.  
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.  
'''Ship Status:''' Firefox intends to ship the Large-Allocation header solution in Firefox 53 in April 2017.


==Migration to 64-Bit Browsers==
==Migration to 64-Bit Browsers==
Line 42: Line 40:
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 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.
'''Ship Status:''' Per our plan of record[https://wiki.mozilla.org/Firefox/Win64#Plan], we are targeting August 2017 (Firefox 55) 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 October 2017 (Firefox 56).


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

edits