| 01:02 | <bholley> | Hixie: ping |
| 09:34 | <ondras> | Ms2ger: ? |
| 09:35 | <Ms2ger> | ? |
| 09:38 | <ondras> | Ms2ger: can you please have a look at https://bugzilla.mozilla.org/show_bug.cgi?id=980825 and confirm it? |
| 11:15 | <qFox> | lol ok. an external stylesheet (static) blocks future script tags. if you docwrite the stylesheet, it blocks future static script tags, but not the executing script thread. it also doesn't block future docwritten script tags. wut? |
| 11:15 | <qFox> | i'm tumbling down a rabbot hole, aren't i |
| 11:17 | <qFox> | are there any other elements besides external script tags and external stylesheets that might block the parser, the script thread, or even just the rendering thread? |
| 11:17 | <jgraham> | qFox: http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#interactions-of-styling-and-scripting |
| 11:20 | <qFox> | ok so inline style with external refs will probably exhibit the same behavior. but i've read that for example @font-face won't block |
| 11:20 | <qFox> | wont block script thread, only the rendering thread |
| 11:22 | <qFox> | jgraham: so do you know of any other elements that might block any of the threads? |
| 11:22 | <qFox> | apart from style, script, and link? |
| 11:25 | <jgraham> | I think parsing can only be blocked on style or on script. Although I don't know if the HTML Imports people are going to change that |
| 11:25 | <jgraham> | Mind you I think they were using <link> |
| 11:26 | <qFox> | docwrite+link can block in the weird way described above. i havent checked @import yet but it should be the same (whether external or inline) |
| 11:27 | <jgraham> | I think the spec about exactly when CSS blocks is wrong |
| 11:27 | <jgraham> | Or was wrong |
| 11:27 | <jgraham> | Now I think it might let CSS define it and CSS might not bother |
| 11:27 | <qFox> | without docwrite, it behaves as advertised afaics. |
| 11:29 | <qFox> | hm what about app cache manifest |
| 11:32 | <jgraham> | http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#concept-appcache-init - that happens in the background |
| 11:33 | <qFox> | i was reading that, but 6.7.4 1.4 is confusing to me |
| 11:34 | <qFox> | namely the synchronous flag. but perhaps that means something else than important in this context |
| 11:39 | <jgraham> | It means that it's synchronous with respect to that algorithm. But that algorithm is already asynchronous with respect to everything else |
| 11:39 | <qFox> | yeah ok |
| 11:39 | <jgraham> | I thik |
| 11:39 | <jgraham> | *think |
| 13:59 | <JakeA> | jgraham: I don't think CSS can block parsing |
| 14:00 | <JakeA> | they only block rendering (although I'm not sure if that's specced or just what browsers do) |
| 14:01 | <zewt> | is it observable to script? |
| 14:01 | <JakeA> | Non async scripts block parsing until they execute, but script executing is blocked on previous CSS executing |
| 14:01 | <JakeA> | HTML Imports are set to behave the same as CSS :(( |
| 14:01 | <zewt> | (blocking rendering, that is) |
| 14:02 | <JakeA> | zewt: An async script may see elements with default stying |
| 14:02 | <JakeA> | if it asks for computed styles |
| 14:03 | <jgraham> | Hmm, a script can be blocked on a stylesheet |
| 14:03 | <jgraham> | A script can also block the parser |
| 14:03 | <JakeA> | yeh |
| 14:03 | <jgraham> | So unless I am missing something a stylesheet can block the parser |
| 14:03 | <JakeA> | The problem with HTML imports is the .import property is a sync getter |
| 14:04 | <JakeA> | jgraham: Well, technically that's the script blocking, but the script is blocked on the CSS. CSS cannot block the parser without the script |
| 14:04 | <jgraham> | OK, I guess you could look at it like that |
| 14:05 | <JakeA> | .import should return a promise imo |
| 14:34 | <smaug____> | MikeSmith: something wrong with w3 bugzilla? |
| 14:34 | <smaug____> | super slow |
| 15:20 | <MikeSmith> | high packet loss on the network coming into MIT |
| 15:21 | <MikeSmith> | apparently |
| 17:19 | <bholley> | Hixie: ping |
| 17:25 | <SamB> | hmm, the WHATWG wiki seems to have some gadgets cloned from Wikipedia without changing the local links in descriptions to interwikis :-( |
| 17:28 | <TabAtkins> | JakeA: Report that? |
| 18:01 | <Hixie> | bholley: sup |
| 18:01 | <bholley> | Hixie: where does the spec forbid cross-origin event dispatch? |
| 18:02 | <bholley> | Hixie: only implicitly via .dispatchEvent not being reachable on anything cross-origin? |
| 18:02 | <Hixie> | which spec? |
| 18:02 | <Hixie> | i don't think html says anything about that one way or the other. |
| 18:03 | <Ms2ger> | I'd be surprised if DOM said anything either |
| 18:03 | <bholley> | Hixie: well, it _does_ imply that it needs to be the case in 9.4.2.2 |
| 18:03 | <bholley> | http://www.whatwg.org/specs/web-apps/current-work/#user-agents |
| 18:04 | <Hixie> | yeah that's just referring to the fact that you can't call dispatchEvent() on a cross-origin object |
| 18:28 | <SamB> | hmm, the really truly original version of the current WHATWG logo should be in somethign with "Message-ID: <410D2802.2010006⊙en>". strangely, gmane seems to recognize the ID well enough to know what group it would be in, but not what article??? |
| 18:54 | <Hixie> | SamB: Yeah it's really odd how that article has vanished from all the archives i've tried it in |
| 18:55 | <SamB> | it's almost like someone sent a DMCA notice or something ... |
| 18:55 | <Hixie> | pretty sure a dmca notice couldn't reach into my personal mail archive backups |
| 18:56 | <Hixie> | i have the mail that's my reply, In-Reply-To: <410D2802.2010006⊙en>, which starts "The second one, the question-mark-in-circle, is pretty good", in my archive |
| 18:56 | <Hixie> | oh no, wait, i do have that one |
| 18:56 | <Hixie> | it doesn't have the license though |
| 18:56 | <Hixie> | it just says "Would one of the attached logos be appropriate?" and has some attachments |
| 18:57 | <Hixie> | http://damowmow.com/temp/410D2802.2010006⊙en |
| 18:58 | <Hixie> | it's the e-mail where he gives the license terms i can't find |
| 18:58 | <Hixie> | i know what the e-mail says (essentially, whatwg can use it for logo purposes), but can't find it anywhere |
| 18:58 | <Hixie> | i think someone posted a link to it in #whatwg within the last year, though |
| 19:23 | <Domenic_> | woahhhh did not know http://blogs.msdn.com/b/ieinternals/archive/2014/03/06/browser-arcana-ipv4-ipv6-literal-urls-dotted-va-dotless.aspx |
| 19:46 | <TabAtkins> | Domenic_: Holy shit, that's a terrible idea. |
| 19:46 | <TabAtkins> | Especially the octal form, wtf. |
| 19:48 | <Domenic_> | "Chrome and Opera appear to match Internet Explorer’s behavior here, while Firefox 27 leaves the undotted decimal in the address bar and in the request sent to the network" |
| 19:48 | <Domenic_> | seems like a job for the URL Standard... |
| 20:13 | <lars_t_h> | I have a question about read only nodes and the DOM (Level 3). Where can find a list of which nodes are read-only in a DOM tree? So far i had found out that if a parent node is read only, then it's child nodes are also read only nodes. |
| 20:15 | <Ms2ger> | Ignore DOM level 3 |
| 20:15 | <lars_t_h> | Ms2ger, why? |
| 20:15 | <Ms2ger> | It tricked you into believing that concept exists |
| 20:15 | <Ms2ger> | It doesn't |
| 20:16 | <Domenic_> | lars_t_h: you would be looking for http://dom.spec.whatwg.org/ |
| 20:16 | <lars_t_h> | Ms2ger, ok thanks |
| 20:17 | <lars_t_h> | Domenic_, I'm doing a DOM implementation in the Go programming language, should i use the DOM spec at whatwg.org (your link)? |
| 20:18 | <Domenic_> | lars_t_h: yes, definitely. |
| 20:19 | <lars_t_h> | Domenic_, ok then next question is: What about the Web IDL error - thing. It is there the JavaScript Array should be defined instead. |
| 20:22 | <Domenic_> | lars_t_h: I don't understand "the Web IDL error - thing." |
| 20:22 | <lars_t_h> | Domenic_, finding a link |
| 20:24 | <lars_t_h> | Domenic_, got it: http://dom.spec.whatwg.org/#elements |
| 20:24 | <Domenic_> | ok, so what's the question about Elements. |
| 20:26 | <lars_t_h> | Domenic_, i have to copy ES6 method defenitions of the Array into Elements? Yes? |
| 20:26 | <lars_t_h> | *s/the Array/Array |
| 20:27 | <Domenic_> | lars_t_h: I'm not really sure what your goal would be with a Go implementation, but in JS it just means subclassing Array. Maybe in Go you would subclass Go arrays? If they are subclassable? |
| 20:27 | <TabAtkins> | lars_t_h: Elements inherits from Array, and so automatically gets most of the methods correct. |
| 20:28 | <lars_t_h> | Domenic_, they are called slices and is a part of the language spec, so No, but it can be implemented in a struct type. |
| 20:32 | <lars_t_h> | TabAtkins, , Domenic_ Thanks. I think all the information i nedd to contine. I will implement the DOM spec at dom.spec.whatwg.org in Go. |
| 20:32 | <lars_t_h> | *I think I have ... |
| 20:33 | <Hixie> | that ought to be interesting, since Go has no inheritance and the DOM is largely based on inheritance :-) |
| 20:36 | <lars_t_h> | Hixie, hint: Heavy usage of interfaces in the Go implementation. I have pointer to a type TNode, which implements most of the DOM methods. The interface types defines which DOM methods that are visible to client code using the DOM implementation. |
| 20:36 | <jgraham> | Servo currently implements the DOM without inheritane |
| 20:37 | <jgraham> | Although rust will probably grow single inheritane to make this less insane |
| 20:37 | <Ms2ger> | It's... painful, though |
| 20:38 | <Hixie> | lars_t_h: good luck |
| 20:38 | <Yuhong> | From https://news.ycombinator.com/item?id=7248742 |
| 20:38 | <Yuhong> | "Having to rely on the DOM to do that is a horrible hack." |
| 20:38 | <Hixie> | the lack of true classes in Go are one of the big things that have led me away from it, i must admit |
| 20:39 | <lars_t_h> | Hixie, thanks |
| 20:41 | <jgraham> | I haven't used Go. But my very limited experience with Rust is that it's fine as long as you aren't trying to implement a system that is explicitly designed around Java-style classes |
| 20:45 | <Hixie> | jgraham: there's a lot of classes of problems that i find fit very neatly into a type hierarchy |
| 20:46 | <jgraham> | It doesn't mean that's the only or even best way to solve them though |
| 20:46 | <Hixie> | (though i certainly miss composition in languages that don't have it, too) |
| 20:46 | <Hixie> | sure. lots of ways to crack a nut. |
| 20:46 | <Yuhong> | "that's the single most important thing to have in any language,how to properly import external files." |
| 20:47 | <Hixie> | but sometimes you have a nail, and you bemoan your toolbox's opinion that hammers aren't the only way to drive nails. |
| 20:47 | <Hixie> | i mean, sure, a big spanner works ok... maybe a rock... i guess you could use the side of the power drill... :-P |
| 20:50 | <jgraham> | And sometimes you have so many tools in the toolbox that every time you try to reach for one of them, you cut your hand on one of the other tools that got in the way (*cough* C++ *cough*) |
| 20:51 | <Hixie> | hehe |
| 20:51 | <Hixie> | http://ian.hixie.ch/programming/ |
| 20:52 | <astearns> | that's an eerily accurate description of my actual toolbox at home |
| 20:52 | <Hixie> | my actual toolbox at home oddly has almost nothing in it that can actually cut anything |
| 20:52 | <Hixie> | not sure what to read into that |
| 20:52 | <Hixie> | lots of screwdrivers, spanners, drills, and so on... no saws, knives, etc |
| 20:53 | <Ms2ger> | Is orientated a word? |
| 20:53 | <SamB> | Hixie: what languages don't have composition? do you mean something strange by the term? |
| 20:53 | <astearns> | I've cut myself on screwdrivers and drill bits, but perhaps I'm just talented |
| 20:54 | <Hixie> | SamB: most popular languages don't have it. I mean the ability to say "this object has these interfaces, and they are implemented by that, that, and that" rather than "this object has this interface, here is its implementation" |
| 20:54 | <SamB> | orientated is not (afaict) a proper word; it is the kind of word I use if I want to sound silly |
| 20:54 | <Hixie> | SamB: (go does have it, javascript also to some extent though it's pretty verbose to use since you have to import each method individually) |
| 20:54 | <SamB> | Hixie: ah |
| 20:55 | <Hixie> | (though go's implementation is a bit weird) |
| 20:55 | <SamB> | Hixie: so some kind of delegation of interfaces? |
| 20:55 | <Hixie> | yeah basically |
| 20:55 | <Hixie> | bonus points if it's dynamic |
| 20:55 | <jgraham> | Do you mean something like typeclasses? |
| 20:55 | <SamB> | jgraham: the closest thing in the realm of typeclasses is that "newtyped deriving" thing, I think |
| 20:56 | <Hixie> | like, i have this object, now i want to graft on this new ability. e.g. you made a rocket, and you want to graft on weapons. suddenly it should start being true for "isa" weapon-capable-object, and should know how to .fireWeapons() or whatever. |
| 20:57 | <Hixie> | in languages like C++ you tend to do this with "tearoffs", if I'm not mixing my terminology fatally. |
| 20:58 | <Hixie> | by which i mean your object has a method that takes a subinterface ID, and returns a different object that implements that interface for the object |
| 20:58 | <Hixie> | but it'd be nice to have built-in language support for this rather than having to fake it all the time, since faking it is quite error-prone |
| 20:59 | <othermaciej> | what you just described is COM |
| 20:59 | <Hixie> | Go does this ok for static combinations |
| 20:59 | <othermaciej> | (specifically the QueryInterface aspect thereof) |
| 20:59 | <Hixie> | yeah, COM is basically what i'm describing, though not native to the language |
| 21:00 | <Hixie> | one problem with approaches like COM is that really you don't have one object, you have a whole series of objects that as a team act as one |
| 21:00 | <Hixie> | so things like comparing pointers get really messy |
| 21:01 | <othermaciej> | forwarding kind of defeats the point of composition IMO |
| 21:01 | <othermaciej> | if you want to fully re-export the interface, just export access to the sub-object |
| 21:02 | <Hixie> | yeah |
| 21:02 | <othermaciej> | saying train.engine.accelerate() instead of train.accelerate() is not the worst |
| 21:02 | <Hixie> | if it composes that way, yeah |
| 21:02 | <othermaciej> | and that is super easy to do in most dynamic languages |
| 21:02 | <Hixie> | even most non-dynamic ones |
| 21:03 | <othermaciej> | it's also the only sane way to have a has-a relationship to more than one of the same kind of thing |
| 21:04 | <Hixie> | one time i run into this is when I have a class A with methods M1 and M2 from which I want to have three descendants: an A with M1 replaced with M1', A with M2 replaced with M2', and A with M1 and M2 replaced with M1' and M2'. |
| 21:04 | <othermaciej> | that doesn't sound like all one class to me |
| 21:05 | <Hixie> | a specific case of this: |
| 21:05 | <othermaciej> | it sounds like a base class with three subclasses |
| 21:06 | <Hixie> | TLocation is a room in a MUD. It inherits from all the core stuff and has dozens of methods. TNamedLocation is a TLocation that implements the half-dozen name-related methods to return fixed strings set during construction. TSlaveLocation is a TLocation that implements those methods by deferring to another object also set during constructions. |
| 21:07 | <Hixie> | TSurfaceNamedLocation is a TNamedLocation that has a surface (like the ground), by default it doesn't have one. It overrides the surface-related methods to return the right surface object. |
| 21:07 | <Hixie> | TSurfaceSlavedLocation is the same but inherits from TSlavedLocation. |
| 21:08 | <Hixie> | the last two duplicate code. |
| 21:08 | <othermaciej> | name and surface sound like things that could be has-a relationships instead of is-a |
| 21:08 | <othermaciej> | location.name, possibly null could have the name stuff |
| 21:08 | <othermaciej> | location.surface could handle the surface parts |
| 21:08 | <Hixie> | yeah, they are. but there's code in the main class to instantiate the right child object. |
| 21:09 | <Hixie> | (the last two in my specific case are implemented as a macro that i instantiate with the right superclasses twice: http://software.hixie.ch/fun/cuddlyworld/src/surfacelocations.inc ) |
| 21:09 | <othermaciej> | in languages that can do multiple inheritance you could alternately multiple-inerit (but dealing with inheritance diamonds is no fun) |
| 21:10 | <Hixie> | the constructor for TNamedLocation takes (Name, DefiniteName, IndefiniteName, Description), the constructor for TSlavedLocation takes (Master, Position), the constructor for TSurfaceNamedLocation takes (Name, DefiniteName, IndefiniteName, Description, Ground), and the constructor for TSurfaceSlavedLocation take (Master, Position, Ground) |
| 21:10 | <othermaciej> | if the only behavior difference for the Named and Surface subclasses is at construction time, maybe you just need a constructor with lots of optional parameters that can instantiate the sub-objects |
| 21:10 | <othermaciej> | like a dictionary parameter to the constructor |
| 21:10 | <Hixie> | there's several constructors. One with the argumes, another that knows how to read the data from a file, etc. |
| 21:11 | <Hixie> | the problem is that this doesn't scale, whether to a flexible one-class constructor or to multiple classes with narrow constructors. |
| 21:11 | <Hixie> | what i really want to do is just have the language let me say "there's these various combinations of these methods, make it work" |
| 21:11 | <Hixie> | anyway |
| 21:15 | <TabAtkins> | Anything with multiple inheritance allows that. |
| 21:15 | <TabAtkins> | CLOS is an example. |
| 21:15 | <jgraham> | Yeah, but on the other hand you have to use multiple inheritance |
| 21:15 | <TabAtkins> | ...and? |
| 21:15 | <jgraham> | It's no fun |
| 21:16 | <TabAtkins> | Multiple inheritance is just single inheritance with the possibility of name conflicts. |
| 21:16 | <jgraham> | And with a much harder job to track down what methods a class implements and where they come from |
| 21:18 | <Hixie> | multiple inheritance doesn't work for the case i described unless you do diamond inheritance, and then you introduce all kinds of crazy edge cases and dubious semantics. |
| 21:19 | <hober> | Dylan handled diamond inheritance rather well IIRC |
| 21:20 | <Ms2ger> | Who's Dylan? |
| 21:20 | <jgraham> | Famous singler |
| 21:20 | <jgraham> | *singer |
| 21:29 | <TabAtkins> | Hixie: Yes, I thought diamond inheritance was implied by "multiple inheritance". |
| 21:29 | <TabAtkins> | Anything else is too weak. |
| 21:48 | <paxcoder> | Hey, did anyone pick up the work on Undo history yet? |
| 21:53 | <jgraham> | paxcoder: No |
| 21:54 | <paxcoder> | jgraham, ah too bad, thanks. |
| 22:11 | <paxcoder> | jgraham, does anyone know what the requirements and the goals of the API are? |