02:12
<Philip`>
jacobolus: http://krijnhoetmer.nl/irc-logs/whatwg/20080702#l-282
02:15
<jacobolus>
Philip`: that may be, but that limits what you can do
02:16
<jacobolus>
Philip`: it's quite useful to draw a bit, then transform, then draw a bit more (in the same path)
02:17
<jacobolus>
Philip`: that spec wording you pasted in that chat seems about right to me, and is sufficiently explicit. cool.
02:17
<Philip`>
jacobolus: Only Opera prevents you from doing that, and nobody uses Opera so you could ignore it ;-)
02:18
<jacobolus>
yep
02:18
<jacobolus>
that's the plan
02:18
Philip`
uses Opera :-(
02:18
<jacobolus>
Philip`: so my little test thing at http://www.orbited.org/wiki/CanvasShapes won’t work for you then
02:19
<jacobolus>
or rather, it will only draw circles
02:20
<Philip`>
jacobolus: That's what happens in Opera, though I can trivially switch to Firefox to see it properly :-)
02:23
<Philip`>
jacobolus: The arc() call for drawing circles should probably use false (clockwise) instead of true, else (according to the spec) it might (if Math.PI > π) draw nothing instead of a circle
02:23
<jacobolus>
okay
02:24
<Philip`>
(because of the way angles get wrapped, depending on the clockwisity and the angles)
02:24
<jacobolus>
Philip`: I would expect one of arc(x, y, radius, 0, 0, false) and arc(x, y, radius, 0, 0, true) to draw a whole circle
02:24
<jacobolus>
but both just do nothing
02:24
<Philip`>
(Hmm, maybe "clockwisdom" is a better term)
02:24
<jacobolus>
hehe
02:26
<Philip`>
arc() is a bit weird and unintuitive
02:27
<Philip`>
but it's implemented interoperably in Firefox and WebKit, so I guess there'd need to be strong justification for changing the spec to not match those implementations
02:36
<jacobolus>
Philip`: hmm, if I use a bit more than 2π for the second angle, it draws most of a circle whether I use true or false
02:44
<Philip`>
jacobolus: Argh
02:44
<Philip`>
You are entirely right, and that is the expected behaviour
02:44
<Philip`>
I just get this all mixed up every time I look at arc() :-/
02:44
<Philip`>
I remember not enough to be correct, but enough to be dangerous
02:45
<jacobolus>
Philip`: is there a mathy explanation of how arc is supposed to work?
02:45
<Philip`>
jacobolus: What do you consider "mathy"?
02:45
<Philip`>
(particularly compared to what's in the spec already)
02:45
<jacobolus>
just unambiguous. I haven't read what the spec says about arc :)
02:48
<Philip`>
If start->end is clockwise (i.e. end > start), and anticlockwise=false, then it draws all the way from start to end and possibly goes all the way around the circle (though at most once); and if anticlockwise=true, then the angles are wrapped modulo 2pi and the shortest anticlockwise arc from start to end is drawn
02:48
<Philip`>
and same if you swap all mentions of 'clockwise' and 'anticlockwise'
02:48
<Philip`>
or at least I think that's what it is
02:51
<Philip`>
Oh, maybe the problem is if Math.PI < π, because drawing anticlockwise from 0 to 2π-ε would draw an ε-long line instead of a circle
02:51
<Philip`>
But I could still be wrong, so I'll just give up and go to bed :-)
02:53
<jacobolus>
Philip`: yes, that is true
02:54
<jacobolus>
Philip`: if you have Math.PI < π then arc(x, y, radius, 0, 2*Math.PI, true) draws nothing
02:54
<jacobolus>
so you’re right, to draw a circle I should use false
02:56
<Philip`>
Drawing circles is quite irritatingly complex
02:56
<Philip`>
Anyway, good night for now
02:57
<jacobolus>
'night
02:57
<jacobolus>
thanks
08:51
<gDashiva>
"Because of the number of legacy servers on the web (e.g. those that serve all files as text/plain) MIME-sniffing is an important compatibility feature."
08:51
<gDashiva>
Are these text/plain web servers related to hsivonen's transcoding proxies?
09:11
<Hixie>
hsivonen: the most common errors i get are (1) mistyping the start tag (e.g. missing the leading <), and (2) getting hte wrong end tag.
09:11
<Hixie>
these two errors both cause an inordinate number of errors to be reported and none of them really say what the actual mistake was.
09:12
<Hixie>
e.g. <p> foo var title="">x</vsr> </p> and <p> <a href="">x</span> </p>
09:12
<othermaciej>
I had a similar experience with the validator
09:13
<othermaciej>
although the mistake was missing close "
09:14
<Hixie>
the wrong end tag for an inline element in particular cascades into an error for almost every block-level element in the tree from the point of the error on.
09:14
<Hixie>
which is exciting when the error is half way down the html5 spec
09:18
<Hixie>
first draft of Web Sockets has now been completely defined
09:19
<jacobolus>
Hixie: that sounds great. I'll take a look tomorrow morning
09:21
<Hixie>
http://www.whatwg.org/specs/web-apps/current-work/#network
09:30
<Hixie>
Lachy_: just listend to the podcast on the web, and i think you did great!
09:32
<hsivonen>
Hixie: recorded http://bugzilla.validator.nu/show_bug.cgi?id=258
09:32
<Hixie>
cool
09:34
<Lachy>
Hixie, really? I couldn't listen to it all. The sound of my own voice is irritating.
09:41
<Hixie>
heh
09:41
<Hixie>
it was fine as far as i could tell :-)
09:41
<Hixie>
one's own voice is often found to irritate one
09:42
<Lachy>
I tend to say um and ah far too often, at least at the beginning
09:42
<Lachy>
I need to practice more
09:42
<Hixie>
eh, everyone does :-)
09:42
<Hixie>
you should hear my talks, i'm terrible
09:42
<Lachy>
have you got any recorded?
09:46
<Hixie>
not publicly :-)
09:48
<Hixie>
right bed time
09:48
<Hixie>
nn
09:51
<hsivonen>
Lachy: It's a bit hard to comment, since I already know the topic, so I can't comment what it souded like to someone who doesn't.
09:51
<hsivonen>
Lachy: you did go a bit easy (non-controversially) on the XHTML vs. HTML question
09:52
<Hixie>
(wow, julian was fast at sending that complaint about the Web Socket Protocol)
09:58
<Lachy>
hsivonen, of course I did. If I said anything bad about XHTML, think of the complaints I'd be getting from certain people
09:59
<Lachy>
gotta go, bbl
10:03
<othermaciej>
Hixie: specifying the bytes is not really helpful to implementors (I don't think anyone will put an array of hex values in their code instead of a string)
10:03
<hsivonen>
othermaciej: for another part of the spec I did and later regretted
10:04
<hsivonen>
(not an array actually, but individual numbers)
10:05
<othermaciej>
yikes
10:06
<othermaciej>
I don't understand also why validating the response depends on details that are irrelevant from the HTTP point of view
10:07
<othermaciej>
that makes it harder to make a module for an existing web server that would implement this on the same port as the normal connection
10:08
<othermaciej>
seems like gratuitous draconianism (but maybe I am missing the motivation)
10:09
<othermaciej>
also the fact that it defaults to a weird port and doesn't rely on same-origin security at all partly misses the point of making it look like HTTP
10:11
<othermaciej>
I guess I can send email tomorrow
10:38
<mcarter>
good evening
13:59
<Windstoss>
What is the browser supposed to do, when an author sets contenteditable for <title></title>?
14:00
<annevk>
Hixie, "their originating server" seems false, as it clearly allows cross-origin
14:01
<annevk>
Windstoss, make it editable?
14:02
<zcorpan>
Windstoss: same as any other element i guess
14:11
<zcorpan>
Philip`: is there an easy way to sort the canvas results table so that tests that fail across the board are at the top, tests with 1 pass next, 2 passes next, and so forth?
14:22
<Philip`>
zcorpan: The easy way is to just write a script that sorts them based on the class names, I would expect
14:23
<zcorpan>
Philip`: ok
14:25
<Philip`>
zcorpan: probably something like http://philip.html5.org/misc/canvas-table-sort.txt but less rubbish
14:29
<zcorpan>
Philip`: thanks, you're faster than me :)
14:31
<Philip`>
JS needs an operator like Perl's <=> and cmp
14:36
<Philip`>
zcorpan: (Updated the script to give nicer output now)
14:42
<zcorpan>
Philip`: thanks
14:43
<zcorpan>
http://simon.html5.org/dump/canvas-results-sorted.html
14:44
<zcorpan>
i think i'll go through the top ones and see if it makes sense to change the spec
14:45
<Philip`>
It'd probably be sensible to ignore the Excanvas column
14:46
<zcorpan>
yeah but it's mostly fail anyway :)
14:47
<zcorpan>
is it defined somewhere what should happen in general with too few or too many arguments?
14:48
<Philip`>
zcorpan: http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#common
14:54
<zcorpan>
wonder if it would be useful to have a standard exception for not enough arguments
14:54
<zcorpan>
that is different from NOT_SUPPORTED_ERR
14:56
<annevk>
if the use case is testing, no :)
14:56
<gDashiva>
WRONG_ARITY_ERR
14:57
<zcorpan>
well debugging for authors
14:58
<zcorpan>
"not enough arguments" is more helpful than "NOT_SUPPORTED_ERR" when the author looks in the error console to figure out why it doesn't work
14:58
<annevk>
usually exceptions have some message that could be more detailed
14:58
<zcorpan>
oh that's true
14:58
<zcorpan>
ok
15:15
<zcorpan>
hmm, is the imageData stuff not implemented yet?
15:17
<annevk>
it is
15:17
<annevk>
though in varying degree
15:28
<zcorpan>
now i wonder, should i post my notes to whatwg, public-html or file a bug?
15:29
zcorpan
posts to whatwg
15:31
<Philip`>
zcorpan: Nobody implements it all, as far as I'm aware
16:10
<annevk>
Hixie, yt? any idea whether we postponed the meeting to 10AM again?
16:23
<annevk>
guess i'll be there at nine
17:16
<annevk>
seems I was wrong, nobody here :/
18:35
<gsnedders>
Hixie: What's the justification for not just using full HTTP/1.1 for WebSockets?
18:37
<takkaria>
it's the requirement to write a websockets server in only a few lines of code
18:37
<takkaria>
I believe, anyway
18:38
<annevk>
indeed
18:38
<Hixie>
right
18:39
<gsnedders>
peh. we already have perfectly good HTTP servers.
18:39
<Hixie>
i'm not writing a whole web server just to do a chat client
18:39
<Hixie>
the "perfectly good HTTP servers" don't do full duplex.
18:39
<Hixie>
cos HTTP isn't full duplex.
18:42
<gsnedders>
hmm, looking through the diff of spec-gen v. the CSS WG's postprocessor, a heckuva lot is just the difference between actually parsing it and serializing it v. rewriting parts of the document
18:42
<gsnedders>
brb (again)
18:43
<gsnedders>
(back)
18:51
<Hixie>
othermaciej: the reason for having an exact hex dump is to make absolutely sure that the remote end really is a WebSocket server and isn't being tricked into pretending to be one
18:51
<gsnedders>
Why claim to be an HTTP server?
18:52
<gsnedders>
(i.e., get off ma lawn!)
18:52
<Hixie>
so that you can reuse the same port
18:52
<othermaciej>
Hixie: it seems like the most likely thing to trick would be a generic web server that doesn't actually support WebSocket at all
18:53
<othermaciej>
in which case, requiring a particular header order does not seem like a strong defense
18:54
<othermaciej>
but it may well make it more of a pain in the ass to implement it integrated into normal web servers
18:54
<Hixie>
well there's no way that a random HTTP server is going to be saying "Upgrade: WebSocket".
18:56
<othermaciej>
it seems unlikely that anything else could be made to produce something that looks like an http response with the right status code and response headers, but only with the headers in a different order
18:56
<john_fallows>
Hixie, looks you are making very good progress with the WebSocket section :)
18:58
<Hixie>
john_fallows: it's basically done :-)
18:58
<john_fallows>
i have a question about the step 11 in the handshake
18:59
<Philip`>
...except for the implementations and tests and feedback and tutorials and ...
18:59
<john_fallows>
why use GET rather than OPTIONS?
19:00
<Philip`>
(Note to self: Hash tables don't work well when you have ten thousand items and the hash function always returns 0)
19:02
gsnedders
is looking over an htmldiff of the real spec-gen's output and his own
19:02
<gsnedders>
no breakage that I've seen yet
19:02
<Hixie>
othermaciej: i don't think it's that unlikely. we'd still have to define error handling to a lot of detail, too, so it seems better to make that as simple as possible
19:02
<Hixie>
Philip`: i just meant the text in the spec :-)
19:03
<gsnedders>
(well, breakages due to one or two things not being supported yet)
19:03
<Hixie>
john_fallows: OPTIONS means "tell me about this resource", GET means "give me this resource"
19:03
<Hixie>
john_fallows: we don't want to know if it's possible, we just want to connect :-)
19:05
<john_fallows>
don't we need to wait for the 101 Switching Protocols to know if it's possible?
19:10
<john_fallows>
Hixie: sorry, did not prefix my last comment with your id
19:11
<Hixie>
well, it's like with a normal GET request right? You don't know if the URL exists before you call it.
19:21
<john_fallows>
Hixie: yes, that applies to many different HTTP methods with request paths, such as GET, POST, PUT, DELETE, HEAD, OPTIONS, so it doesn't seem to imply the use of GET
19:31
<john_fallows>
Hixie: OPTIONS implies we are negotiating capabilities of the conversation, which IMHO seems like the best fit for the WebSocket handshake
19:32
<Hixie>
OPTIONS isn't negotiation, it's asking for information
19:33
<gsnedders>
Now, I need help with a non-recursive algorithm
19:34
<john_fallows>
Hixie: you are right, OPTIONS is asking for meta-information about a resource, not the resource itself - that's why OPTIONS is a better fit over GET
19:35
<Hixie>
we want a resource here, not meta information
19:35
<gsnedders>
Namely, http://pastebin.com/m2f04a2a
19:36
<john_fallows>
if we wanted to return the actual resource, wouldn't that be a 200 OK or similar with a request body?
19:37
<Hixie>
it is
19:37
<annevk>
gsnedders, hey, how far is your specgen?
19:37
<Hixie>
well
19:37
<Hixie>
it's a 101
19:37
<Hixie>
but 101 just means "i'm moving to another protocol to give you the 200 OK"
19:37
<gsnedders>
annevk: xref is more or less perfect, I just need to build the TOC from the internal structure and add section numbers
19:38
<gsnedders>
and that'll probably do for 1.0 (well, with some bugfixes)
19:38
<annevk>
is it available as web service already?
19:38
<gsnedders>
nope
19:42
<john_fallows>
Hixie: we do want meta-information about the resource, namely whether or not it supports Upgrade: WebSocket
19:43
<Hixie>
john_fallows: no, we want it to actually upgrade
19:44
<Hixie>
it's like saying when you go to ikea to buy a cupboard, you're looking for the instructions to build the cupboard, not the cupboard itself
19:48
<john_fallows>
looking at the TLS Upgrade scenario in RFC2817 - http://www.ietf.org/rfc/rfc2817.txt
19:49
<john_fallows>
they specify Optional Upgrade using GET and Mandatory Upgrade using OPTIONS
19:49
<gsnedders>
Hixie: I want the pieces to build the cupboard from too, when I go to IKEA
19:50
<john_fallows>
the WebSocket upgrade is mandatory, which seems to imply using OPTIONS rather than GET
19:58
<Hixie>
2817 is on crack
19:58
<Hixie>
note how nobody implements it
20:00
gsnedders
passes Hixie some crack so he can be on it too
20:00
<Hixie>
no thanks :-)
20:02
<gsnedders>
0.714s to xref HTML 5
20:03
<Hixie>
how long to parse? :-)
20:03
<gsnedders>
Far too long :)
20:04
<gsnedders>
13.106s
20:06
<Hixie>
d'oh
20:21
<john_fallows>
if the handshake is forced to either Upgrade or fail, and can never return a non-upgraded response, i don't see how we can justify using GET over OPTIONS
20:21
<Hixie>
i don't see how we can justify using OPTIONS
20:22
<john_fallows>
sorry Hixie, don't mean to bug you on this, just trying to better understand the "is on crack" response earlier :)
20:22
<Hixie>
rfc2817 is just fundamentally not a sane spec
20:22
<Hixie>
and is not likely to convince me as an appeal to authority :-)
20:23
<john_fallows>
maybe if i understood why you think that, it would be easier for me to reach your perspective
20:26
<Hixie>
it makes fundamental mistakes like not having a way for pages to say that following a link must happen over an encrypted channel
20:27
<john_fallows>
is that relevant to the optional upgrade=GET, mandatory upgrade=OPTIONS?
20:27
<Hixie>
well, that's just another example of something i don't think is sane in that spec :-)
20:28
<Hixie>
i'm just saying that RFC2817 being a proponent of something or not isn't a useful technical argument
20:28
<Philip`>
Hixie: If you made the encoded length value be big-endian instead of little-endian, then it'd be compatible with Perl's "pack 'w'", which might be nice
20:28
<john_fallows>
ok, understood
20:28
<john_fallows>
well, we're not even delivering a pseudo 200 OK after the 101, because after the protocol switch we are both sending and receiving bytes on the wire, it is no longer about resource retrieval
20:30
<Hixie>
john_fallows: once it's upgraded, it is implied that it is OK :-)
20:30
<Hixie>
Philip`: hm, interesting
20:31
<john_fallows>
yeah, but you didn't actually retrieve any resource when it upgraded, you just changed the rules on how to communicate with that resource
20:34
<Hixie>
well, the full duplex socket is the resource
20:34
<john_fallows>
identified by the request URI
20:36
<Hixie>
right
20:40
<john_fallows>
so what are you saying? GET makes sense to you because you are "GET"ing the full duplex socket resource?
20:46
<Hixie>
right
20:46
<Hixie>
Philip`: i have switched to big endian
20:50
<john_fallows>
those semantics are not consistent with HTTP specification's definition of the GET method, to transfer an entity identified by request URI
20:51
<Philip`>
Hixie: It should multiply 'length' by 128 in each iteration, not by 'multiple'
21:38
<Hixie>
Philip`: oops
21:44
<gsnedders>
Does anyone want to bitch about how bad http://pastebin.com/m3f6dd4f4 is?
21:45
<gsnedders>
That's my first attempt at a non-recursive implementation of that (due to the need to be able to cope with infinitely deep nested sections)
21:45
<gsnedders>
(which jgraham's online viewer will hit the recursion limit with)
21:54
<hsivonen>
Hixie: in the binary math, shifting left may be more intuitive that multiplication
22:00
<Hixie>
true
22:00
<Hixie>
too busy to change it right now
22:08
<Philip`>
Nobody's going to implement it correctly - they'll all wrap at 2^31 or 2^32 or 2^64 or something
22:09
<Hixie>
probably
22:09
<Philip`>
so maybe it should be defined so that a straightforward 32-bit implementation will work correctly, because nobody has a legitimate reason to send 4GB messages
22:09
<Hixie>
today
22:09
<roc>
4GB ought to be enough for anyone
22:09
<gsnedders>
Hmm, my HD is bigger than that.
22:09
Hixie
already deals with terabyte files
22:10
<Philip`>
You can split the data up into multiple messages
22:10
<takkaria>
Hixie: yes, but will you really want to send those files over a WebSocket?
22:10
<annevk>
couple of MB was enough for anyone at some point in the past
22:10
<jgraham>
gsnedders: Why re you using a deque?
22:10
<annevk>
even a couple of KB...
22:11
<gsnedders>
jgraham: Well, it probably doesn't make much difference on such a small outline (even as big as HTML 5)
22:11
<Philip`>
You don't really want to transmit 4.0GB of your 4.1GB file and then have the connection drop and have to resend the entire thing, so you'd always split it up and build some higher-level file transfer protocol on top of it
22:11
<takkaria>
if you're dealing with 4GB of data transfer at one point, you're better using BitTorrent or something else
22:11
<takkaria>
I thought WebSocket was there for chat applications and remote train control, not sending files
22:11
<Hixie>
we can certainly define a limit after which the client should abort the connection
22:11
<Hixie>
that's what i tried doing on the last checkin
22:11
<Philip`>
gsnedders: Replace deque with list, and replace extendleft with push, and replace popleft with pop
22:12
<Philip`>
s/push/append/ or whatever
22:12
<jgraham>
gsnedders: what Philip` said
22:12
<Philip`>
gsnedders: Also have a single list of (section, indent) tuples, instead of two lists
22:12
<gsnedders>
Hey, I'm not a CS student!
22:12
<jgraham>
gsnedders: Me neither :)
22:13
<Philip`>
gsnedders: (unless that'd make the implementation ugly, but I don't see obvious problems)
22:13
<gsnedders>
Philip`: Well, extend not push
22:13
jgraham
was going to write you an implementation which just walked the tree iteratively
22:13
<Philip`>
gsnedders: Oh, right, I meant s/push/extend/
22:14
<jgraham>
But that's only really easier if you have parent pointers and I don't know if you do
22:14
<gsnedders>
lxml has _Element.parent
22:15
<Philip`>
takkaria: I'd be pretty worried if I was a passenger on a train that was being controlled by Web Sockets :-(
22:15
<jgraham>
gsnedders: But a section is not an lxml element, right?
22:15
<gsnedders>
jgraham: right
22:15
<gsnedders>
jgraham: It's a subclass of list, and has section.header and section.parent
22:16
<gsnedders>
You need to be able to get the parent to implement the algorithm anyway
22:18
<gsnedders>
Philip`: How can I do something like l18?
22:18
<takkaria>
Philip`: not if you were a fly. :)
22:19
<gsnedders>
Philip`: All I can think to do is a loop over section and append a truple for each
22:20
<Philip`>
gsnedders: section_and_indents_list.extend((s, indent+2) for s in sections) perhaps
22:20
<jgraham>
gsnedders sections.extend((sec, indent+2) for sec on section)
22:20
<gsnedders>
ah, I don't often think of that, and not with truples
22:20
<Philip`>
s/sections/section/
22:20
<jgraham>
s/on/in/ of course
22:22
<gsnedders>
I've done something wrong.
22:22
<Hixie>
q+
22:22
<Hixie>
er
22:22
<Hixie>
wc
22:28
<gsnedders>
That just looks messy.
22:28
<gsnedders>
http://pastebin.com/m7d7fc0a1
22:30
<gsnedders>
22*C here tomorrow.
22:30
<Hixie>
http://languagelog.ldc.upenn.edu/myl/TranslateServerError.jpg
22:30
<Hixie>
...
22:31
<hsivonen>
Hixie: that's awesome
22:31
<gsnedders>
I think that's a bug.
22:31
<roc>
owah
22:32
<roc>
could it be photoshopped?
22:32
<Hixie>
could be
22:32
<Hixie>
wouldn't surprise me if it was real
22:33
<gsnedders>
http://xkcd.com/331/
22:33
<roc>
it could be real, but a *lot* of Chinese people know English these days, especially ones involved in the Olympics I guess
22:34
<roc>
so it would have to be a monumental stuff-up
22:34
<roc>
which is of course entirely possible
22:34
<gsnedders>
Like, committing code that breaks everything thinking it's a tiny fix and can't possibly break anything?
22:35
<jgraham>
gsnedders: You should do something like item = sections.pop(); section, indent = item
22:35
<takkaria>
there's a massive screen in Manchester, UK, right in the middle of town, which every now and again has Windows error boxes about media types not being supported
22:35
<gsnedders>
jgraham: or just section, indent = sections.pop()
22:35
<jgraham>
Yeah, or just that :)
22:35
<gsnedders>
jgraham: Myself coding half asleep isn't good :)
22:36
<gsnedders>
Actually building the TOC, inevitably, is more complex.
22:39
<gsnedders>
I also need to deal with no-toc
22:41
<gsnedders>
How come I need reversed() like this, but not with the non-recursive algorithm?
22:42
<jgraham>
Do you mean not with the recursive algorithm?
22:42
<gsnedders>
yeah
22:43
<gsnedders>
I _am_ half asleep, remember :P
22:43
<jgraham>
Because at each stage you want to pick the first child of the current section to serialize next which means that it has to go on the far right of the array so it is popped off next
22:44
<gsnedders>
duh.
22:44
<jgraham>
Alternatively, if there are no children, you want the next sibling of the current node, so that has to be one to the left of the current node in the array
22:44
<gsnedders>
Because I push and not pop now.
22:45
gsnedders
is really proving how silly his is when tired
22:45
gsnedders
heads off to sleep
22:45
<jgraham>
His what is ? ;)
22:45
<gsnedders>
:)
22:45
<gsnedders>
s/his/he/
22:46
<jgraham>
Did anyone mention http://www.toolness.com/wp/?p=52 already?
23:09
<Philip`>
jgraham: So I could run Python code that's compiled into Python bytecode, executed by an interpreter that's written in C and compiled to LLVM IR then converted to opcodes for a virtual machine written in ActionScript, ...
23:09
<Philip`>
which is compiled to ABC bytecode, which runs in an interpreter written in Forth, which gets JITted to x86 machine code, which is translated into micro-ops which get executed on the hardware
23:09
<Philip`>
Abstraction is great
23:13
<roc>
it's amazing anything ever works at all
23:14
<othermaciej>
I wonder why the LLVM IR needs to be interpreted rather than translated to ABC directly
23:16
<othermaciej>
I imagine you could give LLVM an ABC back end, but maybe writing a back end is more complex than I thought
23:19
<roc>
maybe the poster is just confused
23:20
<roc>
if you delete the "in" before "Actionscript" in step 2 I think it would make more sense :-)
23:23
<othermaciej>
presumably we'd have to ask someone who has seen the presentation
23:24
<roc>
I don't think it really matters, we can all see the ways it could work
23:24
<Philip`>
and all those ways are similarly crazy
23:24
<roc>
the only crazy thing is the prospect of JS as the universal compiler intermediate language
23:25
<othermaciej>
translating LLVM to a custom bytecode which is then interpreted by a VM written in ActionScript is certainly possible
23:25
<othermaciej>
though it does seem like needless extra steps compared to translating LLVM to ABC bytecode
23:25
<othermaciej>
or translating LLVM IR to ActionScript directly
23:25
<othermaciej>
rather than to a different bytecode interpreted by ActionScript
23:26
othermaciej
shrugs
23:26
<Philip`>
It would be fun to try debugging a performance problem in your Python code and having to traverse down a dozen levels to find the cause
23:26
<Philip`>
s/levels/levels of abstraction/