Generally I think we’d take performance and memory wins over installer size, but we monitor all three and if installer size grows (gradually) by an uncomfortable amount we ought to make a call on the trade off. We can bring it to product should that happen.
On Thu, Mar 8, 2018 at 6:07 PM Kris Maglione <kmagli...@mozilla.com> wrote: > On Thu, Mar 08, 2018 at 02:40:52PM -0800, Bobby Holley wrote: > >I've seen a lot of momentum around migrating chrome-only XPIDL interfaces > >to WebIDL. I'm concerned that insufficient attention is being paid to the > >impact on our binary size. > > > >Fundamentally, the WebIDL bindings improve performance and spec > correctness > >at the expense of code size (and build times). This makes sense for things > >that are web-exposed or performance-sensitive. But since the webidl > >bindings are also more modern and easier to use, I'm concerned that people > >will use them indiscriminately for all sorts of internal APIs, and our > >binary will bloat by a thousand paper cuts. > > > >A WebIDL method binding can easily cost a kilobyte or more, depending on > >the number and types of the arguments. If we were to convert all of our > >existing xpidl methods, we could approach 10MB in added code size. > > I'm not sure how much of an immediate concern this should be. > > There are different costs to WebIDL and XPIDL bindings. WebIDL > bindings have more cost in terms of compiled code size. XPIDL > have greater costs in terms of performance and runtime memory. > I'm not sure exactly where the balance is as far as impact to > package size. > > And I think the benefits of WebIDL interfaces apply as much to > our internal uses as they do to web-exposed interfaces. The > amount of WebIDL overhead I regularly see in profiles can be > staggering. And XPIDL has enough foot-guns when interfacing with > JS that it's easy enough cause confusion and breakage even when > dealing with internal code. > > That said, if we're worried about binary size becoming an issue > for internal interfaces, there are things we can do to reduce > the code size of bindings. Particularly if we're willing to eat > the performance costs. > > At any rate, I don't expect us to convert anywhere near all of > our XPIDL interfaces to WebIDL. A lot of them don't need to be > exposed to JS at all. A lot of those should still go away, but > they don't need WebIDL bindings, just concrete native classes. > And a lot of the rest are little-enough used that I can't see > anyone spending the effort on converting them. > > >Gating on DOM peer review gave us some degree of oversight to prevent > >overuse. What should replace it? > > How much have DOM peers been focusing on preventing over-use, so > far? Granted, most of the WebIDL bindings I've created to date > have been to address measurable performance issues, but I've > never had a reviewer suggest that I should be worried about > over-use. > > >On Thu, Mar 8, 2018 at 2:01 PM, Kris Maglione <kmagli...@mozilla.com> > wrote: > > > >> It is now possible[1] to create chrome-only WebIDL interfaces in the > >> dom/chrome-webidl/ directory that do not require review by DOM peers > after > >> every change. If you maintain an internal performance-sensitive XPIDL > >> interface, or are considering creating one, I'd encourage you to > consider > >> migrating it to WebIDL. > >> > >> Some caveats to keep in mind: > >> > >> - Interfaces in this directory must be annotated with [ChromeOnly]. > >> Dictionaries, however, can be included without any special annotations. > >> > >> - If you are new to writing WebIDL files, I'd still encourage you to > ask a > >> DOM peer to review at least your initial check-in. > >> > >> - Please make sure that you do not attempt to expose any of the > interface > >> or dictionary types defined in these WebIDL files to web contexts, > through > >> interfaces defined in dom/webidl/. Doing so would require (and fail) DOM > >> peer review, in any case, but please think ahead. > >> > >> Thanks. > >> > >> - Kris > >> > >> [1]: As of bugs 1443317 and 1442931 > _______________________________________________ > firefox-dev mailing list > firefox-...@mozilla.org > https://mail.mozilla.org/listinfo/firefox-dev > _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform