Pugs t-shirts www.cafepress.com/pugscode | Pugs 6.2.9 released | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net Set by stevan on 15 August 2005. |
|||
putter | hi stevan | 00:01 | |
svnbot6 | r7153 | putter++ | PIL-Run - updated name mangling of types for mm2. | ||
r7153 | putter++ | pugs-p5.pl: p5 expressions are now evaluated in the correct package. And ->perl is now shown, rather than ->str. | |||
putter | let's see... why did I ping... | ||
ah. I figured out ->name. so the only thing is the Str->new()->isa('Class') #=> 1 bug report | 00:03 | ||
and when DESTROY's in Array and Hash and Scalar began working, the gc errors became pervasive. So I commented out the meat of the DESTROYs. | 00:04 | ||
stevan | Str->new()->isa('Class')?? | 00:06 | |
putter | ah, | 00:07 | |
stevan | putter: hmm, that is the tricky part | 00:10 | |
putter | bah. it should be something like $::Class->new('$.name'=>'Foo')->new()->isa('Class') but gc errors stop me from actually running it | ||
stevan | Str->isa() is actually calling $instance_of_class->isa() | ||
gc errors? | |||
what ones? | |||
putter | oh, that's a new one, | 00:11 | |
(in cleanup) Method (DESTROYALL) not found for instance (Dispatchable=HASH(0x133b2d0)) at /home/net1/perl6/pugsxpl2/perl5/PIL-Run/../Perl6-MetaModel2.0/lib/chaos.pl line 450 | |||
stevan | hmm | ||
the problem is that GC tries to call all the DESTROY methods | |||
which just totally wreaks havoc | 00:12 | ||
I will have to give this some thought | |||
putter | ok. | ||
stevan | maybe I should call, then remove all the DESTROY methods at the end of runtime | ||
putter | so if all the DESTROY methods are commented out, the gc problems should go away? | ||
stevan | no idea | ||
I never tried it | |||
putter | k | ||
stevan | let me try the removing DESTROY methods thing | 00:13 | |
I think that should wokr | |||
putter | ok | ||
stevan | as for the Str->new()->isa(Class) thing | ||
thats a bug,... not sure how to fix it at the moment | |||
the problem is that there should be a class method version of isa() | 00:14 | ||
putter | k | 00:15 | |
stevan | putter: can you make a test out of that GC issue? | 00:19 | |
can you reproduce it on a small scale? | 00:20 | ||
putter | hmm... let's see... | 00:27 | |
stevan | putter: I think I might have gotten in | 00:29 | |
s/in/it/ | |||
putter | well, this ./pugs -B perl5 -e 'say 3' shows the old gc problem... :) and... (oh, ok, I'll wait and try that) | 00:31 | |
svnbot6 | r7154 | putter++ | pugs-p5.pl: repl reverted to p6_to_s from p6_to_perl. No non-essential changes! They may expose bugs, creating ambiguity vis mm2 transition. | ||
stevan | putter: commiting now .................. | 00:34 | |
ok,.. its there | |||
try that,.. let me know if it complains | 00:35 | ||
putter | trying... | ||
./pugs -B perl5 | 00:36 | ||
p5ugs> :5 $::Class->new('$.name'=>'Foo')->new()->isa('Class') | |||
Use of uninitialized value in concatenation (.) or string at /home/net1/perl6/pugsxpl2/perl5/PIL-Run/../Perl6-MetaModel2.0/lib/chaos.pl line 513. | |||
(in cleanup) Method (DESTROYALL) not found for instance (Dispatchable=HASH(0x13409d0)) at /home/net1/perl6/pugsxpl2/perl5/PIL-Run/../Perl6-MetaModel2.0/lib/chaos.pl line 450 | |||
... | |||
stevan | this might interest you : users.ipa.net/~dwighth/smalltalk/bl...p_toc.html | ||
svnbot6 | r7155 | stevan++ | Perl6::MetaModel 2.0 - | ||
r7155 | stevan++ | * chaos.pl now attempts to handle some GC issues | |||
r7155 | stevan++ | - in an END block we collect all active classes, then call DESTROY | |||
r7155 | stevan++ | on all of them, then set a flag to tell the dispatcher not to | |||
r7155 | stevan++ | accept anymore requests for DESTROY | |||
r7155 | stevan++ | * added remove_method to ::Class | |||
r7155 | stevan++ | * added FETCH('{}') to ::Package which gives back the namespace hash | |||
r7155 | stevan++ | - this is not ideal, but works for now | 00:37 | ||
r7155 | stevan++ | * added some more tests re: the Str->new()->isa(Class) issue | |||
putter | neat. read the books years ago. added to my "readables" list. thanks! :) | 00:38 | |
still complains. replicable as described. | |||
stevan | putter: do you think you can boil it down to a test case for the MM? | 00:39 | |
I am not sure what your repl is doing that is causing this | |||
putter | :5 is just print eval("package ".&p6_main()."; ".$1),"\n"; warn $@ if $@; | 00:40 | |
stevan | what is p6_main() | ||
hey luqui | |||
luqui | hi stevan | 00:41 | |
Language::AttributeGrammar cpanned | |||
stevan | what is that? | ||
luqui | an attribute grammar module | ||
it's a tree traversal thingydingy | 00:42 | ||
stevan | ah | ||
cool | |||
luqui just realized that it probably works on graphs pretty well too | |||
yay for sensible algorithms! | |||
stevan | putter: what version of perl are you using? | 00:43 | |
so luqui what does it do? is it on search.cpan.org yet? | 00:44 | ||
nothingmuch | luqui++; # i will check tomorrow | ||
luqui | I just uploaded it ten minutes ago, so probably not | ||
stevan | luqui: wanna no paste it? | ||
nothingmuch | pause.perl.org/incoming/ | ||
no need | |||
luqui | there are four tests :-) | 00:45 | |
stevan | nothingmuch: check this out users.ipa.net/~dwighth/smalltalk/bl...p_toc.html | ||
luqui | I couldn't think of a way to test it modularly | ||
so I just used some examples | |||
nothingmuch | luqui: that's what happenned to me with blondie | ||
luqui | so I know when it breaks, but it will be a pain to figure out how | ||
nothingmuch | i retrofitted a few later | ||
now i will add more, and then refactor | |||
s/now/tomorrow/ | 00:46 | ||
putter | p6_main() just returns a package name. the same error occurs with a bare eval($1). | ||
nothingmuch | btw, stevan, i was thinking of macro processing as nothing more than making the actual evaluation of code a compile time directive | 00:47 | |
putter | v5.8.5 | ||
nothingmuch | sort of like, to actually run a program you have to say something like BEGIN { apply(&main) } | ||
putter | I tried doing a file with just use Perl6::MetaModel; $::Class->new('$.name'=>'Foo')->new()->isa('Class'); but that gives me a different (but in some ways similar) error. | ||
nothingmuch | that *really* confuses macros with functions, which I like | ||
luqui | heh | 00:48 | |
putter | Use of uninitialized value in concatenation (.) or string at perl5/Perl6-MetaModel2.0/lib/chaos.pl line 513. | ||
Method (BUILDALL) not found for instance (#<=(9)>) at perl5/Perl6-MetaModel2.0/lib/chaos.pl line 450 | |||
nothingmuch | code emission to a "static" backend means that there is no Eval node and no Val of type AST anywhere but &main | ||
stevan | putter: weridness | ||
putter: can you run the MM2 test suite? | 00:49 | ||
putter | running... | ||
stevan | nothingmuch: *cough* thick crack smoke *cough* | ||
nothingmuch | stevan: yup =) | ||
forth has tought me the value of IMMEDIATE | |||
luqui | that is, everything is a macro in such a backend? | 00:50 | |
stevan | luqui: I only sort of understand you Attribute grammer thing | ||
was there a p6l thread on this? | |||
luqui | yeah, tough to describe, esp. today when I am not in a documenty mood | ||
nothingmuch | stevan: there was a nice talk i linked to | ||
it has an example of dumping a treeish structure as HTML | |||
stevan | nothingmuch: where? | ||
nothingmuch | with indentation | ||
i don't remember | |||
stevan | bah,... what good does that do me | 00:51 | |
nothingmuch | backlog ;-) | ||
luqui | but I'm looking for features to add. I wrote this module before ever using an attribute grammar for anything | ||
so I have no idea what would be useful | |||
nothingmuch | ah, i think i found it | ||
www.win.tue.nl/ipa/archive/falldays...torial.pdf | |||
stevan | putter: I see your latest issue | 00:53 | |
nothingmuch | good night | ||
stevan | $::Class->new('$.name'=>'Foo')->new()->isa('Class') wont work becuase Foo needs to have $::Object as it's superclass | ||
good night nothingmuch | |||
geoffb | good night, nm | 00:54 | |
nothingmuch | btw.. new website up: www.beyahad.info/ | ||
point your hebrew-speaking-bi-polars there please | |||
luqui | night | ||
hey nothingmuch | 00:55 | ||
nothingmuch | huh? | ||
luqui | go to www.behayad.info | ||
:-) | |||
nothingmuch | i'm not bi-polar | ||
i just built the website for a friend =) | |||
luqui | uh huh | ||
sure | |||
stevan | suuuuurrre for a friend | ||
just like luqui's friend who needed Viagra | |||
nothingmuch | nono, that was for my dog | 00:56 | |
uh, i mean, luqui's dog | |||
friend | |||
luqui | haha | 00:57 | |
stevan | putter: this works for me print eval("my \$Foo = \$::Class->new('\$.name'=>'Foo'); \$Foo->superclasses([ \$::Object ]); \$Foo->new();"); | ||
luqui | why would you eval that? | 00:58 | |
stevan | luqui: it is eval'ed because it is inside putter's repl loop | ||
luqui | i see | 00:59 | |
stevan | he is having GC issues,.. we are trying to debug em | ||
luqui | eew gc | 01:01 | |
er, yay gc, eew gc issues | |||
stevan | eew ref counting GC,... | ||
putter | perl5/Perl6-MetaModel2.0/t/08_multi_methods.t | 01:02 | |
1..12 | |||
ok 1 - The object isa PrettyPrinter | |||
Can't call method "can" on an undefined value at /usr/lib/perl5/site_perl/5.8.5/Class/Multimethods/Pure.pm line 86. | |||
# Looks like you planned 12 tests but only ran 1. | |||
# Looks like your test died just after 1. | |||
stevan | odd | ||
luqui | uh oh | ||
putter | other than that, looks good. | ||
trying... | 01:03 | ||
luqui | that looks like my module :-p | ||
yay for bad error checking luke | 01:04 | ||
putter | Use of uninitialized value in concatenation (.) or string at perl5/Perl6-MetaModel2.0/lib/chaos.pl line 513. | ||
#<=(9)> | |||
luqui | oh wait --- stevan, did you note my latest change to C::MM::P | ||
stevan | putter,.. this commit will fix that one | ||
luqui: no idea | |||
luqui | forgot to tell you that it would break your rewrite of internal_multi | ||
I refactored | |||
robkinyon | obra: ping | ||
stevan | luqui: you punk!! | 01:05 | |
luqui | on the other hand, I made it so you don't have to rewrite anything | ||
just pass a custom registry object | |||
stevan | putter: what version of C::MM::Pure are you using? | 01:06 | |
luqui | so that's probably where putter's problem is coming from | ||
putter | checking... | ||
0.10 | 01:07 | ||
stevan | I have 0.06 | ||
ok,.. upgrading now | |||
obra | robkinyon: heya. autrijus suggested I ping you about PDF::Template | 01:09 | |
svnbot6 | r7156 | stevan++ | Perl6::MetaModel 2.0 - small fix for annoying GC stuff | ||
obra | robkinyon: I'm looking for complex examples. | ||
stevan | luqui: what do I need to do to fix this? | 01:12 | |
luqui | so you know how you rewrote internal_multi? | 01:14 | |
with basically the same code as it had before, but a small change at the end | |||
stevan | ok | ||
wanna just fix my code in chaos.pl? | |||
:) | |||
luqui | fair enough | ||
robkinyon | Uhh ... | ||
luqui | suppose I deserve it :-p | ||
robkinyon | Heh | ||
stevan | luqui++ | ||
robkinyon | PDF::Template is in an interesting place right now | ||
What kind of complex examples are you looking for? | 01:15 | ||
stevan has to attend to $real_life, bbiab | |||
robkinyon & kid's screaming | |||
back | 01:18 | ||
01:21
jiing is now known as jiing__,
jiing__ is now known as jiing
|
|||
robkinyon | obra: I can come up with some complex examples, if you want | 01:22 | |
buu | What happened to the eval bot? | 01:24 | |
luqui | oh right | 01:27 | |
I should start him up again | 01:28 | ||
pugs wasn't building, so evalbot wasn't updating | |||
obra | robkinyon: Thanks :) | ||
svnbot6 | r7157 | luqui++ | Brought MM2's Class::Multimethods::Pure usage up-to-date with my interface-breaking change. | 01:33 | |
luqui | putter, that's your queue, try again :-) | 01:35 | |
er, cue :-) | 01:36 | ||
luqui laughs at himself | |||
buu | I don't suppose anyone has even heard of a portmaster? | 01:37 | |
Supaplex | i has | ||
buu | Really? | 01:38 | |
Supaplex | yup | ||
buu | Have you ever, say, configured one? | ||
Supaplex | on occasion, yes | ||
buu | REALLY?! | ||
Can you help me make this hideous piece of trash talk to another server via telnet? | |||
geoffb | heard of one, yes, fought with one yes, configured one, no | ||
Supaplex | you mean telnet out of it? | 01:39 | |
buu | Yeah | ||
Supaplex | there is the telnet command, isn't there? | ||
buu | I'm trying to dial in to it and get connected to a telnetd running on a local box | ||
Supaplex | it's like uber simple last I recall | ||
ohh, you'll need to login as !root | |||
buu | Er, not that part | 01:40 | |
When ever I dial up portmaster at the moment I get a "press <RETURN> to begin Login" | |||
Supaplex | so telnet say to your cisco router from the portmaster | ||
buu | Just a linux box | ||
Supaplex | k, 1m - logging in to the pm4 | 01:41 | |
buu | I have a modem, ya? I want to dial a number and connect to the portmaster. I want the portmaster to transfer me over ethernet to another box running telnet, so I'm left going directly from my modem to the telnet box | ||
Supaplex | so the modem on your pc dials the pm, and you login to a terminal session, then you want to telnet via tcp to the linux box | 01:45 | |
buu | Yes! | ||
Well, what do you mean by "login to a terminal session"? | 01:46 | ||
Supaplex | not ppp | ||
like the bbs days ... | |||
buu | Ah. Well, I was kind of assuming I would use ppp, but I'm fairly agnostic as long as it works | ||
Supaplex | depends on the account you have. if you have ppp connectivity, you can just telnet from your pc to the linux box, can't you? | 01:47 | |
well, I guess you could telnet to the pm, then telnet again off the pm to the linux box | 01:48 | ||
buu | Well, it's slightly more complicated | ||
I'm just using a pc as a test | |||
Eventually it's going to be a dial-up modem in a small embedded system way the fuck out | |||
Supaplex | I see... | 01:49 | |
so what's the simplest part of your objective you're attempting to complete? (let's break this complicated thing down into bite size pieces) | |||
buu | Er | 01:50 | |
Get telnet over modem on this pc? | |||
Via the pm | |||
Supaplex | so you've got putty, right? | 01:51 | |
humm does putty handle modem's directly (via serial?) | |||
buu | Actually, I was using hyperterm | ||
Supaplex | before you answer that, you want ppp, right? | ||
buu | Sure. | ||
And yes, hyper term handles the modem directly. I give it the number and it dials it. | |||
Supaplex | so you can putty (use telnet) to the pm | ||
ok, then that's not likely to be ppp. that's straight up serial terminal | 01:52 | ||
buu | Er, yes, I can telnet to the pm just dandy. | ||
Supaplex | unless you talk ppp ;) | ||
ok | |||
buu | But when I dial the pm, I get the "press enter to begin login" dealy. | ||
Supaplex | and you can run command line utils off the pm | ||
buu | Sure? | 01:53 | |
Supaplex | really | ||
luqui | ?eval [+] 1..10 | ||
evalbot_7157 | 55 | ||
Supaplex | can you paste the transcript to a pastebin or something? | ||
buu | Supaplex: Transcript of what, exactly? | ||
Supaplex | you attempting to hyperterm, including that snippet where the delay is | ||
buu | Er, I open hyperterm, say "dial here", it displays an alert box saying "connecting..", eventually it connects, then I just get the message I mentioned above. I hit enter, it asks for a password. | 01:54 | |
"Press <RETURN> to begin Login Session" | 01:55 | ||
"Password:" | |||
Supaplex | rafb.net/paste/results/jVw2oP82.nln.html is what I get | 01:56 | |
buu | I've tried lots of passwords and such, but nothing works. | ||
Supaplex | well you have to have a login on the pm :) | ||
buu | Supaplex: Yes, that's talking via telnet | ||
I've got telnet to the pm working fine, it's not the issue here. | |||
I'm trying to dial *through* the pm | |||
Supaplex | as in my sample, you're having issues paste the lithium> prompt, right? | ||
paste/past/ | 01:57 | ||
buu | No! | ||
My issue has nothing to do with your paste! | |||
Supaplex | ok | ||
buu | That is using telnet to talk directly to the portmaster. | ||
I can do that fine and dandy. | |||
I'm trying to use my modem to dial up, go *through* the portmaster, and talk to another box using telnet via the portmaster | 01:58 | ||
Supaplex | after you're dialed into the pm, you're trying to telnet? | ||
buu | Yes! | ||
Supaplex | can you ping google or browse www sites? | ||
buu | Except, I'm not really because I don't know how to configure it. | ||
Er, I don't get anything past the login prompt when I dial in. | |||
Supaplex | yea, that's nothing fancier then getty attached to $SHELL - no tcp/ip or ppp involved. you're not routing anything | 01:59 | |
buu | Um. What? | 02:00 | |
The portmaster has a shell? | |||
Supaplex | ignore that, first see if you can ping/browse etc while connected | ||
buu | I CAN'T CONNECT | ||
Supaplex | then quit using hyperterm! | 02:01 | |
to dial ... | |||
buu | What else should I use? | ||
Supaplex | inetwiz | ||
buu | Look. I can dial in and "connect" to the pm | 02:02 | |
But *all* it gives me is the "press enter for login" dealy | |||
I can't get past that. | |||
Supaplex | but if you're using hyperterminal to dial, you're only connecting to the pm via a serial console over modem. (like mgetty) | 02:04 | |
bbiam | |||
buu | Er, I don't think so. The the box is only connected to a modem. This modem is connected (eventually) to a portmaster | 02:05 | |
(Going for hot dogs, I shall return!) | 02:06 | ||
putter | luqui: thanks! updating... | ||
syntax error at perl5/Perl6-MetaModel2.0/lib/chaos.pl line 559, near "my " | 02:07 | ||
luqui | that's... odd | 02:09 | |
didn't happen for me | |||
unless the test suite doesn't depend on chaos.pl | 02:10 | ||
putter | my $registry = { had two { { | ||
luqui | yeah, I see that. weird | ||
did you fix it? | |||
putter | 7158. | 02:11 | |
svnbot6 | r7158 | putter++ | chaos.pl: fix typo | ||
luqui | what's the name of that module that allows you to croak out of a set of modules? | 02:12 | |
Supaplex | buu, you can connect to a pm with minicom, hyperterminal etc and not have a ppp connection established. It's one of the handy ways to troubleshoots a pm box when your data provider is having issues to the pop (point of presence) location. I've done that dozens of times to login and see no ppp sessions active, because radius will not authenticate (because the data transport is down, telco PRI's work fine). if you want docs from the pm about this, I coul | ||
luqui: Carp ? | |||
putter | the test file use Perl6::MetaModel; print eval("my \$Foo = \$::Class->new('\$.name'=>'Foo'); \$Foo->superclasses([ \$::Object ]); \$Foo->new();"); no longer gives warnings, but result in #<AnonClass=(9)>, which seems incorrect. | 02:13 | |
luqui | no, the one where if module A calls module B, and I "own" both of those, if I croak from B, it will look past A to find the caller | ||
putter | s/result in/results in/ | ||
err, huh? | 02:14 | ||
luqui | putter. hmm. | ||
putter | oh, a Carp comment. ;) | ||
luqui | I think you're back in stevan's turf | ||
putter | sounds like. my thanks for your help. :) | ||
luqui | Carp::Clan, that's it | 02:15 | |
buu | Supaplex: No, I'm connected via modem | ||
Supaplex | and your modem transports a serial connection over a telco line. | 02:16 | |
putter | luqui++ | ||
buu | Supaplex: Um. Ok? | 02:17 | |
Supaplex | and if you were connected via ppp while using hyperterminal, you'd beable to browse etc | ||
buu | Supaplex: Wouldn't I have to get past this login prompt? | ||
Supaplex | yea, you'd have to have a login for it. not to be confused with a radius login that ppp users would use | 02:18 | |
putter | stevan: the .t error has changed to > Can't use string ("PrettyPrinter::pretty") as a HASH ref while "strict refs" in use at perl5/Perl6-MetaModel2.0/lib/chaos.pl line 555. | ||
> # Looks like your test died before it could output anything. | |||
buu | Supaplex: I created a user on the pm, but this thing doesn't ask me for a username, just a password | ||
putter | however, the gc error on exit is gone! :) luqui++ stevan++ | 02:19 | |
Supaplex | what portmaster is it? | ||
buu | Supaplex: a portmaster 3, I beleive | ||
believe! | 02:20 | ||
Supaplex | I'm not even sure if we have any of those in service | ||
Supaplex checks | |||
putter | stevan: if Array's DESTROY is again enabled, the result is (in cleanup) Bad instance (FORCE=SCALAR(0xac41a0)) at /home/net1/perl6/pugsxpl2/perl5/PIL-Run/../Perl6-MetaModel2.0/lib/chaos.pl line 52 | 02:21 | |
Supaplex | nope, just a armfull of pm4's and some 3com stuff | 02:23 | |
anyway, time to commute | |||
buu | Well, thanks for the time any way. | 02:24 | |
putter | fglock: @a=(3,4) no longer works. and push(@b,3) fails with Signature does not match (as does for()). I haven't yet looked at it closely. hopefully tomorrow. | 02:25 | |
so, not bad for a day's fiddling. stevan++ fglock++ luqui++ | 02:35 | ||
good night all & | 02:36 | ||
luqui | autrijus, ping | 03:24 | |
svnbot6 | r7159 | yiyihu++ | * Fix some typo. | 05:30 | |
autrijus | luqui: pon | 06:02 | |
greetings \camels | |||
listening to brendon's invited talk: | 06:04 | ||
"Javascript in 10 years" | |||
luqui | autrijus, I was going to ask you what a chained attribute was, but i figured it out | 06:05 | |
autrijus | cool. it's a bidirectional attr | ||
luqui | yeah. except it doesn't seem to make a lot of sense | ||
lhs.num = @lhs.num + 1 | |||
seems to be, um, wrong | |||
autrijus | that does not look like correct indeed. where does that come from | 06:06 | |
luqui | let me find the link | ||
www.cs.uu.nl/~arthurb/data/AG/AGman.html#htoc27 | |||
I know what it's saying, that the synthesized attribute is one more than the inherited attribute of the same name | 06:07 | ||
But it's a wicked shorthand (if I'm grokking it) | |||
oh, also, Language::AttributeGrammar is cpanned :-) | 06:08 | ||
autrijus | ooh. | ||
and yes it's a wicked pun. | |||
it makes sense but evil | |||
luqui | so I'm not doing it in my module. | ||
autrijus | ooh, luqui++ | ||
luqui | anyway, besides autocreated attributes, are there any important features? | 06:10 | |
(and no, I'm not including a typechecker :-p) | |||
autrijus | are you working with variant (tagged union) types? | 06:11 | |
luqui | uh, it can, provided they implement the right interface | 06:12 | |
(a method for each child node is enough) | |||
One of my goals is to make it work nicely Parse::RecDescent without being coupled to it | 06:13 | ||
autrijus | ok. | 06:14 | |
makes sense, since P::RD is the closed match on CPAN | |||
s/closed/closest/ | |||
"javascript (previously known as "mocha") suffered from the "marketing scam" where imitating java's suboptimal standard library at that time" | 06:16 | ||
<brendon> and some people still think I'm Gosling. it's very confusing | |||
s/where/by/ | |||
luqui doesn't associate JS with Java at all anymore :-) | 06:17 | ||
autrijus | not "object oriented" but "object based" -- i.e. not distinguishing constructors from other regular methods | 06:19 | |
"conventions enforced by culture" | |||
luqui | :-) | 06:20 | |
autrijus | "each ajax application needs its own OO system with its own reflections anyway" | ||
coral | mm, Parse::BNF in javascript | 06:21 | |
"click here to test the parser described in the RFC above" | |||
pardon the dreaming | |||
luqui | coral, it shouldn't be that hard | ||
parsers are easy. fast parsers are hard. :-) | |||
QtPlatypus | luqui: Famious last words. | ||
coral | it's already on CPAN.. | 06:22 | |
luqui | oh, I figured "pardon the dreaming" meant it didn't exist | ||
coral | no, that's better phrased as "pardon the idea without motivation to implement" | ||
QtPlatypus | QtPlatypus: BTW is there a good way to do default values for object attributes in pugs? | ||
coral looks at QtPlatypus | 06:23 | ||
autrijus | autrijus: sure | ||
BUILD ($.x = 3) { ... } | |||
coral reverts to osmosis phase | |||
luqui | class { has $.x = 3; | 06:24 | |
} # not supported? | |||
QtPlatypus | luqui: Thats currently a paser error. | ||
autrijus | luqui: no, not sure how to interact with BUILD for one ( I guess BUILD overrides) | 06:25 | |
luqui: but a proper mm2 integ should fix that | 06:26 | ||
pdcawley | Morning all. | 06:36 | |
luqui just realized that Parse::RecDescent::FAQ has the question "Is Parse::RecDescent LL(1)? LL(n)? LR(1)? LR(n)?" and never answers it | |||
evening pdcawley | |||
no, I suppose it is morning | |||
QtPlatypus | ?eval "a" eqgt "a" | 06:39 | |
evalbot_7159 | Error: unexpected "g" or "e" expecting operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
QtPlatypus | ?eval "a" eq "a" | ||
evalbot_7159 | bool::true | ||
QtPlatypus | ?eval "a" gt "a" | ||
evalbot_7159 | bool::false | ||
QtPlatypus | ?eval "a" egt "a" | ||
evalbot_7159 | Error: unexpected "e" expecting operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
QtPlatypus | Thought so | ||
luqui | ?eval "a" ge "a" | ||
evalbot_7159 | bool::true | ||
QtPlatypus | Thanks luqui | 06:40 | |
r0nny | damn | 06:43 | |
luqui | darn | 06:44 | |
r0nny? | |||
r0nny | i got a socket $foo - how to read data from it ? | ||
luqui | in perl 6 land? | ||
r0nny | yeah | ||
luqui doesn't know | |||
r0nny | argh | ||
luqui | probably with the iterator | ||
QtPlatypus | =$foo | ||
luqui | yeah, that one | ||
r0nny | hmm | 06:45 | |
now it "works" | |||
wtf | 06:46 | ||
after i kill te connec ted programm it prints everything i send to it, but adds 2 \n for each \n in the input | 06:47 | ||
for =$bar{say;}; <- what did i break ? | 06:48 | ||
luqui | yeah | 06:49 | |
because say appends a \n after it prints | |||
and =$bar doesn't strip the newlines (but maybe it should now?) | |||
use print instead of say | |||
r0nny | there is still a problem | 06:50 | |
it wont print anything, till i close the connection | |||
how munch does = want to read ? | |||
luqui | one line usually | 06:52 | |
but it may be laziness creeping in... | |||
luqui isn't sure | |||
r0nny | omg | 06:54 | |
even if i feed it with about 60 lines it wont print | |||
:( | |||
does anyone know, how to change this ? | 06:55 | ||
luqui | ?? | ||
r0nny | i used netcat, to sein a longer file to the script, but it handt printed anything till i closed the socket | 06:56 | |
send | |||
hmm | |||
anyone ? | 07:00 | ||
QtPlatypus | Does split('',$string) use the PGE and is there an equiverlent that doesn't | 07:01 | |
QtPlatypus doesn't. | |||
r0nny | omg | 07:02 | |
pugscc is broken | |||
autrijus | r0nny: it doesn't use PGE | ||
QtPlatypus | ?eval "text".chars | 07:03 | |
evalbot_7159 | 4 | ||
QtPlatypus | autrijus: That was directed at me I assume? | ||
autrijus | er sorry yeah | ||
r0nny: try doing a $*OUT.flush after the say | |||
r0nny | wont work | 07:04 | |
seems like the socket wants to read waaay to munch data | |||
autrijus | hm, nopaste the code? | 07:05 | |
also try | |||
while ($_ = $bar.readline) { ... } | |||
QtPlatypus | ?eval "text".split('') | ||
evalbot_7159 | ('t', 'e', 'x', 't') | ||
autrijus | bad style of course | ||
but worth trying | 07:06 | ||
r0nny | $bar.readline breaks it complete :/ | ||
autrijus | nopaste the code somewhere :/ | 07:07 | |
r0nny | my $bar=8060.listen.accept;for =$bar { print; }; | ||
this is the minimal working version - any additions had no effect | 07:08 | ||
(or bad effect) | |||
autrijus | my $bar = 8060.listen.accept; | 07:10 | |
while ($_ = $bar.readline) { | |||
print; | |||
$*OUT.flush; | |||
}; | |||
this worksforme | |||
r0nny | $*OUT.flush isnt needed | 07:14 | |
thx :) | |||
is there a short way of connec t, too ? | |||
autrijus | look at examples/network | 07:15 | |
my $hdl = connect("www.phreeow.net", 80); | |||
(in http-client.p6) | |||
r0nny | hmm | ||
i think im going to write a simple irc bot now | |||
autrijus | cool, there are quite a few in examples/network :) | 07:16 | |
nothingmuch | morning | ||
autrijus | iblech: what do you think about Net::IRC-OO? | 07:18 | |
as it stands it can't be use'd | |||
may I mv it to Net::IRC::OO? | |||
r0nny | lol | 07:19 | |
the wizard game is broken ;) | |||
autrijus | iblechbot: anyway I'm going ahead :) | ||
r0nny: yeah, we are in bad need of releng help | |||
nothingmuch | autrijus: maybe we need yet another namespace | ||
autrijus | how is it broken? | ||
nothingmuch | Net::IRC <author> <version> <style> | 07:20 | |
where style is freeform, but not part of the module's name | |||
autrijus | mmm "style" | ||
r0nny | autrijus: aafter i win vs the first opponent, it seems to stay in a endless loop | ||
autrijus | I think it's part of "version" | ||
r0nny: weird because it worksforme | |||
r0nny | hmm | ||
luqui thinks that that's part of the module name | 07:21 | ||
it's a different interface, compatible in no way | |||
autrijus | good observation. | 07:22 | |
nothingmuch | aye | ||
but Net::IRC is the "purpose" | |||
luqui | yeah, well Class::Multimethods is the purpose of Class::Multimethods::Pure | ||
nothingmuch | why should Net::IRC::OO be called Net::IRC::OO just because we didn't have OO back when Net::IRC was started | ||
luqui | Why should Net::IRC have style "OO" just because we didn't have "style" back when Net::IRC was started? | 07:23 | |
I don't think you can ever get away from the problem | |||
svnbot6 | r7160 | autrijus++ | * Move Net::IRC-OO into Net::IRC::OO | ||
luqui | the only way I see style being useful is if it's really part of the same module by the same author | 07:24 | |
and in that case, shouldn't it just be an import flag? | |||
so autrijus (and nothingmuch too), any suggestions for new features Language::AttributeGrammar? | 07:27 | ||
I want to make it a nice, complete module, not a POC | |||
autrijus | ok, looking at it | 07:29 | |
luqui | thanks | 07:30 | |
r0nny | omg | 07:37 | |
nothingmuch | ? | 07:38 | |
r0nny | i think i found, why for =$bar wont work | ||
luqui | you did? | ||
r0nny | seems like there is no autoflush for sockets | ||
nothingmuch | luqui: i'll have a look at your AG later | 07:43 | |
nothingmuch has to work | |||
didn't notice your RFC | |||
luqui | RFC? | 07:44 | |
ahh | |||
not formal :-) | |||
'sok, I'm going to bed in 15 mins or so | |||
nothingmuch | RFC the acronym, not the document | ||
aye | |||
sleep well | |||
luqui | thank you, work well, er... | ||
nothingmuch feels like a mega-xp-whore on perlmonks | 07:46 | ||
i've never gotten so many upvotes on such a pointless node ;-) | 07:47 | ||
luqui | which node? | 07:48 | |
nothingmuch | in this thread: perlmonks.org/?node_id=494914 | ||
r0nny | omg | ||
luqui | that was it? | 07:50 | |
oh no, r0nny is talking about his god again :-) | |||
r0nny | the life example is slow as hell | 07:53 | |
luqui | everything is slow as hell | 07:54 | |
we're hoping we can optimize later :-/ | |||
r0nny | i hope someone steals a time machine, and rips the final perl6 from the future | 07:55 | |
luqui | well, apparently the parrot backend was pretty fast when it was working (on a very small subset of p6) | ||
r0nny, you can't wait? | |||
:-) | |||
there are better things to do if you can't wait then hope for the impossible | |||
r0nny | the language perl6 really __kicks__ ass | ||
luqui | one is to learn haskell and start hacking | ||
(or even don't learn haskell and hack on nonhaskell parts) | |||
r0nny, thank you. we're all proud. | 07:56 | ||
r0nny | haskell is slow | ||
luqui | faster than perl5 | ||
faster than java. it ain't bad. | 07:57 | ||
r0nny | faster then java is easy ;) | ||
luqui | :-) agreed | ||
r0nny | well - cant beat good c/c++ | ||
luqui | asm can. but that just goes to reflect that fundamental tradeoff | 07:58 | |
you want developer time or program time? | |||
(the tradeoff seems to break down when it comes to java) | |||
(where both times are large) | 07:59 | ||
r0nny | well - actually im writing some c++ libs trading compiler time for programmer time - but dont waste programm time | ||
luqui | a type inferencer? | ||
r0nny | type inferencer ?? - never heard of this | 08:00 | |
luqui | that's one thing I can think of that doesn't waste program time but saves on developer time. But it trades compilation time (which is cheap) | ||
type inferencer looks at your program and fills in all the "int" "MyClass" "vector<foo>", etc. for you | |||
by looking at how you use your variables | |||
r0nny | omg | ||
this sucks | 08:01 | ||
luqui yawns | |||
I think it's time for bed | |||
r0nny | i combine different idoms, to make it allmost impossible to do bugs, if only using the libs | 08:02 | |
luqui | I'll have to look at that | 08:03 | |
r0nny | and with some operator overloading, polimorhism, template mixins and the other fun stuff it is very easy to write complex stuff in less time | ||
the lib is very basic atm | |||
since it will be part of the os i develop | |||
luqui | oh my | ||
Laziness, Impatience, and what? | |||
r0nny | later it will have templates for easy definig of devices, so huge parts of the drivers will write themself | 08:04 | |
luqui | anyway, I got to get to bed | ||
r0nny | n8 then | ||
luqui | night | ||
autrijus | luqui: nice job on L::AG. | 08:19 | |
looks most sane. | |||
Juerd wonders what L::AG is | 08:32 | ||
autrijus | Juerd: useful stuff. | 08:33 | |
pause.cpan.org/incoming/Language-At....04.tar.gz | |||
Juerd | Oh, OS X, how I hate thy awful performance! | ||
Thanks | |||
nothingmuch | aweful performance? | ||
Juerd | pause.cpan.org/incoming/Language-At....04.tar.gz | 08:34 | |
I could learn a foreign language while waiting for the beach ball | |||
Hmm | |||
nothingmuch | ah | ||
not enough ram, perhaps? | |||
dduncan | how much RAM do you have? | ||
I find its good to have a minimum of 512MB ... 768 or a Gig works great | 08:35 | ||
nothingmuch gets that on his laptop after he's opened about 20 terminal windows and 50 browser tabs, and something code goes out of control | |||
dduncan | certainly, if you only have 256M, making Pugs will crawl | ||
nothingmuch | after i kill the memory hungry progam, everything beachballs when swapping back | ||
Juerd | nothingmuch: I have 512 MB. I'm used to getting much better responsiveness out of machines with this amount of memory. | ||
nothingmuch | Juerd: well... the UI comes at a cost =/ | 08:36 | |
you can run KDE/Gnome on it via fink though | |||
dduncan | its not the UI so much | ||
Juerd | Oh, don't worry | ||
nothingmuch | GNU Darwin can get you started | ||
Juerd | This box will know Linux. | ||
nothingmuch | dduncan: that was my best guess... what is it? | ||
Juerd | And the more it'll beach ball, the sooner it will get Linux on it. | ||
dduncan | since Mac OS X 10.2, all that RAM used by the window manager is highly compressed, and hardware accelerated | 08:37 | |
so the issues are more elsewhere | |||
Juerd | In fact, when I'm done watching all movies stored on this hard drive, I'm migrating. | ||
nothingmuch | dduncan: not the graphics buffers... the book keeping data | ||
Juerd | Saves me a whole lot of money too | ||
I had this thing for a few months, and then 10.4 came, with a huge price tage. | |||
dduncan | I'm still using 10.3.9 ... meets my needs | 08:38 | |
Juerd | I hadn't considered the subscription element of proprietary software. I just wasn't used to that anymore. | ||
svnbot6 | r7161 | autrijus++ | * don't "use" String::Multibyte unless we actually use .grapheme | ||
Juerd | dduncan: Well, I want a newer Java, but Apple won't let me have it. | ||
And I hate having to jump through lit hoops to get something working. | |||
dduncan | and that's unique to Mac OS X? | 08:39 | |
nothingmuch thinks Juerd and OSX are not meant to be together | |||
Juerd | dduncan: So far, oh yes. | ||
Perhaps Debian and Ubuntu spoiled me | |||
But yes, I am used to getting much simpler installations and upgrades. | |||
Oh, did I mention that in the lower left corner of my primary workspace, there is part of the window that has been requesting a reboot, since three weeks ago? | 08:40 | ||
It has no close button, and I hate it too much to just kill it. | |||
It has to suffer in the corner. | |||
dduncan | why is that dialog there, requesting reboot? | 08:41 | |
Juerd | The reboot is for non-system upgrades, by the way. | ||
Well, the upgrading software has installed newer software. | |||
dduncan | did it install additions to the OS? | ||
Juerd | Safari, Mail, and iTunes. | ||
All three I can restart without restarting the entire system, thank you, OS X. | |||
But even if it were a system kernel upgrade | 08:42 | ||
nothingmuch | you can subvert that | ||
cmd+opt+esc | |||
Juerd | It would still allow me the choice to collect some uptime. | ||
dduncan | he didn't want to kill it | ||
nothingmuch | btw, softwareupdate from the command line asks you to rebooto manually | ||
Juerd | s/would/should/ | ||
no, MUST. | |||
nothingmuch thinks that it doesn't really matter | 08:43 | ||
because most OSX users are like my mom | |||
they don't know about the fundamental diff between an app and the syste, | |||
and if safari ships a new shlib that everything else must be restarted for, then perhaps rebooting the machine is the simplest choice | 08:44 | ||
dduncan | since those Apps are made by Apple, it is possible that they bundle certain system service updates with the app updates, and/or the apps are composed partly of daemons, hence the restart request ... | ||
Juerd | It should optimize for "most" users | ||
dduncan | however, I haven't seen this when I've updated those apps | ||
nothingmuch | the fundamental issue is that OSX is not meant for people who like control | ||
Juerd | Not cripple other users. | ||
dduncan | I don't recall being asked to restart when upgrading an app, only a system component | ||
nothingmuch | well, too much choices are, at least in apple's opinion, adding unnecessary complexity | ||
Juerd | I have some applications open that I wish to keep open for weeks. | ||
nothingmuch | then you can ignore it | 08:45 | |
if you know what you are doing you can get around it | |||
Juerd | After restarting the system, it takes me at least 20 minutes to get the system back in its current state. | ||
nothingmuch | Juerd: what apps are those? | ||
you can use launchd to get veyr right init.d like behavior | 08:46 | ||
dduncan | according to my current Software Update, the iTunes upgrade does *not* request a restart | ||
nothingmuch | per user or per system | ||
dduncan | however, Quicktime does | ||
and they did appear around the same time | |||
Juerd | nothingmuch: It includes firefox with some tabs, the whole of applications, window arrangement | ||
dduncan | maybe that's what requested the restart | ||
nothingmuch | that's because quicktime is reused in around every app that makes noises or draws pictures | ||
dduncan | yes | ||
Juerd | nothingmuch: Some permanently open IM windows | ||
I don't even know who they all are | 08:47 | ||
But it sure does help me to have them open all the time. | |||
dduncan: It's not a matter of simple requesting | |||
nothingmuch | Juerd: if you like that specific form of stability, then i think you should just refrain from updating.. there's nothing really important in there, I think | ||
Juerd | The window doesn't have a "I'll restart later, but thanks for the heads up" button | ||
Even Microsoft Windows has this. | 08:48 | ||
dduncan | oddly enough, some of them do | ||
nothingmuch | Juerd: the issue is cultural | ||
based on apple's assumptiont hat most people should not be given that choice | |||
svnbot6 | r7162 | autrijus++ | * At suggestion from dons, expose the main "runProgramWith" API | ||
r7162 | autrijus++ | of Pugs so it can turn a Pugs "Val" into anything at all, | |||
r7162 | autrijus++ | particularly something that hIDE or yi would accept, so perl6 | |||
r7162 | autrijus++ | could become a scripting language for them. | |||
Juerd | This is the computer instructing me to do something | ||
That is the wrong way around. | |||
nothingmuch | because it will cause behavior that is unpredictable to them | ||
Juerd | The computer is my slave, I am not its. | ||
nothingmuch | i'm not saying right or wrong, it's just that this is OSX, and it won't change | ||
Juerd | Unpredictable? Hell no, the changes aren't even active until you restart. | 08:49 | |
dduncan | Windows PCs also have a physical button to eject floppy disks etc, so you can easily make them come out while the R/W heads are still working on them, potentially damaging the disk; Apple didn't give that option | ||
nothingmuch | right, but serve users who don't know how things work you need to cut some choices | ||
Juerd | dduncan: That's not a software issue, it's a hardware issue. It has nothing at all to do with either Microsoft or Windows. | ||
dduncan | it had to do with Apple not giving people certain choices, though | 08:50 | |
Juerd | nothingmuch: Then give the dialog a red "close" button, for power users. It doesn't confuse any newbie, but provides me with enough of a hint to know that it'll rid me of this thing. | ||
Anyway | |||
I've had this Apple for half a year now | |||
And it was nice to finally get to know OS X | |||
It's not for me. | |||
It's not even for my grandpa. | 08:51 | ||
dduncan | does your grandpa have Linux too? | ||
nothingmuch | fair enough =) | ||
Juerd | Both me and my digi-analphabetical grandpa are much better off with Ubuntu. | ||
dduncan: Sure. Windows is too hard and complex for him. | |||
The man's 81. | |||
nothingmuch | so what makes OSX bad for him? | ||
Juerd | He must have few choices, and a system that works. | ||
nothingmuch: The way too prominent difference between window and application. | 08:52 | ||
It's hard for some people to grok that if you close a window, the application is still running. | |||
nothingmuch | ah | ||
Juerd | And he finds it hard to predict whether clicking a dock icon will or will not open a new window | ||
This is the same problem, but in a different guise | 08:53 | ||
dduncan | and other people are confused by menu bars for multiple apps being visible at the same time, in their windows | ||
on the Mac, the menu bar shows the front most application all the time | |||
Juerd | Oh, he's just confused by the weird menu bar that is attached to windows semantically, but not visually | ||
dduncan | and there aren't others to confuse them | ||
Juerd | dduncan: The concept of rectangles that serve to delimit windows works really well. | 08:54 | |
nothingmuch | yes and no | ||
these are issues which are completely cultural | |||
Juerd | The MacOS menu bar is outside the window, but part of it. | ||
nothingmuch | there is no point arguing over them | ||
dduncan | often, the same app has multiple windows | ||
Juerd | dduncan: Newbies are single taskers. | ||
All of them are. | |||
People needing simplicity don't have two windows visible at the same time. That's confusing. | 08:55 | ||
integral | sounds like the original Machintosh interface | ||
dduncan | what if they want to compare 2 documents side-by-side? | ||
Juerd | But when they do get multiple windows, not out of choice, it should be damn obvious which widget belongs to which window. | ||
dduncan: They switch, via the task bar, or via expose. | |||
dduncan | integral, not quite | ||
integral | dduncan: they print them both out and use a red pen! or at least my mum does | ||
dduncan | the original Mac OS only had one app running at a time | ||
but any app could always have multiple windows, and the menu bar was separate on the screen | 08:56 | ||
integral | ok, the "multitasking" one after that, each app just used the full screen still | ||
Juerd | My dad mostly dislikes OS X because of its exaggerated font smoothing which he finds ugly... | ||
But then, the guy dislikes Gnome too just because it's ugly | |||
dduncan | that can be turned off | ||
Juerd | dduncan: And then you get no smoothing at all | 08:57 | |
nothingmuch | windows is pretty? ;-) | ||
Juerd | There should be something between the lightest smoothing and it turned off | ||
dduncan | I think smoothing can also be adjusted | ||
Juerd | This something is usually called anti aliassing in other systems | ||
Apple's smoothing is just a blur, it's not actual anti aliasing. | |||
nothingmuch | uh, wtf? | ||
dduncan | oh really? | 08:58 | |
that would seem very unlike them | |||
Juerd | A straight line should not have a half-transparent line along it. | ||
integral | gnome's one's very good at getting that right | ||
Juerd | integral: That's not Gnome's, but X's | ||
dduncan: If you happen to have Terminal.app open right now, with ssh running in it, look at the h | 08:59 | ||
integral | yes, but gnome insists on running on X | ||
dduncan | done | ||
Juerd | dduncan: There's a gray line left of it. It shouldn't be there - it hinders clarity. | ||
The h in the title bar, by the way :) | |||
nothingmuch turns smoothing off for the terminal | |||
dduncan | I can see the grey line in the terminal window itself | 09:00 | |
Juerd | nothingmuch: Yes, it's the title bar, not the terminal | ||
dduncan | where I type it in | ||
nothingmuch | but for everything else it has never made me sad | ||
integral | it's very noticable on the ā in the title | ||
Juerd | nothingmuch: You like beach balls, then? :) | ||
dduncan | now that its running, in the title bar I can see a slight grey on the right side, but its more subtle ... easier to read | 09:01 | |
Juerd | dduncan: Anyway, this is very bad for clarity and contrast. People with bad vision who are beyond what lenses can fix, really do notice these little things more than other people. | ||
dduncan | I have a flat panel display, if that makes any difference | ||
mind you, I always operate at a lower resolution than my screen is capable of, due to *my* poor vision | |||
Juerd | AA is good, "smoothing" (blurring) is not. | ||
dduncan | in this case, 1024 rather than 1280 | ||
on 17" | 09:02 | ||
Juerd | At lower resolution, especially on a flat panel, it's very visible. | ||
Has it never bothered you at all? | |||
dduncan | I can see it, but it doesn't really bother me | ||
Juerd | It bothers me because I know the theory, but isn't really a problem for me | ||
(Like bad spelling) | |||
Anyway | 09:03 | ||
I'm looking forward to installing kubuntu on this machine | |||
I still do like the hardware - a lot. | |||
dduncan | never heard of that one | ||
Juerd | Of what? | ||
dduncan | kubuntu | ||
is the k a typo? | |||
Juerd | No | ||
Ubuntu is ubuntu-base + ubuntu-desktop | |||
svnbot6 | r7163 | autrijus++ | * remove Pugs.External.C at prompt from SyntaxNinja. | ||
Juerd | Kubuntu is ubuntu-base + kubuntu-desktop | ||
dduncan | okay | ||
Juerd | Kubuntu uses KDE, not Gnome. | 09:04 | |
dduncan | so KDE is not a desktop of its own? | ||
how is that different from "kubuntu-desktop"? | |||
Juerd | kubuntu-desktop is a meta-package that depends on the packages that together make up kubuntu | ||
One of these packages is KDE | 09:05 | ||
It doesn't install the full KDE suite, though, because ubuntu, and thus kubuntu, do try to keep things simple and grokkable. | |||
dduncan | so then, "ubuntu-base" by definition does not include a desktop? | ||
Juerd | Indeed | ||
It's the base system | |||
Usable for both workstations and servers | |||
dduncan | I guess that base system only includes a command line | 09:06 | |
Juerd | And for people who don't like meta packages :) | ||
dduncan | with the GUI desktop an optional install for a desktop | ||
Juerd | Well, the default installation for ubuntu is ubuntu-desktop | ||
This is what you get if you don't choose "server" | |||
You can then choose to install kubuntu-desktop, and remove ubuntu-desktop's packages manually | 09:07 | ||
dduncan | would you consider Ubuntu to be the most user-friendly Linux distro? | ||
Juerd | You can also get a Kubuntu cd instead of an Ubuntu cd, and then you get kubuntu-desktop out of the box | ||
Yes, I do | |||
Kubuntu a little less so, but it's nicer to work with if you do know how a computer works. | |||
dduncan | I do prefer a system with a default config that "just works" | 09:08 | |
while I like to program, I do not like to spend time configuring a system | |||
Juerd | So do I | ||
That's why I migrated from Debian to (k)Ubuntu for workstations | 09:09 | ||
I do like to have the option of being in control when I want to quickly do something, though | |||
dduncan | is there a Ubuntu live cd? | ||
Juerd | There is | ||
It even works on macs. | 09:10 | ||
(If you get the ppc one, that is) | |||
dduncan | yes | ||
Juerd | Ubuntu ships free cd's, they are in two-cd cartons: live and installation | ||
dduncan | I'll try to remember the name Ubuntu, should I want to try running a Linux desktop some day | ||
Juerd | These are pressed cd's | ||
It takes a month at least to get them | |||
But you can get 10 or even 100 at a time. | 09:11 | ||
To hand them out to friends. | |||
integral | the linux version of aol... | ||
Juerd | Don't bother trying to get a single one. It's cost ineffective :) | ||
integral: It works well. | |||
dduncan | probably cheaper to download and burn it myself | ||
Juerd | dduncan: Cheaper than free? | ||
integral | Juerd: it does. I use it on a couple of desktops | ||
also dead easy to install for X terminals | |||
Juerd | dduncan: It'll certainly be faster to download and burn it, though :) | ||
dduncan | that's what I mean | 09:12 | |
but are you also saying you can get CDs in the mail at no cost? | |||
Juerd | Yes | ||
dduncan | I thought they always charged for those, to cover pressing and shipping costs to them | ||
Juerd | You get a box with in it, 10 or more cartons | ||
No, it's completely free. | |||
Canonical, the company behind Ubuntu, sponsors it. | |||
dduncan | I see | 09:13 | |
Juerd | That's only for ubuntu, though | ||
dduncan | anyway, its 2:13 am here, so I'm about to nod off | ||
I see | |||
Juerd | Good night | ||
dduncan | and I leaveth ... | 09:14 | |
masak | strings aren't subscriptable by default, are they? | 09:20 | |
svnbot6 | r7164 | autrijus++ | * import dons's Data.FastPackedString, an amazingly fast | ||
r7164 | autrijus++ | string manipulation library. Currently just for PIL.Str, | |||
r7164 | autrijus++ | but thinking about moving it back to Pugs.Val as well. | |||
masak | what kind of overloading would it take to make them subscriptable? | ||
Juerd | masak: Not following current design, but I'd like them to be, .chars-wise. | ||
masak | Juerd: it would certainly help in a char-based algorithm | 09:21 | |
Juerd | masak: class Array { method postcircumfix:<[ ]> ($index) { .chars[$index] } } | ||
Or something like that. | |||
masak | class Array? why? | ||
masak is implementing boyer-moore in p6 right now, for fun | 09:22 | ||
Juerd | It'd be nice if strings would just coerce to arrays as character arrays, and [] provided Array context to its left. | ||
masak: Oh, then ignore me. I'm talking theoretical, have no good overview of what's current, andcertainly have no idea what's actually implemented | 09:23 | ||
masak | Juerd: oki | ||
I'll just try a few things and see what works | |||
there is something to be said for writing things in the normal way, too | |||
QtPlatypus | ?eval ord("A") | 09:26 | |
evalbot_7164 | 65 | ||
Juerd | I think there's mostly something to say for changing the normal way | ||
QtPlatypus | ?eval ord("Z") | 09:27 | |
evalbot_7164 | 90 | ||
QtPlatypus | ?eval ord("a") | ||
evalbot_7164 | 97 | ||
QtPlatypus | ?eval ord("z") | ||
evalbot_7164 | 122 | ||
masak | Juerd: if maintainability is an issue, writing things as normally as possible is very desirable | 09:29 | |
dang, the pseudocode would be trivial to write in p6 if the indexing weren't one-based | 09:35 | ||
which serious language uses one-based indexing nowadays? | |||
masak begins at 0, as god intended | |||
integral | lots of maths... | 09:36 | |
masak | integral: not really, but lots of chances of making an off-by-one mistake | 09:43 | |
integral | not really? | 09:47 | |
Juerd | masak: Sure, but what's normal? | ||
masak: Is normal when the programmer writes what he means in a certain syntax, or is normal when a programmer writes things that don't resemble what he means, but are needed because of the language's limitations? | 09:48 | ||
The simplest example I can give is until/if not | |||
I love that I can choose. | |||
eh | |||
unless/if not | |||
and until/while | |||
I do usually write if not, but I do feel limited in a language that has only if. | 09:49 | ||
qwr | unless not ;) | 10:11 | |
masak | Juerd: I actually agree with you there, and it's one of the places where I feel that damian is being overly strict in his PBP book | 10:13 | |
(he doesn't like unless/until because they tend to be difficult to maintain) | 10:14 | ||
& #lunch | |||
QtPlatypus | ?eval given "T" {when "A" le $_ le "Z" {say "Test"}} | 10:30 | |
evalbot_7164 | undef | ||
QtPlatypus | ?eval given "T" {when "A" ge $_ ge "Z" {say "Test"}} | 10:31 | |
evalbot_7164 | undef | ||
QtPlatypus | ?eval given "T" {when ("A" le $_ le "Z") {say "Test"}} | ||
evalbot_7164 | undef | ||
QtPlatypus | ?eval given "T" {when ("A" le $_ ) {say "Test"}} | 10:32 | |
evalbot_7164 | undef | ||
QtPlatypus | ?eval given "T" {when (1) {say "Test"}} | ||
evalbot_7164 | undef | ||
QtPlatypus | ?eval given "T" {when /T/ {say "Test"}} | ||
evalbot_7164 | Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode) | ||
QtPlatypus | ?eval given "T" {when "T" {say "Test"}} | ||
evalbot_7164 | Test bool::true | ||
Juerd | masak: I still have to read that book | 10:39 | |
It feels weird to be spending money on a style guide though | |||
And I think a style guide without "my" in its title is just wrong. | 10:40 | ||
knewt builds ghc on his new laptop. gonna take a while methinks :) | 10:49 | ||
svnbot6 | r7165 | clkao++ | UTF8.PackedString is no more | 10:50 | |
clkao | oops, that doesnt fix the build | 10:51 | |
wolverian | QtPlatypus, 'when "A" le $_"' means 'if $_ ~~ "A" le $_' which probably doesn't make any sense | 11:28 | |
QtPlatypus nods. | 11:30 | ||
wolverian: Is there anyway to do something like that? | 11:31 | ||
spinclad | ?eval given 't' { when 'a'..'z' { say 'in' }} | 11:40 | |
evalbot_7165 | undef | ||
Juerd | QtPlatypus: when .ge("A"), perhaps | 11:41 | |
spinclad | ?eval $*VERSION | 11:42 | |
evalbot_7165 | \undef | ||
spinclad | ?eval $?VERSION | ||
evalbot_7165 | Error: Undeclared variable: "$?VERSION" | ||
spinclad | .oO (how's that go again?) | 11:43 | |
autrijus | ?eval $?PUGS_VERSION | 11:51 | |
evalbot_7165 | \'Perl6 User\'s Golfing System, version 6.2.9, August 3, 2005 (r7163)' | ||
autrijus | clkao: the build doesn't build for you? | 11:52 | |
spinclad | (didn't build for 7164 either?) | 11:53 | |
G2 | Wow, Autrijus is here. | ||
spinclad | ?eval $?PUGS_VERSION | 11:54 | |
evalbot_7166 | \'Perl6 User\'s Golfing System, version 6.2.9, August 3, 2005 (r7163)' | ||
autrijus | G2: hi. | ||
G2 | autrijus: Hi. This is quite cool. You're famous | 11:55 | |
G2 ends suck up | |||
autrijus | er. hi. thanks. | ||
G2 | autrijus: nevermind. I just love the community, being able to say hi to the top people | 11:56 | |
svnbot6 | r7166 | autrijus++ | * Merged Data.FastPackedString with Simon Marlow's FPS API. | ||
r7167 | autrijus++ | * Fix build by supressing DrIFT.Binary's instance for PackedString | |||
autrijus | G2: thanks :) it's indeed a lovely place, this channel | ||
G2 | autrijus: Aye. On PM, you get to speak to Merlyn, Larry and all the other greats. Anyway, I'll leave you to do your thing. Keep up the great work (from ghenry on perlmonks.org - perlmonks.org/?node_id=386673) | 11:57 | |
Jooon | G2: I usually just hang around and say "oooh" and "aaah" when I see something cool, which happens a lot :) | ||
G2 | Jooon: I know. It's very cool. | 11:58 | |
Off for lunch. Catch you guys later. | |||
nothingmuch struggles with extern, c headers, and name mangling | |||
autrijus | nothingmuch: for $job or blondie or something else? | ||
nothingmuch | $job | 11:59 | |
autrijus | nod | ||
nothingmuch spent the weekend doing charity sysadmining | |||
indirectly | |||
fixed up a catalyst site for a friend and wasted lots of time getting it to actually run | |||
but Blondie is going to be top priority soon | |||
i have big plans for the type inferrencing stuff | |||
spinclad deeply enjoyed backlogging the MM2 work tod^Wyesterday | |||
nothingmuch | spinclad: anything specific? | 12:00 | |
spinclad | no, just... being here when it got hammered out. \camels++ | 12:01 | |
been looking forward to it for a while, just bystanding | 12:03 | ||
nothingmuch | ah | 12:05 | |
spinclad | nm: do you have any interest in CPS-transformations in Blondie? such as would let you define both map and for in root terms... | 12:13 | |
svnbot6 | r7168 | autrijus++ | * oops, wrong linking. | ||
spinclad | ?eval $?PUGS_VERSION | 12:15 | |
evalbot_7167 | \'Perl6 User\'s Golfing System, version 6.2.9, August 3, 2005 (r7163)' | ||
spinclad | ?eval $?PUGS_VERSION | 12:16 | |
evalbot_7168 | \'Perl6 User\'s Golfing System, version 6.2.9, August 3, 2005 (r7163)' | ||
spinclad | heh | ||
do we know the evalbot's really running a new-build pugs? | |||
s/build/built/ | 12:17 | ||
autrijus | disagreement would mean the build failed | ||
nothingmuch | not necessarily | ||
sometimes i think that doc fixes etc would not cause a rebuild, no? | |||
autrijus | true... | ||
nothingmuch | spinclad: yes, i'm going to do CPS tranformations in Blondie | 12:18 | |
eventually i hope Blondie becomes somewhat like schemee | |||
spinclad | should still make a new pugs_version.h, and so a new pugs | ||
nothingmuch | hmm... good point | ||
spinclad | that would be most tasty | ||
nothingmuch | ... but with perlish semantics WRT pluggable runtimes and typing, and so forth | 12:19 | |
i have some pretty funky ideas about macro processing | |||
where every macro is just a normal function | 12:20 | ||
except that it's type signature is AST -> ... -> AST | |||
so they can be defined in terms of higher order functions | |||
whenever the Macro node happens at compile time, the invocant function is compiled, and it gets it's uncompiled parameters as ASTs | |||
and then the return value is compiled in place of the Macro | 12:21 | ||
but this is slightly special casey | |||
what I would really like is an Immediate node | |||
and a Delayed node. | |||
as well as compile and apply nodes | 12:22 | ||
spinclad notes a schemish front-end as a possible TODO | 12:24 | ||
spinclad works on his tuit supply | 12:25 | ||
autrijus | spinclad++ # tuit boost | 12:27 | |
spinclad | thanks, that helps | 12:28 | |
wolverian | QtPlatypus, you could just use 'if' | ||
QtPlatypus | wolverian: I have. It ends up being a big ugly 6 line if {...} elsif {...} else {...} thingy | 12:46 | |
Juerd | QtPlatypus: when condition ?? $_ :: "\0" { ... } ;) | 12:51 | |
eh | |||
QtPlatypus: when condition ?? $_ !! "\0" { ... } ;) | |||
wolverian | oh, well. why isn't when "a".."z" working, anyway? :) | 12:54 | |
Juerd | ?eval "a".."z" | 12:56 | |
evalbot_7168 | ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z') | ||
Juerd | ?eval "b" ~~ ("a".."z") | ||
evalbot_7168 | bool::false | ||
Juerd | Because it's broken :) | ||
wolverian | right. :) | ||
Juerd | ?eval 3 ~~ (1..9) | ||
evalbot_7168 | bool::false | ||
wolverian | ?eval 3 ~~ [1..9] | ||
evalbot_7168 | bool::false | ||
Juerd | ?eval [1..9] ~~ 3 | ||
evalbot_7168 | bool::false | ||
wolverian | ?eval (1..9) ~~ 3 | 12:58 | |
evalbot_7168 | bool::false | ||
wolverian | hm. where is &infix:<~~> defined? | 12:59 | |
icyvapor | anyone know about processing large-scale dataset using perl? | 13:06 | |
integral | using perl6? | 13:07 | |
nnunley | Junctions. | ||
integral | LINQ in c#, maybe | ||
autrijus | icyvapor: which shape of data? | ||
icyvapor | how can I check whether I'm using perl6 | 13:08 | |
flat text files | |||
nnunley | icyvapor: Unless you install perl 6, it's unlikely that you would be using it by accident. | ||
icyvapor | :) then I'm not, the perl I'm using comes with linux | 13:09 | |
integral | icyvapor: well this channel, as indicated by the name, is specifically for perl6, Perl 6 and related bits | ||
nothingmuch | booya | ||
integral | there's #perl, #perlhelp, #perlcafe, ##perl, etc for more general stuff | 13:10 | |
nothingmuch had to make ufc_crypt from glibc compile on windows since CryptAcquireContext is so nice | |||
icyvapor | ok, thanks a lot guys | 13:12 | |
wolverian | nothingmuch, what is that? | ||
nothingmuch | wolverian: on windows to do the normal crypt() style hashing you need to do some pretty weird stuff | ||
namely be logged in with permissions that allow you to get a handle to a remote object in a secured process | 13:13 | ||
via CryptAcquireContext | |||
makes sense, doesn't it? =( | |||
anyway, since there are many ways of instantiating it, and more ways in which it could fail, and we had yet another scenario where it doesn't work | |||
i just integrated a plain C implementation | |||
wolverian | nothingmuch, I .. uh .. that fits my theme of browsing we.hates-software.com today :) | 13:16 | |
nothingmuch | wolverian: anything specific? | 13:19 | |
btw, this is the second time CryptAcquireContetxt has pissed me off | |||
the last time it couldn't compute a crypt of a password because the session i was logged in through (cygwin ssh server) was not interactive | |||
we now have if (!CryptAcquireContext(...)) three times with different args | 13:20 | ||
wolverian | nothingmuch, just taking a break from being serious | 13:21 | |
nothingmuch | ah | ||
so how do you post to there? | |||
huh... /me didn't even notice itunes changed look again | 13:24 | ||
wolverian | nothingmuch, hates-software.com/ | 13:29 | |
nothingmuch | yeah, i found out by now ;-) | ||
nothingmuch suspects he will be a regular poster | |||
wolverian | :) | 13:30 | |
autrijus | mm this ongoing talk is going to make iblech happy | 13:36 | |
nothingmuch | how come? | 13:37 | |
autrijus | a new way to implement first class continuations on utterly uncooperating VMs | ||
nothingmuch | ah | ||
brief us? | |||
autrijus | compile away continuations into stack inspection primitives. | 13:38 | |
starting from ANF | |||
the URL is: | 13:39 | ||
www.cs.brown.edu/~sk/Publications/P...tack-insp/ | |||
nothingmuch | that sounds a bit like continuations in C on the c2 wiki | ||
basically it changes the base and stack pointers to point at a different stack each time | 13:40 | ||
and it can swap these | |||
nothingmuch wishes he was next to autrijus right now | 13:42 | ||
the talks sound so interesting | |||
autrijus | it is! | ||
nothingmuch is pissed | 13:45 | ||
beyahad.info is responding like crap because it can't write to an old template cache file | |||
Petal is so stupid about these things... It's a really nice language for when the template is very simple | 13:46 | ||
but the implementation is just not good enough | |||
nothingmuch will prolly have to switch to TT soon | |||
xinming_Beijing | autrijus: hmm, May I know what does class continuation mean please? | 13:48 | |
autrijus | xinming_Beijing: "first-class" continuation | 13:49 | |
first-class means you can pass it around as a value | |||
so his insight is basically that a disciplined use of try/catch can implement ANF-plus-continuation-marks | |||
which is then proved to be rich enough to carry full call/cc | 13:50 | ||
it's quite nice, complete with working implementation targetting C# | |||
xinming_Beijing | autrijus: hmmm, So, does it mean. The class will act as a object automatically? | 13:53 | |
autrijus | his paper mentions Parrot :) | ||
xinming_Beijing | hmm... | ||
autrijus | "Parrot went to great length to become CPS based, but we proved that normal error-handling would serve their purpose just as well" | 13:54 | |
xinming_Beijing: er, no, it has nothing to do with class and objects | |||
xinming_Beijing: this is about continuations. think of the dump() functions. | 13:55 | ||
if you can put dump()'s result into a variable, _without_ stopping the program | |||
and you can resume from that variable later | |||
then you get first-class continuations | |||
so this technique is as good as CPS, but does not rely on tail calls or trampolines | 13:57 | ||
so it should fit well with javascript | |||
integral | and perl5? | 13:58 | |
xinming_Beijing | hmm, So, In my understanding. It makes the snapshot of a "function" or a object into a variable. And you can use this "variable" later, right? | ||
autrijus | integral: I don't know how good eval{} and die" is in term of performance | ||
xinming_Beijing: no, read "perldoc -f dump" :) | |||
xinming_Beijing | autrijus: So, Does this mean, We can hibernate the program, And run in that state again soon. | 13:59 | |
autrijus: Ok, | |||
autrijus | yup | ||
integral | there's labelled blocks and last too | ||
autrijus | it's exactly like hibernation. | ||
integral: can't use that in interaction with normal perl5 | |||
hm, wait, maybe we can | 14:00 | ||
integral | oh, not without a shim layer, but you're using the metamodel stuff anyway, so lots of stuff doesn't look normal anyway... | ||
autrijus | right exactly | ||
and | |||
xinming_Beijing | Oh, This idea will make well-written perl 6 program fastest without close... >_< | ||
autrijus | FOO: { ... call_complex_ffi(sub { last FOO }) } | ||
this in p5 will dtrt? | |||
integral | oh, no it won't | ||
autrijus | no? | ||
"last-outside-sub" | 14:01 | ||
integral | the FOO is searched in the dynamic scope at the time the last is executed | ||
autrijus | really. | ||
integral | sorry, I think I assumed the wrong question | ||
xinming_Beijing | autrijus: Ok, I think I know that idea now... | ||
autrijus | integral: it worksforme. | 14:02 | |
xinming_Beijing | autrijus FOO: { ... call_complex_ffi(sub { last FOO }) } | ||
is this example for me? | |||
integral | autrijus: I don't quite understand what the WTRT is wrt to though. Capturing the stack when the closure is created? last across a Perl->XS->Perl callback? | ||
autrijus | the speaker notes no prior art on trampolining or cps+try/catch on javascript vms | 14:04 | |
xinming_Beijing: no, that was for integral | |||
integral & | 14:06 | ||
nothingmuch | autrijus: help... | 14:07 | |
"the relation |-->* is the reflexive transitive closure of the transition function" | 14:08 | ||
what does that mean? | |||
autrijus | closure means the return value can be used again as the argument | 14:10 | |
transitive means that if a|->*b and b|->*c then a |->*c | |||
reflexive means that forall a. a|->*a | 14:11 | ||
does that help? | |||
nothingmuch | somewhat | ||
nothingmuch will try to compile | 14:12 | ||
wolverian | what is the transition function? | ||
:) | |||
autrijus | wolverian: turing machine, apparently | 14:13 | |
nothingmuch | CEK machine | 14:14 | |
research.compaq.com/SRC/personal/fl.../pldi93.ps | 14:15 | ||
wolverian | autrijus, oh. | 14:16 | |
nothingmuch, ah. | |||
nothingmuch wonders if you can take a course on reading mathy articles | 14:20 | ||
nothingmuch wants to be a certified lambdexic | 14:21 | ||
lambdlexic, sorry | |||
so what does "the relation" is the <adjectives> closure of the translation function mean"? | 14:22 | ||
beh, quoting bugs | |||
a relation is a closure of a function | 14:23 | ||
closure means an ad-noun describing a property of the function | |||
autrijus: help more | 14:24 | ||
;-) | |||
fglock | how about "the set of things that can be both arguments or results of the function" (is this correct?) | 14:25 | |
nothingmuch | hmm, that is begining to make sense | ||
autrijus | mm after this talk the all-exciting icfp contest result will be revealed | 14:26 | |
nothingmuch | the robots contest? | 14:28 | |
autrijus | yeah | ||
nothingmuch | sounds fun | ||
autrijus | one wonders which language will win this year... not perl6, that we are sure | 14:29 | |
acme played in it iirc | |||
with perl5 | |||
nothingmuch | atomic { nothingmuch.tuits += acme.tuits; acme.tuits = 0 }; | ||
AG made me think a bit | 14:30 | ||
lots of things in perl 6 are hard to compile | |||
atomic { } requires that everything is stmish | |||
eval makes things tough | |||
etc etc | |||
what if blocks were attributing through callgraphs | |||
e.g. atomic { } adds an attribute to all assignments that can be called from it | 14:31 | ||
assignment adds the attribute to all lvalues | |||
SSA Phi compression of lvalues allows to determine which containers need logging and which ones are never shared | |||
nothingmuch will try to add leverage Language::AttributeGrammar in Blondie to make such conversions possible | 14:32 | ||
compute how little work can be done for a given program | |||
aha... our compsci guru explained it to me | 14:37 | ||
kolibrie | Juerd: I didn't quite grasp the full meaning of: K vnd grtz n btj mljk t lzn, n d z mt ntrljk n s zjn | 14:40 | |
Ik vnd grtz een beetje moeilijk te lezen, ... | |||
nothingmuch | is that dutch with no vowels? | 14:41 | |
kolibrie | believe so | ||
except for the grtz, which is a quote from an e-amil | 14:42 | ||
mauke | hmm, "mljk t lzn" could be "possible to read" | ||
kolibrie | oh, I can translate from dutch to english, I want the rest of the dutch | 14:43 | |
"I find grtz a little difficult to read, ..." | |||
mauke | oops, didn't see your second line :-) | ||
Juerd | kolibrie: en die z moet natuurlijk een s zijn | 15:18 | |
autrijus | judges's prize: dylan hackers | 15:24 | |
3rd: Combat Tantalin (haskell) | 15:26 | ||
2nd same as judge's prize | |||
kolibrie | Juerd: ah, thank you | ||
autrijus | the dylan hackers are giving the audience an overview of the language | 15:28 | |
acme__ | pesky lack of winning | 15:31 | |
autrijus | 1st prize: Wolfgang Thaller et al, Haskell, two years running | ||
clkao | poor team orange | ||
acme__ | they didn't use my much-prettier-maps | 15:32 | |
eg icfpc.cs.uchicago.edu/reg/026/robber/ vs astray.com/icfp/game/robber_vs_rand...k_wutka/10 | 15:37 | ||
stevan | dylan++ # very cool language | 15:43 | |
good morning boys and girls | |||
fglock | hi stevan | 15:54 | |
stevan | hey fglock | 15:55 | |
nothingmuch doesn't get a greeting? | 15:57 | ||
fglock | hi nothingmuch! | 15:58 | |
stevan | hi nothingmuch | ||
nothingmuch | and I thought you didn't love me for a second there ;-) | ||
stevan | nothingmuch: I will never stop loving you ;) | ||
nothingmuch | stevan: to prove it want to fly me to euro-oscon? | ||
stevan was messing around with lambda calc till very late last night | 15:59 | ||
nothingmuch: I suggest you start walking now,.. you might make it | |||
stevan would love to go to EURO-OSCON too | |||
nothingmuch | yep... the lebanese/syrian boundry is no problem what so ever | ||
s/boundry/border/ | 16:00 | ||
stevan | you could pass | ||
with your accent | |||
nothingmuch | hehe | ||
also, amsterdam is pretty far away | 16:01 | ||
20 days is not much | |||
stevan | bike then | ||
nothingmuch | i could possibly bike there | ||
yeah | |||
mshiltonj | is there a place i can find info on the status of perl6 rfc 89 -- dev.perl.org/perl6/rfc/89.html -- if it is being implemented, etc. | 16:02 | |
stevan | take gaal with you and you can cut throught he turkish mountains | ||
nothingmuch | mshiltonj: i doubt you'll find a formal status | ||
the de facto situation on typing is pretty advanced though | |||
(not as advanced as it's going to be but we do have some things) | 16:03 | ||
but the rfc itself seems pretty far from what will eventually get implemented | |||
mshiltonj | k. but data typing of some sort will be there? | 16:04 | |
nothingmuch | yes | ||
i'm off to dinner | |||
mshiltonj | cool beans. thanks. | ||
nothingmuch | but i can explain a bit later if you like | ||
kolibrie | stevan: If nothingmuch and gaal bike to EuroOSCON, could we bike too? | ||
fglock | mshiltonj: rfc 089 was rejected (A04) | 16:07 | |
mshiltonj | didn't know that. I'm interested in whether or not there will be data typing in perl6. If it's in perl, the specific implementation can vary. | 16:11 | |
fglock | mshiltonj: see the second half of S06 - it's about the Type system | 16:17 | |
stevan | kolibrie: we would need to swim a little too :) | 16:22 | |
nothingmuch | evening | 16:30 | |
mshiltonj | fglock: thanks! | 16:32 | |
fglock | np | 16:36 | |
svnbot6 | r7169 | autrijus++ | * first step at cabalizing Pugs -- first try at PIL (which works) | 16:38 | |
nothingmuch | cabalizing? | ||
autrijus | nothingmuch: the eqv of M::B in Hs | ||
enables libPugs.a | |||
which means much easier linking | |||
nothingmuch | ah | ||
autrijus | nonbroken pugscc | ||
and perl6 scripting for all hs programs | 16:39 | ||
nothingmuch | sounds fun | 16:52 | |
gaal | hola | 16:54 | |
Limbic_Region | kumusta ma na? | 16:55 | |
err kumusta ka na even | |||
gaal | Limbic_Region: what language is that? :) | 16:56 | |
fglock | Limbic_Region: Magandang hapon | 17:03 | |
nothingmuch | autrijus: how much effort do you estimate Inline::GHC will take? | 17:04 | |
Limbic_Region | gaal - tagalog | 17:06 | |
and good localtime to you too fglock | 17:07 | ||
gaal | autrijus: do we have some sort of equivalent to p5's PL_compiling / PL_curcop? | 17:29 | |
geoffb fades in | 17:35 | ||
autrijus, ETOOMUCHCOMPRESSION: the eqv of M::B in Hs | |||
integral | the equivalent of Module::Build in Haskell. | ||
geoffb | Equivalent and Haskell decompressed, but M::B wasn't in the dictionary window | ||
integral, thanks | |||
.oO( Man, it is *so* nice to see multiple commits per day from autrijus again ) |
17:36 | ||
stevan agrees very much with geoffb | 17:38 | ||
geoffb | (leased laptops)-- | ||
Limbic_Region | s/very much/vehemently/ | 17:39 | |
geoffb | tea++ | 17:43 | |
Life is just better with a warm cup of tea. | |||
17:44
DesreveR is now known as r0nny
|
|||
nothingmuch | luqui: ping | 17:57 | |
did luqui ever mention if L::AG has a public repo somewhere? | 18:08 | ||
Limbic_Region | L::AG ? | 18:28 | |
is that the module he just released? | |||
ah yes, Language::AttributeGrammar | 18:30 | ||
kgftr|konobi | stevan: does metamodel also help describe relationships between objects or just the objects and their structures? | 18:33 | |
stevan | kgftr|konobi: it is the object model itself,.. which is both | 18:34 | |
kgftr|konobi | stevan: hhhmmm... k | 18:52 | |
would that include things like data inheritance? | |||
stevan | yes sir | 18:53 | |
kgftr|konobi: there is a MM version of Test::Buidler in the ext/ directory (under perl5/Perl6-MetaModel2.0/ | 18:54 | ||
kgftr|konobi | =0o | ||
stevan | it is kind of ugly, but it demonstrates all the functionality needed by Test::Builder | ||
kgftr|konobi | then i'll wrap MetaModel with Data::Model to then wrap Class::DBI/Tangram/DBIx::Class objects | 18:55 | |
stevan | LOL | ||
uhm | 18:56 | ||
I wouldnt suggest it with this metamodel | |||
it is optimized for theoretical correctness | |||
so it is largely unusable from any other p5 apps | |||
however, I am planning to make a p5 usable version of it in the very near future | 18:57 | ||
cause after this,.. I have no desire at all to return to the p5 OO world | |||
Limbic_Region | out of curiosity stevan | 18:58 | |
kgftr|konobi | =0o | ||
stevan give Limbic_Region some of his curiosity | |||
Limbic_Region | using MM Objects in p5 will be how easy | ||
package Some::Object; | |||
stevan | Limbic_Region: not sure yet | ||
Limbic_Region | use Meta::Model; | ||
and then ? | |||
oh - well, nevermind then | 18:59 | ||
I will wait until you are finished | |||
stevan | Limbic_Region: I would like to make it as simple as possble | ||
Limbic_Region: see Class::C3 for an example | |||
Limbic_Region | salutations buu | ||
stevan | that swaps the normal method dispatch for C3 | ||
Limbic_Region | stevan - I am weeks, if not months away from needing it | ||
stevan | its kind of hackish,.. but it is totally transparent | 19:00 | |
kgftr|konobi | stevan: we'll need to have a chat at some point... to avoid duplicating efforts... but need to wait for me to get my mac | ||
stevan | which is what I would like the meta-model to be | ||
kgftr|konobi: what are you doing? | |||
Limbic_Region | stevan - I have only pedagogal needs ATM - when I am at the point of discussing OO and how it got shoehorned into p5, I would like to be able to point to an alternative ;-) | 19:03 | |
kgftr|konobi | stevan: providing standard interfaces and model descriptions for both persistent objects, etc and realtime objects, etc. | ||
but in p5 | |||
kgftr|konobi ducks | |||
stevan | nice # both of you guys | ||
kgftr|konobi | should help me a bit more to make objects of different types to be more interoperable | 19:04 | |
19:44
buu_ is now known as buu
|
|||
svnbot6 | r7170 | stevan++ | just need to commit this for the other changes to work ... | 20:03 | |
r7171 | stevan++ | Perl6::MetaModel 2.0 - | 20:08 | ||
r7171 | stevan++ | * over 50% speedup from optimizing chaos.pl, old chaos.pl moved | |||
r7171 | stevan++ | to chaos_unoptimized.pl for reference | |||
autrijus | greetings | 20:18 | |
Limbic_Region | salutations | ||
stevan | hey autrijus | ||
Limbic_Region | stevan - did that speed increase also lead to clarity in the code? | 20:19 | |
stevan | Limbic_Region: LOL | ||
a severe decrease in fact | |||
Limbic_Region | I wasn't trying to be facetious | ||
stevan | there are several functions which are called for each and every method call,.. | ||
autrijus | if it becomes clearer, _unoptimized.pl wouldn't be there :) | 20:20 | |
Limbic_Region | typically huge speed ups cause readability to change in either direction - or at least it has been my experience | ||
stevan | I optmized those to the point of unreadablility in some cases :) | ||
Limbic_Region | it either gets more readable because the crap has been removed and the elegance remains | ||
stevan | my personal favorite is WALKMETH | ||
I will nopaste the change so you can see | |||
Limbic_Region | or it gets fugly because the elegant solution just doesn't have what it takes to be fast | 20:21 | |
gaal | golf physics, 100 years ago today: www.fourmilab.ch/etexts/einstein/E_mc2/www/ | ||
(sorry, completely off topic, but hey.) | |||
pasteling | "stevan" at 67.186.136.119 pasted "changes in WALKMETH" (25 lines, 770B) at sial.org/pbot/13333 | 20:22 | |
stevan | Limbic_Region: as you can see,.. the optimized version is difficult to read at best | ||
but that one alone was worth about 30% | 20:23 | ||
so it was worth it | |||
Limbic_Region | yeah | ||
but a lines of comment could make it just as readable and fast | |||
autrijus | ...for some reason the optimized one is easier to read to me | ||
right, what Limbic_Region said. | |||
Limbic_Region | I was thinking it actually became obfusucated | ||
gaal | autrijus, i'm unsure about where to carry pragma list state in the parser | ||
autrijus | gaal: where else then? | 20:24 | |
in Env as $* ? | |||
gaal | heh, no, i meant where in the parser to put it :) | ||
stevan | Limbic_Region: the worst obsfucations in it are when I avoid unpacking sub parameters and use the @_ index | ||
you would be supprised how much that shaves off if you do it enough | |||
svnbot6 | r7172 | stevan++ | Perl6::MetaModel 2.0 - | 20:25 | |
r7172 | stevan++ | * fixing the mutli-methods test | |||
stevan | that and some of the if/else statements were converted to boolean expressions | ||
Limbic_Region | stevan - I wasn't talking about your particular optimization - just optimizations in general that lead to less readability - they become unreadable | ||
in your case it is easy to read | |||
gaal | the c patch does something i thought i grokked but now i think i don't, puts the list on the current cop; when a scope ends you automagically get the head pointer that was there just before the scope started | ||
Limbic_Region | but not necessarily easy to understand | ||
adding the comments achieves both | |||
stevan | Limbic_Region: very true | ||
gaal | there's absolutely no code that handles that explictly, that's beautiful | ||
i don't think we have an analogous structure though (so we?) | 20:26 | ||
autrijus | gaal: cop? | ||
cop would just be annotation nodes. | |||
but you are thinking of scope markers | |||
and those would be Stmt boundaries I think | |||
I have no problem of extending Stmts type | 20:27 | ||
so you can write between the lines | |||
so to speak | |||
that will also get us goto LINE: support. | |||
gaal grins | |||
autrijus | Stmts Cop Exp Exp | ||
not neccessarly with the Cop name | |||
but you get the idea. | |||
gaal | not quite sure that i do yet :/ | 20:28 | |
autrijus | oh ok... the idea is that Stmts are cons for statements | ||
gaal | when i constuct a Stmts Exp, I need to copy the Cop from the last one. | ||
autrijus | Stmts exp1 (Stmts exp2 (Stmts exp3 Noop)) | ||
now we regulate that Cop are cumulative | 20:29 | ||
gaal | that part i do get | ||
oh | |||
autrijus | Stmts cop1 exp1 (Stmts cop2 exp2 (...)) | ||
Limbic_Region notes the time and heads homewards | |||
autrijus | exp2 gets (cop2 . cop1) | ||
gaal | that point i *don't* :) | ||
Limbic_Region | stevan++ # good work | ||
autrijus | makes some sort of sense? | ||
gaal | where Cop is something like MkCop { Label :: String, Pragmas :: [Pragma], ... } ? | 20:30 | |
why does it need to be cumulative? | 20:31 | ||
and, how does that get us scopy behavior? | |||
autrijus | it doesn't, to think about it. we can share structure | ||
scope is easy; any Stmts cons belong to the same scope | 20:32 | ||
gaal | for lex prags, we do indeed share structure, as the list is immutable once installed; and *as* it's being installed it only gets prepended to. | ||
autrijus | because under scope boundary it will be wrapped in a App's body | ||
gaal | (if that's what you mean by share structure) | ||
autrijus | yes that's what I mean. | 20:33 | |
so it's just a ponter to a common heap pointer | |||
{ 1; { 2 } } | |||
the 2 is inside a App | |||
of sub{2} | |||
so we can easily see scope boundary | |||
gaal | ..so how do i know the latest value of the pragma list when i am consuming 2? | 20:34 | |
autrijus | you ask your outer | ||
aka envOuter | |||
hm, bad idea | 20:35 | ||
thinking | |||
gaal | it's not in the env... | ||
autrijus | I think it need to by in env. | ||
envCop | |||
gaal | okay, so every Stmt constructed puts its Pragmas in envCop? yes, that is kinda analogous to p5 | 20:37 | |
autrijus | yeah, but that leaves us wondering why not just do it in VCode | ||
ah, because of middle-of-scope starting points | |||
so Stmts boundary is probably the way to go. | 20:38 | ||
gaal | so the cop carryover should probably go in ruleBlockBody? | 20:39 | |
autrijus | right, that looks very sensible | ||
but I'm not sure "cop" is a good name. | |||
gaal | Ann? | ||
autrijus | perhaps just "label" or "ann" or "pragmas" | 20:40 | |
depending on whethe we treat pragma as a kind of label | |||
or a label a kind of a pragma | |||
or neither as either and call it ann | |||
gaal | though you previously mentioned maybe "ann" for unifying Cxt and Pos | ||
:-) | |||
autrijus | indeed. so maybe Label? | ||
gaal | Desc? :) | ||
autrijus | your choice. :) Desc is oka | 20:41 | |
y | |||
gaal | okay, Label first and if I think of something better I'll change it. | ||
autrijus | nothingmuch: re Inline::GHC, I think with the new libGHC stuff it'd be downright trivial | 20:42 | |
sadly it's GHC 6.6, still 3 months away | |||
happily we're not in any particular rush for that. | |||
clkao | agent tang, i was trying to play with pil-run, but it seemed slow and not evening running "say 'ok'" | 20:43 | |
autrijus | I think you are in the middle of mm2 switch. | 20:44 | |
the version 36 hours ago should work much better :) | |||
clkao: | 20:45 | ||
$ ./pugs -BPerl5 -e'say "ok"' | |||
ok | |||
workedforme actually | |||
gaal | my fridge just croaked. | ||
autrijus | wow. | ||
gaal | too bad, i made a big food purchase two days ago :( | 20:46 | |
clkao | autrijus: it works now, you still have account on my laptop haven't you :) | 20:48 | |
autrijus | I see | 20:49 | |
svnbot6 | r7173 | rafl++ | * Fixed shebang for examples/irclog.html.p6 | 21:00 | |
clkao | 0/win21 | 21:01 | |
svnbot6 | r7174 | rafl++ | * Fixed shebang for ext/Algorithm-TokenBucket/t/test.t. | 21:05 | |
gaal | if we now have Stmts Label Exp Exp, how to tweak mergeStmts not to lose label information? | 21:08 | |
or should the envLabel-writing be done there? | 21:09 | ||
zzzZZZZ & | 21:13 | ||
putter | stevan: it looks like use Perl6::MetaModel; print eval("my \$Foo = \$::Class->new('\$.name'=>'Foo'); \$Foo->superclasses([ \$::Object ]); \$Foo->new();"); is still printing #<AnonClass=(9)>, which seems unlikely to be correct. Any thoughts? | 21:28 | |
08_multi_methods.t is now all ok. :) | 21:34 | ||
my, that _is_ sprightly. stevan++ | 21:38 | ||
Current performance should be fine for the indefinite future. Thanks stevan. | 21:40 | ||
geoffb | I take it the improvement was better than the 50% he claimed? | 21:41 | |
putter | hopefully I'll be able to spend an hour or so this evening (t+5hr) debugging pilrun on mm2. | 21:42 | |
geoffb: not sure. subjective impression is yes. but you know how reliable those are. | |||
geoffb | nodnod | ||
putter | ok. cheers & | 21:44 | |
geoffb | cheers | ||
svnbot6 | r7175 | fglock++ | * perl5/List - 'a'..'zzz' is now supported | 21:54 | |
buu | Yay! | 21:57 | |
Now what about "b"-- | |||
geoffb | It's Perl 5, buu, go crazy. :-) | 21:58 | |
fglock | buu: "b" is a constant, but $a="b"; $a-- should work (it doesn't, currently) | 21:59 | |
svnbot6 | r7176 | fglock++ | * perl5/Value - log update | ||
r7177 | fglock++ | * pil-run - fixed $a++ and $a-- when $a is a Str | 22:05 | ||
r7178 | fglock++ | * pil-run - fixed prefix "++" and "--". | 22:11 | ||
r7178 | fglock++ | - postfix "++" and "--" are broken - need Scalar.clone() to work properly | |||
r7179 | fglock++ | * pil-run - added very basic support for Junctions | 22:47 | ||
r7179 | fglock++ | - pil-run try to stringify Junction as a number (which is wrong) |