Pugs 6.2.9 released | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net Set by autrijus on 4 August 2005. |
|||
stevan | fglock: re: the metamodel and runtimes | 01:04 | |
flglock: the metamodel requires some basic functionality to exist, which is those things supported by PIL | |||
bascially, Scalar, Array, Hash and Code objects | |||
from that foundation we can build the object system | 01:05 | ||
then through a little syntactic sugar on top, and you have Perl 6 objects | |||
I am re-writing the p5 metamodel now to reflect things I learned building the first one, as well as the JS one, and in autrijus porting it to haskell | 01:06 | ||
it will likely happen side by side with autrijus's haskell work, and each will inform the other as we go along | |||
but everything up until now should be viewed as prototypes, and not final | 01:07 | ||
which actually describes a lot of things in Pugs :) | |||
__END__ & | |||
svnbot6 | r6234 | putter++ | Prelude.pm: Added .as for List and Hash. But not for List of Pairs. iblech++ for the sprintf_and_as.t tests. | 01:54 | |
r6235 | fglock++ | * perl5/ Value: Num, Int, Bit, Str functions; tests. | |||
putter | stevan: I wonder if that paragraph should go in STATUS? | 01:56 | |
fglock_ | putter: List::as would give an error if List is infinite | 01:59 | |
putter | Is there a lazy map? | 02:01 | |
I keep getting the feeling we are going to need potentially infinite strings... | 02:02 | ||
fglock_ | There will be - it is in the runtime. (I've been thining about infinite strings too - looks like a good idea) | ||
There is a is_infinite() in the runtime - I don't know if it will be available to Prelude | 02:03 | ||
You can safely shift and pop things from a list, and then connect both sides with '...' - see Span.pm | 02:04 | ||
putter | Perhaps in two flavors, suspected infinite and may just be big. Eg, in reverse order, .bytes will try for a lonnng time, and .bytes will exception with a "you dont want to do that!". | ||
fglock_ | There is a elems==Inf, which means the size is unknown, and is_infinite means we are sure it is infinite, and fails | 02:05 | |
putter goes to look at Span.pm | 02:06 | ||
fglock_ | see ext/Span/Code.pm - stringify | 02:08 | |
(the runtime is ext/Perl6-Value-List, but the stringify() there is very simple) | 02:10 | ||
putter | autrijus: ping? | 02:25 | |
Ah well, end of day. | 02:27 | ||
fglock_: I'm afraid .as on infinite lists will have to wait. Sorry. | 02:28 | ||
fglock_ | ok :) | ||
putter | :) | ||
whomever: status update on rules Parser hook - now passes all tests but for trans.t. The regexp in trans's Prelude.pm my sub expand never fires. Something for another day. | 02:30 | ||
Good night everyone. | |||
fglock_ | good night putter | ||
autrijus | rehi. | 05:30 | |
dduncan | Right then, so guess what rare and interesting event I participated in today! | 05:35 | |
autrijus | mm? | ||
svnbot6 | r6236 | autrijus++ | * ow forgot to commit the actual Perl5 codegen. meo culpa | ||
mugwump_ | dduncan: was it chanting and dancing around a large fire with a group of South American Shamen? | 05:40 | |
05:40
mugwump_ is now known as mugwump
|
|||
wolverian | dduncan, do tell | 05:50 | |
oh, and morning, everyone :) | 05:52 | ||
dduncan | I was an extra / background performer for the movie X-Men 3, which filmed at Hatley Castle / Royal Roads, in Victoria, BC, where I live. | 05:54 | |
autrijus | ooh. | 05:57 | |
mugwump | Cool. I used to live with a guy who wrote a script that got produced, that was quite fun, we ended up using our flat to shoot some of the scenes | 06:00 | |
dduncan | I see | ||
mugwump | had to clear out for 3 days or so while the film crew took over | ||
dduncan | this is all interesting really | ||
X-Men is one of my favorite comics | |||
mugwump | So what did they get you to do? | 06:01 | |
dduncan | also, I answered the casting call on Sunday July 24th, 1 week before OSCON | ||
and I had an invite to work when I returned from OSCON | |||
mugwump | that's pretty quick hiring on their part :) | ||
dduncan | but I decided not to tell people until it was actually done | ||
it was for extras; they hardly do anything | |||
I was there for a funeral scene; I was one of the attendees sitting in chairs | 06:02 | ||
I was there for about 9 hours, and the scene is probably 1-2 minutes long in the movie | |||
it was done about 15-20 times | |||
mugwump | Yeah, I helped for several days for a few seconds of a little movie called "Hopeless" | ||
dduncan | still, its sweet; I get some face time in a movie based on one of my favorite comics; this is also the first time I've been in any film; I was also just 4 feet away from the main cast | 06:03 | |
gaal | a day's filming sometimes yields just 30 seconds of actual product time | ||
mugwump | very cool indeed, will you go to the premiere? | ||
dduncan | didn't talk to any of them, though | ||
gaal | though 20 takes is a *lot* | 06:04 | |
dduncan | yes | ||
it was mainly doing the same shot with the cameras in different locations, no more than 3-4 takes per location | |||
the day was rather uneventful ... no notable crisis | |||
gaal | oh, complicated cinematography :) | 06:05 | |
dduncan | the scene had a good 100+ people in it too | ||
mugwump | except when a guy with huge claws jumped in and started ripping people to pieces? | ||
I suppose they must do that part with SFX | |||
:) | |||
dduncan | no, there was no fighting etc; a calm funeral | ||
I can't say too much, so not to spoil what happens | 06:06 | ||
stevan | dduncan: I hope you wore a Pugs t-shirt,.. we could use the product placement advertising :) | ||
gaal | hee | ||
gaal wanders off & | |||
dduncan | no; this was a dressed-up funeral; black suit and tie | ||
stevan | pugs lapel pin? | ||
dduncan | no | ||
purely ordinary stuff ... I don't have any pugs gear anyway, just 2 Perl Foundation shirts and a few Apple shirts | 06:07 | ||
stevan | we need some pugs t-shirts | ||
dduncan | the former are brand-oSCON-new; the others a few years old | ||
autrijus | stevan: indeed. cafepress time? | ||
stevan | autrijus: yes :) | ||
I vote for a metamodel t-shirt,.. but I might be biased :) | 06:08 | ||
autrijus | :D | ||
stevan | chicks will totally dig it | ||
autrijus | stevan: it will be like quote #1 in haskell.org/hawiki/QuotesPage | 06:09 | |
stevan | :D | 06:10 | |
autrijus | www.cafepress.com/cp/moredetails.as...amp;Zoom=1 | ||
dduncan | mugwump, following the earlier question, I will go to the movie on opening day, in Victoria, not some far off place where a starring cast invite is likely to be | ||
I went to X-Men 1 on the opening day too ... I don't remember if I did that for X-Men 2, but probably; I did also see that one twice in theatres | 06:11 | ||
fyi, I was also interviewed in advance, so some of that may show up in the extras section | |||
when trailers and/or the movie comes out, I will post a still with myself circled on it, so you guys can see where I am | 06:12 | ||
regarding the t-shirts | 06:13 | ||
I think an excellent candidate for content would be some of those diagrams that autrijus has made and posted | 06:14 | ||
autrijus | iblech: I'm going to check in a refactoring on showPerl5 -- after this you need only modify the DrIFT.Perl5 module; the production rules themselves should be polymorphic enough to handle most cases | ||
dduncan | eg, the fictional time table | ||
er/timeline | |||
autrijus | nod | ||
dduncan | or some of the most recent pretty pictures | ||
like that one about containers | |||
I'd wear a shirt having that fictional Perl 6 timeline | 06:15 | ||
but I won't make it | |||
stevan | dduncan: that is what is so great about cafepress,.. you just need to upload the artwork | ||
dduncan | I'm going to switch tasks now ... ping if you want me | 06:16 | |
autrijus | it's "imaginary" as in "imagineering", not "fictional" as in "fictoinal character" :) | ||
dduncan | and I heard about the cafepress ... I'll guess that they're print-on-demand | ||
stevan | dduncan: yup, exactly :) | ||
dduncan | s/I heard about/I see your message about/ | 06:17 | |
stevan | autrijus: we can use the t-shirts to fund your global hacking adventure | ||
dduncan | whatever ... I named said timeline from memory | ||
anyway ... ping | |||
autrijus | stevan: right. I'll redraw a better-resolutioned timeline | 06:18 | |
and upload them to cafepress :) | |||
stevan | I will hack together some designs too | ||
we can make an "Pugs hackathon world tour" | 06:20 | ||
autrijus | :D | ||
ingy++ # good idea | |||
stevan | just dont wear it at the airport :) | ||
unless you enjoy body cavity searches | 06:21 | ||
autrijus | :D | ||
ods15 | hmm, NetBSD on a toaster | 06:31 | |
svnbot6 | r6237 | autrijus++ | * abstract Perl5 code generation back to DrIFT.Perl5. | ||
r6237 | autrijus++ | * This slows down -CPerl5 a bit, but presentation tweaks | |||
r6237 | autrijus++ | won't require rerunning DrIFT now. | |||
ods15 | www.embeddedarm.com/news/netbsd_toaster.htm | ||
stevan | "Polymorphic Existential Recursive Lambda" that would make a good t-shirt | 06:46 | |
autrijus | Ļ ā Y Ī» | 06:49 | |
stevan | I am going to assume that was "Yes, thats a good idea stevan" in chinese or something | 06:50 | |
autrijus | no | ||
those are the four utf8 symbols for P, E R and L | |||
stevan | nice | ||
autrijus | U+03C9 - GREEK SMALL LETTER OMEGA | 06:53 | |
U+2203 - THERE EXISTS | |||
U+0059 - LATIN CAPITAL LETTER Y | |||
U+03BB - GREEK SMALL LETTER LAMDA | |||
:) | |||
wolverian | Y is "recursive"? | 06:55 | |
autrijus | wolverian: yeah, as in the Y combinator | 06:56 | |
wolverian | ah, right. | ||
autrijus | the symbol of general recursion | ||
wolverian | I'm not that far in maths, yet. :) | ||
autrijus | :) | ||
wolverian | wow. subpixel smoothing sucks at 640x480 | 06:59 | |
Aankhen`` | Morning. | 07:01 | |
autrijus | yo Aankhen`` | ||
Aankhen`` | Hola. :-) | ||
What's shakin'? | |||
autrijus | t-shirts :) | 07:02 | |
trying to get some images uploaded to cafepress | |||
Aankhen`` | Could I take a peek? | ||
autrijus | er, it's just reusing the visiolization, imaginary timeline, movies | ||
etc | |||
Aankhen`` | Ah, I see. | ||
Sounds neat. ^_^ | |||
autrijus | :D | ||
Aankhen`` | -CPerl5 is a new backend? | 07:03 | |
autrijus | aye. | 07:04 | |
should probably be called -CP5Obj | |||
or something like that | |||
but I don't much care :) | |||
Aankhen`` | Wow, all this time I thought the Perl 5 backend was already somewhat functional. | ||
autrijus | well, it was, but it involves parsing haskell expressions in -CPIL with perl5 | ||
which is 1)slow 2)fragile | |||
Aankhen`` | Mmm. | ||
autrijus | having pugs itself dump p5 expressions is much neater. | ||
Aankhen`` | Aye aye cap'n! | 07:05 | |
coral | you can boil p6 down to p5 now? | ||
Aankhen`` | BTW, a suggestion: don't waste any time on -CXML at this point. | ||
autrijus | ...but it just costs three lines of code | 07:06 | |
two of which has already been written | |||
:) | |||
Aankhen`` | And what does the output look like? | ||
autrijus | let me show you, a sec | 07:07 | |
coral | (writes third line) | ||
autrijus | yup | ||
coral writes a small controller for some robotic pompoms to keep up with autrijus | |||
autrijus | rofl! | ||
Aankhen`` | LMAO. | 07:08 | |
autrijus | done... rendering | 07:10 | |
Aankhen`` | The pom poms? :-o | 07:11 | |
autrijus | rehi :) | 07:33 | |
perlcabal.org/~autrijus/test.xml | |||
(Test.pm) | |||
perlcabal.org/~autrijus/hello.xml | |||
(Hello world) | |||
there are also DTDs | |||
but I elided them | |||
Aankhen``: it's not _that_ bad :) | 07:34 | ||
I mean, sure, it's bad, but not that bad :) | 07:36 | ||
I'll go grab some food and work on YAML. | |||
which would be much much better. | |||
wolverian | hm. why do people prefer YAML over XML? | ||
autrijus | wolverian: YAML is actually editable in a text editor. | 07:37 | |
also, much more readable. | |||
wolverian: XML is excellent for documents | |||
wolverian | autrijus, I hate its use of single magical characters. that's severe learning curve. | ||
autrijus | but for (possibly recursive, tagged, nested) data | ||
wolverian | I don't like meaningful whitespace either. | ||
too easy to fuck up. | 07:38 | ||
autrijus | wolverian: all true, but those are conscious design tradeoffs. | ||
wolverian | autrijus, right. | ||
autrijus | so, feel free to work on -CXML :) | ||
wolverian: however, to denote | |||
$x = [\$x, \$x] | |||
wolverian | as long as people don't use XML or YAML for their configuration files, I'm happy. | ||
autrijus | there's no easy way to do that in XML either. | ||
you can use XLink but that's also "magic". | 07:39 | ||
wolverian | I meant "magic" in that it overloads single character too much | ||
autrijus | at least it's more concise in yaml | ||
wolverian | characters* | ||
autrijus | ah. | ||
wolverian | (which might be a weird opinion from a perl coder...) | ||
autrijus | I'd say each has its uses. I think that ~/.svk/config in YAML has saved much of my time | 07:40 | |
wolverian | I don't consider either language good for end users. | ||
autrijus | but .ini is? | 07:41 | |
wolverian | definitely better. | ||
autrijus | as in, it's more tolerant and easier to explain | ||
wolverian | and radically simpler. | ||
autrijus | I happen to agree :) but somehow I don't look forward to use INI for marshal and deserialize ASTs | 07:42 | |
wolverian | right - but that's not a configuration file anymore | ||
there YAML can shine. :) | |||
autrijus | yup. | ||
so we are actually in vehement agreement. cool | |||
wolverian | :) | ||
now, for configuration files | 07:43 | ||
autrijus | there are configuration files and there ar econfiguration files :) | ||
wolverian | right. | ||
autrijus | eg. svk's conf file is a dump of internal state | ||
and it's not expected to be edited by regular svk users. | |||
wolverian | 99% of applications should never have a configuration file that the user has to ever see. | ||
autrijus | ~/.xxxrc notwithstanding :) | 07:44 | |
wolverian | I disagree. | ||
it is fine for those to exist, but it is not fine to not provide easier interfaces for configuration. | |||
autrijus | I agree with you. I'm just noting that the "should never" does not (yet) coincide with reality | ||
wolverian | right. this is all "Ubuntu in 2010" talk. | 07:45 | |
hopefully. :) | |||
autrijus | :D | ||
flying cars! | |||
wolverian | those would be nice too. | ||
autrijus | it's already 21st century and I want my flying cars :) | ||
wolverian | XML does have one good aspect when it comes to editing by hand | 07:46 | |
it's (almost) immediately obvious how elements are constructed | |||
autrijus | right. that's a conscious design decision too | 07:47 | |
but the & gets annoying :) | |||
actually that doesn't even work without entities. | |||
& | |||
wolverian | well, you could always CDATA everything.. | ||
autrijus | ;) | 07:48 | |
wolverian | anyway. these languages are really meant for serialisation, as far as I'm concerned, and nothing else. | ||
autrijus | when I can make use of <a name="inline">inline markups</a> | ||
i.e. when my data actually looks like that | |||
then XML is natural | |||
wolverian | right. | ||
autrijus | however, for AST and most of other hierarchical data, that model doesn't fit naturally. | 07:49 | |
wolverian | XHTML... :) | ||
autrijus | :) | ||
wolverian | this is why Textile, Markdown etc are so popular | ||
you'll note they resemble YAML a lot more than XML | |||
autrijus | babel++ | ||
wolverian | hmm, babel? | ||
autrijus | multilingualism | 07:50 | |
as opposed to forcing a language that fits all to all uses | |||
wolverian | right. exactly. | ||
there is no silver bullet. if I ever have a office, I'm going to spraypaint that on the walls. | |||
(actually, on the walls of the meeting room.) | |||
autrijus | easier to paint "there is no silveroffice" on a bullet | 07:51 | |
wolverian | yes, but I'd have to paint that lots of times. one for each XML, etc weenie. | ||
autrijus | :D | ||
food, bbiab. | |||
nothingmuch | (stevan | autrijus).ping; | 08:10 | |
wolverian | ("stevan" (+) "autrijus").ping; # :) | 08:11 | |
nothingmuch | fair enough =) | ||
wolverian | hm, has there been p6l discussion on a notification scheme for perl6? | 08:12 | |
nothingmuch | but what I really mean is stevan.ping || autrijus.ping | ||
wolverian: see Class::Events under modules | |||
wolverian | thanks! | 08:13 | |
I am currently concentrated on breaking Ubuntu, I'll do that later :) | |||
nothingmuch | okay | ||
it's part of my "MMD is the default" quest | |||
wolverian | I think I agree. in any case, trying to modify a class's interface would be easier, in case the author didn't use 'multi'. | 08:17 | |
ods15 | hya nothingmuch | 08:29 | |
what's up | |||
(answer "nothing much") | |||
nothingmuch | no thanks, that pun is too old | 08:31 | |
i'm good | |||
wolverian: we should start a club, and then wee can sulk and cry and weep | |||
wolverian | nothingmuch, has this been discussed on p6l? | ||
nothingmuch | wolverian: yep | 08:32 | |
wolverian | nothingmuch, could you point me at the thread? | ||
nothingmuch | i brought it up in the hackathon to | ||
wolverian | oh | ||
what did others think? | |||
s,others,the others, | |||
nothingmuch | autrijus sort of agrees | ||
stevan agrees | |||
larry didn't really answer | |||
wolverian | heh. | ||
nothingmuch | i don't remember luqui's opinion but i think he agreed | ||
my point is: there is no difference between MMD and SMD if MMD is designed as a behavioral superset of SMD | 08:33 | ||
wolverian | did Larry say something like "MMD is too complicated to be the default"? | ||
or was that Guido? :) | |||
nothingmuch | and something as stupid as making 'sub foo is defined twice' a 'useful warning' is simply not worth the usability of MMD | ||
heh | |||
i don't remember | |||
i think we have much more dangerous default behaviors | 08:34 | ||
like that fucking autothreading | |||
wolverian | I think I love it. | ||
nothingmuch | sub foo is autothreading; # much better | ||
i love it too - but not as the default | |||
wolverian | I can't say yet. :) | ||
nothingmuch | why does someone writing Test.pm have to remember that sub ok (Any|Junction $x, Any|Junction $y, $msg); | 08:35 | |
if it doesn't do that, and you say 'is(1, (1|2), "foo")' | |||
then you get 'ok foo\nnot ok foo\n' | |||
that is simply not a sensible default | |||
and I can already see the perlmonks posts from newbies saying | |||
jql | sub foo is idempotent; # any guess on spelling error %? | ||
wolverian | isn't Junction being included in Any in the latest schemes, or something? | ||
nothingmuch | "# use strict; # no longer needs this | 08:36 | |
no autothreading; # make my program safe" | |||
jql | the problem isn't autothreading, it's side-effects | ||
nothingmuch | wolverian: that is besides the point - it still has to be stated explicitly | ||
jql: exactly | |||
jql | you just need to mark your function perl-"volatile" | ||
nothingmuch | now, compatible behavior can be done by an alternative scheme, which is also much more efficient: | ||
autothread at the leaf level | |||
junctions are passed as values down to the lowest expressions | 08:37 | ||
and things like sub &infix:<+> is autothreading | |||
in fact, anything that 'is pure' is autothreaded for performance | |||
and stuff like '$handle.seek($junction)'; is a horrible horrible error | |||
jql | perhaps we should call every function rand((localtime)[1]) times just to point out people's unreasonable expectation of side-effect-free programming | 08:38 | |
nothingmuch | now, imagine: sub foo ($place){ $handle.seek($foo) } | ||
if you 'foo(10|20)' | |||
then in what state is $handle right now? | |||
you can't know - it depends on what ran first | |||
and you also can't get an error | 08:39 | ||
jql | or we could offer a nifty is memoizable trait which has the nice side-effect of making auto-threading implicit? | ||
nothingmuch | jql: yes | ||
jql: is pure is 'memoizable, optimizable, inlinable, autothreadable' | |||
that is, it's just a value | |||
for any given input | |||
jql | that's a better name for it | ||
nothingmuch | 'is memoizable' is something less than that - it means that we expect the value to be consistent, and it's OK if IO inside it is not repeated | 08:40 | |
in fact, it's preferred: | |||
a configuration database's 'get' function should be memoizable | |||
i'm not sure it should be autothreaded, because the configuration DB might not be thread safe | |||
autothreadable means 'thread safe' | 08:41 | ||
jql | hrm. good point | ||
nothingmuch | you can do it at the same time, but you have to do it again each time, because it might be different results | ||
jql sees function-purity becoming the const-correctness of perl6 | |||
nothingmuch | for example 'class Net::Ping { metho ping ($host) is autothreaded { } }; # much simpler than writing concurrency by hand | ||
jql | ping(all(@hosts)) | 08:42 | |
nothingmuch | exactly | ||
and ping(any(@hosts); # is any one host alive? | |||
you can also add a 'is interruptable' | |||
if (ping(any(@hosts))) { }; # the moment just one value is true, the rest are interrupted | 08:43 | ||
because the junction is folded, and we know it's value already | |||
now the real problem is that damien really really wants autothreading, but no one knows why | |||
or, at least, they aren't telling me | |||
coral | if you spend idle cpu time precalculatiing the expansion of any() until it's actually .pick'd later | 08:44 | |
nothingmuch | coral: not necessarily | ||
the context of if(ping(any(@hosts))) is known | 08:45 | ||
the things are autothreaded | |||
and one of the 'pings' finishes | |||
at that point the return value starts getting composed | |||
and is known to be (... | true | ... | ...) | |||
this is enough to know that the whole thing is true | |||
and we can stop everything, since the values are never used again | 08:46 | ||
if, on the other hand you say 'my $alive = ping(any(@hosts)); if $alive { }' # then the whole thing is run | |||
because $alive could be queried later in juxtaposition to any(@hosts) | |||
jql | waitfor(any(@socket)) # hmm... | ||
Aankhen`` | I don't understand... what is autothreading? | ||
nothingmuch | Aankhen``: whenever a function is given a junction, and the function doesn't explicitly say it likes junctions, then the junction is exploded, and the function is applied (in parallel) to all the values in the junction | 08:47 | |
and then the junction is rebuilt | |||
Aankhen`` | o_O | ||
Aankhen`` no like. | |||
nothingmuch | Aankhen``: yeah, it's horrible | ||
Aankhen`` | Just way too much scope for horrible mistakes. | ||
nothingmuch | jql: see, in that case, waitfor is optimized to say 'is autothreadable, interruptable' | 08:48 | |
since the author of 'waitfor' knows it's safe to do that | |||
on the other hand, the consumer of 'waitfor' could say 'waitfor(any(@socket))'; | |||
Aankhen`` | I'm gonna go shoot up terrorists in CZ out of disgust. -_- | ||
& | |||
nothingmuch | and it's optimized | ||
but then if there is a platform with a bug, then waitfor is augmented for that platform | |||
so the code is optimized where it should work | |||
and might hang or be slower where it doesn't | 08:49 | ||
and worst case scenario - waitfor could explicitly multiplex the junctions | |||
to retain compatibility without autothreading | |||
the problem with the current scheme is that whhen you say 'no autothreading' you can't control what happens one caller level deepr | |||
you shouldn't need to | |||
because the class getting the value should say whether it's safe or not | 08:50 | ||
and although it's almost never unsafe | |||
it's never safe to assume it's safe | |||
jql | and, to implement it with real threading, it has to be thread-safe code | ||
nothingmuch | right | ||
anyway, this has been discussed before | 08:51 | ||
and it appears that damien has a veto on it | |||
hmm... safari autothreads =) | |||
if you have a folder of links in the bar, and you cmd+click it, you get all the sublinks opened in tabs | 08:52 | ||
now, I can see how it's useful, but i most definately do not want it to be the default | |||
jql wouldn't be surprised if junctions end up not being passable to functions, only usable explicitly | |||
nothingmuch | jql: that's the current plan, it seems | ||
sometimes they even go as far as saying that junctions assigned to variables is an error | 08:53 | ||
jql | Junction becomes like List | ||
can't really store one, but they still exist | |||
nothingmuch | jql: but lists become arrays | ||
jql | Junctions get stores in Sets, Lists in Arrays | ||
nothingmuch | or rather, they are assignable to arrays | ||
well, anyway, it's all nonsense | |||
when perl is released i will fork my own version | 08:54 | ||
and i will use that | |||
jql | yeah, lets go back to metamodel gnosis | ||
nothingmuch | and everyone will do that too | ||
and we'll have huge amounts of incompatibility | |||
jql | I don't think that's possible | ||
nothingmuch | but if I can compile as much code as possible with my own perl, i could still run it against other people's code | ||
jql | there are 50 versions of *ML, and it doesn't matter cause nobody uses them | 08:55 | |
the other versions, I mean. I like o'caml personally. :) | |||
nothingmuch | well, i doubt that 'nerl, nothingmuch's perl' will be the de facto standard when 'perl, designed by @Larry' is out there | 08:56 | |
jql | nobody will use an unpopular fork, so I don't think there's much danger in it | ||
also, perl 5.000 is a far cry from 5.005 | |||
nothingmuch | i mean, who do people trust, Damien, or me? I'm a 20 year old idiot, and he's a professor of compsci | ||
but in this case I know that he's wrong, because many other people also know he's wrong | 08:57 | ||
but I don't think I have the power to actually do anything about it | |||
except using a crippled version of junctions in perl 6 - only inline, only in if | |||
only for simple values | 08:58 | ||
jql | they aren't even integral with the type system, anymore | ||
a bit over-huffmanized, now | |||
nothingmuch | anyway, i have to work | ||
glad I ruined everyone's mood | |||
more people should hate autothreading-by-default | 08:59 | ||
jql | good for you. I was too happy for a saturday night | ||
autrijus | rehi! | 09:12 | |
pugscode.org/images/timeline.png | |||
new and improved! | 09:13 | ||
wolverian | yay! autrijus++ | 09:14 | |
autrijus | :)) | 09:15 | |
last picture of today: pugscode.org/images/lambdacamels.png | 10:00 | ||
11:14
Maddingue__ is now known as Maddingue
|
|||
nothingmuch | autrijus: ping | 11:25 | |
autrijus | nothingmuch: pong | 11:27 | |
nothingmuch | autrijus: stevan is not answering, so i have a minimetamodel proposition | ||
i'd like you to comment | |||
autrijus | I propose that you hack and commit ahead | 11:28 | |
but sure, go ahead | |||
nothingmuch | as I see it Dispatchable is just syntactic sugar for perl 5 | ||
autrijus | yup | ||
nothingmuch | i'd rather see sub AUTOLOAD { my $label = ...; ::opaque_instance_attrs($class)->{'%methods'}{dispatch}->($label) }; | ||
autrijus | because closures are somehow more opaque? | 11:30 | |
nothingmuch | well, no | ||
because that way $class could override dispatch. | |||
autrijus | oh. go ahead, if tests don't break | ||
I think it's sane | |||
so hack away :) | 11:31 | ||
nothingmuch | okay: | 11:41 | |
to dispatch a method you say: | |||
$the_root_class->dispatch_method($the_class_of_the_instance, 'dispatch_method', [ $the_instance, $the_method @the_args ]); | 11:42 | ||
normally this would loop back to $the_roott_class->dispatch_method; | 11:43 | ||
now, to get the root dispatcher, you say opaque_instance_attrs($the_root_class)->{'%:methods'}{dispatch_method} | |||
fair enough? | 11:44 | ||
renormalist | Hi all. I'm reading Synopsis 06 (subroutines). Q: Can there be more than one subroutine traits (return..., is rw, ...) on a sub --> eg., sub foo () returns Int is rw {...} ? | 12:15 | |
if yes, are they divided by any syntax? or just written like in my example? | |||
does their order matter? | |||
nothingmuch | yes there can | 12:18 | |
dbrock | there can be any number of traits, separated by just whitespace, and I'm pretty sure their order doesn't matter | ||
nothingmuch | order matters - that's the order they are applied to the class/sub/thing | 12:19 | |
but it's not supposed to matter because traits are normally orthogonal | |||
dbrock | oh, okay | ||
renormalist | ok. And can the return type be more complicated than just a single type like Int? | 12:21 | |
In the synopsis I only see complicated (hierarchical) types on variables. | 12:22 | ||
not on subs | |||
nothingmuch | renormalist: yes, they can | 12:23 | |
see the latest discussions on typing | |||
renormalist | ah, ok, and I just found the example in the synopsis | ||
thx | 12:24 | ||
svnbot6 | r6238 | autrijus++ | * Haskell2Xml instances. | 12:31 | |
r6239 | autrijus++ | * -CXML | |||
r6240 | autrijus++ | * Disabled -CXML (not really used; requires HaXml) | |||
r6240 | autrijus++ | * Added my drift.pl runner to util/drift that produces | |||
r6240 | autrijus++ | `src/Pugs/PIL1.hs` from `src/Pugs/PIL1.hs-drift`. | |||
r6240 | autrijus++ | * Factored out common Perl5/XML instances to src/DrIFT. | |||
r6241 | autrijus++ | * add svn:ignore to new directories. | |||
gaal | renormalist, also note that currently you can't put 'returns' in the middle of the list: | 12:32 | |
sub foo () returns X is Y is Z; # OK | |||
sub foo () is Y is Z returns X ; # OK | |||
sub foo () is Y returns X is Z; # NOT OK | |||
this can be considered a bug. | 12:33 | ||
nothingmuch | okay, i have a mini-meta-mini-meta-model | 12:36 | |
where dispatch is a method of the class object | 12:37 | ||
gaal | mmmmm | ||
autrijus | gaal: Run.hs forced pain is now gone | 13:17 | |
svnbot6 | r6242 | autrijus++ | * Fix the dreaded "recompile Run.hs twice no matter what" problem. | ||
r6242 | autrijus++ | Now Run.hs is recompiled only if Prelude.pm is modified. | |||
r6241 | autrijus++ | * add svn:ignore to new directories. | |||
autrijus | please sanity check my treatment | ||
gaal | ooh, autrijus++ | 13:31 | |
svnbot6 | r6243 | autrijus++ | * add Binary serialization in preparation of Storable-like DrIFT. | ||
dbrock | from Exegesis 3: print "Inflation rate: " and $inflation = +<> until $inflation != NaN; | 13:35 | |
question: isn't foo != NaN true for any value of foo? | |||
autrijus | dbrock: E03 assumes that +"hello" returns NaN | 13:36 | |
that is no longer mentioned in S03. | 13:37 | ||
hm, maybe we should get a ruling on that. | |||
nothingmuch | holy crap! i just implemented Class::Autoloading using the minimetamodel | ||
autrijus | can you post to perl6-language? | ||
nothingmuch | it actually works! | ||
autrijus | nothingmuch: wow. | ||
stevan | nothingmuch++ # lets see it :) | 13:40 | |
autrijus | hey stevan | ||
nothingmuch | one sec, i broke it while refactoring | ||
stevan | morning autrijus | ||
autrijus | saw the two new pictures? :) | 13:41 | |
stevan | autrijus: for the record, I agree with Simon, and I think that is how the MiniMM and your picutres are going | ||
autrijus: yes, very nice :) | |||
cafepress? | |||
autrijus | yeah | ||
I think the timeline on the back side | |||
and the lambdacamel one (re-arranged a bit) on the front side | 13:42 | ||
could work | |||
stevan | nice | ||
autrijus | other thoughts? | ||
autrijus ponders making a metamodel t-shirt too | |||
stevan | hackathon world tour | ||
autrijus | ah right | ||
masak wants a t-shirt, now | 13:43 | ||
autrijus | masak: what do you want on that t-shirt? | 13:44 | |
masak | hmm | ||
maybe some good perl6 code? | |||
autrijus | "Pugs Committer"? "Perl 6 is Here Today?" | ||
mmm | |||
like the italian workshop one? | 13:45 | ||
say [~] (-> @c is copy {gather { while @c[0] { for @c -> {take(.shift)} } } | |||
}(['Joec','utrk','shle','te6r',' r .','a h.','nPa.'].map:{[split "",$_]})); | |||
masak | that's one idea | ||
another is something that doesn't scare people :) | |||
autrijus | :) | ||
stevan | autrijus: maybe your Perl6 poem? | ||
masak | but rather shows the beauty of perl6 | ||
autrijus | stevan: that's a possibility, yes | ||
gaal | the oomph of "p6 is here today" will be short-lived if "what was all the fuss about" happens when it's scheduled :) | ||
autrijus | gaal: I think two years is an awful long time :) | 13:46 | |
stevan: hm, so maybe the poem on the front and the timeline on the back | 13:47 | ||
gaal | autrijus: r6242 is sane, yes, but if someone never precompiles, then there's no need to retouch a null prelude every time either. but that's trickier to get right (what if they just switched to not precompiling?) and is rarer, so i'd call the current behavior reasonable. | ||
dbrock | autrijus: done | 13:48 | |
autrijus | danke | ||
gaal: k | |||
stevan is reading how cafepress works | |||
if it is no more $$ to have more designs, we can just add a bunch | 13:49 | ||
gaal remembers the warning about bad coffee in Turkey | |||
autrijus | stevan: it's all free I think | ||
gaal | which is funny because here we like to drink something we call Turkish coffee | ||
stevan | Perl 6 coffee mugs, dog-t-shirts, thongs,.. etc | ||
autrijus | since it's print on demand | ||
nothingmuch | okay, it's in | 13:50 | |
no wait, svk is slow | |||
i think this is going to take a very long time | |||
masak | i like pugs -e "{ 'Hello, ', @^x }.('World!').say" for a t-shirt one-liner | 13:51 | |
it's from cpan perl6::pugs | |||
stevan | autrijus: yup, all free | ||
gaal | something that shows off closures, like that one, is a good idea | ||
stevan | we can do many variations on the design I think | ||
titoxx69 | hello | 13:52 | |
nothingmuch | stevan: the current minimetamodel can be reafctored further: dispatch_method is applied as a code ref to the class of an instance to find dispatch_method of that class's metaclass | ||
svnbot6 | r6244 | nothingmuch++ | goto is bad, mmkay? | ||
nothingmuch | ugh, crap! | ||
i didn't ask it commit that!!!! | 13:53 | ||
this is not good | |||
svnbot6 | r6246 | nothingmuch++ | Class::Autoloading implemented with the metamodel | ||
gaal | what happened to 6245? | ||
titoxx69 | I tried to parse an XML file using XML::Simple module, but it fails to parse third level nodes, and print the helpless message : Out of memory! | ||
what can I do ? | |||
nothingmuch | it's a phantom one | 13:54 | |
shit | |||
nothingmuch and svk don't get along well | |||
hmm... the "real" metamodel still passes | |||
anway, svn.openfoundry.org/pugs/perl5/Perl...taModel.pl is updated | 13:55 | ||
gaal | titoxx69: get more memory? :) how large is your data? maybe you need to use something that doesn't build a complete document tree in ram, but the code won't be as simple. | ||
nothingmuch | find_method should be pushed up to the Object class | ||
and dispatch_method should use it in every incarnation | |||
but the way it uses it is weird | |||
gaal | titoxx69: also, better ask on #perl, not here (this is for perl6 development) | ||
nothingmuch | there should be a bootstrap find_method that does get_method and superclass as attribute accesses | 13:56 | |
i'll work on this now | |||
titoxx69 | gaal, the XML file is about 1,9 KB large and 4 level deep | ||
stevan | nothingmuch: yes, this is the bootstrapping/metastability issue I was talking about | ||
titoxx69 | gaal, sorry, I didn't notice there were another perl channels | ||
nothingmuch | it's an non issue IMHNO | ||
gaal | titoxx69, you really shouldn't run out of memory on that :) | 13:57 | |
nothingmuch | Dispatcher is just syntactic sugar - it doesn't really do anything | ||
stevan | yes | ||
nothingmuch | except translate $instance->foo to $class->dispatch_method("foo", $instance); | ||
stevan | yes | ||
but how does $instance find dispatch_method()? | |||
nothingmuch | and in a sense we are just reusing perl 5's dispatcher to find a root disppatcher | ||
aha | |||
stevan | :) | ||
nothingmuch | look at the comments that say "the above boilds down to" | 13:58 | |
stevan | yes | ||
titoxx69 | gaal: that's why I don't understand this message, but no matter, I will use XSLT instead. Sorry for the inconvenience and good work :) | ||
nothingmuch | at some point you have to bootstrap it | ||
stevan | but if I take Dispatchable out, what happens? | ||
nothingmuch | i'm just making this bootstrapping explicit | ||
what do you mean? | |||
(by "take out") | |||
stevan is looking over the source once again | 13:59 | ||
nothingmuch | my point is: | ||
the current minimetmodel does exactly the same bootstrapping | 14:00 | ||
only the bootstrapping is implicit because the perl5 object model helps us pull it off | |||
gaal | [off topic 2/386 deep hackery] blogs.msdn.com/larryosterman/archiv...69243.aspx # read the "funny historical article" linked to too. | ||
stevan | i didnt see goto &$root_dispatcher | ||
sorry :P | |||
nothingmuch | stevan: i'm cleaning up for legiability | ||
stevan | nothingmuch: this was possible in the old metamodel too | 14:02 | |
nothingmuch | i know | ||
stevan | you just create your own ::Dispatcher class | ||
nothingmuch | but i like the minimetamodel better | ||
stevan | :) | ||
nothingmuch | a lot better | ||
=) | |||
it's so tiny and cute | |||
stevan | I writing 2.0 of the metamodel based on it | ||
nothingmuch | A | 14:03 | |
14:10
Aankh|Clone is now known as Aankhen``
|
|||
nothingmuch | can someone explain, op the top of their head, what C3 order is? | 14:30 | |
or rather, how to get it | |||
WOOT! MI implemented in another 10 lines | 14:35 | ||
svn.openfoundry.org/pugs/perl5/Perl...taModel.pl - at the bottom see 'my $MI = $Class->new' | 14:37 | ||
fglock_ | nothingmuch: there is an article on C3 here (it's about Python) www.python.org/2.3/mro.html | 14:39 | |
svnbot6 | r6247 | nothingmuch++ | r7289@syeeda: nothingmuch | 2005-08-14 17:35:53 +0300 | 14:41 | |
r6247 | nothingmuch++ | refactoring and MI | |||
nothingmuch | fglock_: want to do something like $MI, only C3 compatible? | 14:48 | |
fglock_ | I didn't understand what $MI is | ||
nothingmuch | $:superclass is an array ref of superclasses | ||
fglock_ | multiple inheritance? | ||
nothingmuch | it overrides find_method | ||
and dispatch_method in the class $Object uses the overridden find_method | 14:49 | ||
fglock_ reads MiniMetamodel.pl | 14:52 | ||
nothingmuch is amazed by how portable and extensible the metamodel is - as perl6 evolves new OO paradgims could be compatibly added | 14:53 | ||
fglock_ being called for lunch :) | 15:00 | ||
ods15 | someone please remind me, openbsd is known for secure, netbsd is known for portable.. what was freebsd's thing? | 15:02 | |
nothingmuch | fast | 15:03 | |
lots of packages | |||
stable | |||
ods15 | isn't fast linux's thing? | ||
nothingmuch | nice mascot | ||
linux has better hw supporet | |||
ingy___ | hi nothingmuch | ||
nothingmuch | better performance for some things | ||
and even more packages | 15:04 | ||
hiya ingy___ | |||
ingy___ is not sure why she has such a long tail | |||
:( | |||
nothingmuch | she? | ||
/nick ingy | |||
ingy___ | *smooch* | ||
08:05 [freenode] -!- Nick ingy is already in use | 15:05 | ||
nothingmuch wonders if ingy is having another breakdown | |||
QtPlatypus | It could be that your name colliding with a whole lot of other ingy's | ||
ingy___ | QtPlatypus: I seriously doubt it | ||
nothingmuch | /msg NickServ HELP | ||
then you can do RELEASE and IDENTIFY | |||
integral | there are ingy, ingy_ and ingy__ :) | 15:06 | |
ingy___ | integral: /who them. they are all me | ||
integral | ... | ||
QtPlatypus | ingy___: What client are you using? | ||
ingy___ | irssi | 15:07 | |
nothingmuch | ingy___: the nickserv script can help you | ||
ingy___ | ok | ||
QtPlatypus | Most likely what has happened is Irssi's reconnected to the diffrent servers on the network. | ||
integral | hmm, if DrIFT lets pugs dump to perl5/binary/xml/yaml, does it also let pugs load from the same formats? | ||
nothingmuch | integral: without knowing it, not automatically | 15:08 | |
because the output could be ambiguous, so it is not necessarily reversible | |||
hence DrIFT cannot do it without help | |||
i would guess you need a separate parser | 15:09 | ||
and it might be able to help from there | |||
integral | hrm, annoying :-/ external Foo->PIL2 and PIL2->PIL2 would have been nice, if it was free | ||
nothingmuch | integral: i may be wrong... ask autrijus to be sure | 15:10 | |
integral | *nod* | ||
15:13
ingy___ is now known as ingy
|
|||
ingy | LOOK. I'VE EVOLVED! | 15:14 | |
NO TAIL! | |||
nothingmuch | ingy++ | ||
ingy | nothingmuch++ | ||
ods15 | ++++++++++++++++++++++ | 15:22 | |
i find it interesting that Perl developers use ++ much more than C developers | |||
QtPlatypus | ?karma ++ | 15:23 | |
ods15 | as a matter of fact, C developers don't use it at all... | ||
nothingmuch | ods15: for karma or for code? | ||
QtPlatypus | ods15: how do they do a for loop? | ||
autrijus | rehi | 15:31 | |
gaal | packing is so tiring! autrijus, does it get better when you do it a lot? :) | 15:33 | |
autrijus | no :) | ||
but you get used to it. | |||
nothingmuch | gaal: i forgot where you're going | 15:34 | |
autrijus: MI implemented, now working on C3 | |||
autrijus | woot | ||
gaal | turkey, the kackar range | ||
nothingmuch | ah, right | ||
gaal | having a list e.g. like this one www.rogerknapp.com/download/campingequip.htm helps | 15:35 | |
svnbot6 | r6248 | autrijus++ | * -CBinary - dump PIL1 tree as opaque GhcBinary file for fast loading. | 15:39 | |
r6249 | autrijus++ | * Switch the new runcore to UTF8.PackedString, a much more compact, | |||
r6249 | autrijus++ | byte-sized storage akin to Perl5's internal string format. | |||
gaal | ooh, shiny | 15:40 | |
QtPlatypus | autrijus: How hard would it be to give perl6 access to PIL? | 15:41 | |
autrijus | QtPlatypus: trivial. why? | ||
note that it's not of much use until we can _run_ pil natively :) | |||
(which is what the new runcore does) | |||
or rather, will do | 15:42 | ||
QtPlatypus would like to pull out all the PPos infomation and use it to markup Perl6. | |||
gaal | autrijus, obvious things not to forget: endianity-indifference; version field | ||
autrijus | QtPlatypus: oh... in that case you want Exp serialized instead, perhaps | 15:45 | |
gaal: bitwidth indifference too? :) | |||
gaal | sure, so the malbogle emitter doesn't get screwed up. | 15:46 | |
QtPlatypus | Exp? | ||
autrijus | QtPlatypus: parse tree | 15:47 | |
gaal | *malbolge (i keep making this spelling mistake) | 15:48 | |
QtPlatypus nods "Yes. what you get from :D ?" | 15:49 | ||
autrijus | let me finish yaml derivation first | 15:55 | |
then you can simply load it using eval :lang<yaml> | |||
wolverian | hm. isn't that kind of pretending YAML has semantic meaning? it's nitpicking, but :serialized<yaml> or so? | 15:57 | |
QtPlatypus autrijus "Ok" | |||
autrijus | wolverian: actually, .dump and .load primitives would be better | 15:58 | |
wolverian | autrijus, yeah. | 15:59 | |
is that p6l material? | |||
(that is, has it been discussed? :) | |||
autrijus | no. | 16:01 | |
so yes, p6l. | |||
hm, syck emitting is no fun | 16:31 | ||
autrijus decides to take the easier path and emit JSON | |||
plus, syck doubles as a JSON parser | |||
ingy | :) | 16:36 | |
autrijus | ...json is done in 20 minutes. | 16:52 | |
too simple ;) | |||
iblech: JavaScript macros! | |||
(i.e. "write perl 6 macros in javascript") | |||
svnbot6 | r6250 | autrijus++ | * JSON serialization. Deserialization for JSON and Binary | 17:39 | |
r6250 | autrijus++ | should be trivial, too. | |||
r6251 | autrijus++ | * Move non-canonical TVar instances from Drift.* to Pugs.PIL1 | |||
r6251 | autrijus++ | so we can contribute back JSON and Perl5 instances upstream to | |||
r6251 | autrijus++ | the DrIFT codebase. | |||
putter | autrijus: mind of someone adds sexp output? :) | 17:40 | |
r6252 is in. p6 regex implementation can now commence. my that was painful. time for postmortem... | 17:42 | ||
nothingmuch | stevan: ping | ||
autrijus | oooh. putter++ | ||
stevan | nothingmuch: pong | ||
autrijus | putter: you going to post postmortem as a use.perl journal? | ||
nothingmuch | C3 in minimetamodel is done | ||
where do I put it? | |||
stevan | nothingmuch: cool | ||
nothingmuch | i'll make MiniMetaModel a plugin-ish demonstration | 17:43 | |
stevan | what do you think the mmm-variations dir/ idea? | ||
nothingmuch | that's what I'm thinking about | ||
stevan | ok | ||
go for it | |||
autrijus | putter: Scheme S or Lisp S? | ||
nothingmuch | did you get my redux? | ||
okay: MiniMetaModel.pl has bootstrap impl | |||
down to single inheritence | |||
stevan | ok | ||
nothingmuch | then it executes code in the files globbed from mmm_variations | ||
stevan | yes I saw the MI stuff | 17:44 | |
nothingmuch | stevan: i meant on AIM about the structure | ||
stevan | oh, yes | ||
svnbot6 | r6252 | putter++ | Added Parser/macro hook for regexs. Perl6 can now participate in regex implementation. Perl6 is not yet able to parse regex syntax, so Parser.hs calls out to macros in Prelude.pm (eg, rx_), which hook back into Parser (eg, with pugs_internals_rx). One regression - Str.trans() with ranges; nowhere used; see t/pugsbugs/rule_used_in_Str.t. | ||
r6252 | putter++ | Prelude.pm: reordered declarations; added trivial regex macros. | |||
r6252 | putter++ | Parser.hs: added hooks; modified regex backslash quoting. | |||
r6253 | nothingmuch++ | C3 in minimetamodel | |||
stevan | that sounds good to me | ||
autrijus | putter: at any case, feel free to add drift derivations for s-exp | 17:46 | |
I'm not quite sure how the | |||
mapping should go | |||
I mean, I can be MzScheme specific and use a perl5-like data structure mapping | |||
putter: ideas welcome; I'll sleep soon and check back tomorrow :) | 17:47 | ||
putter | back. | 17:50 | |
autrijus purrs | 17:52 | ||
putter | re postmortem - simply: (1) minimize dev loop (spent _far_ too much time precompiling Prelude again and again) (2) more agressively isolate failures for testing (bug turned out to only manifest in particular regexs (eg, p5 complimented charactersets) one class (Str). Much time spent wandering possiblity space rather than isolating. cont... | 17:54 | |
autrijus | putter: the Prelude thing is fixed :) | ||
putter | (3) find better ways to get help with haskell. far too much time spent wrestling with type checking. an extra, more skilled, set of eyes would have saved hours. (4) write more tests, da*it. cronic personal failing. a previous patch of mine introduced improved but still not-quite-right backslash parsing in regex literals. didnt write tests. got to spend time debugging instead. haskell's strength is not its debugging environment. | 17:57 | |
poor choice of approach. cont... | |||
gaal | re: 1 apart from autrijus++'s work, you may want to skip prelude precompilation completely when devving. | 17:59 | |
nothingmuch | stevan: okay, dinner+refactoring == done | 18:04 | |
putter | (5) use even _more_ minimal incremental approach to commits. greatest burden was trying not to break the build. while doing something non-trivial. but trivial, more incremental approach was possible (eg, create new rx2/foo/ syntax, and use it to get things working, with greater visibility and opportunity for others to participate). and breaking the pugs build is tolerated. (6) insufficient project management, in particular, backup | 18:05 | |
and look at big picture. originally thought to be a trivial patch. in some sense, is. but cost lots of time. would have cost less if recognized earlier as being less-trivial-than-expected. | |||
_END_ ;) | |||
autrijus | putter: as for 5), you may like to use local branches :) | 18:06 | |
I know it works for me | |||
<- develops all pil2 stuff in local branch | |||
putter | gaal++ autrijus++ # precomiled prelude... and the means to sometimes avoid it | ||
autrijus | it's now always skipped unless you actually touch Prelude.pm :) | 18:07 | |
next we may be able to load Prelude.bin from GhcBinary. | |||
DrIFT.Binary, that is | |||
Aankhen`` | Sounds scary. | ||
autrijus | which will let us precompile all modules | ||
and load them back when use'd | |||
instead of compiled with the main pugs executable | |||
gaal | with variable-width, order independent bits :) | ||
autrijus | I think I'll call this facility... DynaLoader! | ||
putter | oo, (7) get svk working !&#@! this is the n+1 example of something which could have been approached much better with multiple local branches. | ||
autrijus | gaal: yeah yeah | ||
point taken already :) | 18:08 | ||
gaal | :) | ||
i'll do anything to avoid packing | |||
eventually my flight will come though | |||
nothingmuch | stevan: please clean c3 up a bit | ||
autrijus | putter: svn also makes you _wait_ during commit | ||
which I find increasingly intolerable | 18:09 | ||
stevan | nothingmuch: I will look | ||
autrijus | as it encourages you to avoid small commits | ||
svnbot6 | r6254 | nothingmuch++ | Refactor minimetamodel variations into "pluginish" design | ||
nothingmuch | grazie | ||
autrijus wonders if nothingmuch will suddenly finish MM2 and swap it with perl5/P6-MM | |||
nothingmuch | MM2? | 18:10 | |
gaal | idea for smoke server: diff tests.yml automatically after each commit, mail committer with list of newly failing tests :) | ||
autrijus | nothingmuch: stevan's planned metamodel rewrite based on minimetamodel | ||
nothingmuch | ah | ||
well, i'm partway there | |||
we have C3 | |||
we can glue roles into that | |||
and mixins | |||
and delegates | |||
and it builds up very well | 18:11 | ||
gaal | (obvious really but we don't have it yet, plus the win is async) | ||
autrijus | nothingmuch: right. hence my idle wondering | ||
putter | re small commits, oh yes. also, because the commit isnt local, it forces qa to be coupled, further discouraging small development commits. | ||
autrijus | anarchy++ (code monopoly)-- | 18:12 | |
stevan | autrijus: I am going to check in the initial MM2 soon actually | ||
nothingmuch | autrijus: i'd rather plug MMD stuff into it | ||
stevan | nothingmuch: can totally hack away :) | ||
autrijus | stevan: cool | ||
putter: so, the main takeaway is "centralized VCS causes pain"? :) | |||
nothingmuch lets go of MM stuff | |||
it was fun, but i think it's time for stevan to take over =) | |||
stevan | autrijus: no packages anymore, I just do() several files,.. all named according to your theology :) | ||
autrijus | oh wow. | ||
stevan | nothingmuch: no, you cannot get away so easily | 18:13 | |
nothingmuch | ? | ||
autrijus ponders Church of SubMethods | |||
gaal | lol | ||
nothingmuch | =) | ||
stevan | nothingmuch: once you touch the metamodel,.. you can never leave | ||
nothingmuch | stevan: well, I must admit that a cyclic metamodel has some symbolic resemblence to a roach hotel | ||
stevan | autrijus: I have introduced a "primordial soup" layer too,.. for primative functions | ||
coral | . | 18:14 | |
nothingmuch | object is a class? which is an object? which is a class? .... "And so, little jimmy was left circularly introspecting the root classes in the twilight zone" | ||
putter | lol # vcs | ||
autrijus | stevan: there is a greek word for "primordial soup" | 18:15 | |
specifically, "the primal formless space" | 18:16 | ||
it's called "Chaos" :) | |||
stevan renames :) | 18:17 | ||
putter | ah, but primordial soup is much more... soupy... than formless space. lots of slime and stuff. | ||
autrijus | `due to people misunderstanding early Christian uses of the word, the meaning of Chaos (Ī§Ī±ĪæĻ) changed to "disorder" (ĻĪ±ĻĪ±ĻĪ·)' | 18:18 | |
stevan | putter: but "chaos.pl" is much cooler than "primordial_soup.pl" | ||
:) | |||
autrijus | I like chaos.pl :) | ||
nothingmuch | stevan: i disagree | ||
stevan | especially when next to gnosis.pl, etc | ||
nothingmuch | primordial_soup.pl is teh roxx0r | ||
in fact, anything with soup is teh roxx0r | |||
stevan | LOL | ||
nothingmuch | autrijus: when you come to israel all you are having is soup | ||
stevan | nothingmuch: I suppose you will try to make him go outside as well | ||
autrijus | he can try all he wants, but it will be in vain | 18:19 | |
nothingmuch | autrijus: i will make the soup out of beer: | ||
step 1) empty beer into bowl | |||
step 2) open microwave door | |||
step 3) insert bowl | |||
gaal | actually this is the season where everything is soup | ||
nothingmuch | step 4) turn on microwave | ||
gaal | especially the air | ||
nothingmuch | step 5) apply percussive maintenance | ||
step 6) realize that microwave door is still open | 18:20 | ||
step 7) wait for beep | |||
step 8) open microwave door | |||
step 9) insert autrijus into microwave, and let him feast on said soup | |||
gaal: come to Beer Sheva | |||
kgftr|konobi | seen theorbtwo | ||
jabbot | kgftr|konobi: theorbtwo was seen 16 days 7 hours 18 minutes 55 seconds ago | ||
autrijus | too complicated | ||
kgftr|konobi | castaway: where be yer other half? | ||
gaal | you have a pretty big microwave, nothingmuch. | ||
nothingmuch | gaal: or a pretty small autrijus | 18:21 | |
plus, we could slice him up | |||
gaal | that's why they call it microwave, eh? | ||
nothingmuch | divide and conquer | ||
autrijus | gah. | ||
I tried to eval | 18:22 | ||
'autrijus'.length < 'microwave'.length | |||
nothingmuch | autrijus: you really must get this by now | ||
autrijus | and then I remembered that larry explicitly took this pun away | ||
nothingmuch | real world is 3 dimensions | ||
gaal | somehow nothingmuch, i get the feeling that for you everything in the kitchen should eventually catch fire. | ||
autrijus | bad larry for murdering our puns! | ||
?eval 'autrijus'.length < 'microwave'.length | |||
evalbot6 | Error: No compatible subroutine found: "&length" | ||
nothingmuch | gaal: MUAHAHAHA | ||
putter | while both chaos and ps point towards potential for greater stucture, chaos has more of an implication that it hasnt been used yet, there isnt much order, where soup emphasizes that there is already order present, albeit in small chucks, and that increase in order in incremental (where chaos has a slight implication of state-change-like growth in order). bable bable | ||
nothingmuch | putter: that sounds more like primordial gulash | 18:23 | |
autrijus | putter: er but, demiurge operates in chaos | ||
putter: _evolution_ however may work from soup | |||
but that's not sexy enough | |||
gaal must .pack | 18:24 | ||
putter | ;) | ||
nothingmuch | gaal: don't use pointers in unpack though, it's not safe | ||
svnbot6 | r6255 | nothingmuch++ | typo and language | ||
nothingmuch | use the suitecase's zipper insteaf | ||
d | |||
putter | gaal: and dont forget to be order independent... | 18:25 | |
nothingmuch | i think my puns are too lame today | ||
i better go do something better | |||
gaal | i think they don't manufacture order independent tents, unfortunately | ||
good thing my rucksack has some spare ::straps | 18:26 | ||
nothingmuch goes to change shirt and watch TV | |||
stevan | mm2.0 checked in | 18:36 | |
svnbot6 | r6256 | Stevan++ | Perl6::MetaModel 2.0 - (p5) | ||
r6256 | Stevan++ | * based on the MiniMetaModel from P6::MM 1.0 | |||
r6256 | Stevan++ | * files named after autrijus++ meta-theology | |||
r6256 | Stevan++ | * still number of things to do, but this is a foundation | |||
r6256 | Stevan++ | for the newly revised MetaModel | |||
autrijus | ooh. ooh. | ||
autrijus goes playing | |||
autrijus also renames journal title | |||
stevan | LOL | ||
autrijus: it is mostly just a broken up version of MiniMetaModel | 18:37 | ||
autrijus | I misparsed and missed the "up" | ||
ooh. pretty. | 18:38 | ||
stevan | I will start moving some of the code from MM 1.0 into it soon | ||
autrijus | cool! | ||
chaos does look chaotic :) | 18:39 | ||
stevan | :) | ||
ods15 | what's haskel implemented in? | 18:40 | |
autrijus | ods15: GHC? | ||
the GHC compiler is written in GHC. | |||
stevan | originally Perl 5 right? | ||
ods15 | ah | ||
erm? | |||
autrijus | very very long ago they used C and Perl5 to help, yes. | ||
GHC still requires perl5 to this day :) | 18:41 | ||
ods15 | why | ||
autrijus | because although the GHC team ported most of perl5 component ("Evil") into haskell ("Glorious") | ||
the Eval Mangler still can't be ported | |||
ods15 | heh | ||
autrijus | it's the bridge between GHC and GCC I think | 18:42 | |
integral | it's the bit that takes gcc generated assembler and _modifies_ that assembler | 18:43 | |
autrijus | ah. right. | 18:44 | |
stevan | autrijus: I am thinking of doing a META:: pseudo package to handle metaclass calls to the ::Class objects | ||
autrijus | sorry. been too long since I looked at it. | ||
stevan | and allow ::Class object to then handle class methods normally | ||
integral | very, very evil :) | ||
autrijus | and utterly adhoc :) | 18:45 | |
which is, of course, perl5's specialty. | |||
stevan | ok, real-world calls, later all ... & | 18:47 | |
putter | arg. default new() doesnt accept positionals... but naming things is _hard_.... :( | ||
autrijus | I think that's a rare, consciously sadis^Wrestrictive decision made by @Larry :P | 18:49 | |
ods15 | autrijus: so, umm, ghc needs gcc too? | 18:50 | |
sounds like a bad compiler... | |||
bbl | |||
integral | o_O | 18:51 | |
nothingmuch | ods15: wtf? | ||
autrijus | ods15: it can generate native code for major CPU types | ||
ods15: but it can also use GCC for optimized code. | 18:52 | ||
nothingmuch | ods15: what's wrong with code reuse? | ||
autrijus | (on eg. x86 win32, though, the quality of its native code generator is quite close to GCC's.) | ||
thanks to the valgrind guy's work on GHC. | |||
nothingmuch | gcc (not the "gnu c compiler" but the "gnu compiler collection") has an intermediate language that can be compiled quite portably, with generic optimizations | 18:53 | |
SamB | autrijus: is the code better, worse, or neither on x86? | ||
nothingmuch: actually, the C is easier... | |||
autrijus | SamB: a little bit worse on runtime, but is much faster | ||
to compile | |||
nothingmuch | SamB: well, fair enough | ||
gcc is still a reusable tool | |||
autrijus | but the switch to C-- on GHC 6.4 helped compile time a bit | ||
nothingmuch sometimes doesn't understand why ods15 thinks some things are good and others are bad | 18:54 | ||
ods15 | actually, the perl abuse sounds worse... reusing gcc is ok... | ||
ok bye, guarding | |||
autrijus | in any case, GHC seem to be evolving rapidly despite its immense feature set, so obviously I can't complain :) | ||
nothingmuch | ciao! | ||
castaway | kgftr|konobi: he's here, kinda.. (sorry wasnt watching) | 18:55 | |
SamB | autrijus: probably because of way haskell has of making sure you know what you are doing... | 18:57 | |
autrijus | SamB: yeah, but you only need to _know_, not neccessarily _write down_ | ||
kgftr|konobi | castaway: AH | ||
autrijus | which is an amazing property :) | ||
it's almost like the Knight power-cycle koan. | 18:58 | ||
Aankhen`` sighs. | |||
castaway | see, there ,) | ||
clkao | nothingmuch: svk is slow? | ||
Aankhen`` | This channel gives me an inferiority complex on a regular basis. | ||
kgftr|konobi | theorbtwo: fiend! | ||
theorbtwo | Fiend? | 18:59 | |
nothingmuch | clkao: i had 200 revs to merge, and 5 to push | ||
kgftr|konobi | =0) | ||
nothingmuch | so it's not your fault | ||
kgftr|konobi | theorbtwo: looking forward to arriving in the lovely um... abingdon? | ||
theorbtwo | Aye. | ||
clkao | nothingmuch: but it should be very fast. what version are you using? how many revisions in the repository? | ||
theorbtwo | So much still needs doing, in so little time, and so much is yet up in the air. | 19:00 | |
nothingmuch | clkao: local revs ~7500, pugs revs - 10 revs ago | ||
i'm using 1.02 | |||
and it didn' | |||
t take *that* long | |||
kgftr|konobi | theorbtwo: heh... i know what it's like... wedding next month | ||
nothingmuch | just longer than the 15 seconds I hoped ;-) | ||
castaway | oof ,) | ||
clkao | nothingmuch: uhm. ok. :P | ||
theorbtwo | Yours, I take it? Congradulations! | ||
kgftr|konobi | yar | ||
nothingmuch | clkao: i was the one at fault, not you or SVK =) | ||
clkao giggles | |||
kgftr|konobi | you two got a place sorted yet? | 19:01 | |
theorbtwo | Well, it's applied for with Abingdon Rentals, hopefully they'll bloody get back to us with a yey or nay. | ||
castaway | seemed pretty confident tho | 19:02 | |
theorbtwo | The person who took our application seemed confident we'd get it, but they haven't said "yes" yet. | ||
kgftr|konobi | erk, applying without seeing it beforehand!? | ||
castaway | two of my sisters have seen it | ||
kgftr|konobi | ah | ||
nothingmuch | & | 19:03 | |
theorbtwo | We have to apply without seeing it. | ||
kgftr|konobi | you pakced yet? | ||
theorbtwo | It apparently takes ages for them to respond to the application. | ||
castaway | mostly ,) | ||
kgftr|konobi | rightio... when you get here i'll do my best to drag the two of you out to the pub... but so so busy... then again...i'm always at the pub | 19:04 | |
theorbtwo | A better question is "who is moving our stuff, and how are we getting there ourselves". | ||
kgftr|konobi | =0) | ||
castaway | *g* | ||
kgftr|konobi | lol | ||
theorbtwo | Which pub, BTW? | ||
kgftr|konobi | there's a few | ||
castaway | we're waiting for two movers/shippers to give a date .. | 19:05 | |
the taxi driver that took me to heathrow last time pointed out a few ,) | |||
kgftr|konobi | The Stocks, The Kings Head, Broad Face and The Boundary House are fairly usual haunts... mainly the stocks though | ||
theorbtwo checks maps.google.co.uk | |||
castaway | we're at 25 Levery Close btw (in theory ,) | 19:06 | |
theorbtwo | Useless, it is. | ||
kgftr|konobi | www.crownandthistle.com/ | ||
theorbtwo | Ah, at the end of Abbey Close. | 19:07 | |
kgftr|konobi | ah, that's pretty close | 19:08 | |
castaway | thats the plan ,) | ||
kgftr|konobi | right... bbl, food required since i ate all the food in the freezer last night | 19:09 | |
castaway | *g* | 19:10 | |
have a good one | |||
theorbtwo | Later! | ||
putter takes the liberty of creating a class Rul which does role Rule... | 19:16 | ||
autrijus | "Rul"? | 19:20 | |
putter | String, Str, Integer, Int, etc. ;) | 19:23 | |
castaway | ;) | ||
autrijus groans | |||
putter | lol | ||
autrijus | go ahead. :) | ||
putter | k :) | 19:24 | |
any reason why one can't define classes in Prelude.pm? class C { sub f(){} } C::f() is ok, but C.new errors No compatible subroutine found: "&C" | 19:50 | ||
autrijus | putter: probably because Prelude doesn't participate in clsTree initialization | 19:51 | |
I think. not quite sure | |||
shower, bbl & | |||
putter | sleeeeeeeep & | ||
:) tnx | |||
Added Rul to Context.hs. works. but multi sub infix:<~~> (Rul $r, $x) is builtin is safe {$r.f.($x)} isnt being seen. sigh. | 20:24 | ||
svnbot6 | r6257 | iblech++ | Usual svn props and EOLs at EOFs. | ||
putter | iblech: ping? | 20:37 | |
theorbtwo wonders what "is safe" means. | 20:39 | ||
20:39
mauke is now known as mauke_
|
|||
gaal | to2: doesn't do io; safe for evalbot to run | 20:39 | |
theorbtwo | Ah. | ||
gaal | prims that are marked 'is unsafe' aren't install in the symbol table: | 20:40 | |
?eval my $x = open(</etc/passwd>); say =$x | |||
evalbot6 | Error: No compatible subroutine found: "&Pugs::Internals::openFile" | ||
putter | sigh. maybe we need a version of Prelude which runs once the universe is set up. multi sub infix:<~~> ($x, Rul $r) is primitive is unsafe is builtin {$r.f.($x)} isnt working in Prelude, but works fine afterward. :( | 20:42 | |
20:43
mauke_ is now known as mauke
|
|||
theorbtwo | Postlude! | 20:43 | |
putter | (an no, there's no reason for that to be unsafe. something ~similar and working was unsafe, so cut and paste...) | 20:44 | |
*groan* ;) | |||
gaal | CHECKlude? | ||
checkludge, more like it | 20:45 | ||
theorbtwo | Interlude. | ||
putter | hmm, I wonder if Prelude.pm could simply use Mumble; and have it work... | 20:47 | |
gaal | with sufficient Mumble support in the core, no doubt it can! | 20:48 | |
i so need to finish packing | |||
in fact, i will TURN OFF THE COMPUTER now. | 20:49 | ||
see you all in three weeks! :) | |||
gaal waves & | |||
theorbtwo | Later, gaal. | ||
putter | three weeks! eeep! | ||
farewell gaal! & | 20:50 | ||
theorbtwo | Did he get activated outside the OT? | ||
putter | ? | ||
theorbtwo | Ah, "Iām off next week to the KaƧkar range in Turkey." | 20:51 | |
Wondered where he was going for three weeks. | |||
Juerd | theorbtwo: Pre- and postlude sounds like the design mistake that header&footer is in the html templating world. CIRCUMLUDE! :) | 20:52 | |
theorbtwo | Juerd: Except we aren't building general mechisims here, just scafholding for this purticular puropse. | 20:53 | |
Juerd | Oh, you're taking it way too seriously :) | 20:56 | |
putter | I suspect the distinction is between non-oo core stuff written in p6, vs non-core often-oo parts of the standard environment. You likely want the two to be handled somewhat differently. | 20:57 | |
Aankhen`` goes to sleep. | |||
putter | 'night & | 20:58 | |
Aankhen`` | G'night. & | ||
svnbot6 | r6258 | Stevan++ | Perl6::MetaModel 2.0 - (p5) | 21:06 | |
r6258 | Stevan++ | * making superclasses an array, but still treating it | |||
r6258 | Stevan++ | as a SI model for now | |||
r6258 | Stevan++ | - adjusted tests | |||
r6258 | Stevan++ | * adding the method closure factory from P6::MM 1.0 | |||
r6258 | Stevan++ | - added a basic test to make sure the prototypes worked | |||
r6258 | Stevan++ | - this items needs much work. | |||
theorbtwo | "This item needs much work."? | 21:07 | |
stevan | theorbtwo: it is not finished yet (the method factory | 21:18 | |
I have some ideas for how to improve it | 21:19 | ||
but I wanted to get the code down first | |||
theorbtwo | Yeah, I was just wondering about the grammar. | 21:22 | |
...and if you meant that to be outdented more, and apply to both multiple inheretence, and the meth. closure factory, or just the meth closure factory. | 21:23 | ||
kgftr|konobi | moo | 21:51 | |
svnbot6 | r6259 | putter++ | Added class Rul (does Rule) to Prelude.pm. It is intended to be the main p6 rule class. Placing it in Prelude required mentioning Rul in Context.hs. But it is still unused, because infix:<~~> apparently also doesnt work when defined in Prelude. Perhaps the right thing is to break Prelude.pm into two parts, one for core builtins, and one which runs once the universe is working. | 22:28 | |
r6260 | putter++ | Prelude.pm: rx_common_ now does basic adverb checking, and warning. It also takes over handling of PGE :w and :i from Eval.hs. | 23:02 | ||
Supaplex | has any group (php,python,tcl etc etc) expressed intrest in using parrot for future releases? I assume they'd maintain something that provides their current native support, and a parrot language definition or something. right? | 23:07 | |
svnbot6 | r6261 | putter++ | der_grammar.t: corrected typo - mistaken use of ok(), instead of is(), was causing an unexpected success. | 23:24 |