6.2.7 released! | pugscode.org/ <Overview Journal Logs> | pugs.kwiki.org | paste: sial.org/pbot/perl6 Set by autrijus on 13 June 2005. |
|||
autrijus | probably not. | 00:00 | |
Darren_Duncan | seems to work there ... now trying with the module ... | ||
autrijus | in that case, 20% or less | ||
if "parse into noop" counts, suddenly 50%-60% | |||
but that's faking | |||
obra | autrijus: heh | 00:02 | |
Darren_Duncan | okay, that seems to have fixed the main problem | 00:11 | |
putter | :) | 00:15 | |
Darren_Duncan | another big feature still isn't working, but the yet bigger and more important one now does | 00:16 | |
will debug after committing this though | |||
putter 's p6 files end up a mass of comments # when feature_foo works, this should be instead be bar. When there get to be too many of them, I put it aside for a while... | 00:22 | ||
autrijus | thanks for bearing with pugs :) | ||
putter | ;) | 00:23 | |
thanks for bearing pugs! :) | |||
Darren_Duncan | committed a removal of the NASTY haxor | 00:24 | |
autrijus | lol | ||
putter++ | |||
Darren_Duncan | another feature of my module still doesn't work though, which is letting text templates be inlined rather than in separate files | ||
autrijus | ooh. Darren_Duncan++ | ||
coral | hah! "People are basically irrational. Look for cheerleading opportunities." lwall++ | 00:25 | |
Darren_Duncan | eg, LKT_30_TrnMsg.t contains a module declaration at its end, which should be used for the last 3 tests, rather than requiring a separate file; that module doesn't seem to be visible, though | ||
autrijus | coral: I heard that line from you earlier :) | 00:26 | |
coral | someone++ # compiling perl6 to perl5! | ||
autrijus | coral: you think that's an excellent move? :) | ||
just by putting "use pugs; ...; no pugs;" in your p5 programs | |||
and turn the "..." into Perl5 and inject back via source filtering into the compiler | 00:27 | ||
and the compiler is just another cpan module runnable on perl5 | |||
svnbot6 | r5041, Darren_Duncan++ | Locale-KeyedText : following a Pugs fix, removed the NASTY haxor in translate_message(); the module is now generally useful; however, an adjunct feature (having text templates inlined in code modules) still isn't implemented, so 3 LKT_30_TrnMsg.t tests fail | ||
autrijus | (i.e. it's generated from perl6 to perl5 itself) | ||
Darren_Duncan back in a half hour | |||
autrijus | I have a feeling that it will expand our committer base. I may or may not be wrong :) | ||
Darren_Duncan | I'm going to quit my IRC client while I'm away; will check web logs for what I miss | 00:28 | |
autrijus | ooh I found a good poem for CodeGen.hs | 00:30 | |
obra | oh? | 00:31 | |
autrijus | I sit beside the fire and think | ||
of all that I have seen, | |||
of meadow-flowers and butterflies | |||
in summers that have been... | |||
:) | |||
since it's taking the compiled PIL tree and walk back thru all symbols. | |||
putter | :) | 00:32 | |
svnbot6 | r5042, autrijus++ | * Poetry for CodeGen.hs: | ||
r5042, autrijus++ | I sit beside the fire and think | |||
r5042, autrijus++ | of all that I have seen, | |||
r5042, autrijus++ | of meadow-flowers and butterflies | |||
r5042, autrijus++ | in summers that have been... | |||
wolverian | so perl is meadow-flowers and butterflies, eh? | 00:33 | |
autrijus | yup :) | ||
and yellow leaves and gossamer | |||
wolverian | my mind is hurting from the mental stretch | ||
autrijus | in autumns that there were, | ||
with morning mist and silver sun | |||
and wind upon my hair. | |||
etc :) | 00:34 | ||
wolverian | yeah, I remember the poem now :) | ||
autrijus | abigail even agrees with me :) | ||
wolverian | well, @ does look like a flower. kind of. | 00:35 | |
obra | ---<@ | ||
no, that's not the traditional rose, is it? | |||
mugwump | ā | 00:36 | |
geoffb | Who wrote that poem? | ||
autrijus | geoffb: as all other poems in Pugs, it's a JRR Tolkien poem. | 00:37 | |
geoffb | .oO( I need about a 600 DPI display to see unicode glyphs clearly at the small font sizes I prefer ) |
||
autrijus | (every src/Pugs/*.hs has a poem) | ||
geoffb | autrijus, ah, I didn't realize they were all automaticall JRRT | 00:38 | |
Odin-LAP | Eeek. Scary Tolkien-crazy people! :) | ||
geoffb | It's lwall's fault | ||
autrijus | geoffb: it's continuing the grand tradition of perl :) | ||
geoffb | In college I recall that when they first started running crack against /etc/password they found that something like 1/2 or 2/3 of the accounts had Gandalf, Bilbo, or Frodo as passwords (delta case) | 00:39 | |
wolverian | I think E. E. Cummings would fit the role of the official Perl poet better. | ||
mugwump sends ā¾ āæ assorted ā ā unicode ā£ ā¤ flowery ā¦ ā§ things ā ā | |||
geoffb | Awww, thanks mugwump! | ||
wolverian | heh. mugwump++ # pretty | ||
geoffb | wolverian, e. e. cummings might do better for one of the 2D languages . . . . | 00:40 | |
wolverian | and who says perl6 isn't one? :) | ||
autrijus | if it's all up to me, I'd choose James Joyce | ||
but that's because I'm nuts | 00:41 | ||
wolverian | (Acme::2D:: maybe) | ||
geoffb | use Perl2D; | ||
Odin-LAP | mugwump: U+262D! | ||
:p | |||
autrijus | I think Nicholas chose a really good release quote for ponie-3 | ||
"And, isn't sanity really just a one-trick ponie anyway? I mean all you | |||
get is one trick, rational thinking, but when you're good and crazy, | |||
oooh, oooh, oooh, the sky is the limit." -- the tick | |||
wolverian | heh. | 00:42 | |
geoffb | LOL | ||
I wish I'd seen more of the Tick cartoons . . . | |||
And never wasted any time on the horrid live action version, eww | 00:43 | ||
mugwump ā„ any<ā ā” ā ā® āÆ ā„ āØ ā© āŖ> | |||
mugwump calls it quits ;) | |||
Odin-LAP calls it political discrimination. | 00:44 | ||
geoffb | Got all but two of those. | ||
Odin-LAP | Stalin got his logo, but what about mine? | ||
*grumble* | 00:45 | ||
geoffb wishes for a really truly complete set of Unicode fonts. Not "largely complete", not "mostly complete", COMPLETELY COMPLETE. | |||
mugwump, which ones are 2620 and 2625? | 00:46 | ||
Odin-LAP | geoffb: I wish they'd make a font out of the images they use in the spec... :p | ||
Free as in Freedom, of course. :D | |||
geoffb | Odin-LAP, NO KIDDING. | ||
I mean come on, it's not like someone didn't go through all the effort already. | 00:47 | ||
And if there is anything that should be truly free, it's the ability to use Unicode. Sheesh. | |||
Odin-LAP | Exactly. :p It doesn't make sense. | ||
geoffb | (fully use it, I mean) | ||
Odin-LAP | Well, if there's anything that should be free, it's life. ;) | 00:48 | |
mugwump .ā„ |= any<ā å å> # ok geoffb, I'll add pirate to the list ;) | |||
Odin-LAP points out that the earlier list was missing a peace-loving, organised political movement. Encircled-A! | 00:49 | ||
mugwump | sure. ā¶ is far too plain | 00:50 | |
geoffb | OK, so now I'm missing 2620, 2625, and 5350. | ||
Odin-LAP | mugwump: But it's the only thing available. :( | ||
autrijus | ā¶ | ||
(0x24b6) | |||
Odin-LAP | Which is why I lamented Stalin getting his logo, but mine being missing. :) | ||
autrijus | gah I'm lagged :) | 00:51 | |
geoffb | Thankfully, IRC is not (usually) arena combat, autrijus :-) | 00:52 | |
autrijus | :) | ||
coral | iblech: is the POE talked about in r5032 the POE at poe.perl.org? | ||
mugwump | Odin-LAP: you could use āø (U+2638, WHEEL OF DHARMA). each to their own, what goes around comes around. close enough to anarchy ;) | ||
autrijus | not unless we're playing hangmanbot.p6 | ||
Odin-LAP | mugwump: Hrm. | 00:53 | |
putter notes licences of ruby and sbcl are happily p6 compatible | |||
Odin-LAP | mugwump: I prefer to do without, and just paint the damn thing black. :p | 00:54 | |
geoffb | putter, sbcl? | ||
Odin-LAP | Steel Bank Common Lisp | ||
I assume? | |||
putter | y | 00:55 | |
luqui | good morning! | 01:13 | |
Odin-LAP wonders what timezone luqui is in. | 01:14 | ||
luqui | I'm in Canada. They don't have timezones in canada. | ||
obra snickers | |||
Timezones were _invented_ in canada | |||
Odin-LAP wonders whether luqui is on another version of Earth. | |||
luqui | (really?) | ||
autrijus | heya luqui. I fixed the ./ bug ~10 mins after you reported it | ||
(and therefore didn't sleep) | 01:15 | ||
luqui | haha | ||
well, thanks | |||
autrijus | :) | ||
geoffb suddenly remembers all of the Newfoundland time jokes he's ever heard) | |||
obra | lluyeah. hang on for a point. | ||
pointer | |||
Odin-LAP | geoffb: ? | ||
luqui | seen nothingmuch? | 01:16 | |
jabbot | luqui: nothingmuch was seen 2 hours 9 minutes 54 seconds ago | ||
geoffb | Newfoundland is on a half-hour timezone. | ||
Odin-LAP | Ah. | ||
geoffb | Whereas American comics might joke about a time by saying "9 o'clock (8 Central and Pacific)", Canadian comics apparently used to do a similar joke about the Newfoundland time. | 01:17 | |
obra | luqui: www.amazon.com/exec/obidos/tg/detai...0001OOU88/ | ||
putter wonders again about creating a TASKS list, to decouple the figuring out what needs to be done and how hard it is, from the actual doing. | |||
luqui | obra: cool | 01:18 | |
autrijus | putter: go ahead. optionally link to files with todo tests | ||
or just call it TODO. | |||
and make it clear that it's just a scratchpad to communicate random notes, instead of some issue-tracking system :D | 01:19 | ||
(not saying that issue-tracking system is not a good idea in general) | |||
obra | issue tracking systems all suck | ||
nothingm1ch | irssi seems cool | ||
autrijus | but RT sucks less than many | ||
coral | re: autrijus day 142, it's like they're forking the project at every actual point of contention and letting it grow as it may. the rfc process was a crazy tap for that, and many reacted with insanity. still, forking software seems to encourage competitive development. parallel implementations are probably more likely to succeed when tested singly purely on that basis alone, and both benefit from each other's work. | ||
nothingm1ch | hola autrijus | ||
hola obra | |||
obra | hey nothingm1ch | 01:20 | |
nothingm1ch wonders why he can't rename himself | |||
coral | the trick is getting knowledge providers to contribute to all forks simultaneously, somehow. lwall does it by talking about perl6, which makes sense to all implementations (pugs included). | ||
autrijus | coral: I understand that. which is why I'm making it explicit in tomorrow's talk :) | ||
svnbot6 | r5043, putter++ | docs/quickref/namespace: correction re grammars and rules | ||
01:21
nothingm1ch is now known as nothingmuch
|
|||
autrijus | it's not really forking... pugs started with zero lines :) | 01:21 | |
nothingmuch | ah, there we go | ||
luqui | nickserv is nice | ||
nothingmuch | hola luqui | ||
nothingmuch heads on to compile pugs | |||
luqui | hola nothingmuch, has comido la cena? | 01:22 | |
:-) | |||
autrijus | heya. anyone got a tuit of running down a commiter-by-commits analysis of the svn log? :) | ||
nothingmuch | hablo espaōæ½xF1ol, no comprande | ||
;-) | |||
luqui | you foreigners | ||
nothingmuch brb, reboot is in order | |||
luqui | americans can be proud of knowing another language, for your information ;-) | 01:23 | |
nothingmuch | (tiger has encrypted virtual memory) | ||
hah | |||
Odin-LAP | Men man mĆ„ jo snakke mindst tre sproger fĆør man kan kalde sig almindelig! | 01:28 | |
putter | autrijus: elaborate? | 01:29 | |
autrijus | putter: select name, count(commits) from commiters order by count(commits) desc | 01:30 | |
putter | will do, sec... | ||
autrijus | danke | ||
nothingmuch | autrijus: can I resume an interrupted svk cp? | 01:31 | |
autrijus | nothingmuch_: sure, by "svk sy -a" | 01:32 | |
nothingmuch | autrijus++ # useful | 01:33 | |
did you see my new laptop yet? | |||
autrijus | no | 01:34 | |
luqui | it's spiffy | ||
not Spiffy | |||
nothingmuch | =D | 01:35 | |
no source filters here | |||
the light sensitive brightness adjustments are SO cool | |||
oh crap, now I know what I need the most | 01:36 | ||
my ssh key | |||
putter | nopaste | 01:37 | |
autrijus | pasteling: nopaste | 01:38 | |
mugwump | hmm, it's should be an alias for $_.does | ||
if it's Spiffy { } :) | |||
nothingmuch | perlbot: nopaste? | ||
perlbot | Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel> | ||
pasteling | "putter" at 66.30.119.55 pasted "commit stats" (95 lines, 1K) at sial.org/pbot/11389 | 01:39 | |
nothingmuch | putter: you ought to use pbotutil | ||
coral | :wq! # language that likes to start command names with a single colon | ||
putter | pbotutil? | ||
nothingmuch | once you configure it right (*cough*) it's very nice | ||
Odin-LAP | That's the only useful command, too. ;) | ||
nothingmuch | putter: a CLI interface to nopaste | 01:40 | |
on the mac you say: | |||
putter | ah. | ||
nothingmuch | pbpaste | pbotutil.pl -s pugs | pbpaste | ||
and then the clipboard is nopasted, and the resulting URL is in the clipboard | |||
ofcourse, -s pugs is a configuration param | 01:41 | ||
autrijus | putter: thanks! | ||
putter | glad to help. | ||
autrijus | I wonder if that's a power law curve | ||
nothingmuch | hnmm... ghc is not installing | ||
autrijus further wonders if it'd be too much to ask a GD-fu | |||
you know, line graph | 01:42 | ||
(or bar) | |||
nothingmuch | oh wait | ||
i see | |||
putter tries to remember gnuplot... | |||
nothingmuch | oh yay! they fixed the terminal! | 01:47 | |
it's now unicode happy | |||
oh wait, not entirely | |||
ingy: ping | 01:49 | ||
putter | autrijus: a linearish dropoff with 4 people, 63% of total commits, then a knee, and a flatish decay with the rest. | ||
autrijus | putter: .png available? :) | 01:50 | |
nothingmuch | autrijus: is ingy in the room? | 01:52 | |
autrijus | yup | 01:53 | |
nothingmuch | is he dead? | ||
autrijus | ingy is pondering that question | ||
he said yes | |||
nothingmuch | ask him if he would like to know about using strong cryptography in heaven | 01:54 | |
or hell | |||
wherever it is that ingy goes to | |||
luqui | yeah it's hell | 01:55 | |
you know that anyone who uses a source filter automatically goes to hell | |||
mugwump 0wns nothingmuch by accessing his akashic records | |||
nothingmuch | akkashic? | 01:56 | |
oh oh wait, I have a dictionary | |||
=ah | |||
uh, sure | |||
luqui: true | |||
nothingmuch would never sign a deal with the devil without having strong cryptography involved | |||
pasteling | "putter" at 66.30.119.55 pasted "plot1" (64 lines, 3.8K) at sial.org/pbot/11390 | 01:57 | |
autrijus | putter: cool! | ||
that's power law enough | |||
putter trying to do log axes... | 01:58 | ||
If you would like it for a slide, I can clean it up (dots would probably be better than crosses...). | |||
autrijus | yes, I'll put it in my slide :)) | 01:59 | |
putter++ # extremely helpful | |||
nothingmuch | putter - what's that format? | ||
putter | uuencode of a .png | ||
nothingmuch | ah, so pipe to uudecode works | 02:00 | |
thanks! | |||
putter | np | ||
nothingmuch | everyone, please please please sign up here: wiki.yapctoronto.org/index.cgi?PGPKeySigningBOF | ||
luqui: go make a key, like right now | |||
i'm printing the forms | |||
luqui doesn't have gpg | |||
luqui tries to find it | |||
nothingm1ch | ee | 02:05 | |
autrijus: if ingy is asleep please generate a gpg key for him and push it to some server | |||
luqui | haha | 02:06 | |
autrijus | ... | ||
nothingm1ch | nevermind all that privacy crap | ||
oh, and let him type some entropy into /dev/random, he wanted to do that | 02:07 | ||
putter thinks there soooooo has to be an easier way... | 02:09 | ||
02:10
nothingm1ch is now known as nothingmuch
|
|||
autrijus | yay, the hardest slide is written ;) | 02:21 | |
+* I'm not in the Cabal | 02:22 | ||
** I will not promise anything | |||
+** If you want something, write a test and hack on it | |||
+** ...the commit bit is always waiting for you | |||
should be a breeze from there on | |||
putter | ah, expectation management... | ||
obra | s/in/part of/? | ||
autrijus | sure. | ||
nothingmuch | bah | 02:27 | |
autrijus | coral: the note you forwarded me about closure leaks memory... it's one of the main reasons why pugs started. | 02:28 | |
nothingmuch | luqui, ingy: got keys? | 02:29 | |
autrijus | (because I needed to do openafp with closure-based streams, and p5 leaks horribly, so I had to learn haskell, then I need to let perl people use haskell libraries... and all comes from there) | ||
luqui | nothingmuch: yepperoonies | 02:30 | |
ingy | hola | ||
obra | hey ingy! | ||
ingy | nothingmuch: I need a key | ||
nothingmuch | did you send it to a keyserver? | ||
obra: do you have a key? | |||
ingy | I'm in 1130 | ||
luqui | keyserver? | ||
ingy | at the kwiki hackathon | ||
nothingmuch | join pgp-key-howto | ||
obra | nothingmuch: yeah. i need to do payroll, then i'll pull it. but it's the dsa on the keyserver for [email@hidden.address] | 02:31 | |
nothingmuch | ingy? | 02:35 | |
obra | nothingmuch: do you need me to add it to the page? | 02:38 | |
nothingmuch | yep, and to send it to a keyserver | 02:41 | |
obra | Er. It should already be on keyservers.net | ||
nothingmuch | okay, so just put the fpr out, for my re | 02:42 | |
f | |||
and i'll download it and put it on the form | |||
obra | thanks | ||
obra goes to consult the gpg manpage | |||
nothingmuch | gpg --list-pub your_id --fingerprint | 02:43 | |
that should do the trick | |||
obra | Key fingerprint = AB4A 62CF 1A1A 119A 0462 39D6 122F 5DF7 108E 4046 | ||
nothingmuch | should I put it on the webpage? | ||
obra | if you're up to it, that'd be great. otherwise, i can cope | 02:46 | |
nothingmuch | okay | 02:48 | |
for some reason i keep hitting cmd+s on wiki pages | |||
ingy: if you have 5 mins please give them to me | 02:50 | ||
but I do need to print these things | |||
how would someone convince CPAN.pm to use http instead of ftp for MIRRORRED.BY? | 02:59 | ||
jql | have LWP or wget installed, and select -urled mirrors | 03:00 | |
at least, that's what I do | |||
MIRRORED.BY? | |||
hmm | |||
nothingmuch | nevermind, i got it | 03:07 | |
thanks | |||
src/syck/syck.o: unknown symbol `_printf$LDBLStub' | 03:08 | ||
final link ... ghc-6.4: linking extra libraries/objects failed | |||
is that known? | |||
autrijus | are you gcc_select'ing 3.3? | 03:09 | |
nothingmuch | nope, didn't | 03:10 | |
twas 4..0 | |||
will switch | |||
damnit, my . key is too sensitive | 03:11 | ||
"persistent vegetative state. " | |||
www9.sbs.com.au/theworldnews/region...p;region=6 | |||
is it OK to eat political activists? | |||
obra | nothingmuch: when is the bof? | 03:18 | |
revdiablo | nothingmuch: only with copious seasoning | ||
pasteling | "putter" at 66.30.119.55 pasted "plot2.png" (82 lines, 4.9K) at sial.org/pbot/11391 | 03:38 | |
obra | w/win 14 | ||
putter | autrijus: here is a final-ish version of the plot. just let me know if you have any change requests... | ||
autrijus | putter: looks great | 03:42 | |
putter | a log scale version is perhaps more informative... except for 3 outliers, the log plot is basically linear. | 03:43 | |
autrijus | ooh. | 03:45 | |
obra | is plot2.png the logscale plot? | ||
autrijus | no | 03:46 | |
putter | no, I'll put together a pretty one... | ||
nothingmuch | what's the cmd to send all the keys to a server? | 03:48 | |
gpg --send is surprisingly quick to finish | |||
pasteling | "putter" at 66.30.119.55 pasted "plot3.png logplot" (103 lines, 6.2K) at sial.org/pbot/11392 | 03:56 | |
Darren_Duncan | greetings ... | 04:01 | |
will experiment now; a commit may be forthcoming | |||
one thing I noticed earlier, and now, is that something related to Test.pm is failing ... it is not printing out the count of failed/expected tests at the end ... the END block is not executing, it seems | 04:08 | ||
checking docs ... | |||
yes, that's the correct name for it | 04:10 | ||
putter | night & | 04:19 | |
Darren_Duncan | it works! | 04:20 | |
I just rearranged the module declaration in the test file to be above the tests rather than below, and refs succeeded ... this suggests that the declaration is recorded at runtime rather than compile time, but autrijus did suggest something like this the other day when he said to move one class in KeyedText.pm below the others (which worked there). | 04:22 | ||
committed | 04:27 | ||
svnbot6 | r5044, Darren_Duncan++ | Locale-KeyedText : rearranged LKT_30_TrnMsg.t so the module declaration inside it appears above the tests rather than below; split the try-block in KeyedText.pm into 2 parts; all LKT distro tests now pass, and there are no nasty hacks; this module is now widely useable | ||
Darren_Duncan | Locale-KeyedText is now complete | ||
only thing left to do is gradually remove workarounds in it as Pugs itself improves over time | 04:28 | ||
hooray | |||
autrijus | hooray! | 04:29 | |
Darren_Duncan++ | |||
Darren_Duncan | so, is there anything in particular you want me to do next? | 04:30 | |
I'll probably start re-porting SQL::Routine in a few days, but thought I would hold it off until some planned Pugs design changes are done, so it is simpler | 04:31 | ||
autrijus | nod. | ||
Darren_Duncan | moreover, assuming that a 6.2.8 is imminent, I will wait on purpose until after that happens before starting said SRT port | 04:32 | |
and meanwhile focus on Perl 5 modules | |||
autrijus, it must be half-past-midnight over there ... you all partying now? | 04:34 | ||
never mind | |||
good night | 04:35 | ||
autrijus | g'nite... I think I'll sleep in a bit | ||
with unfinished slides | |||
and finish the second half during the 15min break | |||
obra | good luck | ||
Darren_Duncan | I hear that's a longstanding tradition ... Perl conference speakers making their slides at the last minute | ||
I don't think I could ever do that ... I'm not a fast thinker | 04:36 | ||
oh, and good luck with your talk | |||
mugwump | it seems that talks laboured over are laborious... | ||
Darren_Duncan | fyi, I added my own comment to the change log on a previous commit, re what I was doing, so no one else has to | 04:38 | |
autrijus | stevan_: if you can, please check in the perl6 object space (metamodel) code before my talk tomorrow :) | 04:44 | |
docs/talks/YAPC.spork landed. | 04:49 | ||
* First cut - very incomplete - of my talk in 8 hours | |||
Please help cleaning up the XXXs, typos, thinkos, pictures, and add whatever you want me to talk about. | |||
I think I need to sleep a bit. | |||
thanks in advance to whomever kind enough to help me from staring at a blank screen and speak :) | |||
svnbot6 | r5045, autrijus++ | * First cut - very incomplete - of my talk in 8 hours | ||
r5045, autrijus++ | Please help cleaning up the XXXs, typos, thinkos, pictures, | |||
r5045, autrijus++ | and add whatever you want me to talk about. | |||
autrijus waves & | 04:50 | ||
svnbot6 | r5046, mugwump++ | Ship Date - its tests at least aren't completely broken :) | 04:59 | |
r5047, autrijus++ | * tone down the description of non-self-hosting a bit | |||
chromatic | Who wants a TypeConstrainedArray PMC? | 05:02 | |
wgz.org/chromatic/tmp/tc_array.patch | 05:03 | ||
Darren_Duncan | the talk has a good intro, me thinks ... continuing on | ||
chromatic | It's a proof of concept, barely tested, but it's a start and it doesn't segfault. | ||
arcady | type constrained array? how is that? | ||
and the link doesn't seem to work | 05:04 | ||
svnbot6 | r5048, autrijus++ | * usual svnprops | ||
chromatic | Oops, link fixed. | 05:05 | |
arcady, it's a Parrot PMC that Autrijus wanted. | |||
Darren_Duncan | with the "== Perl 5: Modules" section, was the "no warnings" simply an example of 'no'? otherwise "use warnings" reflects better practice | 05:08 | |
that's only a minor point though ... ignorable | 05:09 | ||
ingy | nothingmuch: where are you? | ||
arcady | type constrained array does look useful | 05:12 | |
chromatic | my Array @foo of Int; | 05:13 | |
arcady | exactly | 05:14 | |
Darren_Duncan | the word Array is redundant when you have the @ | ||
on the other hand, this is not ... | |||
my Array $foo of Int; | 05:15 | ||
if that works at all | |||
chromatic | It's bedtime even in my own time zone, despite everything I've done today! | ||
Darren_Duncan | its 22:15 in my timezone | ||
chromatic | Ditto, but I'm not there. | ||
Alright, I'm out. | 05:16 | ||
stevan_ | autrijus: I am commiting the metamodel now | 05:26 | |
(please dont mention it too much though, cause it's still a little hackish :) | |||
autrijus: I put it in lib/Perl6-MetaModel, it still needs some cleaning up though, I will try to do it in the morning | 05:34 | ||
svnbot6 | r5049, Stevan++ | adding the Perl6-MetaModel in Perl5,... its not perfect yet, but here you go! :-P | ||
mugwump | so Perl-MetaModel is the Perl6 metamodel in Perl 6, and Perl6-MetaModel is the Perl6 metamodel in Perl5? :-/ | 05:35 | |
pdcawley | That's not at all confusing. | ||
stevan_ | :P | ||
this is a prototype of the perl6 metamodel i hacked together so we could tests some behaviors | |||
it was never really meant to be anything but that | 05:36 | ||
pdcawley grins. Don't worry about it. | |||
stevan_ | but then autrijus decided it should serve as the basis of the perl5 compiler | ||
mugwump | heh | ||
stevan_ | which is cool, but means it needed to be cleaned up greatly | ||
Darren_Duncan | isn't that the way it is | ||
stevan_ | its about 1/2 way there | ||
it still does not do state in roles | 05:37 | ||
Darren_Duncan | quite often, coders make prototypes, and then business folks say, ship it, you're done | ||
pdcawley | So, no pressure then. | ||
stevan_ | but I think thats insanity anyway :) | ||
Darren_Duncan: yes, thats basically what happened :) | |||
yeah | |||
pdcawley shall have a read... as soon as I've levelled this character in WOW (which shouldn't be long) | |||
stevan_ | pdcawley: I would actually very much appreciate you input if you have time | ||
mugwump | stevan_: perhaps it is worth getting rid of most of ext/Perl-MetaModel, then? | ||
stevan_ | pdcawley: thanks | ||
mugwump: you too | |||
coral | autrijus: pom poms for all! | 05:38 | |
autrijus: yes, i like the idea tremendously. especially 'no pugs'. is it a source filter? | |||
stevan_ | mugwump: not yet, since eventually the metamodel will need to model all that stuff too | ||
coral | heh, so it is | ||
Darren_Duncan | have you guys read autrijus' talk yet? | ||
stevan_ | so please leave it, the perl5 code gen stuff can utilize some of that work I think | ||
coral | gossamer | ||
like spiderweb silk | |||
stevan_ | Darren_Duncan: no, we live it :P | ||
pdcawley | I think to do state in roles you need some way of asking the GC/language kernel/runtime for an iterator on the live set. | ||
pdcawley hasn't. | 05:39 | ||
stevan_ | pdcawley: yes, autrijus larry and I discussed that over sushi today at lunch | ||
Darren_Duncan | yes; I meant did you check it through for any obvious errors or omissions? | ||
coral | all the unicode flowers wilted before i saw them :( they're all '?' now | ||
Darren_Duncan | tjat | ||
stevan_ loves BBQ eel and metamodels | |||
Darren_Duncan | that's what he wanted people to do now, as its around 8 hours before delivery time | ||
stevan_ | Darren_Duncan: no, I need to sleep right now actually | ||
pdcawley | URL please? | ||
stevan_ | otherwise I will sleep though the talk itself | ||
coral | (U+2638)++ # Wheel. Of. DHARMA! | 05:40 | |
Darren_Duncan | its committed in /docs | ||
docs/talks/YAPC.spork | |||
pdcawley | d'oh! | ||
Patch with suggestions? | |||
mugwump prepares coral a fresh bunch, ā¾āæāā | |||
coral | autrijus: heh, wish i was there for it. | ||
Darren_Duncan | I believe so | ||
coral | well, it's forking conceptually. two parties take two paths from a single point and see what happens when they meet again. | ||
sometimes one party doesn't make it. | |||
Darren_Duncan | r5045, autr_ijus++ | * First cut - very incomplete - of my talk in 8 hours | 05:41 | |
[9:50pm] svnbot6: r5045, autr_ijus++ | Please help cleaning up the XXXs, typos, thinkos, pictures, | |||
coral | (topaz comes to mind, no harm intended chip) | ||
Darren_Duncan | [9:50pm] svnbot6: r5045, autr_ijus++ | and add whatever you want me to talk about. | ||
that's what he wanted | |||
the post was 50 mins ago | |||
coral | heh! | 05:42 | |
I'm not in the Cabal | |||
stevan_ | pdcawley, mugwump: please send any metamodel comments to p6c or me directly, I hate backlogging :) | ||
coral | autrijus: it's a public list that you're welcome to join and respond to said email, if you desire. it seemed right up the alley for a response about pugs. | ||
pdcawley | stevan: Wilco | ||
Darren_Duncan | I'm almost halfway through now ... no mistakes noticed, but omissions I have no idea about | ||
stevan_ | ok, night all & | ||
mugwump | night stevan_ ! | ||
Darren_Duncan | nighey | 05:43 | |
t | |||
coral is now synchronized with real time. | |||
Darren_Duncan | real time? what's that? | 05:44 | |
coral | been stuck in scrollback since svn came back up | ||
Darren_Duncan | ok | ||
coral | i keep 7 days | ||
coral just finished reading (and responding to) scrollback | |||
Darren_Duncan | I quit my client every night so its empty when I open each morning ... | ||
just check the web logs if I think I need to see what was missed | 05:45 | ||
I don't know if its in the official spec or not, but "if -r -w 'file' { ... }" looks archaic ... the -r etc should be methods | 05:57 | ||
arcady | the -r -w stuff is mentioned in A03 but not S03 | 06:06 | |
Darren_Duncan | it looks wrong to me ... I never liked it in Perl 5 either | ||
something that "should" not be in Perl 6 | |||
arcady | yeah.. there has to be some better way to do it | 06:07 | |
Darren_Duncan | and since all file handles in Perl 6 are objects anyway, it should be trivial to make those into methods, and make that the standard way | ||
pdcawley | I think that was suggested and rejected in RFC days. | 06:08 | |
Darren_Duncan | A03 is old anyway, and written long before there was heavy thought about object stuff anyway ... it was probably a throwaway example in A03 | ||
pdcawley | Needs to be on paths, not filehandles. | ||
arcady | yeah, that's the problem | 06:09 | |
Darren_Duncan | whatever ... path objects ... objects all the same | ||
arcady | I'd rather not have it be a method of Str | ||
pdcawley | There's the fun with keeping the stat results hanging around as well. Should probably be multimethods, with shared state. | ||
Or state 'written back' to the string. | |||
Darren_Duncan | eg, it should be like "'/foo/bar/baz.txt'.file_exists'" | 06:10 | |
arcady | no, no it shouldn't | ||
pdcawley | It should be '/foo/bar/baz.txt'.as_path.file_exists (if you insist on methodology) and I don't. | 06:11 | |
arcady | that just goes against so much of OO | ||
why should a string know whether a file of its name exists? | |||
Darren_Duncan | or even how about "file_path_exists( 'foo.txt' ) | ||
QtPlatypus | pdcawley: Thats ugly | ||
Darren_Duncan | oh oh ... | ||
FilePath.exists( 'foo.txt' ); | 06:12 | ||
pdcawley | QtPlatypus: But correct, which is why the -x methods are better. | ||
FilePath.from_string('foo.txt').exists works too, but is again ugly. | |||
Darren_Duncan | my last example is that you just invoke a builtin module method taking the path as an argument | 06:13 | |
arcady | but the -x functions seem like a pain to parse | ||
coral | 'foo.txt'.-x | ||
pdcawley | arcady: So? | ||
Perl is about making it easy for the user, not the implementor. | |||
Darren_Duncan | I would think that if something like filesystems is going to have special operators in the standard language, then network connections should too | 06:14 | |
pdcawley | Argue it with Larry. Personally, I think he's made a good call on this. | 06:15 | |
Darren_Duncan | filesystem stuff just looks so much like the domain of a module rather than the core | ||
pdcawley | Who says it's not a module? | ||
wilx | Hm, well, isn't it inheritance from shell? | ||
pdcawley | Just autoloaded. | ||
wilx | -x stuff. | ||
coral | need not be | ||
pdcawley | Right, I need breakfast. | ||
Darren_Duncan | I mean the syntax doesn't look module-like | ||
arcady | well... the -x stuff in the shell is really options to the [ command | 06:16 | |
pdcawley | Why not? They're prefix operators. | ||
arcady | but is -f an operator, or negative f? | ||
Darren_Duncan | maybe I need to see this in a wider context and/or see the explanation before I can understand why -x etc is being kept | 06:17 | |
QtPlatypus | Since plain f is a barestring and there banned in perl6, and negative f makes little sence its an operator | 06:19 | |
arcady | ah, but what if I have a function called f? | ||
coral | does it share a prototype with -f? | 06:20 | |
Darren_Duncan | it could | 06:21 | |
unless there is something special in the -f prototype that a normal user can't use with their own functions | |||
that said, this seems to be the same situation as naming your own function 'map' or 'sort' etc | 06:22 | ||
it seems to me, then, that the '-' part is un-necessary | |||
except there is an operator named 'x' that then looks like '-x' ... except perhaps for argument count | 06:23 | ||
wilx | Again. It is what shell has that is why it is kept... | ||
arcady | why not just ask on p6l? that's what it's for, after all | 06:24 | |
Darren_Duncan | good idea | ||
Darren_Duncan finished looking at docs/talks/YAPC.spork and didn't find anything significant wrong | 06:42 | ||
svnbot6 | r5050, Stevan++ | removing the meta-model, dont worry I will put it right back | ||
Darren_Duncan | good night all | 06:44 | |
06:46
SM_ax_ is now known as SM_ax
|
|||
svnbot6 | r5051, Stevan++ | putting the metamodel back, I reformatted some stuff, as well as fixed some other stuff; I am too sleepy to do any real work though | 06:47 | |
spinclad done backscrolling (yow!) | 07:01 | ||
only things wrong I saw with YAPC.spork were the damn XXX's, but I don't have suggestions for them at this hour. | 07:02 | ||
autrijus | rehi lambdacamels! | 09:47 | |
autrijus resumes the exciting work of slidemaking | 09:50 | ||
clkao giggles at autrijus | 09:57 | ||
coral | autrijus: i am back in the present! | ||
autrijus | yo clkao, coral | 09:59 | |
svnbot6 | r5052, autrijus++ | * resuming work on slides. | 10:39 | |
QtPlatypus | Do will we get a write up of Mr Wall's speach? | 10:44 | |
coral | 11:21 < autrijus> I have an older copy: perlcabal.org/~autrijus/larry-commu...ilding.ppt | ||
autrijus | coral: you have some tuit on your hands? | 10:45 | |
coral: I can use help finding punny (or at least somewhat on topic) images for each slides | |||
coral | i am directly pre-sleep for work in about 5 hours :( | 10:48 | |
otherwise i would love to | |||
autrijus | ah ok. no worries | 10:49 | |
yay, 3 slides left | 10:53 | ||
it's all pictures from here on | 10:54 | ||
broquaint | Are all the talks begin recorded this year? | 10:56 | |
autrijus | no idea | ||
10:56
scook0_ is now known as scook0
|
|||
broquaint | Darn. Well I can only wait and hope I guess. | 10:58 | |
svnbot6 | r5053, autrijus++ | * 3 slides left! | 11:15 | |
r5054, autrijus++ | * earthy's reviews. | |||
r5055, masak++ | * Fixed minor gr error in docs/talks/YAPC.spork: | 11:36 | ||
r5055, masak++ | s/closures leaks/closures leak/ | |||
masak hopes he's right | 11:37 | ||
autrijus: did you know that you say in two consecutive slides that pugs has 7000 tests? (Expectation management, Test first) | 11:38 | ||
maybe omit it in the second one? | 11:40 | ||
autrijus | thanks! | ||
masak | np | ||
svnbot6 | r5056, autrijus++ | * XXXs eliminated -- entering type annotation phase | 11:47 | |
masak | :) | 11:49 | |
autrijus | :) | ||
svnbot6 | r5057, autrijus++ | * annotation phase passes. entering optimization phase... | 12:18 | |
masak | "optimization"? i clearly have less fun than autrijus when preparing my talks | 12:29 | |
QtPlatypus wonders how you profile a talk. | 12:32 | ||
autrijus | by asking the audience | 12:34 | |
you are all on the big screen now! | 12:35 | ||
(the vga line worked) | |||
...and I'll finish my slides now | |||
autrijus promptly unplug the vga line | 12:36 | ||
stevan! | |||
stevan: lib/Perl6/Runtime/* okay with you? | 12:37 | ||
I'm not sure where to put the tests tho | |||
stevan | autrijus: you can put it anywhere you like | 12:38 | |
autrijus | stevan: okay, I'll do that in the intermission | 12:39 | |
stevan | ok | ||
are you finishing the talk right now? | |||
autrijus | yeah | 12:40 | |
or rather the first half | |||
stevan | :) | ||
of course, you have the whole first have to write the second half | |||
nothingmuch | seōæ½xF1ors! my printer is crewing up | 12:41 | |
anybody who can print this: nothingmuch.woobling.org/gpg. | 12:42 | ||
double sides | |||
will get a free cookie | |||
(seriously) | |||
Boogie | nothinhmuch: I can print it, but how can I get my cookie? ;) | ||
nothingmuch | someone whose at the conference | 12:43 | |
Boogie | :) | ||
nothingmuch | print it = print it in 15 copies | ||
darn | 12:52 | ||
autrijus | hm, I need to conjure up some graphviz foo | ||
autrijus tries | |||
nothingmuch | autrijus: i'll be late for your talk | ||
i can't get this crap to print | |||
autrijus | that's fine, no worries | ||
jhorwitz | autrijus: you look surprisingly awake for someone without slides a day ago. ;-) | 12:55 | |
svnbot6 | r5058, autrijus++ | * local optimization phase done... entering whole-program analysis | ||
autrijus | jhorwitz: it's called "abandon" | ||
jhorwitz | excellent! now i'm *really* looking forward to your talk. :) | ||
nothingmuch | abandon? no slides? | 12:56 | |
autrijus | nothingmuch: no, as in "with abandon" | ||
nothingmuch | ah | ||
jhorwitz | nothingmuch: are you at YAPC? | ||
nothingmuch | yes | 12:57 | |
well, not yet | |||
jhorwitz needs to meet more lambdacamels in person | 12:58 | ||
nothingmuch | are you at the conf? | ||
jhorwitz | yes | 13:00 | |
sitting in the ballroom waiting for autrijus' talk | |||
autrijus | strangely I've finished the graphviz foo in time | 13:01 | |
feather.perl6.nl/~autrijus/viz.png | |||
uploaded | |||
masak | autrijus++ # you did that in 8 minutes? | 13:03 | |
autrijus | yeah, people under pressure etc | ||
masak | :) | ||
masak has to get more of that pressure stuff | |||
jhorwitz | autrijus codes to relax before a talk. | 13:05 | |
autrijus | alright let me get the vga line back | ||
svnbot6 | r5059, iblech++ | * YAPC.spork -- Minor typo fixes etc. | ||
r5059, iblech++ | * docs/talks/README -- Added YAPC.spork | |||
r5059, iblech++ | * Usual svn props | |||
autrijus | you will be all on the screen -- brace yourselves | ||
ooh iblech checked in more fix | 13:06 | ||
jhorwitz | hello YAPC | ||
autrijus remakes the slides | |||
masak | hi Toronto | ||
autrijus | maybe I should've checked the diff first hm. | ||
nothingmuch | yeah! printing is working! laundry is doing! | 13:07 | |
masak | nothingmuch++ | ||
pjcj wonders for how long autrijus' slides will remain valid | |||
masak thinks that depends on whether autrijus will keep updating pugs during the talk | 13:08 | ||
nothingmuch | yeah! printing is working! laundry is doing! | ||
masak | again? :) | 13:09 | |
nothingmuch | anyway, /me must be off | 13:10 | |
see everyone at the conf | 13:11 | ||
i printed a few extra forms | |||
and maybe we can print some there | |||
so adhoc entries can be made by hand | |||
coke__ wonders if autrijus knows how dangerous it is to leave an IRC window open during the conference! | 13:48 | ||
stevan | coke__: I am sure he does | 13:49 | |
Limbic_Region | is said window being probjected where others can see it? | 13:51 | |
stevan | nope | ||
he has full screen Spork | |||
masak | coke: what would the dangers be? | 13:52 | |
masak is curious | 13:53 | ||
stevan | masak: I think he is thinking his IRC window will pop up if you mention his name | ||
coke__ | masak: having someone evil like me post a huge message to the chat when the window is showing. | ||
Khisanth | he says something and then a commit comes up making what he just said untrue? :P | ||
coke__ | say, generated with `banner`. =-) | ||
stevan | coke__: no IRC in the presentation this time | 13:55 | |
maybe after the break | |||
coke__ | right, but the window has been visible once or twice. I'm waiting to pounce. =-) | ||
(not that I have anything ready. =-) | |||
masak | it gives a certain sense of power to know that one can affect a projection screen in Toronto from here... | 13:56 | |
stevan | coke__: are you here? | 13:59 | |
coke__ | yes. I'm on the wall. larry's in front. there's a table behind him. I'm behind that table. | 14:00 | |
~~~ | |||
stevan | ah | ||
I am on the other side, all the way in the back | |||
near the coffee :) | |||
stevan was up too late working on the metamodel junk | |||
coke__ | oooh. get me a cuppajoe, willya? | ||
Khisanth | hrm thought you were sitting on larry :) | 14:01 | |
stevan | coke__: sure, catch !! | ||
coke__ | yeowch! | ||
stevan | we should have a #perl6 meeting during the break | ||
pdcawley_ is wishing he was there. | |||
coke__ taunts pdc! | |||
stevan | morning pdcawley | 14:02 | |
pdcawley_ | But then, aren't we all (well, those of us who aren't there). | ||
Morning stevan. Still haven't looked at the metamodel stuff, been out doing sunshine and seabreeze related stuff. | |||
stevan | pdcawley: sounds like a better plan anyway :) | ||
I am trying to clean stuff up right now actually | |||
pdcawley_ | Yeah, my bit of the big blue room is rather gorgeous right now. Very blue. | 14:03 | |
stevan | autrijus has threatened to show/talk about it in the second half | ||
pdcawley: very nice | |||
pdcawley_ | Did he finish the second half? | ||
masak | i think so | ||
he removed all the XXXs | |||
stevan | Toronto looked a little grey this morning, but it was very nice/blue yesterday | ||
pdcawley: no, he is still on the first part | 14:04 | ||
masak | stevan: i think pdcawley meant did he finish writing it :) | 14:05 | |
pdcawley_ | bingo masak | ||
stevan | pdcawley: he still has plenty of time :) | 14:06 | |
I think he is writing while he is presenting this part :) | |||
if he can program and shower, and program and sleep | |||
why not write slides while giving a talk | |||
coke__ | he just needs 2 more hands. | ||
masak | you don't need hands to talk :) | 14:07 | |
pdcawley_ still remembers with pleasure the lightning cpan rap... | |||
coke__ | he's stuck holding hte mic, though. | ||
masak | ah | ||
jhorwitz | maybe he's typing with his toes under the table. | ||
theothermike | he has a brain -> computer interface im sure | 14:08 | |
pdcawley_ | Or do I mean 'these are a few of my favourite cpans', done bilingually. | ||
masak | pdcawley_: that sounds wonderful | 14:09 | |
pdcawley_ | Was at YAPC::NA 2? years ago. Or was it OSCON the same year. Ask autrijus for an encore :) | ||
He might need material. | |||
theothermike | bring back the hangmanbot! | 14:22 | |
masak | theothermike: is it broken? where is it? | 14:25 | |
coke__ | uh, how did my name get on the author list? | 14:33 | |
pdcawley_ | shiny magic pixies put it there? | 14:37 | |
Okay, so it's not likely, but wouldn't it be great if that were true? | 14:38 | ||
coke__ | I posit that autrijus is made entirely of shiny magic pixies. | 14:39 | |
pdcawley_ | Hmm... the shiny magic pixie hypothesis eh? Interesting. | ||
pdcawley_ strokes beard | |||
coke__ | HEY! | ||
pdcawley_ wonders if the united school boards of Kansas could teach that instead of Inelegant Design. | 14:40 | ||
svnbot6 | r5060, Stevan++ | MetaModel update: we now have proper Method Objects (subs wrapped in objects) | 14:47 | |
autrijus | stevan++ # invalidating one of my slides | 14:48 | |
coke__ | autrijus: so did I just get the "pain the in the butt" listing in the AUTHOR fiel? =-) | 14:51 | |
HI EVERYBODY! | |||
autrijus | coke__: riiight :) | ||
coke__ | We're on teh b ig screen! =-) | ||
autrijus | (you guys are on big screen now) | ||
coke__ | everybody in the conference WAVE! | ||
TORONTO!!!!! LET'S ROOOOOCK! | 14:52 | ||
autrijus | ...not really having an effect | ||
coke__ | wow. nothing. these guys are lame. =-) | ||
autrijus | heh | ||
autrijus proceeds to wait for people to slowly return | |||
autrijus decides to eat some cold breakfast | |||
coke__ | ah. larry's in the way. | ||
skugg | if someone says where the camera is, i'll wave... | ||
Khisanth | time for some ascii art? :) | 14:53 | |
coke__ | So, autrijus , can you invoke partcl from inside pugs yet? | 14:54 | |
autrijus | eval_pir sure | 14:55 | |
I tested it in leo's | |||
but there's no eval(:lang<tcl>) | |||
coke__ | ... you're going to make me write that, aren't you. =-) | ||
Limbic_Region takes off his monastic robes and walks around strutting his stuff | 14:56 | ||
Limbic_Region dives for cover as people start hurling sharp pointy objects | |||
autrijus | so are we or not going to start? | ||
coke__ wonders if he has to learn enough haskell to write that, or if he can implement it in perl6. | |||
Limbic_Region | autrijus - while you are waiting, have you figured out how to address the slowness of prelude? | 14:57 | |
coke__ | he's no longer waiting | ||
Limbic_Region | ah - sorry | 14:58 | |
coke__ | *sigh*. Can I have a commit bit? | ||
(when you stop talking, of course>) | |||
) | |||
Limbic_Region | sure - give me an email address and a bit of time to remember how | 14:59 | |
nothingmuch | morning | 15:03 | |
Limbic_Region | salutations | ||
nothingmuch | Limbic_Region: you're not at YAPC, right? | ||
Limbic_Region | correct nothingmuch | 15:04 | |
nothingmuch | shame | ||
Limbic_Region | I am sitting at my desk waiting for coke__ to provide me an email address so I can give him a commit bit | ||
nothingmuch | ah | ||
Limbic_Region | nothingmuch - if it had been 2 weeks from now I would have been there | ||
as it stands now, my wife would not be allowed to re-enter the country | 15:05 | ||
nothingmuch | demerphq is in the same boat | ||
coke__ points lr at the private message he sent. | |||
Limbic_Region | invite sent coke__ welcome aboard | 15:06 | |
yeah - this client is rather difficult to get used to - but beggars can't be choosers | |||
nothingmuch | seen luqui | 15:09 | |
jabbot | nothingmuch: luqui was seen 12 hours 38 minutes 47 seconds ago | ||
coke__ | ok. I'm "coke". | 15:11 | |
(now to grab a copy of the source) | |||
nothingmuch | svk! | 15:14 | |
nothingmuch 's laptop crashed | |||
now i'm an svk advocate | |||
;-) | |||
clkao eyes nothingmuch | 15:15 | ||
clkao digs out the log that nothingmuch saying what's the point using svk | |||
lumi | Hi nuffin | ||
nothingmuch | hola lumi | ||
i bought a 17" | |||
lumi | Yum yum | ||
Still don't have a backpack for it | 15:16 | ||
nnunley | clkao: The regimen of brainwashing and aversion therapy has worked (for nothingmuch) | ||
nothingmuch | lumi: make sure it fits | 15:17 | |
lumi | Of course | 15:18 | |
nothingmuch | i have a bag which was advertized as fitting, when I bought it | ||
lumi | Ahhhh, oh dear | ||
nothingmuch | but it fits in a way that I don't consider fitting | ||
(pun not intended) | |||
lumi | I'll be extra careful then, thanks | ||
Limbic_Region | ?eval my %ball = map { $_ => 1; } 1..12; %ball{12} = 1.5; my $first = %ball{12} <=> %ball{0}; %ball{12} = .5; my $second = %ball{12} <=> %ball{0}; ($first, $second) | ||
evalbot6 | (\1, \1) | ||
lumi | Maybe I'll get a sleeve and just a huge backpack then | ||
Limbic_Region | spaceship operator is b0rk | ||
?eval 1 <=> 1.5 | 15:19 | ||
evalbot6 | -1 | ||
Limbic_Region | but only sometimes | ||
?eval my %ball = map { $_ => 1; } 1..12; [+] %ball{1..4} <=> [+] %ball{5..8} | 15:21 | ||
evalbot6 | 0 | ||
coke__ | ?eval any(1,2,3) | ||
evalbot6 | 1 | ||
Limbic_Region | ?eval my %ball = map { $_ => 1; } 1..12; ([+] %ball{1..4}) <=> ([+] %ball{5..8}) | ||
evalbot6 | Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode) | ||
coke__ has pugs checked out. | 15:22 | ||
Limbic_Region | so both are parse errors - one dies and the other doesn't | ||
how should I write tests? | |||
coke__ | there. committed something. =-) | 15:23 | |
Limbic_Region | ?eval my %ball = map { $_ => 1; } 1..12; %ball{12} = 1.5; my $first = %ball{12} <=> %ball{0}; %ball{12} = 0.5; my $second = %ball{12} <=> %ball{0}; ($first, $second) | ||
evalbot6 | (\1, \1) | ||
svnbot6 | r5061, coke++ | Case correction | 15:25 | |
Limbic_Region | perlbot nopaste | 15:27 | |
perlbot | Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel> | ||
Limbic_Region | what's the correct way to test parsefails? | 15:35 | |
svnbot6 | r5062, Stevan++ | adding ::Class, ::Instance and ::Role methods | 15:36 | |
nothingmuch | comment them out | ||
fail("PARSEFAIL",:todo<parsefail>); | |||
pdcawley | Limbic: I've done 'eval "..."' for some stuff that currently breaks. | ||
Limbic_Region | eval_is | ||
works for what I am doing | |||
nothingmuch | then it's not a hard parsefail | 15:37 | |
stevan | Limbic_Region: eval_* is not working correctly though ( i think ) | ||
pdcawley notes that the more he sees :head<tail> syntax, the more he likes it. | |||
stevan | because it cannot handle scope | ||
nothingmuch | in that case evaling is much better | ||
Limbic_Region | stevan - right | 15:38 | |
let me try nothingmuch's fail | |||
pdcawley | %CALLER::.eval_in_scope(...) | ||
Oh, that doesn't exist? Dang. | |||
Or &?CALLER_CONTINUATION.eval_in_scope # probably the better choice | |||
coke__ | easiest way to get GHC on OS X? | ||
pdcawley | Get a feather account. | ||
nothingmuch | coke__: www.haskell.org/ghc | ||
pdcawley | And use tramp. | ||
stevan | coke__: there is a DMG on haskell.org I think | 15:39 | |
pdcawley | Working for Tiger now? Cool. | ||
nothingmuch | yup | ||
just gcc_select 3.3 | |||
pdcawley | No it bloody doesn't. Well, it didn't here this morning. | ||
pasteling | "Limbic_Region" at 129.33.119.12 pasted "Can someone with tuits sanity check and then commit this as t/pugsbugs/parsing_spaceship.t" (21 lines, 390B) at sial.org/pbot/11401 | 15:41 | |
pdcawley | (this is using hte darwinports thing). | ||
Limbic_Region | there are the 2 parse failures with the spaceship operator if someone has tuits | ||
pdcawley | utils/PrimPacked.lhs:257:0: | ||
Warning: foreign declaration uses deprecated non-standard syntax | |||
is what it throws at me. | |||
Limbic_Region | 1 results in parsing but gives incorrect results | ||
pdcawley | Anyhoo. Must nip out for a few minutes. | ||
coke__ | it only claims to work on 10.3 | ||
Limbic_Region | the other is an outright parse fail | ||
coke__ | (gah. also takes a day to download. =-) I'll get it later. =-) | 15:48 | |
svnbot6 | r5063, Stevan++ | whoops forgot the load test | ||
coke__ | I was able to grab the latest OS X version for panther, and at least "ghc --help" works. | 16:03 | |
stevan_ | 3 minutes left, can he finish :P | 16:13 | |
coral | who? | ||
stevan_ | autrijus | ||
coral | neat | 16:14 | |
stevan_ | he is talking really fast now | ||
coral cheers autrijus | |||
stevan_ | trying to get through all the slides | ||
coral | SMILEY FACE AUTRIJUS, HE'S OUR MAN | ||
etc | |||
Darren_Duncan | oh, its still on now! | 16:19 | |
HELLO TORONTO! | |||
coke__ | "hi" | 16:20 | |
pdcawley | TORONTO! TORONTO! I LOVE YA TORONTO! YOU'RE ONLY A DAY AWAY! | 16:28 | |
Um... | |||
Darren_Duncan | I think the talk may be over now? | 16:29 | |
it seems when I reviewed the talk yesterday, there was one sanity thing I missed: presentation_date: June 9th, 2005 | 16:33 | ||
pdcawley | oops | ||
Darren_Duncan | another oops: * 6.2.7: To be released today! | 16:39 | |
actually ... forget those last two oops ... I was reading the wrong file today ... but not last night | 16:41 | ||
they were just so similar to each other I didn't catch on right away | |||
last night I still reviewed the correct one | |||
svnbot6 | r5064, autrijus++ | * the final set of slides that went live. | 17:41 | |
dudley | I just got to the part in A Gentle Introduction to Haskell where they explain that the type system has a type system for typing types and my head exploded and I think most of my brain leaked out. | 17:42 | |
coke__ hides | |||
autrijus | dudley: READTHEM has a link | 17:44 | |
Haskell Tutorial for C Programmers - Eric Etheridge | 17:45 | ||
<www.haskell.org/~pairwise/intro/intro.html> | |||
which is much better | |||
even for us non-C programmers | |||
dudley | Ah, cool. Thanks! | 17:46 | |
Limbic_Region | autrijus - do you have any tuits ATM? | 17:47 | |
sial.org/pbot/11401 | 17:48 | ||
2 spaceship parse bugs | |||
autrijus | Limbic_Region: no, as a matter of fact I slept for 3hrs | ||
and I had to skip the boat cruise or the sessions | |||
I think skipping boat cruise is the obvious option | |||
Limbic_Region | oooh - sorry | ||
autrijus | Limbic_Region: please codify them as tests | ||
Limbic_Region | they are | 17:49 | |
that's what the link is | |||
just needs a commit | |||
stevan_ | mmmm, papers (www.iam.unibe.ch/~schaerli/research/index.htm) | ||
svnbot6 | r5065, geoffb++ | Add entry for lib/Perl6-Metamodel/ to hack.pod | 19:12 | |
r5066, Stevan++ | Perl6-MetaModel : MetaClasses now have built in pre and post order traversal visitor(ish) functions | |||
autrijus | Limbic_Region: I committed your test | ||
stevan__: you're mad | |||
coke__: (belated) welcome aboard! | 19:13 | ||
coke__ | muahahah. | 19:16 | |
and the ghc seems to work. oooh, I have power now, I should make test pugs. | 19:17 | ||
svnbot6 | r5067, autrijus++ | * spaceship parsing bug, thanks to Limbic_Region | 19:19 | |
Limbic_Region | thanks autrijus | 19:20 | |
autrijus | =) | ||
coke__ wonders if autrijus will reject my patch. | 19:21 | ||
autrijus | I never reject patche | ||
s | |||
I just obliterate revisions ;) | 19:22 | ||
(which I'm not going to do) | |||
Odin-LAP | You never accept patches either, then? | ||
autrijus | indeed. | 19:23 | |
Odin-LAP | They just sort of slide in without you noticing... :D | ||
autrijus | I actually go thru all revsions :) | ||
Odin-LAP | Did you invent a way to compress time, or something? | 19:24 | |
Limbic_Region | so I had intended to ask earlier - have you worked out a way forward WRT the Prelude slowness? | ||
autrijus | Limbic_Region: yes | ||
Limbic_Region: it's precompilation during "make" | |||
Limbic_Region | has it been journaled yet? | ||
autrijus | gaal mumbled something about military service and not up to do it | 19:25 | |
no, but I want to get it in before release | |||
the 10x slowdown in trunk is not acceptable | |||
Limbic_Region | autrijus - if you didn't get a chance to read the journal gaal linked to - I will summarize | ||
he intends to refuse to go | 19:26 | ||
autrijus | oh! | ||
will that get him in trouble? | |||
url? | |||
Limbic_Region | which will result in jail time and/or fines | ||
will search for it | |||
autrijus | oh wow. | ||
wolverian | which country does he live in? | ||
Odin-LAP | Israel? | 19:27 | |
wolverian | .il? okay. | ||
right. | |||
coke__ | wow. compiling pugs is slooow | ||
Limbic_Region | www.livejournal.com/users/gaal/159292.html | 19:28 | |
autrijus | coke__: "make unoptimised" etc | ||
(but if you're making test and am in no rush, go for the optimised build) | |||
Limbic_Region | that is the journal link he referred to | ||
autrijus | k | ||
coke__ | autrijus: now that I havepower, I can burn as much cpu as I want! | 19:29 | |
autrijus | =) | ||
Limbic_Region | the next thing I am going to try and figure out (now that I have a Pugs I can at least play with) is why Pugs refuses to build | ||
autrijus | on win32? | ||
Limbic_Region | yep | ||
autrijus | oh wow. what's the error msg? | 19:30 | |
Limbic_Region | been happening since theorbtwo's patch | ||
autrijus | the fromVal patch? | ||
Limbic_Region thinks he is the only 1 | |||
autrijus | I missed that | ||
did you nopaste a errlog? | |||
Limbic_Region | yep | ||
will go back and find it | |||
autrijus | sorry for your trouble | ||
I can boot to win32 to take a look | |||
transparent containers and prelude preloading and fix regression | 19:31 | ||
Limbic_Region | as I said, I think it is just me | ||
since Jonathan put out a binary build today that works | |||
still looking for the nopaste | 19:32 | ||
autrijus | is the three things I'd like to happen before release | ||
'k | |||
Limbic_Region | sial.org/pbot/11331 | ||
oops - not that 1 | 19:33 | ||
although | |||
443 [21:07] <integral> hmm, is src/Pugs/Compile/PIR/Prelude.hs causing build problems for others too? | |||
leads me to believe I am not the only 1 | |||
PerlJam | make | 19:34 | |
oops | |||
Limbic_Region | found it | ||
sial.org/pbot/11330 | |||
that's the error I get when compiling Pugs on Win32 | |||
autrijus | gaal: I've just read your journal. doing something that makes you not hate yourself is commendable. best wishes etc. | 19:35 | |
coke__ | ghc-6.4: | 19:36 | |
src/syck/syck.o: unknown symbol `_printf$LDBLStub' | |||
final link ... ghc-6.4: linking extra libraries/objects failed | |||
(from make test on os x) | |||
autrijus | coke__: are you running with gcc4? | ||
coke__ | apparently | ||
autrijus | coke__: did you gcc_select 3.3? | ||
coke__ | no =-) | 19:37 | |
I will try this. | |||
autrijus | coke__: can you look at README and hack Makefile.PL to print out a deadly warning so nobody gets bite by this again? | ||
until 6.4.1's release (which is "imminent") we'll have to deal with this crap on osx | |||
so maybe probe for darwin, gcc4, ghc 6.4 | |||
and then print out a deadly warning and die | 19:38 | ||
because you need "make clean" now :-/ | |||
sorry for that | |||
coke__ | woof. well, my own fault for not reading the docs. | ||
autrijus | well, we don't really expect people to :) | ||
so maybe just print that warning neverthess if it's in OSX | |||
if you can test for tiger or higher, even better | |||
anyway, commits welcome to Makefile.PL | |||
coke__ | roger roger. checking now | 19:39 | |
autrijus | you++ | ||
Limbic_Region: okay | 19:40 | ||
Limbic_Region | ? | ||
autrijus | Limbic_Region: can you run gen_prelude? | ||
Limbic_Region | not ATM | 19:41 | |
autrijus | ok, that's fine, I'll now boot to win32 to confirm the fix | ||
bbiab! | |||
Limbic_Region can't believe that this is affecting ALL Win32 users else the screams would have been much louder | |||
fwiw - "gen_prelude: user error (Pattern match failure in do expression at src/gen_prelude.hs:23:4-15)" is what I get when I run C:\Cygwin\Pugs\lib\CORE\pugs\gen_prelude.exe from Jonathan's binary distribution | 19:43 | ||
coke__ | note: backtracking past the colon is not advised and may result in a dump | ||
autrijus | "may"? | 19:45 | |
you're so kind. | |||
Limbic_Region | also fwiw - all the Win32 smoke tests are outdated too | ||
autrijus | roger on all accounts | 19:46 | |
Limbic_Region | autrijus - did you see my gen_prelude output? | ||
autrijus | yup I'm in win32 now | ||
Limbic_Region | ok | ||
that isn't from the machine experiencing the problem btw - so I don't know how relavent it is | |||
autrijus | Limbic_Region: ok. so you can't retry/duplicate there? | ||
Limbic_Region | no - no GHC - Jonathan's binary build | 19:47 | |
obviously he isn't having the problem though - www.jwcs.net/~jonathan/perl6/ | 19:48 | ||
autrijus | oh. bummer. cuz I think I know the problem | ||
coke__ | ... gccversion is lying! | ||
autrijus | but I can't dup it here | ||
coke__: !! | |||
yow. | |||
Limbic_Region | ok - it is now 1548 localtime for you autrijus - right? | ||
autrijus | yuppers | 19:49 | |
coke__ | %Config I did not run gcc_select. but Config says gccversion is 3.3 | ||
this will be ... problematic. | |||
Limbic_Region | good - I will be able to duplicate 1900ish | ||
autrijus | coke__: I think you need to run gcc_select. | ||
coke__ | right, but I'm trying to get it to die on my config first. =-) | ||
autrijus | indeed | ||
Limbic_Region | maybe sooner depending on how long it takes to get my vehicle's emissions tested | 19:50 | |
beyond running gen_prelude - any preliminary steps I should take before pinging you autrijus? | |||
autrijus | I'm still thinking about it | 19:51 | |
Limbic_Region | good news is my code now "runs" - though due to the parse bugs it gives incorrect results | 19:52 | |
spaceship operator on hashes results in 1 regardless of what the values actually are | |||
autrijus | k will fix. | 19:53 | |
Limbic_Region | the second parse bug (parse fail actually) with parens isn't that important to me as the one I just described | 19:54 | |
autrijus | gotcha | ||
Limbic_Region | I accidently discovered the parens bug when I thought I would help the parser out by giving it context | 19:55 | |
it went from bad to worse ;-) | |||
coke__ | how does the Config in Makefile.PL determine the gcc version? | ||
(does it use the version that perl was compiled with rather than the current version in the env?) | 19:56 | ||
Limbic_Region | assuming perl was compiled with gcc ;-) | ||
autrijus | coke__: we don't yet probe for that | ||
coke__: I suggest if you're on darcwin, run gcc_select with `` | |||
but maybe there's other ways | 19:57 | ||
I'm fine with an unconditional warning too :) but actual selective death is preferred | |||
coke__ | I'll have a patch shortly for you to vet. | ||
autrijus | please just commit. | ||
I don't vet patches, sir | |||
coke__ | I just hate to break the build on my first patch, you know? =-) | 19:58 | |
autrijus | breaking build is fine on this culture :) | ||
other people will fix :) | |||
(eg. me) | |||
and I'll even thank you for it. fancy that :) | |||
Limbic_Region: my attempt of fix is in | 20:02 | ||
svnbot6 | r5068, autrijus++ | * Hopefully saner gen_prelude.hs that may make Limbic_Region happy -- untested! | ||
autrijus | it's untested, and may not be the actual bug you're running into -- let me know if it still fails | ||
but it fixes the thing that theorbtwo mentioned at top of the file | 20:03 | ||
which was very long lines | |||
now booting back to freebsd... | |||
Limbic_Region | autrijus - will let you know | 20:04 | |
was thinking you were going to fix the first spaceship operator bug | |||
Limbic_Region takes what he can get and is happy about it | |||
coke__ | autrijus: done, committed. | 20:05 | |
autrijus | coke++ | 20:06 | |
eh. I've just rebooted :) | |||
looking into spaceship now | |||
wilx | Do you know that caffeine addiction is bad? :) | ||
autrijus | huh? :) | 20:07 | |
wilx | I read article about it in National Geographic. | ||
svnbot6 | r5069, coke++ | Enforce the "don't use gcc 4.0 note on OS X 10.4" note in the README. | ||
Odin-LAP | wilx: "Reeeally?" | ||
autrijus | coke++ # really, that one has caught ~5 people unprepared | ||
wilx | ... | 20:08 | |
wilx is embarrassed... | |||
I haven't noticed coke__. | |||
coke__ | someone make sure it doesn't bork anyone else. I got a conversion from uname - r to OSX 10.4 inn there, so I'm ONLY checking tiger/gcc 4.0 | ||
wilx | I thought it was CocaCola++ :D | 20:09 | |
Omg. | |||
coke__ | wilx: I just got a bit a few minutes ago. | ||
yup. compiled with 3.3 (and MUCH faster with unoptimzied. =-) | 20:11 | ||
wilx | I just shouldn't jump into conversation before I gather some context... | ||
coke__ | I dislike that the test harness isn't showing me the test # as it runs. | ||
luqui | coke__, compiled with what 3.3? | 20:12 | |
coke__ | :gcc version 3.3 20030304 (Apple Computer, Inc. build 1809) | ||
luqui | ahh. you're referring to parrot? | ||
coke__ | ... no, pugs. | ||
luqui | um | ||
svnbot6 | r5070, Stevan++ | more metamodel refactoring, and removing the PIL stuff | ||
coke__ | yes? | ||
luqui | don't you need ghc to compile pugs? | 20:13 | |
and isn't there no dependency whatsoever on gcc? | |||
coke__ | not when you can grab the DMG, no. | ||
apparently not, luqui. | |||
autrijus | luqui: it turns out not much people compile ghcs themselves :) | ||
you can do w/o gcc if you make unoptimised without C libs | |||
but because we need PCRE | |||
we do depend on GCC | |||
luqui | ahh | ||
coke__ | ah. so building unoptimized doesn't test gcc? hang on. | 20:14 | |
autrijus | coke__: eh it does, because of syck and pcre | ||
so that's fine | |||
Limbic_Region: got the bug, it's a whitespace thing | 20:20 | ||
svnbot6 | r5071, Stevan++ | adding in basic container types | ||
autrijus looks at stevan in awe | 20:21 | ||
coke__ | :? | ||
autrijus | oh. just the scalar. | ||
had me scared for a bit :) | 20:22 | ||
nothingmuch | hola | ||
autrijus | yo nothingmuch | ||
nothingmuch | i'm an svk user now ;-) | ||
autrijus | nothingmuch: cool! | ||
luqui would really like the proper class resolution stuff | |||
nothingmuch | want to join us in our hackathon? | ||
luqui | i.e. PIL instead of Perl::Compiler::PIL::PIL | ||
autrijus | nothingmuch: where when who what eh? | ||
nothingmuch | stevan_ & luqui's room | 20:23 | |
autrijus | luqui: it's in Eval.Var for package name resolution | ||
clkao giggles | |||
autrijus | toPackage | ||
clkao | try to make one directory in pugs contains 2000 files | ||
autrijus | you can take a look if you want, but I won't get tuit for it this release | ||
clkao | svk sucks | ||
nothingmuch | i can try | ||
clkao | but hopefully i can fix that tonight | 20:24 | |
autrijus | nothingmuch: don't try that | ||
nothingmuch | why not? | ||
autrijus | if you do don't commit :) | ||
nothingmuch | i'm an svk user, i don't need to check it into mainline ;-) | ||
autrijus | right! | 20:25 | |
nothingmuch++ # totally tuned in to the svk-fu | |||
20:25
nothingmuch is now known as nothingmuch_,
nothingmuch_ is now known as nothingmuch_[svk
|
|||
clkao | autrijus: how's yapc | 20:25 | |
nothingmuch_[svk | damn | ||
clkao | autrijus: did you talk about svk | ||
autrijus | clkao: very good, I did sneak in three sentences about svk | ||
in my talk | |||
clkao | just three! | ||
svnbot6 | r5072, nothingmuch++ | directory for pil on perl5 runtime | ||
clkao | you need to have svk as watermark of the slides on every page! | 20:26 | |
nothingmuch_[svk | clkao: no, my laptop crashed, and i realized that i needed distributed stuff | ||
or rather, that's not what made me switch to svk | |||
autrijus | clkao: see... if you write part of svk in perl6 and it can compile back to perl5, wouldn't that be cool? | ||
all your SVN/Perl bindings will still work without tying! | |||
(and GC won't be an issue) | |||
clkao | autrijus: do not tempt me! 3 svk bugs are discovered today | 20:27 | |
autrijus | clkao: oh wow. | ||
Limbic_Region | autrijus - thanks - will verify at home in a bit (hopefully Pugs builds ;-) | ||
autrijus | L~R: in case you read the backlog -- the spaceship test now passes | 20:30 | |
autrijus feels rather good now | |||
luqui | is there any way to rebless in pugs atm? | 20:31 | |
autrijus wonders who will be the helpful gnome to do changelog this time | |||
svnbot6 | r5073, autrijus++ | * Fix spaceship parsing bug reported by Limbic_Region. | ||
r5073, autrijus++ | It's actually something more sneaky -- the parens | |||
r5073, autrijus++ | expression is gobbling up the trailing space when | |||
r5073, autrijus++ | followed by a <named> hash subscription syntax, even | |||
r5073, autrijus++ | when it's a valid operator name like <=>. | |||
r5074, autrijus++ | * unTODO the parsing spaceship test. | |||
r5075, nothingmuch++ | adhere to itypeish interface | |||
autrijus | luqui: is rebless even allowed? | ||
luqui | well, in a way, using runtime 'does' | 20:32 | |
autrijus | oh. right. | ||
but not $class.bless | |||
luqui | probably not | ||
autrijus | at least it's not in s12 | ||
luqui | anyway, I'm thinking that won't do it | ||
I'm trying to move the PIL tree over to a new tree where most of the nodes are exactly the same | |||
but one or two of them are extended a little | |||
without rewriting all the node types... | 20:33 | ||
autrijus mumbles something about OO not suited for that | |||
(really) | |||
you have to recast the node types | |||
luqui: but, runtime "does" is a 6.2831 thing for me :) | |||
nothingmuch_[svk | autrijus: how do i make svk checkin without checking into openfoundry? | ||
luqui | well, they'll still do the PIL role | ||
autrijus | nothingmuch_[svk: you make a local branch | ||
luqui | autrijus, ahh | ||
20:34
nothingmuch_[svk is now known as nothingmuch
|
|||
autrijus | nothingmuch_[svk: svk cp //mirror/pugs //pugs | 20:34 | |
gaal | hi. | ||
autrijus | and then | ||
svk switch //pugs | |||
that's it | |||
hey gaal. you doing okay? | |||
gaal | yes: thanks. i was let off the hook again, but because of unfortunate circumstances | ||
geoffb | gaal, ? | 20:35 | |
gaal | my grandfather died tonight. | ||
autrijus | !. | ||
geoffb | oh man, SORRY to hear that! | ||
autrijus | ditto. | ||
gaal | thank you very much. | ||
luqui | :-( | ||
gaal | so i'm not going to jail this time... | 20:36 | |
geoffb | Well, at least that part is good | ||
But will it be coming up again soon? | 20:37 | ||
gaal | yeah. the joke is that time is on my side: | ||
who knows? maybe there'll be peace in this stupid area by the time i'm drafted. :/ | |||
mugwump takes gaal's temperature | 20:38 | ||
geoffb | .oO( sadly unlikely, that ) |
||
Does Israel have a maximum age at which you can be called? | |||
autrijus | ?eval rule foo {(a)a+}; "fooaabb" ~~ /<foo>/; $<foo>[0] | ||
evalbot6 | Error: Pattern match failure in do expression at src/Pugs/Prim/Match.hs:26:8-19 | ||
nothingmuch | geoffb: to the army? | ||
autrijus | bah. no parrot | 20:39 | |
geoffb | nothingmuch, yes. | ||
In the US I was off the hook at 25 I think. | |||
gaal | yes. it keeps shifting but by the current laws i just have to et deferrals for 13 more years | ||
geoffb | Few things felt as good as trashing that "selective service" card | ||
OUCH | |||
gaal | (this is reserve duty, i finished my compulsory duty years ago) | ||
geoffb | nod | 20:40 | |
gaal | i've had a long day, folks - the funeral was up north and i just came in - so i'm off to bed. just wanted to say i'm okay and still around | 20:41 | |
autrijus | gaal: you sleep well. take care! | ||
geoffb | ditto | ||
gaal | thanks very much, again. have fun people! | ||
putter | & gall | ||
luqui: have you looked at Eval.Val? | 20:43 | ||
svnbot6 | r5076, nothingmuch++ | r5078@syeeda: nothingmuch | 2005-06-28 16:37:57 -0400 | ||
r5076, nothingmuch++ | rename scalar implementation file | |||
autrijus | alright, I'm heading back to my room to crash after this talk | ||
will probably wake up around midnight and check back | |||
geoffb | have a good nap! | 20:44 | |
obra | sleep well | ||
autrijus | :) | ||
nothingmuch | autrijus: what about keysigning?\\ | 20:49 | |
wow, you switch to svk, and new commits give you double the karma | 20:50 | ||
svnbot6 | r5077, nothingmuch++ | r5080@syeeda: nothingmuch | 2005-06-28 16:49:37 -0400 | ||
r5077, nothingmuch++ | array container implementation | |||
autrijus | nothingmuch: you can do `svk push --verbatim` | 20:51 | |
nothingmuch | ah =) | ||
luqui | putter: yes, and I shortly stopped | 20:56 | |
putter | ah well. tnx. it sort of looks like it should already be working... perhaps i'll try again later. | 21:00 | |
autrijus | zzz & | 21:01 | |
putter | & | 21:02 | |
nothingmuch | autrijus: ping | 21:07 | |
geoffb | nothingmuch, he's trying to sleep, I think | 21:08 | |
svnbot6 | r5078, geoffb++ | Trying valiantly to keep hack.pod in sync with the pace of Pugs development; more lib/ changes in the source map | ||
nothingmuch | geoffb: we know it's not for real | ||
luqui | we need a Pad node in PIL again | ||
that or we need to associate a pad with a code | |||
actually I like the latter better | 21:09 | ||
oh, autrijus zzz | |||
integral | imho a Pad node in PIL would be rather bad. You're going to have to serialise the data at some point anyway to get it into a pbc | 21:12 | |
luqui | I'm not sure what those two things have to do with each other | 21:15 | |
as in "don't understand" not sure | |||
'splain | |||
integral | well a Pad maps variable names to values, so if you've got: my $s = BEGIN { Class.new }; you've got to store the object created at compile-time between compile and runtime | 21:20 | |
luqui | I don't understand how that has to do with a pad node | 21:21 | |
(and we have to store such objects anyway) | 21:22 | ||
autrijus | I trust luqui and integral are in each other's good hands | ||
so I'll really sleep and ignore the window that lights up :) | |||
autrijus waves & | |||
luqui | :-) gnight | ||
integral | I may be misunderstanding, but a Pad is a map from names to full objects | ||
luqui | just like a symbol table | ||
integral | In a normal compiler you're not storing values during runtime, you're just storing info such as which register you're using | ||
nothingmuch | autrijus: does array_storeVal need to autovivify containers, and autoextend? | 21:23 | |
autrijus | nothingmuch: autoextend yes, vivify is fetchelem's | ||
integral | But pugs is an interpreter and it uses perl5's pad model | ||
nothingmuch | hmm | ||
okay | |||
integral | so there's just one structure used during parsing, and when evaluating from the syntax tree | 21:24 | |
luqui | you're saying that a Pad node would require that we store environment information in the PIR tree | ||
I agree | |||
integral | yes, and drag in the whole of the runtime system | ||
And since the runtime looks at compile-time data structures, you have a big loop between the two | |||
And this is why AST.Internals takes hours to compile | 21:25 | ||
luqui | hmm | ||
anyway, I've decided against a Pad node, I think | |||
we still need a way for lexicals to find their lexical scope | 21:26 | ||
integral | anyways, the thing that I hate is: sub foobar { my $s; BEGIN { $s = 5 } } | ||
luqui: maybe you do need a "Pad", but not a Pad | |||
luqui | I think I understand what you mean | 21:27 | |
and I think that's what I meant all along | |||
I wasn't really intending to store any Perl6-level values in the node | |||
integral | :-) There's a bit in SICP on this | ||
luqui | the weird thing about perl 6 is: | 21:28 | |
$x and my $x if $x | |||
^v1 ^v2 ^v2 | |||
the latter $x is used before it is created | |||
integral | weird is an understatement there | ||
luqui | so I'm trying to figure out how to represent that | 21:29 | |
integral | it's neither let nor letrec :-( | ||
luqui | for the p5vm, I need to associate something with every perl6 level closure that stores this info | 21:30 | |
(because perl5 closures are more prominent than the perl6 equivalent) | |||
integral | ah, Ā§5.5.6 of SICP. chapter 4's metacircular evaluator is like old pugs' Eval.hs, and chapter 5's compiler is like pugs' PIL system | ||
luqui | SICP? | 21:31 | |
svnbot6 | r5079, Stevan++ | Perl6-MetaModel - parameter validation on the class constructors, so that nothingmuchs code will yell at him when he spells it wrong | ||
integral | "Structure and Interpretation of Computer Programs", mitpress.mit.edu/sicp/, a text on Scheme programming that covers implementing scheme in scheme ;-) | ||
luqui | ahhh | 21:32 | |
integral | luqui: if you've seen STG, maybe you want to extend closures like that to mark which variables you close over? | ||
luqui | STG? | ||
anyway, a plan like that is something like what I had in mind | |||
integral | "Spineless Tagless G-machine", the vm that GHC targets | 21:33 | |
luqui | ahh | ||
luqui is haskell-ignorant for the most part | |||
pdcawley | Has any thought been given to how we're going to do things like 'iterate over all the objects in memory'? | 21:34 | |
luqui | very little | 21:35 | |
you were talking about querying the gc | |||
i think that might be the lowest overhead solution | |||
(for the programs that never do it) | |||
pdcawley | ISTM that that's going to have to be handled by the garbage collector, which means we're going to have to expose some kind of Kernel/GC/Runtime object | ||
Exactly. | |||
integral | o_O Why do you need to do that? | ||
pdcawley | It's the sort of use that *should* be slow, but shouldn't be impossible. | ||
luqui | the problem is that we might not have that ability in every platform we target | ||
pdcawley | integral: Add a role to a class with instances, that role has state, how do you rejig the existing objects? | 21:36 | |
luqui | and without support from the runtime, it seems like a pretty hard task | ||
pdcawley | Hell, add an attribute to an existing class that has instances and you have to do the same thing. | ||
You can't have the class hold links to its instances because then you really confuse the GC. | 21:37 | ||
luqui is off to the YAPC minicruise | |||
pdcawley | Or you have to introduce weak links, which have to be cleaned up. | ||
luqui | come back soon pdcawley and we will talk more (if needed) | ||
integral | hmm, well dan wanted parrot to have notifications for that | ||
pdcawley | (not that that's impossible of course, just expensive all the time) | ||
luqui | have fun | ||
integral | Can't you implement your own by having a list of watches on each class? | ||
oops, didn't read all of what you said | 21:38 | ||
pdcawley | integral: Exactly, but the notification's only half the battle, you still need to find all the instances in the class, and that means grepping through the live set. | ||
integral | you can't upgrade them on demand? | ||
pdcawley | Version the objects and fix 'em as you use them? | ||
integral | yep. | ||
pdcawley | That means a check every time you use an object. | 21:39 | |
Even if it has been updated. | |||
integral | hmm, not necessarily | ||
svnbot6 | r5080, nothingmuch++ | r5085@syeeda: nothingmuch | 2005-06-28 17:37:31 -0400 | ||
r5080, nothingmuch++ | array is compilable, and tested.. still broken | |||
stevan_ | pdcawley: the current metamodel checks back to the metaclass on attribute access to check the meta-data (meta meta data) | ||
integral | if you're accessing via a vtable on the object, you just create a new vtable, and change the old vtable to do upgrades | ||
pdcawley | And replace the vtable with the non-updating vtable as you do it. Nice trick. | 21:40 | |
stevan_ | some on some level it might be able to catch it lazily | ||
integral uses Data::Alias::swap too much in perl5 for lazy object tricks | |||
pdcawley | But, that still doesn't help when your programmer explicitly wants to walk all the existing objects in a class without having links that keep objects alive that should be dead. | ||
And there are occasions when such a thing is useful. | 21:41 | ||
stevan_ | pdcawley: yes, that is true | ||
integral | like debugging | ||
stevan_ | but only insane ex-smalltalk hackers like doing that stuff :P | ||
pdcawley | Yeah. | ||
integral | like figuring out exactly which Coro::State objects you're leaking today =) | ||
pdcawley | As I say, just putting this issue on the table now, because the sooner it's sorted the better. | ||
It doesn't have to be the full Ruby ObjectSpace (although if Ruby's going to target Parrot, you need to expose the GC at the ruby level anyway) straight away, but it does have to support implementing something like it. | 21:42 | ||
wolverian | ObjectSpace is nice. | ||
stevan_ | how does Smalltalk do it? | 21:43 | |
pdcawley | For the strongest value of 'has to' I can muster whilst not being Larry. | ||
Depends on the smalltalk I think. | |||
stevan_ | ok | ||
pdcawley | Squeak's been undergoing changes in how that stuff works. | ||
stevan_ | I am not familiar with ObjectSpace ... looking now | ||
pdcawley | But the GC is exposed at the language level. (Not surprisingly really, it's implemented in smalltalk (or possibly a tinytalk, can't remember)) | ||
stevan_ | interesting (ObjectSpace that is) | 21:44 | |
pdcawley | ISTR that ObjectSpace is pure ruby, built on top of the Kernel primitives. | 21:45 | |
But I could easily be wrong about that. | |||
wolverian | ruby-doc says it's in gc.c | 21:46 | |
but I don't know how much that really tells. | |||
pdcawley | Fairy nuff. | ||
The timely destruction requirement does make some of this a little trickier I think. | 21:47 | ||
Though it probably mandates that we have a sufficiently clever GC on all platforms as well. | |||
wolverian | heh. nice. you do GC.disable in ruby. | 21:48 | |
pdcawley | And if it's sufficiently clever to do timely destruction, it should be sufficiently clever to expose walking the live set. | ||
integral | hmm, does timely destruction mean that an implementation can't just not GC at all? | ||
pdcawley | Yup. | ||
integral | hmm! | 21:49 | |
PerlJam | integral: assuming a sufficiently tight coupling between "gc" and "object destruction" :-) | ||
kungfuftr suddenly realizes he lives only 2 miles away from the worlds largest nuclear fusion device | |||
pdcawley hopes he'll be able to write things like 'method DESTROY is lazy {...}' to signify that, whilst this class has a destructor, it doesn't require timely destruction. | |||
integral | PerlJam: hmm! | ||
if "timely destruction" just means running destructors at the right time, I suppose a bit of static analysis would fix it then | 21:50 | ||
pdcawley | I doubt it very much. | ||
And for occasions where static analysis could cut the mustard, I argue that methods like File.open('/etc/passwd'): -> $row { ... } are better idioms than the current Perlish way of doing it. | 21:51 | ||
wolverian | ooh, ruby. | 21:52 | |
pdcawley | wolverian: Well, smalltalk really. | 21:53 | |
wolverian | right, I'm not familiar with smalltalk. | ||
(I've been getting the impression lately that I should be.) | |||
pdcawley | (aCollection asStream) each: [ each | ... ]. | ||
If you want to do object things, by ghod you should be. | |||
My familiarity is on the acquaintaince level, but it's a lovely, lovely language. | 21:54 | ||
PerlJam | you know, every time I hear people talking about nifty new features in a language or a nifty new language with cool features, someone invariably brings up smalltalk. Why isn't smalltalk more successful? | ||
pdcawley | Because people don't like image based languages? | ||
svnbot6 | r5081, Stevan++ | P5-PIL-Run - fixing code, but it is still missing the scalar (which is on nothingmuchs machine, and he must have forgotten to check in) | ||
integral | too dynamic? the runtimes suck? | ||
pdcawley | Because there's so *much* of it in a smalltalk image. | ||
PerlJam | pdcawley: you know smalltalk well then :) | ||
pdcawley | Because it's like nothing else you've ever seen -- the stuff that rips^w borrows from it usually does it half-arsedly... | 21:55 | |
integral | the fact that squeak sits in it's own little window, with it's own little world puts me off using it to munge text files =) | ||
pdcawley | That too. | ||
But, when you look at the language, it's potentially a great text munging language. | |||
And people have been brainwashed into thinking the C/Pascal school of brainded static typing is the way to work with polymorphic types. Which is fucking insane. | 21:56 | ||
integral | I suppose the problem with having a simple parrot compiler for it is that you lose the object browser, morphic/MVC, etc which all make for great wizbang demos | 21:57 | |
PerlJam | The first formal OOP class I ever took used smalltalk and C++ Unfortunately we spent more time talking about C++ (mainly due to its deficiencies) | ||
pdcawley | ObjectiveC's much nicer, Brad Cox pinched some good stuff from smalltalk. | ||
integral | but some static typing is nice pdcawley, it's a pain only finding out half way through the test suite that you called "emailOrder" on an int rather than a PurchaseOrder | ||
pdcawley | And that pops up a debugger window, you fix the problem and carry on running the tests... | 21:58 | |
integral | hmm, true, I suppose. I just get nervous about compensating with a runtime environment | 21:59 | |
PerlJam | prejudice! Pure prejudice. :) | ||
pdcawley | Smalltalk test first: Write the test. Run it. When it fails, get the debugger to generate the stub method and get to the point where everything's compiling. Then run the test again, fix the behaviour in the debugger... | ||
Keep going. | |||
integral | what happens when the mistake you made isn't as simple as just writing an unimplemented method? | 22:00 | |
PerlJam | integral: you can warp the runtime as needed. | 22:01 | |
integral | PerlJam: timetravel backwards you mean? | ||
PerlJam | effectively. (caveat programmer though) | ||
integral | erk :-) | 22:02 | |
pdcawley | Roll back to the last known good changeset. | ||
Or if you've really screwed the pooch, the last known good image. | 22:03 | ||
integral | err? I mean how do I hotfix. How do I change things, and then avoid having to start over | ||
pdcawley | And because the entire editing environment has its source code exposed, you can change it as needed, plus you've got a library of (hopefully) good examples to learn from. | ||
integral: Rewrite stuff. Unless you've futzed with something seriously fundamental you should be able to get out of it. | 22:04 | ||
integral | err, I didn't type something there: "start the test suite over" | ||
PerlJam | and this is why smalltalk isn't more successful. | 22:05 | |
pdcawley | But you'd have to start the test suite over anyway. | ||
integral | *blink* | 22:06 | |
pdcawley | It's just when you do it in perl you use a command line program to do it. | ||
integral | "carry on running the tests" -- I thought you could just continue running, like in VB | ||
pdcawley | You don't *have* to debug your way to passing tests. You can use the IDE in more impressive ways than that. | ||
coke__ | sounds like moo. =-) | ||
integral | I'd still like my method name typos to be found before the code is run =) | 22:07 | |
pdcawley | integral: Well, if your fix is something you're absolutely confident about (accessor method say, that can be quickly hacked in in the debugger), you just let it run. | ||
Um... that's what smalltalk's compile phase is for. | |||
it's not 100% certain, but it's not too bad. | |||
integral | not 100%? hmm, it should be able to be assuming that method names are unique (which they're probably not) | 22:08 | |
pdcawley | debugger comes up, write the method, save/compile it, tell the debugger to retry. | ||
method names are unique? I don't even know the type of my object (unless it's self). | |||
You're still thinking like a C++ person. | |||
someObject aMethod - at compile time there's no *clue* what the type of someObject is. | 22:09 | ||
integral | I'm thinking of Haskell's typeclasses. The method's name allows you to tell exactly which typeclass ("interface") an object is expected to support | ||
pdcawley: yes there is, someObject->can("AMethod") | |||
pdcawley | Yeah. But who's going to be stupid enough to do that. | ||
Just call the method. | |||
integral | huh? | 22:10 | |
stupid enough to do what? | |||
pdcawley | If it fails, either implement the method, stick a null behaviour on object, or slap your forehead and go "Ah, that should have been aMethod" | ||
Using 'can' is generally very bad style. | |||
Just call it and let the runtime catch the exception. | |||
integral | *sigh* I was using can to express that someObject does have some type information | 22:11 | |
pdcawley | Only at runtime. | ||
integral | The information that someObject is expected to can aMethod | ||
pdcawley | Not at compile time, which is when you want the checking. | ||
But calling the method conveys that information too. | |||
integral | err? | ||
pdcawley | someObject can: 'aMethod' | 22:12 | |
someObject method. | |||
integral | what? | ||
pdcawley | What's the point of the call to can? | ||
integral | I'm NOT calling can. | ||
pdcawley | Then what *are* you doing with it? | ||
integral | Because the programmer calls aMethod on someObject, the compiler knows that someObject is expected to be able to do aMethod. I'm using can as a predicate | 22:13 | |
pdcawley | But it doesn't know what type someObject is | ||
integral | yes, you do, it's a type that has a aMethod | ||
pdcawley | No, it might be a type that has a methodNotImplemented method that can dispatch the aMethod message. | ||
integral | yeah, then statically the compiler has to assume that that type can do any method until runtime | 22:14 | |
pdcawley | statically, the smalltalk compiler just assumes that everything can do any method until runtime. | 22:15 | |
wolverian | heh. that even lined up. | ||
pdcawley | Shh... don't tell Limbic_Region! | ||
Limbic_Region | pdcawley - you forget - the channel is logged | ||
integral | my point is that it would be nice if the compiler did that bit more work | 22:16 | |
pdcawley | Not really. | ||
If you want that, use Haskell. | |||
integral | yes, I do, and that's why. | 22:17 | |
I can find that I've made a mistake during a quick recompile rather than a long run of the program | |||
pdcawley | but the types of mistake you can find are far more limited than what you can find out from a test. Which can be written in a usefully outcome oriented fashion. | 22:18 | |
integral | yes, that's why you do both! | ||
pdcawley | So you're going to have to write the tests anyway, you've just moved some of them earlier in the process at a time when you can't show as much intent as you do in your tests. | 22:19 | |
Point is, you don't *need* to do both. | |||
Limbic_Region | autrijus ping | 22:20 | |
your patch didn't work (or rather, I am still getting a blow up on Prelude.hs) | |||
pdcawley | Once you accept the value of the tests as spec/documentation/reassurance, the need for all this type declaration noise in code becomes much less pressing. | ||
wolverian | osteele.com/archives/2004/11/ides the IDE divide. interesting. | ||
integral | pdcawley: err, I didn't mention any type of declarations. | 22:21 | |
pdcawley | Yeah, haskell does inferencing, I know. | ||
integral | in fact, the whole point of inferencing is to not need declarations | ||
pdcawley | none at all? | ||
Coo. | |||
integral | well, that's not *strictly* true | ||
They're totally optional when you're within haskell98. But not necessarily on advanced type usage (undecidability and all that) | 22:22 | ||
pdcawley | So that's 'not to need so many declarations'. | ||
integral | nah, it's a "you only need them to document, or if you're hacking PUGS" | ||
pdcawley notes that types for documentation gets nicely handled by Smalltalk idiom. Because of the way methods work: | 22:23 | ||
* capitalize: aString | |||
Collection>>inject: anObject into: aBlock | 22:24 | ||
etc.. | |||
integral | you get meaningful argument names in haskell too =) | ||
pdcawley | In smalltalk you get much more places to name your arguments, there's the method name part, and then there's the name of the parameter itself. | 22:25 | |
So your method name is usually role suggesting, and your parameter name is type suggesting. | |||
integral | that's true, positional only does get rather opaque | ||
pdcawley | It's one of the smalltalk things that *hasn't* been pinched by all and sundry, and I don't know why because it's one of the really lovely things. | 22:26 | |
integral | and type sigs like: (ClassA a, ClassB b, ClassC c) => a -> b -> (a, c) are rather nastier than: Int -> Float -> Complex | ||
pdcawley | I"ve only seen smalltalk message selector style pinched by ObjectiveC. | 22:27 | |
integral | anyway, thanks :-) time to sleep | ||
pdcawley | same here. | 22:31 | |
Darren_Duncan | that IDE divide article looks interesting ... personally, I see myself more as language first person and don't use an IDE | 23:11 | |
svnbot6 | r5082, Stevan++ | Perl6-MetaModel : container typed attribute ($.foo, @.bar, %.baz) are now initialized with the correct value when we construct the instance (@.bar gets an [], %/baz gets a {}, and $.foo gets undef), the set_value() method also checks that the value being set conforms to that type as well (and dies if not) | ||
mugwump | does emacs count as an IDE? :) | 23:12 | |
stevan_ | Darren_Duncan: what do you use to edit? | 23:13 | |
hey mugwump :) | |||
Darren_Duncan | I use BBEdit on Mac OS X | ||
stevan_ | ah | ||
Darren_Duncan | actually, it has a few IDE-like features, but is primarily a text editor | ||
mugwump | heya stevan_ ... wish I had time to muck in with what you're working on... | ||
stevan_ | Darren_Duncan: TextMate is a nice OSX editor/IDE | ||
mugwump: no problem | 23:14 | ||
Darren_Duncan | eg, it has syntax coloring and balancing and it can invoke other programs to run or syntax check | ||
I've been using BBEdit for years, since the System 7 or so days, and it transitioned to X well | |||
stevan_ | mugwump: its starting to get a little cleaner, but the whole Role with State thing is a big issue and one we have not yet resolved | ||
Darren_Duncan: my problem with BBEdit has always been the lack of a good "project" view | 23:15 | ||
Darren_Duncan: I used ProjectBuilder for the past few years (since X came out really) | |||
Darren_Duncan | that hasn't bothered me ... I use folders to organize my projects anyway | ||
mugwump | is there a practical difference between a Role and a Class (other than you can call Class.new() ) ? | ||
stevan_ | Darren_Duncan: me too, but I like a nice folder view on the side | ||
mugwump: yes, a big diff | |||
a Role is not instantiable (sorry I have no idea how to spell that) | 23:16 | ||
mugwump | (that's what I meant by the .new thing ;)) | ||
stevan_ | Larry said you can do MyRole.new() | ||
but it is just sugar for | |||
mugwump | but that creates an anonymous class? | ||
Darren_Duncan | one of the great things about the Mac OS, since System 7 and thru X, that no other OS has that I'm aware of, is hierarchical file system views where you can see and manipulate files and folders in the same window | ||
stevan_ | class annon does Role {{ | ||
yes | |||
Darren_Duncan | so I often have one window open with the folder disclosure triangles turned so you can see folder's contents in the same window as a parent | ||
stevan_ | Darren_Duncan: Windows had that view in the file explorer | 23:17 | |
Darren_Duncan | does it contain files too or just folders? | ||
it was just folders last I looked | |||
stevan_ | Darren_Duncan: it is just like Mac | ||
mugwump | just press Win+E | ||
stevan_ | oh,.... hmm | ||
dont remember | |||
Darren_Duncan | I'll take a screenshot and show it to you ... | ||
stevan_ | Darren_Duncan: the thing I like about TextMate (and liked about Project Builder) was that it had a "project drawer" which did exactly what your window does | 23:18 | |
it is nice having it attached to the window :) | |||
so I dont loose it :) | |||
mugwump: there are other Role issues though | |||
for instance | |||
what do you do with private methods in Roles | |||
are they folded into the class? | 23:19 | ||
or are they private to the role | |||
if they are folded in to the class | |||
can I have submethods or something similar in Roles? | |||
and do those get folded in or not | |||
these issues are not that bad though | 23:20 | ||
the really hard one is attributes from roles | |||
because say I have role Foo which has $.bar | |||
then I have role Bar which has $.bar | |||
mugwump | isn't this the same as :private vs .public, vs ā®protected (to use the C++ terminology) ? | 23:21 | |
stevan_ | mugwump: yes and no | ||
perl6 does not have protected | |||
but the point is that when you have conflicts | |||
you almost always end up needing to look inside the roles | |||
so they are no longer black boxes | 23:22 | ||
which might be okay | |||
but it means they are less reusable on their own | |||
it would be hard to give people a set of Roles | |||
on CPAN or something | |||
mugwump | ok. I think the same problem applies to private accessors on Classes; ie, they can't be accessed from SubClasses either | ||
stevan_ | they would need to look inside them to use them | ||
mugwump | s/accessors/(accessors&attributes)/ | ||
stevan_ | mugwump: yes | ||
but my superclasses attributes do not live in my class space | 23:23 | ||
roles are flattened (as decreed by Larry) | |||
mugwump | why? | ||
stevan_ | and they are not really "first class" things | ||
mugwump: because the whole point of them is that they are *not* classes | |||
mugwump | that just sounds like a recipe for disaster TBH | ||
stevan_ | so you dont need to keep them around | 23:24 | |
actually it works quite well with Traits | |||
because they do not have state | |||
there is not only a lot of research into traits | |||
mugwump | traits are properties of Class/MetaClass objects, no? | ||
stevan_ | but they are being added to many new languages | ||
in Perl6 yes, sorry I mean the traits from the paper | |||
the paper which inspired Roles | |||
mugwump | sure | ||
stevan_ | if you do not add state, the rules are very simple and straightforward | 23:25 | |
but when you introduce state, things get really messy really fast | |||
mugwump | ok. Let's quickly discuss what "flattening" means... | ||
to me, flattening simply means composing a dispatch table and resolving conflicts | |||
stevan_ | mugwump: yes, on a very basic level that is true | 23:26 | |
but that dispatch table becomes the ::Type defintion | |||
but that is only methods | |||
mugwump | what I'm wondering about is why anyone cares whether Roles are removed from a layer of the type system that doesn't really matter... | ||
stevan_ | you need to also fold in state | ||
Darren_Duncan | okay stevan_ and mugwump , look here: darrenduncan.net/hierarchy_view.jpg | ||
that's a snapshot of what my desktop looks like | 23:27 | ||
stevan_ | Darren_Duncan: yes, i do that too (although i prefer the column view (Greg's Browser for the ole school mac hackers :)) | ||
Darren_Duncan | I've never seen an os besides the Mac OS that lets me do that, and the feature is invaluable to my productivity | ||
column view has its uses, but I find this more useful; it lets me see down several paths simultaneously | |||
stevan_ | yes, both have their uses | 23:28 | |
Darren_Duncan | and I can select and move or whatever items in different folders at once | ||
stevan_ | I used Gregs Browser on my old mac for several years though, so i developed a taste for column view | ||
Darren_Duncan | this feature started in System 7, back in 1991 or so | ||
stevan_ | I used to use a Hyperbolic file browser on windows, not *that* was cool | ||
Darren_Duncan | now the question is, does any OS besides the Mac OS come standard with what I displayed? | 23:29 | |
stevan_ | mugwump: it is possible to look at flattening as an implementation issue | ||
Darren_Duncan | this feature is one of the many reasons I prefer the Mac OS | ||
stevan_ | however, I think it changes how people will look at Roles | ||
it also complicates the method dispatcher | |||
since you traverse roles breadth first | |||
mugwump | sure. but I think it would greatly simplify things to consider Roles just composable classes. | 23:30 | |
stevan_ | mugwump: yes, but that is not what roles are | ||
mugwump | You could "flatten" it by composing it into an anonymous class first | ||
ok, so forgive me for asking, but what are they? :) | |||
stevan_ | they are collections of reusable behaviors | ||
another level of decomposition | 23:31 | ||
mugwump | yes, they are a set of method signatures | ||
stevan_ | they can also easily double as interfaces (in the java sense) as well | ||
mugwump | which is also a set of method signatures | ||
stevan_ | mugwump: and state :) | ||
mugwump | ok, so if you model state as a collection of accessor methods, then the signatures of those are the same thing | 23:32 | |
so you are still dealing with a set of method signatures | |||
stevan_ | but how do I handle accessor method clashes? | ||
and what about $.foo = "Bar" accessing? | |||
and what about private state? can roles have it? | 23:33 | ||
and who is it private too? | |||
if it is folded in, then you need to look inside the role to be sure it can be composed into your class without problems | |||
or you need to look after it blows up because there was a problem | |||
mugwump | they don't clash, it's just another key (which role/class private namespaces are accessed from) | 23:34 | |
s/namespace/attribute? | |||
stevan_ | but then you just have mix-ins | ||
little classes injected into the class hierarchy | |||
which is not totally bad | |||
but not really what we want | |||
but as you can tell, this makes roles into a fairly complex topic | 23:35 | ||
mugwump | I still don't understand what extra you get from this flattening... | ||
stevan_ | and one which many people will get wrong | ||
my current thoughts revolve around using a Perl6::Role::Method class to represent methods from roles to retain meta info from the role it came from | 23:36 | ||
which will make disambiguation easier | |||
mugwump: then what do you do when you dont flatten? | 23:37 | ||
mugwump | to me, the following things are pretty much isomorphic; | ||
1. classes + multiple inheritance | |||
2. classes + interfaces | 23:38 | ||
3. classes + mixins | |||
they all break the "tree" requirement of a strict Class Inheritance system | |||
so, I was also thinking; | 23:39 | ||
4. Classes + (roles|multiple inheritance) | |||
stevan_ | and they are all known to be difficult and at times dangerous | ||
mugwump | can you elaborate on that? | 23:40 | |
I mean, the details of them typically suck when implemented | |||
stevan_ | multiple inheritance: hard to use correctly, known to have subtle traps which are hard debug/find | ||
IMO the only one who got it right was Eiffel cause they allow you to disambiguate by renaming "features" (Eiffels name for methods) | 23:41 | ||
interfaces: people get them better, but they are annoying since they are always abstract | |||
mugwump | well we don't need to preclude the possibility of that (renaming on role importing) | ||
stevan_ | and people have a hard time really understanding what they are good for | ||
interfaces are usually used as API descriptions | 23:42 | ||
but you can do type checked interface polymorphism really nicely (sorta) in java | |||
mugwump | heh. yeah, instead of composable units of behaviour :) | ||
stevan_ | which many people just dont get | ||
mixins: I think I can just say 'nuff said | 23:43 | ||
they suck | |||
and can get really really messy | |||
stevan_ is debating between Thai, Indian, Japanese or Turkish for dinner :) | |||
mugwump | sure, but only if the only "key" to the mixin is the method name, not the complete signature, or signatures conflict, or you want to dynamically change classes | ||
stevan_ | I love all the food choices in cities | 23:44 | |
mugwump | ok. Let's summarise where we're at then, and give you a good question to ask Larry when you see him :) | ||
stevan_ | mixins are less a problem at composition time | 23:45 | |
they lead to very fragile class heirarchies | |||
mugwump: I have been talking all this stuff to Larry for the past week :) | |||
he was at the hackathon | |||
and lately I have also been pulling chromatic into it | |||
and Luke Palmer (luqui) | 23:46 | ||
mugwump | yes, I understand. And I greatly respect all of your experience, of course. | ||
But I still have a question for this collective group. | 23:47 | ||
stevan_ | shoot, i will pass it on | ||
I am always open for debate | |||
and they are all getting kind of sick of it I think :) | |||
mugwump composes his question :) | 23:48 | ||
stevan_ | excellent | 23:49 | |
mugwump | right, here we go. | 23:54 | |
Assumptions: | |||
1. It would greatly simplify the MetaModel if Roles and Classes were basically the same thing. That is, if the only difference between a Class and a Role is that the Class is instantiable, and a Role is not. | |||
2. Effects to the user-level metamodel, such as role "flattening" can be viewed as the same problem as composing a method dispatch table. ie, when you add a role to a class, (or a superclass to a class, for that matter), it checks that there are no conflicting methods by simply building a new instantiable Class (anonymous if it's simply a Role 'does'-ing another Role) | |||
So, the question is; | |||
- What exactly can you achieve by viewing Roles as something that are "flattened" into Classes, rather than simply incomplete Classes? | |||
stevan_ is thinking.... | 23:56 | ||
mugwump | stevan_: do you think I should forward to the ML? | ||
stevan_ | lets talk about it first | 23:57 | |
revdiablo: #1 | |||
(damn autocompletion) | |||
revdiablo: #1 | |||
LOL | |||
mugwump hehs | |||
stevan_ | ok, regarding #1 | ||
why do you think it simplifies it? | 23:58 | ||
I see it as complicating it | |||
because role traversal is breadth first | |||
not depth first | |||
mugwump | wow, ok so we have quite a difference in perspective here ;) | ||
this is good | |||
stevan_ | :) | 23:59 | |
mugwump | "role traversal is breadth first"; what kind of traversal is this? dispatching? | ||
stevan_ | let me just say one thing before we get further into this |