| 00:41 | <Domenic> | I'd render unstable Web IDL with a // unstable that's bold or red or something similar |
| 00:41 | <Domenic> | maybe blinking ;) |
| 07:23 | <hsivonen> | I wonder what a typical performance-sensitive case of UTF-16 to UTF-8 conversion in browsers is like |
| 07:26 | <annevk> | hsivonen: does UTF-16 include internal representation of most things? |
| 07:27 | <annevk> | hsivonen: because then maybe URLs? |
| 07:33 | <hsivonen> | annevk: I mean other than URLs and form submessions, which apply to other enodings |
| 07:33 | <hsivonen> | annevk: yes, UTF-16 is the internal representation of most things |
| 07:34 | <hsivonen> | so serializing stuff for XHR POST would do UTF-16 to UTF-8 |
| 07:34 | <rniwa> | zcorpan: added more test cases on https://github.com/w3c/web-platform-tests/pull/3968 |
| 07:35 | <hsivonen> | URLs are almost always ASCII |
| 07:35 | <hsivonen> | form submissions in non-Latin scripts are almost entirely non-ASCII |
| 07:36 | <hsivonen> | but I wonder if there are real-world cases where mixed ASCII/non-ASCII matters for perf for UTF-16 to UTF-8 |
| 07:37 | <hsivonen> | I have a pretty good idea what metric I should be optimizing for decode |
| 07:37 | <hsivonen> | also for URL use case encode |
| 07:37 | <annevk> | hsivonen: maybe it matters more in a world where more is done in UTF-8 or WTF-8 internally, although maybe then UTF-16 would almost never be used |
| 07:37 | <hsivonen> | but I don't have a good idea what metric I should be optimizing for UTF-16 to UTF-8 encode |
| 07:38 | <hsivonen> | annevk: in a world where the internal representation is Rust-style guaranteed-valid UTF-8, encode takes zero time. :-) |
| 07:39 | <annevk> | hsivonen: sure, but I'm not sure Rust-style can be the end game given JavaScript |
| 07:39 | <hsivonen> | annevk: we might get away with UTF-8 DOM |
| 07:40 | <hsivonen> | annevk: and break pages that expect to be able to put lone surrogates in the DOM and join them later |
| 07:40 | <annevk> | hsivonen: anyway, not sure what there is beyond URLs, forms, saving to disk, and perhaps some very cool OS that uses UTF-8 for strings everywhere |
| 07:40 | <hsivonen> | annevk: within the JS engine, there needs to be a way to have lone surrogates, sure |
| 07:40 | <hsivonen> | annevk: saving to disk is rare and not a worthy perf target |
| 07:41 | <annevk> | hsivonen: agreed, was just trying to enumerate targets |
| 07:41 | <hsivonen> | annevk: there's XHR POST |
| 07:41 | <annevk> | hsivonen: mkay, fetch() and new Blob() too indeed |
| 07:41 | <hsivonen> | annevk: and TextEncoder |
| 07:42 | <hsivonen> | trouble is, I have no clue what the usage patterns for those are |
| 07:42 | <annevk> | hsivonen: WebSocket (though that'll disappear in favor of fetch()) |
| 07:42 | <hsivonen> | what I'm looking for is a natural interleave of ASCII and non-ASCII |
| 07:42 | <annevk> | hsivonen: I doubt that with all these I/O things encoding is going to be the bottleneck |
| 07:42 | <annevk> | hsivonen: we'd be in a pretty nice place then |
| 07:43 | <annevk> | hsivonen: which is why URLs still seem like the only "real" thing, despite a lot of them being ASCII-only |
| 07:43 | <hsivonen> | FWIW, for decode, I took Wikipedia as the natural interleave of ASCII and non-ASCII |
| 07:43 | <annevk> | (it also feels a bit morally wrong that we have all these ASCII fast-paths btw) |
| 07:44 | <hsivonen> | hey, that's my change to outperform the competition |
| 07:44 | <hsivonen> | *chance |
| 07:45 | <annevk> | Does the competition have clever parallel decoding/encoding? Although I guess the hardware might not be ubiquitous enough as we discussed earlier |
| 07:45 | <hsivonen> | It's not morally wrong for decoders as longs as the bulk of HTML/CSS/JS/URL syntax is ASCII |
| 07:46 | <annevk> | That's fair, but it's kinda sad that you get a massive drop in performance if you stick an emoji in your JavaScript resource (happens in Chrome) |
| 07:46 | <hsivonen> | annevk: ICU has manually unrolled loops but not manual SIMD at least for single-byte |
| 07:46 | <hsivonen> | annevk: Windows has something faster than ICU internally |
| 07:46 | <annevk> | Or for that matter, a non-ASCII comment |
| 07:47 | <hsivonen> | annevk: The Rust standard lib optimizes ASCII with ALU word-sized operations when the right. no explicit SIMD |
| 07:47 | <annevk> | "the ? right"? |
| 07:47 | <hsivonen> | annevk: uconv has SIMD for x86 ASCII and ALU word for ARM but for UTF-8 decode only |
| 07:48 | <zcorpan> | rniwa: sweet, looking now |
| 07:48 | <rniwa> | zcorpan: thanks! |
| 07:48 | <annevk> | Optimizing UTF-8 over others seems totally fair game btw |
| 07:48 | <hsivonen> | annevk: those were just repeated spaces. I get repeated characters thanks to a build in another VM making this one deal with the keyboard too slowly |
| 07:49 | <hsivonen> | oh. there was a mord missing |
| 07:49 | <hsivonen> | word |
| 07:49 | <hsivonen> | "when the alignment is right" |
| 07:49 | <annevk> | ah |
| 07:50 | <hsivonen> | glibc is so slow that I doubt is has any fancy optimizations |
| 07:51 | <hsivonen> | for IBM mainframes, it has a fast path for ISO-8859-1 to some EBCDIC flavor, but the stuff we use over here in the non-IBM world is slow |
| 07:56 | <hsivonen> | one option is that I test encode with URL and form submission -like workloads |
| 07:57 | <hsivonen> | but it really bothers me that I don't know what XHR POST and TextEncoder workloads really look like |
| 07:57 | <hsivonen> | FWIW, I've been designing for form submission work loads to be very slow anyway |
| 07:58 | <hsivonen> | on the theory that form submission perf (for non-UTF-8 targets) doesn't matter much |
| 07:59 | <hsivonen> | interestingly, I discovered that currently in Gecko, EUC-KR *decode* is super-slow |
| 07:59 | <hsivonen> | yet, I don't recall anyone noticing it enough to complain |
| 08:01 | <hsivonen> | annevk: do you happen to know if the emoji slowness in Chrome is about promoting an ISO-8859-1 target buffer to an UTF-16 target buffer or the emoji just messing up memory alignment afterwards? |
| 08:04 | <annevk> | hsivonen: I believe it's the former |
| 08:04 | <annevk> | (pretty sure) |
| 08:09 | <hsivonen> | maybe I should take a look at what goes over the wire in a Gmail mail composition session and see what the wire format is like |
| 08:36 | <hsivonen> | I'm rather surprised that Gmail uses application/x-www-form-urlencoded;charset=utf-8 is its XHR wire format instead of using JSON |
| 08:36 | <hsivonen> | s/is/as/ |
| 08:38 | <annevk> | hsivonen: does Gmail still offer the JS-less version? Might be because of that |
| 08:48 | <hsivonen> | annevk: I don't know. |
| 08:49 | <younder> | I like yaml, butjson is good too. All is better than the verbosity of XML |
| 08:50 | <younder> | The line noise and the st-udder it gets to you |
| 08:52 | <younder> | OK. mathML 3 is awful, but it is a standard. And in DOM it starts to make sense |
| 08:53 | <younder> | Persona: I am a software developer, educated at University of Oslo |
| 08:53 | <younder> | I have worked for Opera software in the core development team |
| 08:54 | <annevk> | younder: oh, when? |
| 08:55 | <younder> | I am now exploring developing MathML, from scratch, in blink |
| 08:56 | <younder> | No faulty WebKit implementation |
| 08:56 | <younder> | annevk, 2000 |
| 08:57 | <annevk> | younder: for a while or only that year? |
| 08:57 | annevk | was there 2005-2012 |
| 08:59 | <younder> | annevk, 1999-2000 |
| 09:00 | <annevk> | That was early days still, must have been pretty exciting |
| 09:00 | <younder> | annevk, It was we were 40 people in Opera back then. |
| 09:01 | <annevk> | heh, I was 251 iirc |
| 09:06 | <younder> | I worked under CSS developer HÃ¥kon Lie |
| 09:19 | <annevk> | jochen__: so why the setSecurityOrigin() call? |
| 09:20 | <annevk> | jochen__: that seems to be the thing that might be upsetting to bz, though you said it wasn't needed if you were same-origin anyway |
| 09:22 | <annevk> | jochen__: I can also ask in the issue directly if that's preferable |
| 10:20 | <hsivonen> | Evernote Web seems to have a chatty GWT-based wire protocol |
| 10:21 | <hsivonen> | not particularly interesting in terms of encoder performance: bunch of ASCII, then user-supplied content, then bunch of ASCII |
| 11:22 | <younder> | Most implementors of the web speak English. (Even if they are not English) |
| 11:23 | <younder> | I am Norwegain... |
| 11:24 | <younder> | like ,I suppose, annevk |
| 11:50 | <annevk> | younder: Dutch |
| 11:52 | <younder> | sorry... (Opera, Norway et al) |
| 12:12 | <annevk> | Hmm, currently downloading a 100 MiB or so just to amend a PR |
| 12:12 | <annevk> | Must be a more efficient way to do that GitHub |
| 12:16 | <younder> | blink does an incredible 50 000 file compile. Drowns any download concers |
| 12:17 | <younder> | 1 hr on a 8 core xenon |
| 12:17 | <younder> | Firfox get's none in 11 minutes |
| 12:18 | <younder> | s/none/done/ |
| 12:18 | <jochen__> | annevk, I think back then that was required to make the origin an alias |
| 12:18 | <jochen__> | annevk, not sure whether that's still a thing? |
| 12:25 | <annevk> | jochen__: alias these days is basically a pointer to the same origin object |
| 12:26 | <annevk> | jochen__: however, it's unclear to me what the effect would be if you already have a same-origin check preceding it |
| 12:33 | <jochen__> | it can be same origin without being the same origin object still, no? |
| 12:34 | <annevk> | jochen__: yes |
| 12:34 | <annevk> | jochen__: though not for opaque origins |
| 12:34 | <annevk> | jochen__: but with opaque origins they'd already have to be the same, so aliasing doesn't make sense |
| 12:36 | <annevk> | jochen__: ah, I guess it's observable when they are not aliased, then you do window.open(), then you do document.domain on one side and somehow still get access? |
| 12:37 | <annevk> | if they're aliased document.domain would change both origins, if they're not aliased you'd be isolated |
| 12:37 | <annevk> | "isolated" |
| 13:07 | <annevk> | SimonSapin: you around? |
| 13:08 | <annevk> | SimonSapin: can you check the checkbox in https://github.com/whatwg/url/pull/113 that makes your PR mutable? |
| 13:09 | <SimonSapin> | annevk: done |
| 13:09 | <annevk> | ta |
| 13:38 | <nox> | Is <script>document.write('<template>')</script> as insane as I think? |
| 13:39 | <zcorpan> | No new notifications. \o/ |
| 13:40 | <zcorpan> | nox: what's insane about it? |
| 13:40 | <jochen__> | annevk, right |
| 13:41 | <nox> | zcorpan: That everything following that will end up in the template contents I guess? |
| 13:42 | <annevk> | jochen__: I wonder if that's tested in WPT already, but I guess we'll make sure once we make this change |
| 13:42 | <zcorpan> | nox: ok, yeah, but nothing new for <template>; that also happens for e.g. <title> or <plaintext> (the latter can't even be closed) |
| 13:42 | <nox> | zcorpan: Why can't it be closed? :o |
| 13:43 | <zcorpan> | because it's <plaintext> :-D |
| 13:43 | <zcorpan> | it's the text/plain of HTTP/0.9 |
| 13:47 | <jochen__> | no |
| 13:47 | <jochen__> | I still have it on my todo list though :-/ |
| 14:00 | <ondras> | hmm, elements with position:fixed appear somehow buggy during a transition that modifies their parent's transform. both ff+chrome. hard to reduce right now; is this a known thing? |
| 14:38 | <annevk> | jochen__: talked a bit with bz, the way he'd like us to proceed is come up with a plan for changes and some number of tests demonstrating they actually match impl and then bring him back into the conversation (he unsubscribed for now, bit of a sensitive topic) |
| 14:39 | <annevk> | jochen__: which seems totally reasonable to me |
| 14:39 | <annevk> | rbyers: "(and I know there was discussion with Anne somewhere, but I can't find it at the moment)" I think we only had one in person |
| 15:03 | <annevk> | Domenic: activation behavior name changes look okay? did you have a look at the commit message I proposed? |
| 15:03 | <annevk> | Domenic: I think I'm good with both, but was thinking to wait for you to wake up just in case |
| 15:03 | <annevk> | Domenic: (DOM side landed already with review from MikeSmith) |
| 15:04 | <Domenic> | annevk: yeah, I'm awake and have read all my emails; I think I had a commit message nit, let me page it back in |
| 15:05 | <annevk> | Domenic: https://github.com/whatwg/html/pull/1925#issuecomment-255052832 |
| 15:05 | <Domenic> | annevk: OK yeah, LGTM. |
| 15:05 | <Domenic> | The no-longer-being-conditionally-associated thing is interesting |
| 15:06 | <Domenic> | On the face of it it's a normative change |
| 15:06 | <Domenic> | But because <input> can never be nested inside <input> it's not |
| 15:07 | <annevk> | They can be nested through script, but I don't think that affects anything |
| 15:07 | <Domenic> | That is, HTML's old "nearest activatable element" + conditional association vs. DOM's new walk-until-you-find-activation-behavior could in theory be different, but in practice not |
| 15:07 | <Domenic> | Yeah |
| 15:07 | <Domenic> | Well hmm |
| 15:07 | <Domenic> | <button>text <input disabled> </button> |
| 15:08 | <annevk> | The conditional association mostly affects other things doing conditional testing on these things |
| 15:08 | <Domenic> | https://jsbin.com/zimege/edit?html,console,output |
| 15:08 | <Domenic> | I guess this becomes about hit testing |
| 15:09 | <Domenic> | which UI events talks about in terms of activation behavior https://w3c.github.io/uievents/#event-flow-activation |
| 15:09 | <Domenic> | I don't think this is worth holding up the train for, just interesting |
| 15:09 | <annevk> | That is something worth looking into indeed |
| 15:10 | <annevk> | So yeah, I guess that should look at things being disabled instead |
| 15:10 | <annevk> | Just like click() already does and a number of other things do too |
| 15:10 | <Domenic> | I think HTML might need to bring back some concept of "activatable" |
| 15:10 | <Domenic> | which is roughly "activation behavior + not disable" |
| 15:11 | <annevk> | It's unfortunate we only noticed that now, since the commit message could have enunciated that more |
| 15:11 | <Domenic> | :-S |
| 15:14 | <annevk> | Domenic: I think the spec actually made a change for the better though |
| 15:14 | <annevk> | Domenic: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/4594 |
| 15:14 | <annevk> | Domenic: if you comment out child.disabled = true you'll see only the child getting checked |
| 15:15 | <annevk> | Domenic: but either way it doesn't reach the parent, even though the child was disabled and did not have "activation behavior" per the old HTML text (which was therefore wrong) |
| 15:15 | <Domenic> | Ah yeah, nice. |
| 15:19 | <annevk> | I should add a test for that tomorrow |
| 15:19 | <annevk> | Hopefully I remember |
| 15:30 | <tobie> | jyasskin: is the long term plan to keep the registry in the permission spec or are you waiting on partial enums to have each power feature include it in its own spec? |
| 15:35 | <jyasskin> | tobie: Once we have partial enums, I think we'll have Bikeshed generate an index into the permissions spec, but have each feature spec define its own enum value. |
| 15:35 | <tobie> | jyasskin: what do you mean by: "we'll have Bikeshed generate an index into the permissions spec" |
| 15:37 | <jyasskin> | TabAtkins has an index element that he's used for CSS, which will let the permissions spec link to all the individual permissions. |
| 15:38 | <tobie> | jyasskin: oh. a secret feature? That's awesome. |
| 15:44 | <jyasskin> | Yep. |
| 16:38 | <TabAtkins> | Secret because I haven't given it a ton of thought yet. But it's probably ready for primetime. |
| 16:45 | <TabAtkins> | It's what's used to generate https://drafts.csswg.org/indexes/ right now. |
| 17:10 | <annevk> | Domenic: also confirmed with <form onsubmit="w(1); return false"><button type=submit>test <input type=checkbox disabled></button><form> that disabled doesn't influence the activatable target |
| 17:10 | <annevk> | Domenic: it does seem that Firefox does strange hit testing for <button> |
| 17:11 | <annevk> | Domenic: and basically bypasses any children |
| 17:11 | <Domenic> | hmmm |
| 17:11 | <annevk> | Domenic: but in Chrome that will not submit the form when you click the checkbox |
| 17:12 | <annevk> | Domenic: I think HTML might have some open issues around <button> already and how it should be handled and I think Firefox has an open bug too with respect to hit testing / activation |
| 17:12 | <annevk> | Domenic: anyway, will turn these two examples into tests since I have some time now |
| 17:26 | <annevk> | Domenic: https://github.com/w3c/web-platform-tests/pull/4043 |
| 19:36 | <jsbell> | Thanks for the feedback, Domenic! |
| 20:35 | <KiChjang> | https://w3c.github.io/charter-html/group-charter.html |
| 20:36 | <KiChjang> | does this WG have any relationship with WHATWG? |
| 20:40 | <terinjokes> | I'm going to guess the relationship, if one can call it that, is specified in the section labelled "External Groups" |
| 20:43 | <gsnedders> | KiChjang: what terinjokes said |
| 20:44 | <KiChjang> | it seems unnecessary for another WG to work on the same things as whatwg? |
| 20:51 | <Domenic> | KiChjang: sometimes the W3C likes to copy and paste our work and put their logo on it for various reasons. It sucks and is a waste of a ton of peoples' time, but is outside our control. |
| 20:52 | <KiChjang> | is there no copyright/patent laws preventing that from happening? |
| 20:52 | <KiChjang> | copyleft* |
| 20:52 | <Domenic> | Our specs are licensed under liberal licenses |
| 20:53 | <gsnedders> | KiChjang: the main reason why those involved in the WHATWG don't kick up an even bigger fuss is the patent protection provided by W3C RECs |
| 20:54 | <Domenic> | https://lists.w3.org/Archives/Public/www-archive/2014Apr/0034.html is relevant |