12:30 | <Ms2ger> | "XML Interfaces to the Internet of Things with XForms" |
13:26 | <TabAtkins> | Ms2ger: Why you gotta tease us like that? |
13:28 | <gsnedders> | TabAtkins: Ms2ger just knows what you like to hear first thing in the mornin' |
13:29 | <TabAtkins> | Well, he's not wrong. |
13:30 | <gsnedders> | He's sufficiently advanced AI, of course he's not wrong. |
13:31 | <TabAtkins> | I've seen him, and I don't think it was a skinvelope (unlike bz's remote-operated body). |
13:31 | <TabAtkins> | Wait, is bz or bzed bzbarsky? |
13:32 | <jgraham> | bz |
13:33 | <gsnedders> | Pretty sure people having "seen" either Ms2ger or bz is just a conspiracy to make people believe they're human. |
13:34 | <gsnedders> | Ms2ger doesn't even have a real name! |
13:34 | <BigPants> | Hey guys, I asked this a few days back but I don't think a lot of people were around... what do you think of exposing the dirty flag on input fields? Is that something that's been discussed before? |
13:36 | <BigPants> | Maybe there's a better place to ask? |
13:39 | <gsnedders> | BigPants: here and the mailing list are probably the best places; I don't think it's been discussed before, but it needs though as to whether there are any subtle implications of doing so. What's the use-case for exposing it? |
13:45 | <BigPants> | gsnedders: It would be a lot easier to make use of something like that than to hack together your own dirty checking in javascript (or use a library that does it for you) if you want to submit only the fields in a form that's been changed. Big forms where users change only minor details benefit quite a lot from only sending dirty fields |
14:44 | <wanderview> | Domenic: ping |
14:49 | <wanderview> | Domenic: is there a solution for the chained resolved promises causing excessive memory pressure? |
14:50 | <wanderview> | Domenic: I am now seeing about a 10% penalty promise returning read() vs sync read()... but I changed my test to chain promises together |
14:55 | <wanderview> | Domenic: actually, I added an unchained path to compare, and I see the 10% penalty regardless... hmm |
15:16 | <Domenic> | wanderview: one of the Bugzilla patches you linked me to was a mitigation, I am pretty sure ... Chrome also has a mitigation I believe, although a less spec-compliant one :-/ |
15:17 | <wanderview> | Domenic: well, it seems unrelated to the chaining... let me push the code to repo and let you look at it |
15:17 | <wanderview> | Domenic: sample output I am seeing on my desktop here: https://pastebin.mozilla.org/8833452 |
15:18 | <wanderview> | async cases have lower throughput and about a 10ms latency penalty there |
15:18 | <wanderview> | I haven't tried with bluebird yet |
15:19 | <wanderview> | Domenic: look at the various Pump classes in here and tell me if I'm doing something stupid: https://github.com/wanderview/streams-time-echo/blob/master/client.js |
15:21 | <Domenic> | Probably doesn't matter much but while (chunk) isn't exactly reflective of how the sync API would have to work... it'd have to be a while (self._parser.state === "readable"), with state being a getter |
15:23 | <Domenic> | Similarly async is using falsy/truthy chunks instead of { value, done } |
15:24 | <Domenic> | although actually async isn't testing truthiness of the chunks; the asymmetry there is confusing to me. |
15:25 | <wanderview> | Domenic: the truthiness test was just for backpressure signal... which the async gets via the promise... |
15:25 | <Domenic> | executeTestList is broken, you can't return from inside `new Promise` |
15:25 | <Domenic> | wanderview: ah ok I thought it was done-ness signal |
15:25 | <Domenic> | wanderview: but you need to allow falsy chunks anyway, so you need a separate .state property |
15:25 | <wanderview> | Domenic: I'm using the web socket state for close signal |
15:26 | <wanderview> | hmm, let me fix executeTestList |
15:27 | <Domenic> | not sure why it's promise-returning at all honestly |
15:29 | <wanderview> | yea, it doesn't need to be |
15:30 | <wanderview> | Domenic: I seem to get bimodal results... I wonder if the lower mode is just hitting that pathological stream chunking I saw before |
15:37 | <wanderview> | Domenic: ok... things seem more equivalent now on my desktop... let me test on mobile |
15:37 | <wanderview> | I assume there is a canary for android? |
15:38 | <Domenic> | wanderview: no, but there's a dev, which will be just a week behind at most |
15:39 | <wanderview> | Domenic: got it... I'll have to sort out the IPs on my network to connect my mobile to the test server |
15:39 | <Domenic> | Can you push the code changes? |
15:40 | <wanderview> | Domenic: sure... I only fixed the executeTestList() thing |
15:40 | <Domenic> | Ah OK |
15:40 | <Domenic> | Is that what changed the results you think? |
15:40 | <wanderview> | I don't know... its possible |
15:41 | <wanderview> | it seems very sensitive |
15:41 | <wanderview> | I also added a bluebird.html |
15:41 | <Domenic> | Oh nice |
15:41 | <wanderview> | Domenic: but even with native promises I don't see much difference: https://pastebin.mozilla.org/8833455 |
15:42 | <wanderview> | Domenic: I'm going to re-run the tests on a more idle machine without a VM, etc... could be noise from other stuff on my desktop |
15:42 | <wanderview> | will do all that after lunch |
15:43 | <wanderview> | Domenic: one difference is now I'm running with devtools closed... maybe it was enabling some debugging in promises that was penalizing things |
15:43 | <Domenic> | Oh yeah it probably was |
15:44 | <Domenic> | I don't know the details but I do know devtools has a lot of hooks into promises and I assume that they're smart enough to turn those off when devtools is closed |
15:44 | <Domenic> | or at least some of them |
16:02 | <Ms2ger> | So node.deleteData(2, -1) crashes Servo \o/ |
16:03 | <jgraham> | Ms2ger: Which kind of crashes? |
16:24 | <Ms2ger> | Overflow |
16:25 | <jgraham> | Ah |
16:25 | <Ms2ger> | Which is all hardware limitations, clearly :) |
16:25 | <jgraham> | I was just checkin it wasn't something more untoward :) |
16:34 | <gsnedders> | Ms2ger: what overflows? the -1? |
16:35 | <gsnedders> | oh you're talking about this in #servo |
16:35 | <Ms2ger> | Yeah |
16:35 | <Ms2ger> | -1 is wrapped to 2**32-1, and then the sum overflows |
20:12 | <smaug____> | dglazkov: sorry, forgot to answer to custom elements doodle |
20:12 | <smaug____> | (in theory july 21 should be ok) |
20:20 | <dglazkov> | smaug____: \o/ |
20:21 | <wanderview> | Domenic: I think whatever bug was causing huge memory issues in chrome with your streams demo is causing similar havoc with my time echo benchmark... it basically blows up with an OOM on my mac laptop |
20:21 | <wanderview> | runs fine on my windows desktop |
20:24 | <Domenic> | O_o |
20:25 | <Domenic> | You're not even using Chrome streams, right? |
20:25 | <Domenic> | Just web sockets? |
20:25 | <wanderview> | Domenic: remember the chained promise bug where they said it only blew up memory on mac... I seem to be getting the same problem |
20:25 | <Domenic> | I ... I guess .... |
20:25 | <wanderview> | Domenic: I am using chrome streams to read from the Response... I only use web sockets to upload back to the node.js server |
20:25 | <wanderview> | or I am doing something stupid |
20:26 | <Domenic> | Ah OK I missed that |
20:26 | <Domenic> | Maybe ... maybe the GC is bad on mac? |
20:26 | <wanderview> | I don't know... I'm going to skip mac and just try my android device |
20:26 | <Domenic> | Or the streams I guess... so strange. |
20:26 | <wanderview> | it could also be a bug in my server... what I ctrl-z the server and memory keeps climbing in chrome... its very weird |
20:27 | <wanderview> | sampling the process shows a bunch of string operations being done |
20:30 | <wanderview> | Domenic: I don't understand what could be different on mac... GC and stuff seems like it should be the same... maybe some IPC problem specific to streams and mac? |
20:31 | <Domenic> | Yeah ... Tokyo should be waking up in a few hours... I guess this might be worth filing a crbug for? |
20:31 | <Domenic> | String operations ... strange ... |
20:32 | <wanderview> | I didn't look at the sample long... |
20:34 | <jsbell> | Domenic: Are transform streams to the point where we should discuss how to bolt them onto TextEncoder/Decoder ? |
20:35 | <Domenic> | jsbell: no :(. they are still languishing somewhat unloved. I gotta kick the tires on writable and transform... |
20:35 | <Domenic> | I should try to find some Chrome feature that requires writable so we can whip them into shape |
20:37 | <jsbell> | Domenic: no worries; ping me if the status changes (and/or I'll continue to low frequency poll) |
20:41 | <Domenic> | for sure |
21:10 | <wanderview> | Domenic: I see a penalty for promise read() on my nexus5 with native promises... but its pretty equivalent with bluebird |
21:12 | <wanderview> | its hard to make this benchmark reliable with the body stream without back pressure... I have to implement my own back pressure mechanism, but I risk deadlock then if chrome decides to buffer things right as I'm doing backpressure |
21:25 | <wanderview> | gah.. or not... these tests are so sensitive |
21:33 | <wanderview> | Domenic: I ran some more tests and it looks like a 5% penalty for promise read vs sync read... I'll post data in the github issue later... I'm not sure if that is a big enough difference to worry about |
21:33 | wanderview | runs to dinner... |
21:35 | <Domenic> | wanderview: thanks for all the work!! |
21:35 | <wanderview> | oh... and that penalty only shows for mobile... desktop is fast enough you can't see it with this test |
22:28 | <jsbell> | The IndexedDB spec is so old it cites "geocities.com" as an example. (Will definitely leave that in for v2 because nostalgia) |