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?