»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by wolfe.freenode.net on 30 October 2009.
00:02 payload joined 00:05 arthur-_ joined 00:08 thowe left 00:10 hercynium joined 00:20 smash_ left, Exodist left
diakopter an article. terrychay.com/article/1500-lines-of-code.shtml 00:25
Juerd 1500 lines of code a day. I don't think I've ever wrote that much in a single day :) 00:35
diakopter the only language in which I've ever done that was JavaScript. But there was a decent amount of copy-and-paste code "reuse". :) 00:36
s1n pmichaud: don't forget, dallas.p6m 00:37
diakopter and only once. back when my brain worked.
s1n it's easy to churn out well over 1500 a day in c++ :)
Juerd You copy-paste-reused even though your brain was fully functional at the time? :)
diakopter it wasn't fully functional, just barely working. That's my story and I'm sticking to it. 00:39
Juerd :)
diakopter decommuting& 00:40
s1n that is _one_long_post_ 00:41
00:46 arthur-_ left, blubblub joined, mikehh left
ash_ counting the lines of code you right a day doesn't seem like the most productive use of your time 00:48
espcially considering how much or how little you can put on 1 line 00:49
cotto_work you could try to count tokens 00:51
ash_ it still doesn't prevent you from inflating the statistic though 00:53
i could say my $a = 5; or i could say my $a = 1; $a = $a + 1; $a = $a + 1; $a = $a + 1; $a = $a + 1; 00:54
cotto_work It's a slightly less naive way of solving the wrong problem.
sjohnson i count all the cool stuff i do in one day with perl
01:01 blubblub left 01:08 simcop2387 left 01:10 punkish joined, simcop2387 joined
frew pmichaud: we need you! 01:10
punkish hi all... a n00b question. Is it really necessary to have perl Configure.pl --gen-parrot use https with svn to download the code? My small desire to try out Perl 6 on my Macbook is turning into a long exercise in installing SVN with SSL 01:11
01:13 ashizawa joined 01:15 lestrrat is now known as lest_away 01:19 ashizawa left 01:20 rgrau` left 01:21 punkish left, ashizawa joined 01:31 agentzh joined 01:48 alester left 01:51 Meldrake joined 01:57 Exodist joined 01:58 punkish joined 02:00 punkish left 02:02 Meldrake left 02:04 lest_away is now known as lestrrat 02:13 hercynium left, gbacon left 02:18 orafu left 02:19 orafu joined 02:22 drbean left 02:30 arthur-_ joined 02:32 ShaneC left 02:33 drbean joined 02:38 nihiliad joined 02:40 JimmyZ joined 03:03 cdarroch left 03:20 cognominal joined
cognominal rakudo: my $o = 'hello'; say substr $o, 1, 1, 'i' 03:20
p6eval rakudo 3867ff: too many positional arguments: 4 passed, 4 expected␤in Main (file <unknown>, line <unknown>)␤ 03:21
cognominal ng: my $o = 'hello'; substr $o, 1, 1, 'i'
p6eval ng 93d662: No applicable candidates found to dispatch to for 'substr'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
03:27 jrockway left 03:29 galf joined 03:33 cxreg joined 03:37 Baggiokwok joined 03:38 justatheory left
sjohnson rakudo: my $o = 'hello'; say $o.substr(1, 1, 'i') 03:40
cj ooh, composition key lets me do « and » easily!
p6eval rakudo 3867ff: too many positional arguments: 4 passed, 4 expected␤in Main (file <unknown>, line <unknown>)␤
cj why didn't you people tell me about this before? :) 03:41
03:41 PZt left
cj ¡¿por que?! 03:41
03:48 nihiliad left 03:53 skeptical_p left, skeptical_p joined 03:59 JimmyZ left 04:07 stephenlb left 04:14 nihiliad joined 04:17 lestrrat is now known as lest_away, PZt joined 04:19 lest_away is now known as lestrrat, lestrrat is now known as lest_away 04:53 pinc0de joined 05:25 nihiliad left, synth joined 05:30 jackyf left 05:32 Snider joined 05:37 we joined 05:38 we left 05:46 cognominal left 05:48 meteorjay joined 05:50 Snider left 05:57 Chillance joined
saschi moin 06:09
06:14 lest_away is now known as lestrrat 06:34 JimmyZ joined 06:49 JimmyZ left 06:53 agentzh left 07:05 payload left 07:17 Baggiokwok left 07:22 kaare joined 07:23 kaare is now known as Guest57445 07:26 mikehh joined 07:29 akl_ joined 07:30 LionMade1fLions joined 07:31 Su-Shee joined
Su-Shee good morning 07:32
07:34 LionMadeOfLions left 07:36 synth left
saschi huhu 07:37
07:40 galf left, akl left 07:41 hicx174_ joined, galf joined 07:54 kangu joined 07:55 kangu left, iblechbot joined 08:14 galf left 08:15 mberends joined 08:32 Baggiokwok joined 08:35 ihrd joined, ihrd left 08:42 mikehh_ joined 08:44 mikehh left, hicx174_ left 08:46 hicx174 joined 08:54 brrant left 09:01 pugs_svn left, pugs_svn joined, mssm joined 09:03 Baggiokwok left 09:29 dakkar joined 09:34 PerlJam left, jnthn left, Juerd left, dukeleto left, pmichaud left, dalek left, dalek joined 09:43 breinbaas left, jonasbn joined 09:44 Juerd joined 09:45 jonasbn left, jonasbn joined 09:46 jnthn joined
Juerd feather1 was out of memory beyond repair :( 09:47
Does anyone know what caused this?
Juerd had to reboot the VM 09:48
09:48 dduncan left 09:59 buubot left, buubot joined, irc.freenode.net sets mode: +v buubot 10:25 meneldor joined 10:27 Mantis left
mberends svn up pugs also timed out, now it works again :) 10:28
Juerd It's something with apache. 10:31
I've done a "killall -9 apache2" because I don't have time to investigate the problem now. 10:32
Load was up to 44 again.
If someone has time on their hands and wants to investigate, please do so (request sudo access if necessary)
mberends sorry, I'd like to, but $work is pretty full time this week :( 10:36
10:43 frettled sets mode: +oo mberends Juerd
frettled Juerd: what kind of system is it, Debian, Ubuntu, ...? 10:44
10:47 soupdragon joined
Juerd frettled: Debian 10:47
frettled Juerd: In that case, I can at least have a look, I administer one or twenty Debian systems. :) 10:48
Juerd Do you have access to feather?
frettled nopes
I can give you an SSH public key if that helps.
Juerd Yes please 10:49
10:50 am0c joined 10:59 somebody_ joined, somebody_ left, soupdragon left 11:00 soupdragon joined
frettled Okay, I think I see one possible cause for the problem. Of the last 100k lines in the access log, a Google crawler has over 18% of the hits. 11:09
So my guess is that a too eager indexer turned nasty.
51.8% of the hits are from 193.200.132.146 (feather3.perl6.nl), so I assume that's something related to SVN. 11:10
I've installed a perl (5, sorry ;)) script in /usr/local/sbin which analyzes the log and either sorts by number of hits or number of bytes, called "bandwidthips" and "hitips". 11:11
Hmm, actually, the Google crawler came from another IP address as well, 6% more hits.
I see that someone else started Apache now, we'll see how that pans out.
lunch! 11:12
11:12 Baggiokwok joined 11:15 Baggiokwok left 11:16 Baggiokwok joined 11:22 cotto_work left, meppl joined 11:24 Baggiokwok left 11:26 Baggiokwok joined 11:28 buubot left 11:30 Juerd left, jnthn left, dalek left 11:31 dalek joined 11:32 Juerd joined
Juerd Damnit! 11:32
11:34 Baggiokwok left 11:35 buubot joined, irc.freenode.net sets mode: +v buubot
Juerd And happening again 11:43
apache2 killed, /etc/init.d/apache2 renamed to /etc/init.d/apache2.disabled 11:44
11:46 payload joined 12:00 Baggiokwok joined 12:07 bluescreen joined
Infinoid hmm. Does feather1 still run svn::web? 12:09
I do remember that was sort of a resource pig, but I don't know what would have changed recently about that
12:09 nico__ joined 12:16 nico__ left 12:22 jonasbn left 12:23 bluescreen left 12:26 pugs_svn left 12:27 pugs_svn joined 12:37 bluescreen joined 12:38 lestrrat is now known as lest_away, SmokeMachine joined 12:41 jnthn joined 12:45 muixirt joined 12:51 dakkar left
takadonet morning all 12:51
Juerd Infinoid: At the moment, feather1 does not run apache at all. 12:52
12:52 iblechbot left 12:55 ignacio_ joined 12:59 clintongormley joined 13:07 ruoso joined 13:09 ignacio_ left 13:13 colomon joined, colomon_ left
mathw Hello o/ 13:19
jnthn hi mathw
mathw \o/ jnthn 13:22
I hope the weather's better where you are
Or at least, that you're better equipped to deal with it 13:23
frettled urghle, I need to figure out how to turn off the fugly syntax highlighting that's default on feather, it's useless in white-on-black or black-on-white terminals
jnthn mathw: It's not at all bad here.
frettled Aha, it's elvis, not vim.
mathw The main problem here is that the pavements are covered in slick, slippery ice 13:24
on which I have almost zero grip
I need some spiked shoes I think. Or ice saktes.
13:25 ignacio_ joined 13:28 buubot left
frettled Juerd: is ConsoleKit the wrong goose to chase for this? It seems to be somewhat noisy in daemon.log just before there are problems. 13:30
Juerd It's a known issue but not causing OOM conditions 13:33
frettled It's rather interesting that it hangs at approximately the same periods of time. 13:34
I'll keep a top running, sorted by memory, refresh each second. 13:35
It might be clamd or something like that.
Oooh, it's running an interesting combinatino of etch, sid and experimental. 13:36
13:37 buubot joined, irc.freenode.net sets mode: +v buubot
frettled And there are a bunch of package upgrades pending. Perhaps the clamav and/or kerberos vulnerabilities that were patched recently aren't yet patched on feather? 13:37
13:39 soupdragon left 13:41 Baggiokwok left
Juerd frettled: Note that apache caused the OOM crashes, and it's not running at the moment :) 13:43
13:44 astrojp joined 13:45 payload left
frettled Juerd: are you certain that Apache caused them, and that it wasn't just the unlucky process to be killed because one of the daemon processes was unlucky? 13:47
13:47 frettled sets mode: +o Juerd, plainhao joined, payload joined 13:54 ive joined
Juerd frettled: It stopped, twice, when I killed apache2 13:54
frettled: It had a dozen processes running at lots of CPU, and was eating memory.
13:54 ive left
frettled Juerd: hrm 13:54
not fun 13:55
Juerd And it appears that not every site is logged, even.
So it'd require live monitoring on the /server-status
:|
frettled Juerd: or that the virtualhost line is logged.
I can fix that. 13:56
13:56 payload left, payload joined
Juerd afk 13:58
14:09 PerlJam joined 14:13 ash_ left
PerlJam good morning #perl6 14:19
mathw good {localtime()} PerlJam 14:20
takadonet PerlJam:morning 14:21
frettled Good $facepalm!
diakopter Juerd: pugscode svn down? 14:23
oh. /me backlogs more 14:24
frettled: you working on it?
frettled diakopter: yup
14:25 sun_ joined 14:26 am0c left 14:27 ash_ joined
frettled It's back up again now. 14:27
But it may be slightly unrealiable. 14:28
diakopter erm
why unreliable? 14:29
14:30 sun_ left
frettled It's already crashed/hung twice because feather ran out of memory. 14:30
diakopter hm 14:31
frettled Apparently, something in Apache or a module goes haywire.
diakopter oh, I bet someone upgraded a .pm that Infinoid hacked to solve a memory leak
Infinoid svn::web again? 14:32
diakopter Infinoid: I don't remember where you added those weak scalars
14:32 Exodist left
ash_ jnthn: did the patches i sent apply cleanly? 14:32
frettled hrm
If it's a .pm that's part of a Debian package, then it's better to uninstall the Debian package and install the module separately in this case, or it will just happen again. 14:33
Alternatively, we can pin the package to a specific version, which may cause breakage later on. 14:34
diakopter many times the Debian package can't be uninstalled because it has too many others that depend on it 14:38
frettled mm
pinning is the solution, then
or, of course, create a sub-version of the package which satisfies the requirements of the dependencies, and pin that.
diakopter but, there isn't a .deb ... yes.
frettled I prefer that solution myself. 14:39
But I think it can turn into a proper mess if there suddenly is a Perl package needed that depends on versions which aren't installed, and you use the cpan tool to install them. Kaboom-risky
14:41 soupdragon joined 14:42 pnu left 14:47 nihiliad joined
ash_ so, submethods in roles, they will get composed into a class once? then it can't be inherited to the children of that class? 14:49
diakopter frettled: can you unblock the svn::web crawler
ash_ what if you want to replace a built-in role function? like ^compose 14:50
frettled diakopter: is it blocked? hrm.
I don't even know where that is, heh
diakopter hm 14:51
ash_ you don't want your ^compose getting added to a class, that could be bad
frettled diakopter: might be in a .htaccess somewhere, I don't see any "deny" statements in /etc/apache2 14:54
14:55 mssm left
frettled Oh it's only 4 million inodes, how long can it take to find all .htaccess files and grep for "deny" in them. :D 14:59
hrm, no, 4 million here and 5.5 there, no matter.
15:02 Exodist joined 15:04 Baggiokwok joined, Guest57445 left
ash_ frettled: do you have locate installed? it should be pretty quick for finding the files (yay cached databases) 15:05
15:05 Exodist left, Exodist joined, Exodist left
frettled ash_: locate is installed on feather, but I'm not sure how much it actually indexes. 15:05
nor how often it does it 15:06
15:06 Exodist joined
ash_ ah, i just use it for its speed, find's good too though 15:06
frettled okay, it apparently does it daily, so any changes after 06:25 CET are not in there. 15:07
I suspect that the block, if it's there, was added after 12:00.
15:08 muixirt left 15:10 Psyche^ joined, cognominal joined 15:27 Patterner left, Psyche^ is now known as Patterner 15:28 Baggiokwok left 15:34 meneldor left
jnthn ng: class Hash { } 15:37
p6eval ng 93d662: ( no output )
15:39 payload left 15:40 pnu joined, payload joined
ash_ jnthn: did you find anything with the patch for meta methods? 15:46
jnthn ash_: I didn't get chance to look at it yet today, sorry.
ash_: I will have time later on.
Managed to have two longish phone meetings on one day. Such is life. :-) 15:47
ash_ ah, thats cool, no worries just was gonna bug you since i can
jnthn :-P
ash_ so, jnthn, let me see if this logic is sound, i used the get interpreter opcode to inspect the lexpad (which should have the lexical variables right?) in the add_meta_method method which should contain the $meth_name lexical variable, but the lexpad as no lexical variables in it 15:49
so... .lex '$meth_name', name isn't working, i'd assume?
also, changing that to: $P0 = name \n store_lex '$meth_name', $P0 causes an error (which should be the exact same thing as .lex '$meth_name', name according to the docs 15:51
frettled diakopter, Infinoid, Juerd: I think we can consider it confirmed that it's svnweb that's hogging memory a bit. I see that there are lots of Perl libraries loaded into the apache2 processes, and that those using 70+ MB of resident RAM all reference svnweb.
Juerd I say disable that for now
frettled Also, the processes are long-running, they don't jack down their memory usage.
Juerd Though the hogging processes were using >100 MB when I killed apache 15:52
frettled Juerd: two of them are 100 and 105 respectively right now, plus 30-40 that's only virtual
Juerd Right
frettled It might be better to use some shorter-living FastCGI thingy for this, if that is possible. 15:53
Juerd If svnweb supports that I don't see why not
frettled That way, memory might get freed up earlier -- I take it that this is modperl-like code.
Juerd frettled++ for investigating this, by the way 15:54
ash_ jnthn: svn.parrot.org/parrot/trunk/t/pmc/lexpad.t contains an example of how i used the lexpad to inspect the method's lexical variables, look towards the bottom at test_iter
Juerd People with sysadmin clue *and* free time are hard to find
frettled *blush*
PerlJam frettled++ for keeping feather healthy 15:55
frettled Ah, well, time to go roleplaying in the wonderful universe of Legend of the Five Rings. :) 15:56
Juerd: I have not changed anything about svnweb, _but_ I've added a %v to the logging. That means that access_log should now contain the virtualhost as the first column in every log entry. I'll upload new versions of hitips and bandwidthips tonight or tomorrow. 15:57
frettled idles.
jnthn ash_: Note that store_lex does not actually declare storage for a lexical. 15:58
ash_: It just stores it.
ash_: Just to confirm, when you do .lex '$meth_name', name
name is a PMC register?
You should get an error if not though...
Juerd and there we go agian 15:59
ash_ yes, .param string name
Juerd juerd.nl/i/0c3af3a9a3ba054047f6fdeed41ef4ed.png
apache2 killall'ed (-9)
jnthn ash_: oh! 16:00
ash_ jnthn: is using it as .param string name good enough? or do i need a pmc?
jnthn ash_: No, that's a string register
ash_ .lex takes pmc's doesn't it?
jnthn ash_: Oh no, please say this isn't *the* problem...
*sigh*
ash_: Yes, only
ash_: I'd not thought of that before now
Juerd frettled: It didn't survive 5 minutes without your presence :)
frettled: I've disabled apache2 again. We'll patiently wait until one of us has time again 16:01
jnthn ash_: It really, *REALLY* sucks that Parrot didn't give you a compile time error about that...
ash_ *facepalm* told you its related to my lack of parrot knowledge
jnthn ash_: Well, Parrot (sh|c)ould be a bunch more helpful here though.
Juerd frettled: juerd.nl/i/0c3af3a9a3ba054047f6fdeed41ef4ed.png was top just before I killed them
ash_ lets put a ticket in parrot's track for a new feature, error messages on .lex assignments that aren't pmc's 16:02
:P
16:03 jaldhar left
ash_ hmm 16:03
16:03 mberends left
ash_ so, here's what i tried, i have a .local pmc meth_name .... meth_name = name \n .lex '$meth_name', meth_name 16:04
it compiles fine, but now when i run it, i get: Null PMC access in set_string_native() current instr.: 'perl6;ClassHOW;add_meta_method' pc 3884 (src/metamodel/ClassHOW.pir:366) 16:05
jnthn ash_: Yup 16:06
16:06 pnate left
jnthn You need 16:06
meth_name = new ['String'] first
ash_ do i need to box the value?
oh, okay
jnthn ash_: actually
you can do it in one line
meth_name = box name
:-)
(you still need the .local pmc meth_name decl...then follow it with that)
ash_ cool, in the test from parrot they box the strings in their assignment s
yeah, i see, lets see if it worked 16:07
\o/ it worked
jnthn \o/ 16:08
ash_++
back soon, need a quick break 16:09
ash_ jnthn: one more question, and i'll stop bugging you, addmethod $P0, name, $P1 vs. meta.'add_method'(name, $P1) 16:10
Juerd made a temporary page at perlcabal.org/svn/ to explain why it's not available 16:11
jnthn ash_: meta.'add_method'(meta, name, $P1) 16:13
ash_ k, thats what i thought
is there a type of declaration on role's that don't get inherited into the class they are composed into? so you can override say the ^compose method but not let that get passed into the class 16:17
submethod doesn't seem to be correct
16:29 am0c joined 16:31 pmichaud joined
pmichaud good morning, #perl6 16:31
16:31 uniejo joined
ash_ good morning pmichaud 16:32
TimToady howdydoo 16:33
pmichaud screen isn't running for me on feather ("No more PTYs") 16:35
known issue?
ash_ feather had some issues eariler, i don't know if screen was one of them 16:36
pmichaud I see that other folks have screen processes running, so I'm guessing it's a resource issue.
ash_ i know they took down SVNWeb because it was causing problems on the server perlcabal.org/svn/
TimToady feather2 was running out of memory repeatedly; don't know how that's related 16:37
pmichaud maybe I need to find a different host for my screen session :-(
jnthn pmichaud: oh hai 16:43
pmichaud jnthn: oh hai!
jnthn pmichaud: Server went down, I had to restart screen after the reboot too.
pmichaud jnthn: right... my problem is that screen won't start
jnthn oh. 16:44
That's...sucky.
ash_ jnthn: i sent another patch to you btw, so, between the 3 of them you should have everything working, if you want i can put them in 1 patch instead 16:45
jnthn ash_: The whole "does .^foo add to the metaclass of the role or get held until we compose the role and go into the metaclass of where we compose it" question is why I was putting off having those in roles. :-)
ash_: That may be easier for me, if it's easy for you. 16:46
ash_: Especially so if the latest one is a diff off current master.
16:48 fridim_ joined
szbalint moritz_++ # hired. 16:57
16:59 cdarroch joined
pmichaud afk, lunch 17:00
ash_ jnthn i did a clean checkout of ng and am going to apply it vs that 17:03
colomon szabgab: how's that? 17:04
17:15 zloyrusskiy joined 17:16 zloyrusskiy left 17:22 justatheory joined
colomon szbalint: how's that? (I meant) 17:25
ash_ jnthn: do you know anything else OO related that needs working on in ng? 17:33
17:49 justatheory left 17:53 cotto_work joined 17:55 cognominal left 18:08 ignacio_ left 18:12 bbkr joined 18:14 payload left 18:23 justatheory joined
bbkr Does rakudo support variables in regexps like m/$var/ (not-interpolated) ? It returns "Null PMC access in get_string()" for me. $var is Str type. 18:24
pmichaud bbkr: rakudo doesn't support those yet. It will soon. 18:25
hejki doesn't seem so atm. you could use m:P5// awhile instead
pmichaud (where "soon" == "next week") 18:26
bbkr wow! nice
PerlJam pmichaud: is ng gonna make it? 18:27
pmichaud PerlJam: I hope so. I certainly plan to be working hard to do that.
At the moment that's still my plan.
PerlJam good enough for me :)
18:29 ash_ left 18:30 ShaneC joined
bbkr will that also include using $.var in grammar tokens? like for example: grammar CSV { has $.quote; token csv_line { (<csv_field> $.separator)+ } } ? 18:31
18:31 ignacio_ joined
bbkr i mean: grammar CSV { has $.separator; token csv_line { (<csv_field> $.separator)+ } } 18:32
18:32 fridim_ left
pmichaud that might work. 18:32
PerlJam bbkr: you really mean token csv_line { <csv_field> ** $.separator } # :-)
18:32 buubot left
pmichaud one would then need to do $g = CSV.new(separator => ','); $g.parse(...) 18:33
bbkr yes, and this currently does not work yet.
18:34 buubot joined, stephenlb joined
bbkr perl6 -e 'grammar CSV { has $.sep }; CSV.new(sep => ",")' gives too few positional arguments: 1 passed, 2 (or more) expected 18:34
Pearljam: what does ** operator do? i thought it is for multiplication of results. like m/a ** 2/ is the same as m/aa/. am i wrong? 18:37
PerlJam bbkr: you are correct. But it also has a nifty new semantic where you can say 'a' ** ',' to match "a,a,a,a" 18:38
(or just "a")
bbkr that rocks! 18:39
PerlJam indeed it does
I've also come to really like the "goal matching" syntax too (though at first it bugged me)
'(' ~ ')' <stuff> / is the same as / '(' <stuff> ')' / 18:40
(except that IRC ate my leading /)
18:42 jackyf joined
pmichaud it's the same as / '(' <stuff> ')' / except that you get a useful error message if there's no ')' found after <stuff> 18:43
bbkr hmm, this ** is dangerous: easy to make mistake by typing a ** 2 instead of a ** '2' and the other way. but if you pay attention to quotes it makes life easier. 18:44
PerlJam I don't know if I'd call it "dangerous", but yes it is surprising sometimes if you make a mistake. 18:46
(but if you make mistakes, that's an opportunity for you to learn too :) 18:47
for instance, your csv_line should have really had anchors on it: token csv_line { ^^ <stuff> ** $.sep $$ } 18:48
otherwise you would have had some surprising positive matches.
bbkr you're right about learning. i've wrote few grammars for various stuff and learned a lot :) 18:49
18:52 fridim_ joined 18:55 payload joined 18:57 uniejo left, IllvilJa left
bbkr when $.var in grammars will be working i'll post CSV class on github. now it's too messy because $.var has to be defined as token and stuff like quotings and separators can only be configured by inheriting grammar. 18:58
19:13 IllvilJa joined, japhb left
PerlJam bbkr: you might want to call it something other than CSV if the separator is variable 19:15
pm: Want to come back to TAMUCC as the CIO? Irby is finally retiring. :) 19:16
hejki one of the main reasons to make project euler in perl6: 'sub postfix:<!>($n) { [*] 1..$n }; say [+] gather { for 3..50_000 -> $x { if $x == [+](map { $^a! }, $x.comb()) { take $x; } } }' :) 19:23
(that's #34)
Tene It would be nice to see a module that adds operators for math symbols. 19:25
I've done that with the set operators a few times.
hejki it would be nice if solving these wouldn't take so long time :P
i can solve one problem, start running the script, have a lunch, walk my dog and solve another problem before i get the answer :P 19:26
rakudo being hugely slow :<
19:26 nihiliad left 19:31 nihiliad joined 19:34 bluescreen left 19:35 bluescreen joined
hejki rakudo: reduce { say "$^a + $^b" }, 5..10 19:35
p6eval rakudo 3867ff: 5 + 6␤1 + 7␤1 + 8␤1 + 9␤1 + 10␤
Tene rakudo: reduce { say "$^a + $^b"; $a+$b }, 5..10
p6eval rakudo 3867ff: 5 + 6␤11 + 7␤18 + 8␤26 + 9␤35 + 10␤
hejki ahh 19:36
i was too focused on the say-part :P
pmichaud PerlJam: No, I don't want to come back to TAMUCC as the CIO. :-) 19:37
19:38 japhb joined 19:40 ash_ joined 19:41 ash_ left 19:42 ash_ joined 19:54 scp1 joined 19:58 vamped joined
TimToady phone 20:00
vamped P06#line_607 20:01
rakudo: my @a; push @a,1,2,:a<b>; push @a,3,4,(:b<c>); push @a, 5,6,"d"=>"e"; for @a { printf "%-12s%s\n",.perl,.WHAT }
p6eval rakudo 3867ff: 1 Int()␤2 Int()␤3 Int()␤4 Int()␤"b" => "c" Pair()␤5 Int()␤6 Int()␤"d" => "e" Pair()␤
vamped doesn't named argument "a" get pushed, or am I missing something? 20:02
s/P06/S06/ 20:03
TimToady unless there's a version of push that accepts a named arg of 'a', it should fail 20:04
20:05 nihiliad left, nihiliad joined
vamped this means I'm likely missing something from the example @ line_607 "push @array,1,2,:a<b>;" 20:06
TimToady the example was not intended to be meaningful, actually...
vamped lol. ok now 'that' makes sense.
TimToady should probably be marked as # FAILS
ruoso .oO( that should probably be written as push @array,1,2,(:a<b>)
20:07 Lorn left
vamped the following lines state is that way ruoso. it was written that way with intent (whatever that may have been) 20:07
20:08 rgrau` joined
vamped i think perhaps this makes a better point: my sub x { @_.perl.say; %_.perl.say}; x 1,2,:a<b>; x 3,4,(:b<c>); x 5,6,"d"=>"e"; 20:10
rakudo: my sub x { @_.perl.say; %_.perl.say}; x 1,2,:a<b>; x 3,4,(:b<c>); x 5,6,"d"=>"e";
p6eval rakudo 3867ff: [1, 2]␤{"a" => "b"}␤[3, 4, "b" => "c"]␤{}␤[5, 6, "d" => "e"]␤{}␤
vamped exit ciao 20:20
20:20 vamped left 20:25 snearch_ joined
jnthn ash_: Back from food, looking at your patch now :-) 20:25
20:26 jferrero joined
ash_ jnthn i am talking to #parrot about .lex giving an error, so hopefully people can't make my stupid mistake in the future 20:28
jnthn ash_: OK, cool. 20:29
ash_: Are you adding the method immediately ratehr than as a mix-in role? It looks so...
ash_ i pass that off to add_method, add_method is adding the method directly, not using a role 20:30
jnthn To the HOW of the HOW, yes?
as in, the metaclass of the metaclass?
20:30 clintongormley left
jnthn The problem is that this adds it for _all_ metaclass instances, not just this specific one. 20:30
So it doesn't quite get the semantics right.
ash_: That aside, the patch looks good. 20:32
ash_ so, my use of addmethod in add_method is wrong then?
jnthn no, no
ash_ or my use of HOW.add_method in add_meta_method 20:33
jnthn That one.
The latter.
ash_ hmm
okay
jnthn It's meant to influence the current metaclass instance, not every metaclass instance.
It's the difference between augmenting a class and mixing in to an instance.
ash_ yeah, i didn't realize it was affecting all metaclass instances 20:34
jnthn OK
I'm going to apply the patch because it's overall good.
And then we can work from there.
Essentially though, it should be something like this: 20:35
.local pmc mixin_role, meta_mixin_role
$P0 = get_hll_global 'RoleHOW'
meta_mixin_role = $P0.'new'()
$P0.'add_method'(meta_mixin_role, name, method) 20:36
mixin_role = $P0.'compose'(meta_mixin_role)
'&infix:does'(how, mixin_role)
Or some such.
That is, use the metamodel to construct the anonymous role and then mix it in to the metaclass instance.
ash_ i guess i avoided that because it seemed like a lot to declare a whole new role and mix it in for each method 20:37
jnthn Well, thus why master collects them together and makes one role and mixes it in at the end.
That does mean you can't override any of the declarative parts, which may be a blessing. ;-) 20:38
ash_ well that showes me for thinking creating a whole new role was a bit much for 1 method, oops, i should of probably asked a bit more in depth why you guys did it the way you did, now the meta methods are leaking all over the place. I really should write some tests for this and put them in the spec 20:39
jnthn ash_: No worries, it's all fixable. :-) 20:41
ash_: Do you want to work on the patch to do it mix-in style? 20:42
ash_ sure, i can do that
i am at $work though, so i may not be able to finish it today 20:43
jnthn ash_: That's fine, no rush.
I'm quite happy that between the two of us watching this, we won't drop the ball and forget that one of us should fix it. :-)
20:44 jonasbn joined 20:51 justatheory left
ash_ i have a project i'd like to work on in perl 6, and to get it working i'd need most of the OO stuff, including roles functioning properly and AUTO* so i'll probably be hacking on parts of that until rakudo can do what i need it to do 20:52
hmmm, i am getting a non-existent sub error on infix:does 20:53
jnthn Sorry - should be: &infix:<does>
ng: class Foo { method postcircumfix:<[ ]>() { } } 20:54
p6eval ng 93d662: ( no output )
ash_ try calling it :P
ng: class Foo { method postcircumfix:<[ ]>() { } }; my $f = Foo.new; $f['a'];
p6eval ng 93d662: Too many positional parameters passed; got 2 but expected 1␤current instr.: 'perl6;Foo;postcircumfix:<[ ]>' pc 285 (EVAL_1:119)␤
jnthn ng: class Foo { method postcircumfix:<[ ]>($x) { say "omg" } }; my $a = Foo.new; $a[42]
p6eval ng 93d662: omg␤
ash_ err 20:55
jnthn \o/
ash_ i thought that didn't parse with ng yet
jnthn yeah me too.
Apparently it does! :-)
ash_ hmmm must of been something else i had a problem with then
jnthn ng: class Foo { method postcircumfix:<{ }>($x) { say "omg" } }; my $a = Foo.new; $a{42}
p6eval ng 93d662: get_pmc_keyed() not implemented in class 'Foo'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
jnthn ah, that's the issue I was trying to evoke.
colomon \o/ indeed!
ash_ that looks like an error i was seeing
dalek kudo/ng: 499c7c8 | jonathan++ | (6 files):
Start to get method ^foo style declarations working again with the metamodel. Also rip out the ParrotBackend.pir role. Patch courtesy of John Harrison. ash++
20:56
kudo/ng: 448f882 | jonathan++ | src/ (2 files):
Make sure we emit calls to add_meta_method for roles, even though it's NYI, so we get error saying so. Also make error a bit more awesome.
jnthn ng: role Foo { method bar { say "wtf" } }; Foo.bar 20:58
p6eval ng 93d662: Method 'bar' not found for invocant of class 'Perl6Role'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
jnthn ng: role Foo { method bar { say "wtf" } }; Foo!select.bar
p6eval ng 93d662: Could not find non-existent sub !get_flattened_roles_list␤current instr.: 'parrot;P6role;!pun' pc 277976 (src/gen/core.pir:33845)␤
jnthn kk
time to pun.
ash_ jnthn: does 'infix:<does>' exist yet? because I am getting: No applicable candidates found to dispatch to for '&infix:<does>'
jnthn rakudo: role Foo { method bar { say "omg" } }; my $x = 42; $x does Foo; say $x; $x.bar; 20:59
(I think that works)
oops
ng: role Foo { method bar { say "omg" } }; my $x = 42; $x does Foo; say $x; $x.bar;
p6eval rakudo 3867ff: ( no output )
ng 93d662: 42␤omg␤
jnthn yeah
It's there.
ash_ is it a multi-method? it might be the types i am passing it 21:00
jnthn Yes, it is.
But the signature is pretty liberal at the moment due to Other Issues, so should work... 21:01
ash_ gist.github.com/276573 21:02
is the top relevant parts of add_meta_method
jnthn That doesn't look wrong. Hm. 21:05
Curious. What does $S0 = tyopeof mixin_role \n say $S0 give? 21:06
ash_ is ClassHOW a decedent of Mu
jnthn Yes, in a twisted kinda way.
ash_ *building* 21:07
jnthn (given that ClassHOW also describes Mu...)
ash_ P6role # is mixin_role 21:08
ClassHOW # is meta
jnthn ng: role Foo[::T] { }; say Foo[Int] ~~ Mu 21:09
p6eval ng 93d662: 1␤
jnthn hmm
ng: class Foo { }; say Foo.HOW ~~ ClassHOW 21:10
p6eval ng 93d662: 1␤
jnthn ng: class Foo { }; say Foo.HOW ~~ Mu
p6eval ng 93d662: 1␤
21:10 nihiliad left
jnthn Well no surprises / issues there. 21:10
21:11 plainhao left
ash_ should it say P6role? 21:12
jnthn Yeah
It's the "internal" name of what it si.
*is
For now, anyway.
21:12 payload left
jnthn ng: role Foo[::T] { }; say Foo.WHAT 21:12
p6eval ng 93d662: Foo()␤
jnthn ng: role Foo[::T] { }; say Foo[Int].WHAT 21:13
p6eval ng 93d662: Foo()␤
jnthn ng: role Foo[::T] { }; say Foo.perl
p6eval ng 93d662: Foo␤
jnthn ng: role Foo[::T] { }; say Foo[Int].perl
p6eval ng 93d662: Foo[Int]␤
jnthn Those look good.
jnthn ponders what could be wrong
21:14 payload joined
ash_ whats the mixin_role = $P0.'compose'(meta_mixin_role) for? is that calling ^compose? and what does that return? a fully finished role? 21:15
21:15 Chillance left, jonasbn left
jnthn ash_: Yes, that's right. 21:16
ash_: on a class you get back the type object.
For a role it's something analogous.
pmichaud gone for a while (no screen on feather) 21:17
21:17 pmichaud left 21:21 ShaneC left, ewilhelm left 21:22 akl_ is now known as akl 21:25 hudnix joined 21:29 payload left
dalek kudo/ng: 3ebc807 | jonathan++ | src/ (3 files):
Delete lots of code, add back a little bit, finish up with role punning working.
21:30
kudo/ng: 1387712 | jonathan++ | t/spectest.data:
We now pass S14-roles/crony.t again.
21:31 payload joined, xinming_ joined 21:32 ruoso left
dalek kudo/ng: 7eb763a | jonathan++ | src/core/traits.pm:
If somebody tries to inherit from a role, needs to be punned there too. Handled nicely with a multi candidate in ng rather than magic in master. :-)
21:36
kudo/ng: 9551672 | jonathan++ | t/spectest.data:
We now pass S14-roles/instantiation.t again.
21:36 xinming left
jnthn std: role R1[::T] { method x { T } }; my R1 of Int $x; 21:38
21:38 bluescreen left
p6eval std 29531: ok 00:01 111m␤ 21:38
jnthn ng: role R1[::T] { method x { T } }; my R1 of Int $x;
p6eval ng 448f88: In "my" declaration, typename R1 must be predeclared (or marked as declarative with :: prefix) at line 1, near " of Int $x"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)␤
jnthn aww
21:41 ashizawa left
colomon is very happy to see ng progress again... 21:42
jnthn is very happy to have energy and brain cycles to cause ng progress again. :-)
ash_ any idea about why i am getting this error? 21:43
21:43 SmokeMachine left
jnthn ash_: Not really. :-( 21:44
I wonder...
ng: multi test(Mu $x) { say "ok" }; role Foo[::T] { }; test(Foo) 21:45
p6eval ng 448f88: ok␤
jnthn ng: multi test(Mu $x) { say "ok" }; role Foo[::T] { }; test(Foo[Int])
p6eval ng 448f88: ok␤
jnthn Here's the oddness. :-/
That works too. 21:46
Which is like, odd. Because if it were a multi-dispatcher bug I'd also expect that one to fail.
diakopter ng: test(4)
p6eval ng 448f88: sh: ./perl6: No such file or directory␤
jnthn diakopter: OMG you broke it!! 21:47
;-)
21:47 Su-Shee left
diakopter ng: multi sub test() { say 3 }; multi sub test() { say 4 }; test() 21:50
p6eval ng 955167: Null PMC access in invoke()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤... call repeated 1 times␤
ash_ jnthn: can you call infix:does directly in perl6? like &('infix:<does>)($b, Foo) or something?
jnthn ash_: In theroy, &infix:<does> 21:51
ash_: In practice...
ng: say &infix:<+>(1,2)
p6eval ng 955167: Symbol '&infix:<+>' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)␤
jnthn We don't recognize that form yet.
ash_ diakopter: that should be a parser error i think, since there is already a definition of test with no arguements
21:52 jackyf left
ash_ chromatic++ is going to try to add an error message if you use .lex with anything other than a pmc, woot 21:53
jnthn chromatic++
21:54 ignacio_ left
diakopter ng: multi sub test() { say 3 }; &.test 22:00
p6eval ng 955167: Lexical 'self' not found␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
22:01 justatheory joined 22:04 nihiliad joined 22:15 zaphar_ps left
dalek kudo/ng: 219899f | jonathan++ | src/Perl6/ (2 files):
Re-enable parsing of my Can of Beer $starobrno style declarations.
22:16
kudo/ng: b653310 | jonathan++ | t/spectest.data:
We now pass S14-roles/parameterized-type.t again.
jnthn Hmm. 22:25
STD uses ** <param_sep> 22:26
In signature
Which is cute
But seems in Rakudo it only captures the final <param_sep>, not an array of all of them.
22:27 cognominal joined 22:31 nihiliad left
jnthn phenny: tell pmichaud In STD and Grammar.pm, in the signature rule, we use a construct like [ ...parameter... ] ** <param_sep>. However, unfortunately it seems the regex engine doesn't capture all of the parameter seperators, but instead only the last one. Tried a couple of possible workarounds, but no joy...any thoughts? kplzthnxbai. 22:39
phenny jnthn: I'll pass that on when pmichaud is around.
22:48 colomon__ joined, colomon left 22:49 colomon__ is now known as colomon 22:51 cognominal left
jnthn -> rest 22:53
22:57 colomon left, cognominal joined 22:58 colomon joined 22:59 snearch_ left, sjohnson sets mode: +o Tene 23:00 jferrero left 23:02 Limbic_Region joined 23:10 Exodist is now known as X-Exodist, X-Exodist is now known as Exodist 23:16 payload left
ash_ ng: my $a = Array.new; $a.push(5); 23:19
p6eval ng b65331: Method 'elems' not found for invocant of class ''␤current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)␤
ash_ rakudo: my $a = Array.new; $a.push(5);
p6eval rakudo 3867ff: ( no output )
ash_ hmmm
23:20 cotto_work left, cotto_work joined
colomon rakudo: my $a = Array.new; $a.push(5); say $a.perl 23:22
p6eval rakudo 3867ff: [5]␤
ash_ i think ng has a bit of an issue
23:22 _bob_k joined
colomon ash_: agreed 23:23
colomon wonders if he implemented push...
ash_ ng: my $a = Array.new; say $a.elems;
p6eval ng b65331: Method 'elems' not found for invocant of class ''␤current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)␤
colomon nope, that's more PIR that I'd have used. 23:24
_bob_k While trying to build Rakudo, I'm getting error messages similar to this: pastie.org/758753
Any idea what's going on?
ash_ i don't know if its a problem with push, but i do see there is also a problem with elems
colomon _bob_k: that's a new one on me, I fear. 23:25
ash_ _bob_k: i haven't seen that one, whats your build enviorment? gcc version?
or cc
colomon ng: my $a = Array.new; say $a.elems
p6eval ng b65331: Method 'elems' not found for invocant of class ''␤current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)␤
colomon my $a = Array.new; say $a.WHAT 23:26
ash_ colomon: its funny though, you can list the methods and its in the list
_bob_k ash_: Ubuntu 8.10, so gcc (Ubuntu 4.3.2-1ubuntu12) 4.3.2
ash_ ng: my $a = Array.new;
p6eval ng b65331: ( no output )
colomon ng: my $a = Array.new; say $a.WHAT
p6eval ng b65331: Array()␤
ash_ ng: my $a = Array.new; say ~$a.^methods;
p6eval ng b65331: postcircumfix:<[ ]> shift pop push unshift perl postcircumfix:<[ ]> list Num postcircumfix:[ ] perl of elems Str Iterator Int unpolar floor asech ord round split match acosh lc p5chop words join sinh cotan acotan atan2 trim reverse asec isa cotanh ucfirst sech tan cos rand fmt first sqrt
..…
ash_ elems is in the list 23:27
hmmm
colomon ash_: I know we've got tests running for elems, too.
ash_ _bob_k: did you do: perl Configure.pl --gen-parrot ?
or did you use a built in parrot?
colomon: are they fudged in ng? or is this something that hasn't been addressed yet? 23:28
colomon ash_: I suspect it's something wrong with Array.new.
ng: my @a = (1, 2, 3); say @a.elems
p6eval ng b65331: 3␤
colomon of course, that's a list. hmmm... 23:29
ng: my $a = [1, 2, 3]; say $a.elems
p6eval ng b65331: 3␤
ash_ my @a = 1, 2, 3; say @a.WHAT:
colomon ng: my $a = [1, 2, 3]; say $a.WHAT
p6eval ng b65331: Array()␤
ash_ ng: my @a = 1, 2, 3; say @a.WHAT;
p6eval ng b65331: Array()␤
ash_ ng: my @a = 1, 2, 3; @a.push(5);
p6eval ng b65331: ( no output )
_bob_k ash_: I build parrot before I build rakdudo, so my shell script is basically:
pushd ~/parrot/rakudo/ && make clean && git pull && perl Configure.pl --parrot-config="$HOME/parrot/bin/parrot_config" && make && make test && popd
colomon so anyway, yeah, elems works.
ash_ weird... 23:30
colomon _bob_k: which branch of rakudo?
_bob_k colomon: whichever is the default.
So, I believe the non-ng branch. 23:31
colomon right, should be master.
ash_ master is default in git
_bob_k Yeah, that's it.
colomon which version of parrot?
_bob_k Again, head from svn. 23:32
colomon ah, wonder if that's it.
_bob_k Parrot is to far forward?
colomon could be.
ash_ i haven't built rakudo with trunk parrot in a while
colomon master's default parrot is 43076. 23:33
_bob_k And current parrot is 43449, right? 23:34
Er, head parrot...
ash_ yeah, thats correct bob
_bob_k So either I need to bactrack Parrot or hop to ng, correct? 23:35
colomon that seems likely to be the problem, let me see if I can duplicate it here.
ash_ i am trying it too to see if its os related 23:36
_bob_k OK, digging around the net a bit, I found this: irclog.perlgeek.de/text.pl?channel=...2009-12-28 23:41
colomon ng: my $a = List.new; say $a.elems
p6eval ng b65331: Method 'elems' not found for invocant of class ''␤current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)␤
_bob_k Which seems to indicate that masak was made aware of this issue a couple of weeks ago.
ash_ hmmm 23:42
ng builds fine, let me try master
colomon I get the error in master if I bump PARROT_REVISION to head. 23:44
23:47 cognominal left
colomon ash_: I've got to go for a bit, but see that List has the same problem Array does.... 23:49