Why can't these data structures be implemented as JavaScript built-ins that 
behave "as if" they were DOM objects?

-Filip

> On Jun 12, 2014, at 10:45 PM, Dirk Schulze <k...@webkit.org> wrote:
> 
> 
>> On Jun 13, 2014, at 1:54 AM, Benjamin Poulain <benja...@webkit.org> wrote:
>> 
>>> On 6/12/14, 11:24 AM, Dirk Schulze wrote:
>>> I would like to implement the Geometry Interfaces spec in WebKit[1]. The 
>>> spec defines a couple of interfaces like DOMPoint, DOMRect, DOMQuad and 
>>> DOMMatrix. These interfaces are more or less specified versions of 
>>> proprietary interfaces like WebKitPoint or WebKitCSSMatrix as well as old 
>>> APIs like SVGPoint, SVGRect or SVGMatrix that get unified between HTML/CSS 
>>> and SVG. The specification progressed fast and is going to LC within the 
>>> next weeks. I am going to start with DOMPoint/DOMPointReadOnly and 
>>> DOMRect/DOMRectReadOnly and get to the other interfaces one by one. With 
>>> the exception of DOMMatrix, all interfaces are implemented behind a runtime 
>>> flag in Mozilla Gecko. DOMMatrix will be implemented in Gecko soon.
>>> 
>>> These interfaces will be used by other specifications like CSS OM View or 
>>> SVG. I am going to implement these APIs behind a compiler flag called 
>>> GEOMETRY. I would like to enable the compiler flag by default for better 
>>> testing. Production builds should disable the compiler flag. I will pull 
>>> out stable APIs from the flag when appropriate.
>> 
>> This is such a weird idea.
>> 
>> Ideally, the JavaScript compiler should optimize the handling of all those 
>> types. By having them in the DOM, you will make those optimizations a lot 
>> harder to make.
> 
> I don’t think that there is a real performance gain in comparison to a native 
> implementation in DOM. Also, these interfaces are primarily designed as a way 
> to communicate with CSS OM, DOM, SVG DOM and convenience for authors. 
> Therefore, any performance optimizations in JavaScript should probably be 
> more radical and address the DOM in general and not just a couple of APIs.
> 
>> 
>> Wouldn't those type suffer the same fate as WebKitCSSMatrix: being 
>> inefficient on a large scale?
> 
> The performance problems of WebKitCSSMatrix can be found in two areas:
> * Even if the transformations are purely 2D, all matrix operations happen in 
> 3D. This can be addressed.
> * All transformations return a new WebKitCSSMatrix which allocates more 
> memory. DOMMatrix addressed this with in-place transformation where the 
> matrix itself is transformed. DOMMatrix is still compatible to 
> WebKitCSSMatrix and SVGMatrix.
> 
> Furthermore
> * DOMMatrix supports Float32Array and Float64Array as interchange format to 
> make its use in JS even faster.
> 
>> 
>> What is the rationale for not having JavaScript primitive types?
> 
> I don’t think that any of the interfaces can be described as “primitive”. 
> They rather seem specific for the designed purpose.
> 
> Greetings,
> Dirk
> 
>> 
>> Benjamin
>> _______________________________________________
>> webkit-dev mailing list
>> webkit-dev@lists.webkit.org
>> https://lists.webkit.org/mailman/listinfo/webkit-dev
> 
> _______________________________________________
> webkit-dev mailing list
> webkit-dev@lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev
_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to