»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! | Rakudo Star Released!
Set by diakopter on 6 September 2010.
takadonet sorear: we don't really have that functionality in p6? 00:03
diakopter takadonet: it's implementation dependent.. 00:04
of the implementation(s) with stable/robust GCs... I don't think there's that functionality. 00:05
takadonet diakopter: nuts ok well i will ignore it for now. I been porting over github.com/Takadonet/Tree--Simple/tree/ and it implements and has testing for weak references
diakopter I guess you're using rakudo
takadonet yes 00:06
plobsing even fully GCed languages have weak references (eg: java). they're just not necessary in as many uses. 00:09
diakopter takadonet: last I heard, there were still random segfaults in the rakudo testsuite due to (it was speculated) GC non-robustness. At the last Parrot Developer Summit I asked about it, but no one answered. 00:12
takadonet diakopter: ok
diakopter (anyone reading this [backlog], please feel free to correct!)
takadonet heh
diakopter: so... are you trying to communicate with the future? 00:13
diakopter always
.oO( like all communication? )
plobsing diakopter: if you are referring to the "random" segfaults that occur sometimes, that is highly unlikely to be due to the GC, which is more-or-less deterministic.
diakopter I thought something was either deterministic or not 00:14
plobsing it is only as non-deterministic as what you throw at it.
hashes get walked randomly because hashes are random 00:15
diakopter (but assuming it is deterministic, what are the likelier culprits?)
plobsing there are 2 sources of random in parrot (that I know of): the PRNG and hash seeding 00:16
my money would be on the later being the source of the randomness
diakopter plobsing: are you saying there is no possibility the segfaults are caused by a bug?
plobsing segfaults are a bug
diakopter I should have been more specific. 00:17
plobsing: are you saying there is no possibility the segfaults are caused by a bug in parrot's source code?
sorear no, plobsing is saying that the segfaults are in parrot/src/hash/* 00:18
not parrot/src/gc/*
plobsing I never said that. What I'm saying is the fact that the segfaults are "random" suggests a random source is at least partly to blame. The GC is not a source of random.
sorear The GC is, however, a source of walking over lots of memory and dereferencing lots of pointers 00:19
If *anything* in Parrot corrupts memory, the GC will probably segfault
plobsing and if some of those pointers are invalid due to other code... kaboom
most "GC bugs" are bugs in other code that causes GC to choke 00:20
diakopter I would've thought memory locations (for allocation) were selected by a randomness source.. leading me to blame more heavily the GC.
plobsing memory locations for allocation are sometimes randomized by the *OS*. this can be usually be disabled. 00:21
diakopter right, I wasn't blaming the source of randomness
plobsing and, IIUC, some of the reports of random segfault reported dissabling this to not solve the problem 00:22
plobsing diakopter: if you are still running into these issues (moritz closed the ticket 2 weeks ago), I recommend you follow up by creating a test case that consistently fails (all sources of randomness in parrot *can* be controlled) and then file a ticket. 00:34
tickets with "random" failures tend to get closed with messages like "this seems to be working now, it must have been fixed" 00:35
diakopter no, I wasn't aware moritz_ closed the ticket 00:37
takadonet how can you tell if a scalar is a reference and not the object itself? 00:38
plobsing I'm not entirely convinced the bug is gone. I've seen this dance 1 too many times now.
takadonet www.reddit.com/r/programming/commen...community/ 00:40
sorear takadonet: in perl 5 or perl 6?
takadonet sorear: perl 6 :) 00:41
sorear takadonet: that's easy. all scalars are references in Perl 6.
takadonet i know hehe
somewhat realized that the piece of code that i'm porting is more complex then it needs to be since 'everything' is an object 00:42
makes things easier when you can do ' $scalar_or_obj.can('clone') '
sorear good * #perl6 06:55
moritz_ good morning 07:22
sorear good morning moritz_ 07:27
I wonder why there are no comments on any advent2010 for the last few days 07:28
moritz_ didn't disable comments
yfliu help: Could not load oplib `perl6_ops' 09:25
moritz_ yfliu: did you install rakudo? 09:27
moritz_ 's magic crystal ball shows that somebody hasn't read the README
yfliu I have installed 'setup-parrot-2.10.0-rakudo-35.exe' and 'setup-parrot-2.10.0.exe' on my win32 system 09:29
moritz_ yfliu: then please send a bug report to whoever made those packages available 09:31
sorear out 10:49
masak oh hai, #perl6! 11:11
moritz_ lolitsmasak! 11:12
how are things?
masak splendid, thanks.
moritz_ the sun is shining, and yesterday night I had excellent Norwegian food 11:13
masak what kind of Norwegian food?
moritz_ all kinds, actually 11:14
masak julbord?
mathw tonfisk?
moritz_ it was a big buffet dinner in a Norwegian/Bavarian restaurant
julbord
masak nice.
mathw no wait that's not what I meant
masak seven people have now signed up for the contest! \o/ 11:15
mathw lutfisk, that's what I meant
moritz_ \o/
mathw but I know it's not that because you said it was excellent
masak mmm, lutfisk.
moritz_ has 4 problems solved, he believes
masak mathw: hey, when prepared right... it can be a real treat.
mathw masak: interesting, you're the first person I've met who's had it who doesn't feel sick at the very mention of it
masak mathw: also, best use of white pepper in existence. 11:16
mathw: I'm Swedish.
mathw I know
this includes Swedish and Norwegian people
my friend's husband is Norwegian and can't stand the stuff
masak I wasn't too hot on lutfisk as a child, but I acquired the taste for it.
moritz_ masak: do you like gammelost? 11:17
mathw I guess it's highly polarising
like Marmite
masak mmm, Marmite :P 11:18
the trick is to layer it really thin.
like, atom-width thin :)
moritz_ likes gammelost zero-width thin :-) 11:19
mathw oh yes it's very potent
I used to get upset at breakfast if someone left the lid off the Marmite jar, because it was so smelly
these days I find I don't mind the smell at all
but I still don't choose to eat it, and I am thus outside the marketing idea of love it or hate it
I have become... indifferent to it 11:20
flussence I tried eating a burger with marmite on it once, just out of curiosity. Never again. 11:21
masak mathw: "indifference! that's even worse than hate!" -- famous quote from a friend of mine :)
moritz_ disagrees, but doesn't really care 11:22
*SCNR*
mathw depends what it is, I guess
flussence: interesting way to boost the umami content, but I prefer adding worcestershire sauce myself 11:23
and I suppose I shouldn't say anything about lutfisk given that I know what worcestershire sauce is made from
huf that was an attempt by the english at trolling the world. it was mostly successful (i'm talking about the pronunciation) 11:24
masak lue's post attracts comments! www.reddit.com/r/programming/commen...community/ 11:26
unfortunately, they're a troll comment and its replies.
huf why are people so angry that it's taking a while from inception to widespread adoption? 11:27
it's as if they'd paid money and were promised a deadline
masak that's just cargo-culted bullying. no more, no less.
huf ah, got it
mathw and just people who don't like Perl 11:28
moritz_ huf: you mean like diaspora?
oh wait... :-)
mathw they probably don't even have reasons for it, they just don't like it because it's not $favourite-other-language
huf but... but... it's my favorite language! there are many like it, but this one is MINE! 11:30
mathw yes, like that
masak I think I understand the psychology of learning and getting under the skin of a language by now. it's very hard to reason objectively about other languages after doing that. 11:31
mathw yes
masak let's say I learn Python and become really good at it. after a while solutions start coming to my brain already half-written in Python.
and that begins to feel like Python is the language that brains in general actually use when coding. 11:32
mathw yes 11:33
except they don't
it's just that you've trained yourself to think in Python
masak right.
mathw whereas I, on the other hand, still spend about a quarter of my time thinking in Haskell
which is a language I barely write these days
and about half my time thinking in Perl
and the other quarter thinking in fairy-land C++
which is a variant my compiler doesn't support
masak but it's easy to start confusing things that "look natural" to someone who is familiar with the language, and things that look natural to a relative outsider.
mathw this was the thing about the 8pen input method for Android when it came out 11:34
people said 'oh no it's too weird'
but they're all talking from people who know about QWERTY
the point of the entire project was to re-examine how to do touchscreen text input 11:35
and the general reaction is "no it's not like other keyboards, not interested"
people like familiar
masak yes, that's it. 11:39
mathw the problem is when that turns from 'I like this familiar thing' to 'all things which aren't familiar are WRONG and BAD and NOBODY SHOULD USE THEM' 11:40
masak aye. 11:41
uasi hi, #perl6 11:44
mathw hi
masak hi uasi
uasi I wrote a patch to fix RT ##77668 github.com/uasi/rakudo/commit/3022...defc195f11 11:46
masak here's someone who went through the 8pen tutorial, then went on to write a 6-word message, realized he was not proficient, and uninstalled the product: dauntingideas.com/content/8pen-keyb...r-hour-use
uasi could someone review this?
masak uasi++
uasi: it looks good to me, but I would pass this over to pmichaud for review before comitting it. 11:47
uasi: have you run a spectest on it?
mathw masak: yeah it takes a bit longer than that to get proficient. It's been my primary IM for a while now, but I still have lapses where I can't seem to write anything properly with it. 11:48
uasi masak: yes. passed that
mathw which means it's never going to catch on, people won't invest the time
TiMBuS is there a way to get my module listed on modules.perl6.org? 11:49
masak phenny: tell pmichaud I think github.com/uasi/rakudo/commit/3022...defc195f11 looks good (and it passes spectests), but I'd like you to review it before I commit it.
phenny masak: I'll pass that on when pmichaud is around.
masak TiMBuS: yes, get a commit bit to github.com/perl6/ecosystem and add it to projects.list
TiMBuS who can give me a commit bit? 11:52
masak I can't, it seems. 11:53
TiMBuS darn 11:54
can you add the line for me?
github.com/TiMBuS/Net--IRC 11:55
masak you bet.
masak adds it
TiMBuS woot 11:56
masak what would you like the project name to be?
TiMBuS Net::IRC seems fine
masak we have absolutely no naming conventions, but I'd recomment 'net-irc' over that.
TiMBuS or Net-IRC i- yeah that
masak or 'Net-IRC'.
dalek osystem: 69dd73f | masak++ | projects.list:
[projects.list] added TiMBuS++' Net-IRC
11:57
masak added. TiMBuS++
TiMBuS I was just going by how perl5 does it
thanks masak :]
masak hopefully we'll be using CPAN too one day. 11:58
lunch & 11:59
TiMBuS i guess i should prove my code works 12:01
TiMBuS guess not! 12:01
freenode is different
TiMBuS rakudo: say 'huh what'.comb(/<-space - [\+\%\@\&\~]>+/) 12:12
p6eval rakudo : OUTPUT«huhwhat»
TiMBuS why does that crash locally? maybe an outdated rakudo
moritz_ tries uasi's patch 12:35
TiMBuS im not sure why, but locally this seems to be an issue: 12:38
> 'fff'.comb(/<-space - [\+\%\@\&\~]>+/)
===SORRY!===
Cannot take substr outside string
moritz_ TiMBuS: that sounds like a very old rakudo 12:39
TiMBuS it shouldnt be too old..
hmm i think my build is broken somewhere 12:41
TiMBuS ok it -seems- like an old rakudo because --version is old, but no its definitely the latest build 13:00
moritz_ when --version is old, something's terribly wrong 13:01
try to wipe out the install location
like rm -rf parrot_install/
TiMBuS parrot_install? nuked it
yep
moritz_ and then recompile
TiMBuS i did that, along with a make realclean 13:02
git br shows only 'master' which im on, and git pull says its up to date
colomon "which perl6" ? 13:03
(falls in the category of obvious suggestions, I fear....) 13:04
moritz_ yes, 'make sure you actually run the newly compiled rakudo, not another binary'
TiMBuS i made a symlink in /usr/bin/perl6 to the parrot_install folder 13:06
the very one i deleted :[
moritz_ huh 13:07
I get the same error as you did
moritz_ rakudo: 'fff.comb(/<-space - [\+\%\@\&\~]>+/) 13:07
p6eval rakudo : OUTPUT«===SORRY!===␤Confused at line 22, near "'fff.comb("␤»
moritz_ rakudo: 'fff'.comb(/<-space - [\+\%\@\&\~]>+/)
p6eval rakudo : ( no output )
TiMBuS errnosay
moritz_ > 'fff'.comb(/<-space - [\+\%\@\&\~]>+/) 13:08
===SORRY!===
Cannot take substr outside string
that's what I get locally
TiMBuS yeah its strange
i also dont get that error sometimes, locally
moritz_ maybe the rakudo on the p6eval server is outdated too
dammit 13:09
the rebuild script doesn't like the git revisions of parrot yet :(
moritz_ is at $work and can't fix it atm 13:10
TiMBuS ok i reduced it to .comb( <-space - [\+]> ) 13:12
'string' ~~ /<-space - [\+]>/ works however 13:13
er, i mean .comb(/<-space - [\+]>/)
.split is the same
moritz_ TiMBuS: care to submit a bug report? 13:14
TiMBuS moritz_, i guess i can, but ill have to do it tomorrow. its way late 13:17
flussence moritz_: does p6eval's rakudo use --gen-parrot? I've got an already-working script in that case... 13:18
moritz_ flussence: it's a bit more complicated. It works with two separate install locations, so that one can be used while the other is being rebuilt 13:19
flussence oh, hm
colomon I can verify the "Cannot take substr outside string" thing locally as well, and mine is definitely the latest Rakudo (.ords works) 13:20
flussence +1 to that here (2010.11-16-gd1e6636) 13:21
masak TiMBuS++ 13:31
I had that error half a year ago when updating GGE to ng.
moritz_ it was fixed for \w 13:32
masak I had to rewrite a lot of .subst things into loops with string concatenation.
I remember getting a lot of retroactive appreciation for .subst
lola_89 hi 13:34
masak lola_89: hi! 13:35
lola_89 masak: is there a place where I can find comparison between perl6 features and Python3 or ruby? I used this when decided between ruby and Python few years ago ^_^ 13:36
masak lola_89: we don't have a page ready for that, but it's a really neat idea.
however, I could show you around, if you want a tour. 13:37
rakudo: say "hi, I'm the evalbot!"
p6eval rakudo : OUTPUT«hi, I'm the evalbot!␤»
lola_89 masak: yes please!
flussence rosettacode?
masak flussence: ooh, good idea.
lola_89: why don't you start here? rosettacode.org/wiki/Category:Perl_6 13:38
there you will have comparisons across several languages and several problem domains.
and if you have questions, don't hesitate to ask.
lola_89 masak: thank you! I will try also adding a wiki of comparison between python3 and perl6 later.. I will try not to be biased to my python :D 13:40
masak such a wiki page could conceivably belong here: www.perlfoundation.org/perl6/index.cgi 13:41
lola_89 splendid! ^_^ 13:43
masak rakudo: my $age = 21; my $username = "lola_" ~ (DateTime.new(now).year - $age) % 100; say "good luck, $username!" 13:46
p6eval rakudo : OUTPUT«good luck, lola_89!␤» 13:47
masak :)
lola_89 masak: 21 and half, actaully :D 13:48
masak rakudo: my $age = 21.5; my $username = "lola_" ~ (DateTime.new(now).year - $age) % 100; say "good luck, $username!" 13:50
p6eval rakudo : OUTPUT«good luck, lola_88.5!␤»
flussence heh :)
moritz_ if you're at least twenty, fractional years account for less than 5% of the total age, and can happily be neglected
masak rakudo: my $age = 21.5.Int; my $username = "lola_" ~ (DateTime.new(now).year - $age) % 100; say "good luck, $username!" 13:51
p6eval rakudo : OUTPUT«good luck, lola_89!␤»
masak moritz_++
moritz_ rakudo: "fff".comb(/<-space - [\+\%\@\&\~]>+/).[1] 14:00
p6eval rakudo : OUTPUT«Cannot take substr outside string␤ in <anon> at line 22:/tmp/IOBRPFFQI4␤ in 'Cool::match' at line 2509:CORE.setting␤ in <anon> at line 2239:CORE.setting␤ in 'List::at_pos' at line 1␤ in 'Any::postcircumfix:<[ ]>' at line 1742:CORE.setting␤ in main program body at line 1␤»
moritz_ since .comb returns a lazy list, you have to consume it to actually trigger the error 14:01
colomon moritz_++ 14:02
lola_89 hi, were can I find latest version of perl6 book? 14:06
takadonet morning all 14:08
masak lola_89: github.com/perl6/book/downloads 14:11
lola_89 masak: thanks! 14:12
moritz_ masak: do you have some stats as to how many people read your contest? 14:19
masak yes. just a moment.
masak my domain had 3k hits on Friday. that's an all-time high. 14:21
strangelyconsistent.org/blog/masaks...ng-contest has had 1.5k hits in total. the feed.atom has had 1.6k hits in total. I don't know if those numbers go back to the beginning of the site, or just beginning of December. 14:23
flussence Huh... I thought Unicode would have a superscript Pi symbol, but it only has i. 14:26
moritz_ Unicode: it's not TeX 14:27
masak reddit (564), perlfoundation (150), planetsix (59), perlgeek (52), twitter (49) are the top referers.
flussence (I'm trying to write a module to let people write numbers using Stupid Unicode Tricks, looks like I'll have to add up-arrow notation eventually) 14:27
masak this is why we care about reddit :)
daxim 14:28
flussence .u ピ
phenny U+30D4 KATAKANA LETTER PI (ピ)
takadonet i linked your contest on reddit! 14:29
flussence :) nice try
moritz_ Unicode obfu!
masak takadonet++
daxim ㌮ ㌯ ㌰ these have superscript pi each
masak daxim: looks like someone waving. I was about to reply with 'Ч' :)
daxim cactus 14:30
moritz_ .u Ч
phenny U+0427 CYRILLIC CAPITAL LETTER CHE (Ч)
moritz_ looks like a turned h-bar
masak someone on Twitter has opinions about the Web and mod_perl and Perl 6, and makes an appeal of some kind to Larry Wall: twitter.com/sylx/status/14323215945957377 14:31
masak Google Translate didn't help me much with that one. 14:31
daxim I always confuse 七 匕 when writing 14:33
moritz_ we still need 7 volunteers for the advent calendar
anybody wants to contribute something? 14:34
dalek : 5843a4c | moritz++ | misc/perl6advent-2010/ (2 files):
[advent] retro-update schedule
14:35
flussence
.oO( I'd volunteer, but I'm absolutely hopeless at sticking to deadlines... )
14:37
masak flussence: if you know by how much you usually overshoot, you could pretend that the deadline is that much earlier than it actually is :P 14:39
flussence I could get an article done by christmas, but I won't say which christmas :)
masak sheesh, that old trick. 14:40
masak rakudo: BEGIN { push @*INC, 'lib' } 14:51
p6eval rakudo : OUTPUT«===SORRY!===␤Could not find sub &push␤»
masak damn annoying bug, that one.
moritz_ are BEGIN-time closures supposed to see outer lexicals?
masak I don't know. I hope so. 14:52
is there anything else I could use that executes before a subsequent 'use'?
moritz_ there's this heavy "when are closures not really closures" paragraph in S04 that I've never really grokked
or was it S06?
masak S04. 14:53
it's right at the bottom.
moritz_ so you know what I mean :-)
masak oh yes.
I didn't get it at all before Yapsi. now I understand it slightly.
at least the need for it, if not all of the proposed solutions.
shortcircuit masak: I can't give anything illumantive on P6 specifically, but I could do a written form of my standard explain-Rosetta-Code-in-front-of-a-language-user-group presentation. 14:54
Throw that in the last-resort pile, I suppose. :) 14:55
masak shortcircuit: that would be very nice. please put it up as a gist or something.
shortcircuit gist?
masak gist.github.com
moritz_ github's nopaste service :-)
masak or whatever pastebin or blog you prefer.
shortcircuit Ah. :)
For RC, I've lately been using text posts to rosettacode.reddit.com as a blog. :) 14:56
moritz_ that and a line like "there are a lot of nice perl 6 solutions on rosettacode" + link to perl 6 category would make a nice advent post
masak I must admit I'm very inspired by examples/library/ncurses_life.pir in the Parrot repo. I'd like a proof-of-concept use of ncurses in Rakudo, and then a module with an ncurses API in the ecosystem. (hint, hint)
shortcircuit moritz_: That's a core component of my presentation to a language-UG; show all the links I have that are language-specific, as tuned to that language. :) 14:57
moritz_ shortcircuit: write it, we'll publish it for you :-) 14:58
shortcircuit Heh. :)
Not going to be until this evening, at the earlier, though. At work right now.
moritz_ that's ok 14:59
we have a volunteer for tomorrow too, iirc
uasi masak: that guy on Twitter says "But this language (PHP) have ruled the Web world. This tragedy could have been avoided if Larry had made Perl 6 practically. mod_perl? Absurd." 15:04
masak uasi: thanks. 15:06
shortcircuit I thought it was P5 that was built with practice, and P6 that was built with experience. ;) 15:07
masak that's a funny, and not altogether frivolous, way to put it. :) 15:09
allbery_b there's also the little matter that perl isn't web specific. (how many people do you know who use the php cli?) 15:11
masak I actually know a few people who use the PHP CLI. 15:12
allbery_b (and are any of them insane enough to try to use it for sysadmin/devops tasks?)
masak I wouldn't though. I've seen too much of the rot that makes up the foundation of PHP.
shortcircuit I know someone who wrote a CD burner using the PHP CLI.
I haven't seen the code, so I don't know how much it delegates to what library, though. 15:13
flussence probably system() calls 15:14
masak rakudo: class A { has $!inner is rw; method outer { $!inner } }; my $a = A.new(:inner(1)); $a.outer = 2; say $a.outer 15:22
p6eval rakudo : OUTPUT«2␤»
moritz_ bug 15:23
(but known, afaict)
masak yeah.
would be OK if the method were rw too.
moritz_ right
and there's no reason to stick an 'rw' on a private attribute 15:24
masak rakudo: class A { has $!inner is rw; method outer is rw { $!inner } }; my $a = A.new(:inner(1)); $a.outer = 2; say $a.outer
p6eval rakudo : OUTPUT«===SORRY!===␤No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are:␤:(Mu $child, Role $r)␤:(Routine $r, Any :default($default)!)␤:(Code $block, Any $arg?, Any :export($export)!)␤:(Mu $child, Mu $parent)␤:(Mu $type where ({ ... }), Any :rw($rw)…
moritz_ it's the old "doesn't decontainerize" issue
masak *nod*
I find it slightly inconsistent that you can initialize a non-rw private attribute, but you can't initialize a non-rw lexical variable. 15:25
moritz_ well, you can't anymore, according to spec
masak oh, good. 15:26
problem solved, then.
moritz_ afaict TimToady++ changed it to only work for attributes with accessors
takadonet what about doing an alias to a method? 15:27
moritz_ (I might be wrong though)
masak takadonet: could you be a bit more specific? 15:28
moritz_ Author: TimToady [email@hidden.address]
Date: Fri Nov 5 21:15:11 2010 -0700
[S12] default BUILD should not init private attrs
takadonet masak: sorry little busy here.... at work .... github.com/Takadonet/Tree--Simple/...le.pm#L192 15:34
masak moritz_: so... with the new spec, private readonly attributes are exactly as useless as readonly lexical variables? :)
takadonet masak: That how p5 creates an alias
masak takadonet: um. you linked me to a line with just a closing brace on it... 15:35
moritz_ masak: they can be initialized, just not by the default BUILD method
takadonet ...
stupid git 15:36
github.com/Takadonet/Tree--Simple/...le.pm#L195
should be: *insertChildren = \&_insertChildAt;
masak yes. now I see.
takadonet: just delegate?
it's a bit longer, but it amounts to the same thing.
takadonet masak: documentation or example? 15:37
masak rakudo: class A { method foo { say "foo!" }; method bar { self.foo } }; A.new.bar
p6eval rakudo : OUTPUT«foo!␤»
takadonet that what I thought... Thinking there was an easier way to do it ... all well 15:38
masak well, I guess you could do binding if they're 'our'-scoped methods. 15:38
but I wouldn't recommend it, for some unspecified reason. 15:39
maybe because it feels odd to 'our'-scope the methods just for that.
every scope-widening action has a corresponding cost/punishment :)
moritz_ rakudo: class A { our method foo { 'abc' }; A.^add_method('bar', &foo); }; say A.new().bar
p6eval rakudo : OUTPUT«abc␤»
masak moritz_++ 15:40
moritz_ rakudo: class A { method foo { 'abc' }; A.^add_method('bar', &foo); }; say A.new().bar
p6eval rakudo : OUTPUT«Could not find sub &foo␤ in main program body at line 22:/tmp/8NulKIUJuy␤»
moritz_ rakudo++
masak maybe something with .^can would work to find a non-'our' method?
takadonet so it hides foo then? wow
n/m
masak takadonet: yes, if by "hides" you mean "sticks it in the 'has' namespace"
moritz_ takadonet: there's no hiding. Methods just aren't in lexical scopes 15:41
takadonet i realized that after I said my comment
moritz_ rakudo: class A { method foo { 'abc' }; A.^add_method('bar', A.^can('foo')); }; say A.new().bar
p6eval rakudo : OUTPUT«abc␤»
moritz_ masak++
masak rakudo++
moritz_ once we have macros, that's trivial to encapsulate in a module
masak aye. 15:42
alias 'foo' => 'bar';
or maybe the other way around :P
takadonet ya
moritz_ alias foo => <bar baz quox>; 15:43
takadonet thanks guys!
flussence yay, I've convinced the people at :p5($dayjob) that writing tests is actually important 16:02
flussence (after spending 4 hours blindly trying to figure out why my shiny new charset code didn't work, turns out it did, and I'd spelled "pg_enable_utf8" wrong elsewhere...) 16:02
mux flussence: sounds good; I'm still trying to convince my coworkers that calling a function via &foo() is not a good idea. 16:04
flussence That sounds... painful.
masak mux: I don't see why it's not a good idea. I just don't see why it'd be necessary. 16:05
it still works in Perl 6, fwiw. :)
rakudo: sub foo { say "OH HAI" }; &foo()
p6eval rakudo : OUTPUT«OH HAI␤»
mux masak: if it's not necessary, it's not a good idea in my book since it adds extra syntactic cruft.
flussence the codebase I'm working on still has a few of those, but the guy who wrote them left years ago.
mux masak: also it curcumvents prototype checks if I'm not mistaken 16:06
flussence masak: I read a thing not too long ago explaining in detail why it's a really bad idea
if you forget the ()s, &foo gets passed the caller's @_ directly and can modify it. 16:07
daxim explanation for this is repeated on stack overflow about every two weeks
flussence reminds me of more PHP insanity... there's a func_get_args() which is similar to @_, but you aren't allowed to write "foo(func_get_args())". 16:11
mux but I suppose I shouldn't even complain about the extra '&' characters when I can't get the said coworkers to even properly indent code
allbery_b inherited some terrifying perl4 code at his current job and is still trying to make it halfway sensible 16:12
flussence The guy who wrote a lot of this code was an old-school C programmer. It didn't really look like perl at all until I ripped it all up in frustration one day (week?) 16:15
There was one particularly horrible bit involving system() and bit-operators just to copy a file and check it worked. 16:16
moritz_ rakudo: say 3.end 16:21
p6eval rakudo : OUTPUT«0␤»
masak rakudo: sub end { 0 }; say end.end.end.end.end.end.end.end 16:22
p6eval rakudo : OUTPUT«0␤»
moritz_ rakudo: say .end.end.end
p6eval rakudo : OUTPUT«0␤»
moritz_ are we quite finished? :-) 16:23
masak rakudo: given end.end.end.end { say .end.end.end.end.end.end.end.end }
moritz_ erm, ended
p6eval rakudo : OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤ in 'end' at line 1802:CORE.setting␤ in main program body at line 22:/tmp/EUEINyMENS␤»
moritz_ the first end() doesn't work that way 16:23
masak rakudo: given .end.end.end.end { say .end.end.end.end.end.end.end.end }
p6eval rakudo : OUTPUT«0␤»
masak rakudo: given end end end end end .end { say .end.end.end.end } 16:24
p6eval rakudo : OUTPUT«0␤»
masak \o/
ch3ck masak \o 17:20
takadonet rakudo: class A { method foo { 'abc' }; A.^add_method('bar', A.^can('foo')); }; my $x= A.new(); say $x.bar(); say $x.bar() 18:36
p6eval rakudo : OUTPUT«abc␤No candidates found to invoke for method 'foo' on object of type 'A'␤ in main program body at line 22:/tmp/n5vqfdbfxD␤»
takadonet only works once :(
moritz_ hm 18:38
rakudo: class A { method foo { 'abc' }; A.^add_method('bar', A.^can('foo')[0]); }; my $x= A.new(); say $x.bar(); say $x.bar()
p6eval rakudo : OUTPUT«Null PMC access in invoke()␤ in main program body at line 1␤»
moritz_ anyway, looks like a bug 18:39
rakudo: class A { method foo { 'abc' }; BEGIN A.^add_method('bar', A.^can('foo')[0]); }; my $x= A.new(); say $x.bar(); say $x.bar()
p6eval rakudo : OUTPUT«===SORRY!===␤Null PMC access in invoke()␤»
moritz_ rakudo: class A { method foo { 'abc' }; BEGIN A.^add_method('bar', A.^can('foo')); }; my $x= A.new(); say $x.bar(); say $x.bar()
p6eval rakudo : OUTPUT«abc␤No candidates found to invoke for method 'foo' on object of type 'A'␤ in main program body at line 22:/tmp/d24OoLzlaj␤»
moritz_ currently that's a method with self destruction
which other programming language has that? :-) 18:40
perigrin I could introduce that bug to Moose ... but I don't think they'd appreciate it 18:42
moritz_ would be a good candidate for an Acme module, no? 18:43
Acme::Method::SelfDestruct
perigrin moritz_: or you can implement it yourself using MooseX::Declare: class A { after foo { $self->meta->remove_method('foo'); } }
moritz_ perigrin: something like that, yes 18:44
hdanak is rakudo.org down?
moritz_ if it's not responding, that's likely 18:47
hdanak hopefully it's just being maintained or something
vs something malicious 18:48
takadonet moritz_: so i take it that's a bug then? 18:50
moritz_ takadonet: yes
takadonet moritz_: nuts
moritz_: any possible workarounds? :) 18:51
moritz_ takadonet: re-dispatching 18:52
rindolf Hi all. 19:22
Trashlord hi rindolf
rindolf Trashlord: hi. 19:23
masak rakudo.org down -- anyone emailed alester? 19:52
masak does so
alester i'll bounce it 19:53
I wonder what makes it sad.
it's back, masak
masak thanks, alester++. 19:54
rakudo: class A { method foo { 'abc' }; A.^add_method('bar', A.^can('foo')); }; my $x= A.new(); say $x.bar(); say $x.bar() 19:58
p6eval rakudo : OUTPUT«abc␤No candidates found to invoke for method 'foo' on object of type 'A'␤ in main program body at line 22:/tmp/cMQTR25CMK␤»
masak <takadonet> only works once :(
masak submits rakudobug
takadonet masak++ 19:59
masak: thanks. Question... what does moritz_ mean by re-dispatching?
masak if jnthn were here, he'd say that this result isn't so strange; becuase .^can gives the dispatcher to the 'foo' method(s). 20:00
call it once, shame on... shame on you. call me tw... can't call me again.
*can't get called again
takadonet it's strange 20:05
masak as with string encodings, dispatchers are there whether you're aware of them or not, and whether you want/like them or not.
moritz_ takadonet: just calling the target method from the alias 20:13
takadonet moritz_: sounds good 20:14
masak skangas: hai! .se? 20:18
moritz_
.oO( isn't it "hej" in .se? )
skangas Yes, it is.
masak but I'm in the Lolcat province.
szabgab good evening 20:20
masak: are you coming to FOSDEM ?
rindolf szabgab: evening. 20:22
masak szabgab: hm, maybe. 20:23
I'll be moving to the south of Sweden in January, so at least I'll be closer to Brussels :) 20:24
szabgab then please send your talk proposal(s)
szabgab moritz_: what about you and FOSDEM ? 20:25
rindolf error: pathspec 'RELEASE_2_10_1-679-g9bec614' did not match any file(s) known to git. 20:26
masak szabgab: I'll confer with jnthn too, and then maybe send something.
szabgab and what about pmichaud ?
moritz_ szabgab: most probably not
masak rindolf: that does indeed not look like a tag to me.
rindolf masak: hmmm.... 20:27
moritz_ rindolf: is your parrot/ dir a git repo?
rindolf moritz_: yes, it is.
szabgab moritz_: we can let you rest this time
rindolf Oh wait.
moritz_ rindolf: does it work after 'git pull'?
rindolf [email@hidden.address]
moritz_ hm
that might be it :-)
rindolf Makefile:200: compilers/pirc/Defines.mak: No such file or directory 20:30
when doing make realclean.
moritz_ rindolf: cd parrot; git clean -xdf
rindolf moritz_: thanks. 20:31
moritz_: I'm getting: 20:35
===SORRY!===
Parrot revision RELEASE_2_10_1-679-g9bec614 required (currently RELEASE_2_9_1-967-g9bec614)
Don't know why.
moritz_ rindolf: what are you doing? 20:36
and did you wipe out parrot_install inbetween? 20:37
rindolf moritz_: no, I did not wipe out parrot_install.
moritz_: I'm running perl Configure.pl --gen-parrot
flussence rindolf: you might find this useful (or not), it's what I'm using: gist.github.com/738980 20:38
[Coke] parrot caches that variable in a dot file. if you don't realclean, you're stuck with the old version even if you did a git pull in between. 20:39
moritz_ rindolf: ah, your installed parrot identifies itself as 2.9.1, not 2.10.1
[Coke] and --gen-parrot does not, IIRC, realclean.
(which it really should)
rindolf [Coke]: it said something about that. 20:40
moritz_: so what should I do? 20:43
moritz_ rindolf: fix your parrot 20:45
rindolf moritz_: ah. 20:45
moritz_ rindolf: I just don't know what your setup is, and what you have done 20:46
[Coke] if you're using --gen-parrot, your installed parrot is in your rakudo build dir. You can always just remove the parrot* directories in your rakudo build dir and run perl Configure.pl --gen-parrot again. 20:48
if you are working with an installed parrot elsewhere, a fresh install of that should work (with the same caveat that if you're building it from source, be sure to do a realclean first.) 20:49
moritz_ (assuming you have internet connection, for 'git pull')
rindolf moritz_: OK, it was a git SNAFU - I didn't fetch the tags - had to use get fetch -t 20:54
I hate git. 20:55
Well, usually.
masak likes git
moritz_ rindolf: git hates you too :-)
rindolf moritz_: I don't care how git feels about me. 20:56
moritz_ it just reflects your feeling
rindolf moritz_: I hate it so I don't care about that.
moritz_ hate implies caring
at least to a certain degree
otherwise you'd be indifferent
rindolf Working now. 20:58
rindolf [shlomif@lap rakudo]$ ./perl6 t/spec/S02-builtin_data_types/hash 21:52
Unable to open filehandle from path 't/spec/S02-builtin_data_types/hash' 21:53
Oh wait, missing the .t
In any case - not ok 52 - colonpair :one
moritz_ how old is your rakudo? how old is your copy of the spectets? (still .svn?) 21:54
masak rindolf: do you know if this is the first revision where that happens?
moritz_++
moritz_ .sleep = True 21:55
rindolf moritz_: I pulled rakudo today. 21:56
masak: I don't know if this is the first revision.
github.com/shlomif/rakudo - I have a commit here for a Test::Run-based harness.
masak rindolf: I'll just finish up tomorrow's Advent post, then I'll try to reproduce your spectest failure.
rindolf masak: OK. 21:57
masak: I'm on Mandriva Linux 2010.1 on an x86-64.
masak ok, peeps; tomorrow's Advent post is up (on perl6advent.wordpress.com/wp-login.php ). feel free to review and comment. 22:11
masak turns to rindolf's test
rindolf p6eval: %hash8 = (:one, :key<value>, :three(3)); 22:13
masak rakudo: %hash8 = (:one, :key<value>, :three(3)); say %hash8.perl 22:14
p6eval rakudo : OUTPUT«===SORRY!===␤Symbol '%hash8' not predeclared in <anonymous> (/tmp/Ri0AlbsNb5:22)␤»
masak rakudo: my %hash8 = (:one, :key<value>, :three(3)); say %hash8.perl
p6eval rakudo : OUTPUT«{"one" => Bool::True, "key" => "value", "three" => 3}␤»
masak looks right to me.
rindolf is(%hash8{'one'}, 1, 'colonpair :one'); 22:16
So this is wrong.
masak yes.
PerlJam rindolf++ 22:17
masak checks the latest spectests on github
dalek : f15aa2b | duff++ | misc/perl6advent-2010/topic-brainstorming:
Add a couple of ideas
masak rindolf: github.com/perl6/roast/blob/master...ash.t#L125 22:18
rindolf: it's already correct. your local version of roast must be too old.
rindolf masak: ah.
masak (just as moritz_ suggested)
rindolf masak: OK, that was indeed the case. 22:19
Now I'm getting another failure - not ok 66 - Hash.new($pair) lives 22:20
masak moritz_++
rindolf: you'll note that that test is marked with #TODO 22:22
that means the test is correct, the implementation is wrong, and we know about it. 22:23
we can parse the test and run it, but it produces the wrong result.
PerlJam masak: Post looks good. My only suggestion would be to give a little more prose to why it's called "nextsame". Like maybe one sentence where you first mention dispatchers that says something like "It's called nextsame because it executes the /next/ subroutine in the dispatch chain with the /same/ arguments as this invocation." 22:24
masak++ 22:25
masak oh, good idea. I'll add that. thanks.
rindolf masak: ah, I see. 22:28
masak: so it's a magical comment?
masak rindolf: from the perspective of the TAP framework, yes. 22:29
PerlJam rindolf: did you read the roast README?
rindolf PerlJam: no, I did not.
masak PerlJam: post updated. 22:33
PerlJam masak: muy bueno :) 22:34
masak \o/
rindolf Now t/spec/S09-autovivification/autovivification.t fails. 22:44
Hmmm... it succeeds with t/harness.t 22:46
Test returned status 1 (wstat 256, 0x100)
masak 'status 1' does not mean success. 22:48
rindolf The status 1 is returned in t/test-run-harness 22:49
masak right.
rindolf In t/harness it does not report it.
masak runs it locally.
masak yeah, getting an error here. 22:51
Method '!fill' not found for invocant of class ''
on the other hand t/spec/S09-autovivification/autovivification.rakudo (note the different file extension) runs fine. 22:52
rindolf: would you like a small explanation of how the spectests work?
rindolf masak: yes. 22:55
masak you've already found t/harness 22:56
its main contribution is to "fudge" the spectests before running them.
masak the process of fudging was invented when Pugs ceased to be the only big implementation of Perl 6, and different implementations needed to share the spectests. 22:57
fudging takes directives in the t/spec *.t files, and processes the individual files into something that can be run by an implementation.
the directives for Rakudo look like this:
#?rakudo skip 'autoviv with push/unshift' 22:58
this tells the fudger (1) that this directive concerns Rakudo, and (2) the test is to be commented out and skipped.
the resulting file is stored with the same filename but, in the case of Rakudo, with the extension .rakudo 22:59
*that's* the file that's run by the harness.
this is necessary, because tests that need to be TODO'd or SKIP'd by Rakudo wouldn't necessarily need to be for, say, Pugs.
any questions?
rindolf masak: no. 23:00
masak: I understand that.
masak rindolf: ok, back to your particular case, then.
when you run t/spec/S09-autovivification/autovivification.t, and it fails, that's because it contains '#?rakudo skip' directives.
it is, in other words, not an exceptional condition that this file fails. it's expected. 23:01
rindolf masak: so you mean the exit(1) is on purpose? 23:04
masak the exit(1) is a consequence of getting an error from running code that the harness would have skipped. 23:05
rindolf masak: perl t/test-run-harness t/spec/S09-autovivification/autovivification.rakudo still fails. 23:20
masak rindolf: I haven't heard of t/test-run-harness, and I don't have any such file in my (up-to-date) checkout of Rakudo. 23:23
rindolf: here, perl t/harness t/spec/S09-autovivification/autovivification.rakudo runs fine, with a PASS.
rindolf masak: I've commited it here - github.com/shlomif/rakudo 23:24
masak: what happens when you do ./perl6 t/spec/S09-autovivification/autovivification.rakudo || echo "Bad status"
?
masak it runs the file, the last line is '# FUDGED!', and not "Bad status" 23:25
might be your platform, might be something else.
ch3ck hej masak \o 23:27
masak o/