»ö« 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!
Set by sorear on 4 February 2011.
00:03 ymasory joined
sorear lichtkind: a lexpad is an object that holds lexicals 00:16
lichtkind: sometimes the word is also used to refer to the compiler's record of what lexicals exist in what blocks
00:17 kcwu joined 00:21 lumi_ left 00:22 lumi_ joined 00:29 tokuhirom joined
lichtkind thanks you sorear 00:31
00:39 daniel-s left 00:45 yinyin joined 00:46 lichtkind left 00:51 lumi_ left, lumi_ joined 00:54 icwiener left 01:01 noganex_ joined 01:04 noganex left 01:29 starcoder left, starcoder joined 01:34 lumi_ left 01:35 lumi_ joined 01:39 Moukeddar joined
Moukeddar Hello 01:41
01:46 pjcj left 01:51 whiteknight left
thou hi, Moukeddar 01:56
Moukeddar how's going?
thou things are good here. enjoying some supper, watching the colors change outside as the sun goes down. 01:57
Moukeddar: i'm curious, are you learning (or already using) perl6? 01:58
Moukeddar learning perl5
thou ah, ok 01:59
Moukeddar but i'm mostly here for the knowledge
thou sure, it's an interesting place
kind of like #haskell can be, too :-)
Moukeddar it really is
thou i guess i'm learning perl6 mostly for the knowledge.
colomon rakudo: $*IN.lines.map(*.say) 02:00
p6eval rakudo ae5bea: ( no output )
colomon rakudo: for $*IN.lines { .say }
p6eval rakudo ae5bea: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten␤liegst dem Erdteil du inmitten,␤einem
..stark…
02:02 lumi_ left, lumi_ joined
thou colomon: lazily choses not to eval the .say because the result isn't needed, i think 02:09
colomon thou: yes.
actually, not to eval the results of the map, but it's the same effect.
(I mean, that causes the .say not to be evaluated.) 02:10
rakudo: $*IN.lines.map(*.say).sink
p6eval rakudo ae5bea: OUTPUT«Method 'sink' not found for invocant of class 'List'␤ in main program body at line 22:/tmp/lH7q0nJZru␤»
colomon and I forget what the current syntax is for making that work.
sorry, I've been amusing myself by reading www.artima.com/weblogs/viewpost.jsp...ead=328540 and figuring out how to write the examples more succinctly in Perl 6. :) 02:11
thou cool 02:12
interesting to read the comment in the 1st paragraph about scala breaking changes to make the language better, with my brain in the perl6 context 02:13
colomon Yeah, and a lot of the examples are Perl 6y in spirit. Just more verbose. :) 02:14
thou like, perl6 has taken that approach farther towards its logical (but completely impractical) terminus, with its design-by-community spiral 02:15
02:18 PhatEddy left
TimToady impractical in which sense? 02:19
02:21 beekar left
thou i am imagining a line between ADA-like design by closed committee to some vague idea of design by reimplementation (put out one implementation, find what breaks, put out another, breaking all old code, etc.) 02:21
02:23 daniel-s joined
thou i think Perl6 seems to be closer to the reimplementation side of things, in that the specs were under heavier revision based on feedback from growing implementations 02:23
and i think both scala and perl6 are taking practical approaches to this aspect of language design (not getting stuck with early decisions) 02:24
TimToady maybe, though the Ada spec went through lots of iterations
colomon thou: it's usually mostly just the odd (or new) corners of the p6 spec under revision
thou but going all the way down that road would just be chaos
TimToady we just try not to fall in love with all the cute ideas :) 02:25
daniel-s perl6: my $str1 = "Stuff"; my @arr1 Z~ ("_", ^10); say @arr1;
p6eval pugs, rakudo ae5bea, niecza v6-151-ge51f7a9: OUTPUT«␤»
thou i didn't mean to say that perl6 is impractical -- the ADA approach may have been too close to the other impractical end of the spectrum
daniel-s HL?
thou although actually it was (is?) a pretty cool language i think
TimToady it's also a bit like the Ada effort in thinking a lot about what is implementable and (hopefully) efficient
thou especially for its time
daniel-s perl6: my $str1 = "Stuff"; my @arr1 Z~ ("_", "^10"); say @arr1;
p6eval pugs, rakudo ae5bea, niecza v6-151-ge51f7a9: OUTPUT«␤»
szabgab hmm, after a long time I tried to build rakudo on my server and it failed (both trunk and rakudo *) 02:26
with the same error
thou yes, but not just thinking, but also fleshing that out via implementations, which i think is awesome
02:26 lumi_ left
szabgab /usr/bin/ld: cannot find -lparrot 02:26
anyone has a hint what might be the issue?
02:26 daniel-s left
szabgab this is a 3 years old ubuntu machine 02:26
02:27 lumi_ joined
szabgab more specifically 8.04 02:27
thou re-reading my first comment i can see it may have sounded negative towards the approach perl6 is taking, but i actually think it's really cool. everything from the RFC process through the current wave (which i'm part of) of interest post rakudo* and the rest of the growing "dry land" of the perl6 continent 02:28
TimToady there was just ambiguity, and wondered which way you meant it--if I haven't developed a thick hide by now, I never will :) 02:30
thou hehe
TimToady so if you do see any actual impracticalities, feel free to point them out :)
thou other than that it's TEN YEARS IN THE MAKING?!!!!! ;-) 02:31
TimToady well, there is that...
thou szabgab: what's the full linker command above that error? can you paste it to a pastebin somewhere? 02:32
TimToady that one's a bit hard to fix though..
TiMBuS use Time::Travel;
TimToady is too old for that 02:33
02:35 srid joined, srid left
szabgab thou: www.pastebot.net/paste/mSyZn8Z1fp4/ 02:36
thou TimToady: the other impracticality i see is that there's a lot of crufty info floating around, e.g. lots of links to old pugs repos, tons of stuff that's from 2006 or whatever, and it was hard for me to get a sense of what to look at and what to ignore.
and that, too, is hard to fix 02:37
perhaps a quarterly review of perl6.org content, ensuring that it has current pointers to best docs of the moment 02:39
szabgab thou: I am sure there is lots of old content on perl6.org, could you point out the ones you found recently? 02:42
02:52 ymasory left 02:58 lumi_ left 02:59 lumi_ joined 03:05 cognominal_ joined 03:06 kaare_ joined 03:08 cognominal left 03:09 stephanepayrard_ joined 03:12 cognominal_ left
thou szabgab: Community >> Wikis: seems that only perlfoundation one is current; november is down, .au and programmer's heaven look to be 3 years or so lod 03:12
*old
Specification: good, but the "Incomplete rigorous spec" page looks to be a few years old and it's hard to tell what there is relevant or not 03:13
Compilers: the long list is intimidating. I know there's danger in putting too much weight on some "big players", but it'd be nice to know that 1) STD is definitive (for what it does); 2) rakudo and niecza are really active and fun to use, and 3) everything else is in some state or another of disuse for the most part (as far as I can tell at this point) 03:16
sorear I just came in and can't make sense of the backlog. What's the problem? 03:18
TimToady no real problem, just noticing thing slightly stale things on perl6.org 03:20
thou sorear: i complained about feeling lost at first regarding what stuff is current and what is stale or no longer relevant
03:20 Moukeddar left
TimToady s/thing/some/ 03:20
when you guys work on the new stuff it makes some of the older stuff look not so new :) 03:21
thou and szabgab asked me to be more specific, particularly about perl6.org
sorear november is pretty out of place on a "list of Perl 6 wikis"
november is a Perl 6 wiki, in the same way MediaWiki is a PHP wiki 03:22
thou yeah. AND it's down. ;-)
szabgab thou: do you have commit bit to the source of perl6.org ? 03:23
thou i watched a video preso on november wiki, looked cool. it made me kind of sad that they implemented stuff in Parrot though 'cause they couldn't get it going in rakudo at the time (as i understood & remember it)
03:23 Su-Shee_ joined
thou szabgab: hmmm, not sure, i just got commit bit via github user 'softmoth' to some perl6 stuff, maybe perl6.org is included 03:24
The Documentation page is the hardest to review, for me.
sorear thou: november was very much an early adopter 03:25
thou some things are easy to say they're stale, like Grok, and probably Perl6::Doc
03:25 lumi_ left
thou Perl Tablets is unfortunately not being updated (even in German?) and the english xlations are missing most of the content 03:25
szabgab www.perl6.org/about/ has info on how to contribute to the perl6.org web site
03:25 lumi_ joined
sorear I think the tablets were updated recently 03:26
03:27 Su-Shee left
thou The two "in progress" books seem to be no longer in progress (somewhere i searched and found an o'reilly page saying "we rewrote the book twice already, and will write it again once the language is ready" basically) 03:27
sorear the open commit book on github gets some activity 03:28
thou Similar to the compilers, it'd be nice to have a clear 1) Synopses are definitive (as much as possible); 2) Using Perl 6 book is up-to-date, and the best intro point (although not yet complete); and Perl 5 to 6 is maintained (I think); 3) Everything else is kinda a mixed bag, sorry! 03:31
03:32 c1sung left
thou of course probably i've overlooked some gems, but i guess that's my point 03:32
03:32 c1sung joined 03:36 lumi_ left 03:37 lumi_ joined
sorear sadly I think we're still at the point where @Larry is more definitive than the synopses 03:38
TimToady well, especially when we change our mind :) 03:39
mberends thou: it's good for us to have your objective and fair comments, we are often too preoccupied with details to lose sight of the big picture. Editing or removing stale content has been low on our agenda, and that would be a helpful contribution from anyone getting to know the state of the Perl 6 language. 03:40
sorear TimToady: in STD method 'variable', what is '$:' <name> for?
surely <sigil> <twigil>? <desigilname> covers $:foo and $::foo 03:42
TimToady well, I presume it was for the $:foo named form at some point, but maybe it's not used, or maybe it's in there to prevent to allow $: to mean a $ invocant elsewhere
the fact that there's an XXX indicates it was a workaround to some difficulty 03:43
so maybe ignore it and see what breaks
sorear perhaps LTM issues. it's at least 1.5years old 03:44
03:44 tokuhiro_ joined
TimToady it might predate your LTM 03:44
yeah
sorear it predates my *involvement*
I arrived just after the ng merge
TimToady as soon as you joined I got stupid :)
sorear I don't know how long ago your LTM came in though
03:44 tokuhirom left
sorear hey, now I feel guilty... 03:44
ingy it avoids o/ 03:45
TimToady no wait, I only got stupider
ingy: what doesn't it avoid?
ingy er
TimToady I guess it doesn't at that...
ingy sorry irc time warp 03:46
just meant to say HI!
TimToady it's that Time::Travel module we were using earlier
hi, which TZ are you in these days? 03:47
ingy the one in the future
Melbourne
thou mberends: thanks, i am not sure if i just sound cranky. :-) i will look a bit more at the site to come up with some way to highlight the freshest stuff without losing the breadth of the more ... historical content
TimToady thou: we could use more cranks like you :) 03:48
mberends thou: thanks to you! :)
TimToady btw, do you pronounce your th voiced or voiceless?
thou voiced
TimToady thanks <-> voiceless 03:49
thou oh, i thought you meant in "thou"
TimToady yes
thought it could be short for "thousand" or sumpn
thou right
nope, just the familiar you 03:50
TimToady how...elizabethan...
thou hehe. i think of it as king jamesian :-)
03:51 kaare_ left
TimToady ah, yes, I grew up with that :) 03:51
ingy about to set sail though: Melbourne -> Seattle -> Asheville -> Pitt -> Chicago -> Duluth -> Banja Luka -> London -> Berlin -> Riga -> Chamonix -> Torino -> Paris -> Pittsburgh -> Tokyo -> 台北 -> Canberra -> unknown...
thou i just found out that those plastic collars that we put on our dogs and cats to keep them from licking a sore are called "elizabethan collars", so i can't think of anything else when i hear that word
it seems a strangely apt picture to capture the elizabethan era 03:52
TimToady yes, we've had a few of those collars in our petful career
what's pitiful is seeing them try to lick the wound through the collar; something deep about psychology there... 03:55
sometimes it seems better to do something ineffective than to do nothing at all
explains a lot of the quackery in the world 03:56
thou when you can't even lick your wounds, you're really down and out...
ingy TimToady: are we intersecting in any of those cities?
TimToady Asheville, Riga, maybe Tokyo
subset YAPC of Ingy where ...
03:57 fuzzyflounder joined
ingy no IPW for you eh? 03:57
03:57 fuzzyflounder left, fuzzyflounder joined, fuzzyflounder is now known as cooper
ingy or PPW more surprisingly 03:57
TimToady well, that may yet happen
at the moment I've been so overbooked that I actually begged off a trip up to Seattle with my family, so I'm Home Alone. 03:58
ingy are you headed to NPW or FPW? I can't make those...
TimToady prolly not
ingy well enjoy the living room. I'd pop in for a hack, but I'm not a good swimmer. 04:01
04:01 lumi_ left 04:02 donri left, lumi_ joined
dalek ecza: 6083fb7 | sorear++ | src/niecza:
Use metamodel to verify $?FOO references. Add placeholders to metamodel immediately.
04:09
04:11 molaf joined 04:19 hudnix left 04:20 woosley joined 04:21 satyavvd joined 04:31 mishnik|2 left, mishnik left 04:35 cognominal_ joined
sorear std: { our $x }; say $x 04:35
p6eval std 37a0cdd: OUTPUT«Potential difficulties:␤ $x is declared but not used at /tmp/7S52W1dx8O line 1:␤------> { our $x⏏ }; say $x␤ok 00:01 120m␤»
04:35 stephanepayrard_ left
sorear this is wrong on multiple levels... 04:36
TimToady std: { our $x }; package Foo { $x }
p6eval std 37a0cdd: OUTPUT«===SORRY!===␤Variable $x is not predeclared at /tmp/wxa2IxlTUJ line 1:␤------> { our $x }; package Foo { $x⏏ }␤Potential difficulties:␤ $x is declared but not used at /tmp/wxa2IxlTUJ line 1:␤------> { our $x⏏ }; package Foo {
..$x …
sorear is_known is checking $*CURPKG first thing
TimToady yeah, though that doesn't much matter for a boolean 04:37
sorear What do you mean? 04:38
TimToady the point of the routine is only to return true or false
it was just doing a simple check before a complex check 04:39
assuming P6 still looks in the current package regardless of 'our' scoping 04:40
04:40 lumi_ left
TimToady like P5 does 04:40
sorear I thought that was only with 'no strict'
04:41 lumi_ joined
TimToady yeah, I guess, though the error is interesting: Variable "$x" is not imported at - line 2. 04:41
anyway, feel free to fix it 04:42
04:43 wamba joined
sorear TimToady: what is the intended difference between is_known and is_name? 04:48
they look like they're doing exactly the same thing modulo bugs 04:49
TimToady is_name is intended for sigilless names, though they may have converged over time 04:50
sorear std: my class A {}; { say A.WHICH; my class A {} } 04:51
p6eval std 37a0cdd: OUTPUT«ok 00:01 120m␤»
sorear that's the main point of difference I see :)
TimToady well, the presence of a name can influence the parsing 04:52
started out just type names, but also constants and enums, or any names that don't take args 04:53
or in the alternate view, constants are just a very small subset type :)
sorear except for constants with sigils 04:54
my view is that sigil presense is the important factor, not the kind of declarator
TimToady sure, but those are pretending to be variables
well, not for post-declared listops 04:55
those don't have a sigil, but are parsed as functions nonetheless
04:55 lumi_ left
TimToady we can either have post-declared listops or post-declared types, but not both 04:56
04:56 lumi_ joined
TimToady anyway, there's probably some way to unify the routines with a few internal conditionals 04:57
sorear I'm just doing s/is_known/is_name/g and seeing what breaks...
05:03 wamba left 05:07 TiMBuS left 05:08 molaf left 05:13 TiMBuS joined
TiMBuS ... wtf 05:14
what happened there
sorear freenode sometimes bans people for no reason
TiMBuS :[
sorear what'cha gonna do, start your own network?
TiMBuS yeah 05:15
sorear 22:07 -!- TiMBuS [~durf@2607:f358:1:fed5:22:0:b61d:edc1] has quit [K-Lined]
TiMBuS im ipv6 aware :>
sorear k-line disallows a single IP address from connecting to a single server
you reconnected as ipv5
v4
TiMBuS yeah i know, ive ran quite a few ircd's for this reason 05:16
time to complain to the overlords
05:17 pmichaud left 05:18 pmichaud joined 05:21 JimmyZ joined
mberends good * pmichaud 05:30
pmichaud mberends: o/ 05:31
my talk to yapc::eu was accepted!
mberends \o/
JimmyZ pmichaud++
pmichaud guess I better book some flights :) 05:32
or get ready for a lot of swimming and walking
pmichaud wonders... steamship and train, perhaps?
mberends round the perl in 80 days 05:33
sorear is the bridge over the Bering Strait finished yet?
you could go the long way. through Canada and Russia.
.o( if you're counting countries it's be fewer)
pmichaud I could stop in Portland, OR for OSCON on the way, too :) 05:34
05:37 lumi_ left 05:38 lumi_ joined 05:41 pjcj joined
dalek ecza: 6cb84d6 | sorear++ | src/niecza:
Remap is_known to is_name
05:44
05:49 _twitch joined 06:18 kaare_ joined 06:20 amkrankruleuen left, amkrankruleuen joined
JimmyZ aloha: tell jnthn Hello Jnhtn++, your two talks are accepted. 06:22
06:23 lumi_ left 06:24 lumi_ joined
JimmyZ :( 06:35
06:36 zorgnax joined 06:46 wamba joined 07:03 mj41 joined 07:07 mj41 left 07:13 lumi_ left 07:14 lumi_ joined, mj41 joined 07:17 zorgnax left, f00li5h left 07:21 wamba left
TiMBuS phenny: tell JimmyZ to use you instead of aloha 07:27
phenny TiMBuS: I'll pass that on when JimmyZ is around.
07:33 mj41 left 07:37 Su-Shee_ is now known as Su-Shee 07:38 mj41 joined 07:44 f00li5h joined
Su-Shee good morning everyone. 07:46
07:52 jfried joined
jnthn morning o/ 07:59
moritz \o 08:02
sorear hello, Su-Shee. 08:03
tis been a while! 08:04
Su-Shee I make a sound every day! :)
sorear oh.
I am too young to be losing my mind :/ 08:05
Su-Shee sorear: just the timezone drift.. I make my sounds when you are asleep probably ;)
JimmyZ jnthn: \o, your two talks are accepted. 08:06
phenny JimmyZ: 07:27Z <TiMBuS> tell JimmyZ to use you instead of aloha
08:08 lumi_ left 08:09 lumi_ joined
jnthn JimmyZ: Nice :) 08:13
08:13 thou left
jnthn JimmyZ: Looking forward to it. :) 08:16
08:16 wamba joined
jnthn JimmyZ: I'll arrive on the Wednesday before BJPW, so by the workshop I should be de-jetlagged :) 08:16
08:17 amkrankruleuen left, amkrankruleuen joined
JimmyZ jnthn: Good 08:19
08:20 [particle] left 08:21 HarryS left 08:22 benabik left 08:24 [particle] joined 08:28 benabik joined, dakkar joined 08:34 wamba left 08:37 wamba joined 08:50 daniel-s joined 08:52 burning_aces joined, wamba left, burning_aces left 08:54 jerome joined 08:55 _twitch left 08:57 envi_laptop joined, lumi_ left, wamba joined 08:58 lumi_ joined 09:05 wamba left
tadzik nom: say (1, 2).WHAT 09:12
p6eval nom: OUTPUT«Cannot access attributes in a type object␤current instr.: '_block4329' pc 145318 (src/gen/CORE.setting.pir:39435) (:488)␤»
09:20 amkrankruleuen left 09:21 amkrankruleuen joined
tadzik I has join() :) 09:25
mberends \o/
09:25 agentzh joined
tadzik jnthn: want to review it first or should I push it? 09:25
I think moritz++ tried to use FSA with it, I just did the simpliest thing: wklej.org/id/545644/ 09:27
09:27 HarryS joined
mberends tadzik: I'd guess push it if it doesn't break anything (forgiveness..) 09:27
tadzik it makes a test pass
nom: my @a = [1, 2], 3; 09:29
mberends tadzik++: so elegantly simple, if there's anything wrong with that it would be easy to correct
p6eval nom: OUTPUT«Could not find sub &circumfix:<[ ]>␤current instr.: '_block13' pc 94 ((file unknown):159) (:1)␤»
tadzik I don't think it flattens the list 09:30
09:30 lumi_ left 09:31 lumi_ joined
dalek kudo/nom: 1641672 | tadzik++ | src/core/List.pm:
Implement List.join() and List.Str(), gives us one more passing test in 08-var-array.t
09:33
tadzik leaves for classes 09:36
09:40 MayDaniel joined 09:51 Moukeddar joined
jnthn say (1, 2).WHAT # I suspect that a Str multi missing its :D 09:51
Or just missing its multi also :)
09:52 wamba joined 09:57 lumi_ left, lumi_ joined 09:59 wamba left 10:01 wamba joined 10:02 MayDaniel left 10:11 woosley left 10:28 pnu left 10:32 Moukeddar_ joined 10:35 Moukeddar left, pnu joined 10:37 lumi_ left, lumi_ joined 10:47 daniel-s left 10:48 icwiener joined 10:56 molaf joined 11:00 daemon left 11:01 daemon joined 11:04 wamba left 11:05 daemon left 11:07 daemon joined, wamba joined 11:10 lumi_ left 11:11 lumi_ joined 11:20 daemon left 11:21 daemon joined 11:25 wamba left 11:26 wamba joined 11:30 MayDaniel joined 11:39 satyavvd left 11:40 satyavvd joined 11:41 wamba left 11:45 satyavvd left
colomon rakudo: say 1e30.sin 11:50
p6eval rakudo ae5bea: OUTPUT«0.00933146893117582␤»
11:51 MayDaniel left
colomon rakudo: say 31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679.sin 11:52
p6eval rakudo ae5bea: OUTPUT«0.805989455610472␤»
colomon rakudo: say pi.say
p6eval rakudo ae5bea: OUTPUT«3.14159265358979␤Bool::True␤»
colomon rakudo: say pi.sin 11:53
p6eval rakudo ae5bea: OUTPUT«1.22464679914735e-16␤»
11:53 nymacro left
colomon sigh 11:53
11:56 lumi_ left, lumi_ joined 11:59 kaare_ left
takadonet morning all 12:00
12:03 mtk joined
mberends hi takadonet 12:03
colomon: whigh sigh? 1e-16 is about as good as it gets for a Num 0. 12:06
12:18 jaldhar left
ingy has p6 settled on a version format? 12:19
or is it as wild as p5?
mberends ingy: it's settled. wait, looking.. 12:20
ingy: perlcabal.org/syn/S11.html#Versioning 12:21
12:23 lumi_ left, lumi_ joined
mberends ingy: and because that's too difficult to implement all at once, for Rakudo we aimed for just github.com/rakudo/rakudo/blob/mast...oposal.pod (but haven't got there yet) 12:24
12:24 cognominal joined 12:27 cognominal_ left, jaldhar joined, cjk101010 joined
ingy mberends: I meant is #.# or #.#.# or v#.#.# allowed, or just one 12:27
I didn't see it stated, although it seemed like #.#.# was prevalant 12:28
12:29 agentzh left, Moukeddar_ left
mberends ingy: v is optional, and number of dots is unrestricted 12:29
pmichaud good morning, #perl6 12:30
ingy so pretty much v5 madness :)
12:30 cjk101010 left
mberends gm, pmichaud 12:30
ingy o/
ingy wonders how far into p6 he'll be sucked this summer 12:31
mberends the sucking power of p6 continues to increase ;)
nothing like an Electrolux though ;) 12:33
ingy I just watched an Australian expose on woofering
not keen to think about an Electrolux 12:34
mberends ouch 12:35
jnthn o/ pmichaud 12:44
colomon mberends: pi.sin is correct. (pi * 10 ** 100).sin is very badly wrong. 12:59
13:02 jaldhar left, jaldhar joined
mberends colomon: ah. better not throw away that circular slide rule then 13:02
13:02 Holy_Cow joined
pmichaud jnthn: my talk was accepted :) 13:02
13:04 lumi_ left 13:05 lumi_ joined
jnthn pmichaud: \o/ 13:06
pmichaud: Did you come up with a second one? 13:07
pmichaud not yet. I'm thinking of doing the rpbench one as a lightning talk
jnthn ah, lightning talks can be good :)
.oO( but can pmichaud do an rpbench talk as funny as translating NQP to lolcode? :-D )
pmichaud someday I will have to come up with a talk to beat that one 13:08
13:08 Holy_Cow left, TiMBuS left 13:12 daniel-s joined, kaare_ joined 13:27 envi_laptop left
gfldex i'm getting a segfault on 32bit in the latest rakudo with perl6 --version 13:27
64bit is fine tho
pmichaud gfldex: latest rakudo release, using a standard parrot? 13:28
gfldex Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb741d8d0 (LWP 20271)]
Parrot_oo_find_vtable_override (interp=0x94be028, classobj=0xa530ab0, name=0x94e9014) at src/oo.c:513
513 VTABLE_get_pmc_keyed_str(interp, _class->parent_overrides, name);
This is Rakudo Perl 6, version 2011.05-16-gae5bead built on parrot 3.4.0 RELEASE_3_4_0-224-g5d77384
pmichaud ah, on rakudo master
maybe I better build me a 32-bit environment 13:29
gfldex dont worry, i will bug you every time that happens :)
pmichaud that function was recently changed in Parrot, so I wonder if it's related to that. 13:30
gfldex can't i tell configure.pl now to pull a different parrot version now? 13:31
pmichaud in nom one can do it... master doesn't use the new config scripts
I thought about porting it, but the API to Configure.pl is quite different
gfldex PARROT_REVISION will have to do then 13:32
pmichaud: could you tell me the latest version that got the old oo.c?
pmichaud so it wasn't an obvious step
13:33 Moukeddar joined
mberends o/ Moukeddar 13:33
Moukeddar Hello mberends
how are you doing?
what do you think ? 13:34
i.imgur.com/vl7ey.png
mberends nice :) had a few quiet days at home. $work begins tomorrow
Moukeddar it's good to have a few days of tranquility 13:35
mberends Moukeddar: at first sight, very good. I'll stare at it a little longer now
pmichaud gfldex: looking... it's not obvious from 'git log' though 13:36
13:36 icwiener left
pmichaud gfldex: oh, that was apparently in a branch 13:36
so, I don't know.
gfldex pmichaud: i will see if gdb can tell me more 13:37
13:40 TBA2 joined
TBA2 afternoon perl6 13:40
mathw hi
TBA2 quick question, hoping someone can clarify some inheritance stuff in p6 for me :)
for basic inheritance, this is enough:
(p.s. how do i do a newline in mirc lol)
flussence gfldex: fwiw I don't get a segfault there on 32bit... 13:41
TBA2 class X {}; class Y is X {}; my Y $y = Y.new();
works fine. but, what about constructors? BUILD is done at compile time, so I presume I overload sub new?
pmichaud ...BUILD is done at compile time? 13:42
you can override BUILD or new.
depends on what part of construction you want to override
TBA2 if it helps, my aim is something like this: 13:43
class X { has $!Summat; method new(Str $SummatElse) {} }; class Y is X { method new(Str $SummatElse) {} };
where i can call Y.new($summat) and both Y.new and X.new are called in order 13:44
gfldex pmichaud: my problem may be an oldish libc
TBA2 pmichaud: thx btw :) 13:45
pmichaud TBA2: I think you want to be overriding BUILD then
X's BUILD will describe how to initialize $!Summat
13:45 hudnix joined
pmichaud (if the default isn't good enough for you.) 13:45
13:46 lumi_ left
pmichaud I could be wrong about that though. we really ought to have a good "basics of Perl 6 oo" somewhere. 13:46
I wonder if the perl6book has something :-)
TBA2 pmichaud: perhaps more accurate question then, if I want to execute code on an object when its being created, is that BUILD or new? I realise new() doesn't have a reference to $self, and thats where I start getting confused lol
pmichaud that's BUILD 13:47
13:47 lumi_ joined
pmichaud new has a reference to "self", but it's not the self of the object being created 13:47
it's the self of the object doing the creating
TBA2 yeah, i'd been using $self = self.bless(*) (albeit without really knowing what exactly thats doing) and then using the reference to $self to call subs, which explains why my classes are blowing up in my face lol 13:48
so in BUILD I can do the normal $.Whatever to access instance vars? 13:49
pmichaud I think you want to be using the private interface, in general
i.e., $!xyz instead of $.xyz
S12 talks about that a fair bit, iirc
TBA2 thanks, will take a look, actually already have it open haha :p
mberends Moukeddar: your entity relationship diagram looks quite workable. It looks like commenters are not users, which is fine, but then having an email address on each comment may be pointless. 13:50
TBA2 if I ever get my head around this I'll put together an FAQ with what I've learned lol :p
Moukeddar it's for that the visitors could comment without being a registered user
mberends Moukeddar: I guessed as much :) 13:51
Moukeddar and the user table is for the peeps that are going to write on the blog
13:51 colomon left
mberends yes, that part makes perfect sense 13:52
Moukeddar is there anything wrong with it? 13:53
TBA2 pmichaud: amazing, thank you, just redone my classes with BUILD and its all working as expected! 13:55
mberends I would just drop the email field from the Comments table, that is all. You would not be able to validate the addesses, and people don't like to have to give email addresses because of spam, phising etc.
pmichaud TBA2++ 13:56
13:56 buubot_backup left
Moukeddar i admit it , it's kinda annoying to give your email adress just to comment :) 13:57
+1 internetz for you mberends
TBA2 just a thought, could the synopses be released as a book once they're all out of draft? i'd pay for a copy just to have it on my desk instead of using up an extra monitor, could be some extra cash for TPF! 13:58
13:59 spq1 joined
mberends
.oO( where do I put this new internet? i haz 2 already!? )
14:00
Moukeddar please consider donating to the less fortunate people
mberends :) ok
Moukeddar thanks for the help mberends 14:01
14:01 meraxes left
mberends good luck with the construction Moukeddar 14:01
Moukeddar thank you 14:02
14:03 buubot_backup joined, awoodland joined, perigrin left 14:04 awoodland left 14:07 envi_laptop joined 14:09 TBA2 left 14:10 TBA2 joined 14:14 PacoLinux joined 14:16 c9s left, estrabd left 14:27 Moukeddar left 14:32 lumi_ left 14:33 lumi_ joined 14:37 bluescreen10 joined 14:40 JimmyZ left
Su-Shee rakudo: sub foo () { say; }; "Hello".foo(); 14:51
p6eval rakudo ae5bea: OUTPUT«Method 'foo' not found for invocant of class 'Str'␤ in main program body at line 22:/tmp/dbQUrFhDW7␤»
14:54 tokuhiro_ left
pmichaud rakudo: sub foo ($a) { $a.say; }; "Hello".&foo(); 14:58
p6eval rakudo ae5bea: OUTPUT«Hello␤»
daniel-s I just noticed, in #emacs they have a bot that will automatically tinyurl a link that it sees in the chat 14:59
I've never seen that before 15:00
would that be useful in #perl6?
PerlJam we've been doing that on #perl for a long time
flussence seems like a gratuitous use of short url namespace to me...
daniel-s I'm pretty sure a good percentage of tinyurls are just spam anyway 15:01
I wouldn't feel guilty about it
daniel-s is looking for a new perl 6 project
flussence I prefer long urls, you never know when one of those url shortener sites will disappear... 15:02
can I suggest one involving NativeCall? Just so someone's using it :)
daniel-s actually, I've been meaning to ask 15:04
I can't find anything that describes how to execute external commands
in perl 6
flussence backticks and qx work the same as perl 5, if that's what you mean 15:05
daniel-s eg. if i had $directory = "/home/daniel-s/stuff", to then execute "unzip $directory"
which calls the unzip executable
flussence that'd be `unzip $directory`, or qqx(unzip $directory) 15:06
(I don't think anything more in-depth than that exists yet)
moritz ` is gone from p6 15:08
flussence oops 15:11
daniel-s say qqx('pwd'); <--- doesn't work
15:11 mkramer joined, mkramer left
daniel-s rakudo: say qx('echo hello'); 15:12
p6eval rakudo ae5bea: OUTPUT«Could not find sub &qx␤ in main program body at line 22:/tmp/SJ1N8Jb9Sd␤»
moritz in what way?
ah, it's not a sub 15:13
it's a quoting construct
so () won't work
qx/pwd/ should work
rakudo: say $*CWD
p6eval rakudo ae5bea: ( no output )
daniel-s rakudo: say qx/echo hi/;
moritz but qx won't work on evalbot, for security reasons
p6eval rakudo ae5bea: OUTPUT«Operation not permitted in safe mode␤ in 'Safe::forbidden' at line 2:/tmp/5NBpK2U4WS␤ in main program body at line 22:/tmp/5NBpK2U4WS␤»
daniel-s yep, works for me, thanks 15:14
it's not possible to let a process run, do other stuff, then come back to it once it's done though, is it? 15:15
15:15 kliff joined 15:19 mtk left
moritz you can launch it in the background and redirect ouzput to a file 15:19
and open() that file later
15:23 Tedd1 left 15:24 mtk joined, Tedd1 joined 15:33 icwiener joined 15:38 lumi_ left 15:39 lumi_ joined 15:41 xinming left 15:42 thou joined
moritz nom: say <a b c>.WHAT 15:43
p6eval nom: OUTPUT«Cannot access attributes in a type object␤current instr.: '_block4329' pc 146006 (src/gen/CORE.setting.pir:39611) (:488)␤»
15:43 xinming joined
moritz nombug 15:43
15:47 kfo joined
pmichaud yes, it's in List.gimme 15:48
as soon as I finish temporary registers I'll fix List.gimme
moritz got a patch for List.join that constructs a FixedStringArray and populates it with manually unboxed strings 15:49
15:50 kfo_ left 15:51 wamba joined
masak good evening, #perl6. 15:54
15:56 meteorjay joined
dalek kudo/nom: 011e8a4 | moritz++ | src/core/List.pm:
replace List.join with an implementation that unboxes strings manually

As per the IRC discussions yesterday, this should be much faster than letting parrot do it through the get_string vtable. Experimental verification (or falsification) welcome.
15:59
masak moritz: I'm curious: what does the \ do in \$separator? 16:04
gfldex pmichaud: segfault gone, rm -r rakudo did the trick
moritz masak: something like "don't bother about the containerness" - it's just a (small) optimization in this case 16:05
nom: sub f($x is rw) { $x = 5 }; my $y = 8; f $y; say $y 16:06
p6eval nom: OUTPUT«Cannot assign to a readonly variable or a value␤current instr.: 'infix:<=>' pc 133245 (src/gen/CORE.setting.pir:32844) (:763)␤»
moritz another nombug
masak moritz: when would it make a difference?
(the \)
16:08 JimmyZ joined
pmichaud masak: it binds $separator directly to the value being passed in, instead of creating a new Scalar PMC to hold the reference. 16:09
someday rakudo will be able to detect this automatically and make the optimization for you when it's safe to do so 16:10
masak ah.
so unless we then try to assign to $separator, there's no way to tell the difference?
do we care so much about a micro-optimization that we want to strew backslashes all over our setting until Rakudo detects this kind of thing automatically? 16:11
pmichaud maybe not even then :-)
I think it's a premature optimization in this case, yes.
O
I'd prefer to save the backslashes for cases where we *know* performance is going to be an issue. 16:12
masak +1
code should mean stuff.
pmichaud thus it makes sense for the math operators, and for the List internals
but other places... I don't think it makes good sense 16:13
16:13 JimmyZ left
masak I'm glad I learned about the meaning of \ -- and now I think it doesn't carry its weight in this case. 16:13
pmichaud I agree.
masak removes it
16:14 JimmyZ joined, wamba left
moritz
.oO( premature pessimization )
16:14
JimmyZ rakudo: sub foo ($a) { $a.say; }; "Hello".&foo(); # how do I pass one more args? 16:15
p6eval rakudo ae5bea: OUTPUT«Hello␤»
pmichaud rakudo: sub foo ($a, $b) { $a.say; $b.say; }; "Hello".&foo('world'); 16:16
p6eval rakudo ae5bea: OUTPUT«Hello␤world␤»
masak JimmyZ: a method is just a funny sub where the first argument is the object (=invocant).
s/argument/parameter/
pmichaud "Hello".&foo() is like &foo("Hello")
16:17 lumi_ left
JimmyZ most like python? 16:17
masak not to mention Perl 5.
16:17 lumi_ joined
JimmyZ didn't find where is mentioned in SYN. 16:18
pmichaud I'm not sure it's explicitly mentioned as such.
masak OTOH, it's not different from Perl 5... :P
pmichaud (and yes, it probaly should be.)
correct, it's not different from p5. :) 16:19
JimmyZ it is not in SYN ?
masak (but yes, it's a good idea to say so explicitly)
pmichaud but there's enough other stuff in the object system that is way different from p5 that one can easily think that this might be different also :)
so an explicit mention would be helpful
also, at some point the p6 specs need to not default to "same as p5" 16:20
especially since p5 itself isn't static :)
moritz and not specced
dalek kudo/nom: 59fcb4f | masak++ | src/core/List.pm:
removed premature backslashtimization
16:21
moritz (backslashes) asking the other way round: when does it actually make sense to create an extra scalar container for a parameter? 16:22
when you want to it to something?
16:22 cdarroch joined, cdarroch left, cdarroch joined 16:23 yinyin left
JimmyZ the example is strange, that force the sub to be a method 16:23
16:23 Moukeddar joined
masak JimmyZ: the other way also works. 16:23
rakudo: my &bar = method { say self }; bar("OH HAI")
p6eval rakudo ae5bea: OUTPUT«OH HAI␤» 16:24
moritz JimmyZ: it's not the fact that something is a sub or method that makes it special, but rather the way you invoke it
pmichaud moritz: the extra scalar container is when you're enforcing a new type or read-only-ness
sub abc($x) { def($x) }; sub def($y is rw) { $y = 5 }; my $z = 5; abc($z); 16:25
moritz JimmyZ: in $obj.routine(), the fact that you call 'routine' as a method means that it is searched for in the context of $obj, not in the current lexical scope
jnthn home
JimmyZ So I don'nt need to 'use MONEY' , I can argment any class
moritz jnthn: then let me tell you that sub f($x is rw) { $x = 3 } doesn't work... should it right now?
pmichaud if abc has \$x instead of $x, then you lose the rw checking
moritz JimmyZ: you're not changing the class 16:26
16:26 cognominal left
JimmyZ moritz: yes, but it give me this impression. 16:26
pmichaud also, if anything binds to a backslashed parameter, you're potentially binding to the outer container or something like that
basically, using a backslash defeats a lot of constraint checking 16:27
16:28 cognominal joined
jnthn moritz: is rw, is copy, etc are NYI. 16:28
moritz: More to the point, parameter traits are NYI
pmichaud ...is copy is NYI?
oh.
jnthn nom: sub foo is anaadvark { } 16:29
p6eval nom: ( no output )
masak nom sub foo is awesome { }; say "alive!"
pmichaud I better fix Array.BIND_POS and Hash.BIND_KEY then, unless they'll be implemented soon
masak nom: sub foo is awesome { }; say "alive!"
p6eval nom: OUTPUT«alive!␤»
jnthn pmichaud: Just didn't get around to it yet.
pmichaud s/they'll/'is copy'/
16:30 Moukeddar left
masak nom: sub is_copy is not_implemented { }; say "correct." 16:30
p6eval nom: OUTPUT«correct.␤»
masak wow, nom is so fast!
jnthn Doing is rw and is copy means doing parameter traits fully, since we're not cheating on any traits in nom :)
moritz tosses his plans to do ++ and -- 16:31
JimmyZ rakudo: my $this = { 'Class_Name' => 'Foo'; }; sub foo ($this, $str ) { ~$this.say; $str.say; }; "Hello".&foo('world'); #this looks like Javascript :)
p6eval rakudo ae5bea: OUTPUT«Hello␤world␤»
moritz nom: 1i
p6eval nom: OUTPUT«Method 'new' not found for invocant of class 'Sub'␤current instr.: '_block13' pc 80 ((file unknown):69240188) (:1)␤»
moritz still doesn't understand this one 16:32
jnthn Is that a complex literal?
pmichaud I'm guessing the action method needs updating.
jnthn If so, they're decidedly not put back
We can't put back more numeric literals until we work out how to unify compile time and runtime string to number handling.
moritz: ah, yeah...is rw is a blocker for ++ and --, ain't it... 16:33
pmichaud won't \$param work there? 16:34
jnthn Yes, it would, as a cheat.
jnthn tries to remember exactly what is copy does under our current container model :)
pmichaud: Guess is copy = create a container and STORE?
pmichaud jnthn: yes
jnthn k
And is rw is like \$param apart from check rw flag. 16:35
moritz nom: my $x = 3; sub f(\$y) { $y = 8 }; f $x; say $x
p6eval nom: OUTPUT«8␤»
moritz oh
then I can go ahead, I think
jnthn I'll do is copy and is rw this evening.
moritz: Yes, feel free. Can fix it up with "is rw" once it works.
16:36 uniejo left, Mowah_ joined 16:40 uniejo joined
moritz rakudo: say True.pred 16:42
p6eval rakudo ae5bea: OUTPUT«Bool::False␤»
masak rakudo: say True.succ 16:43
moritz rakudo: say Any.pred
p6eval rakudo ae5bea: OUTPUT«Bool::True␤»
rakudo ae5bea: OUTPUT«Method 'pred' not found for invocant of class ''␤ in main program body at line 22:/tmp/cTseiyxD33␤»
JimmyZ rakudo: my $this = { 'Hello'; }; sub foo ($this, $str ) { $this.()," $str" }; $this.&foo('World').say; # I guess this will scare some newbie
p6eval rakudo ae5bea: OUTPUT«Hello World␤»
moritz rakudo: my Int $x; say $x.pred
p6eval rakudo ae5bea: OUTPUT«-1␤»
masak rakudo: enum E <a b c>; say c.succ
p6eval rakudo ae5bea: OUTPUT«3␤»
moritz JimmyZ: well, then don't show the newbie
masak er.
JimmyZ That's javascriptish... 16:44
moritz there are lots of parts in Perl 6 that scare the newbie 16:45
like the meta object thingy 16:46
TBA2 and there weren't in p5? ;p
pmichaud There are lots of parts in Perl 6 that scare the oldbie, too.
I'm still frightened by some of what I see. :)
moritz but they also gives the oldbie lots of power, so they have their place
16:46 wamba joined
JimmyZ I agree 16:46
masak shouldn't the above say 'c'? 16:47
(yes, I probably implemented that part...)
moritz masak: I think so
masak submits rakudobug
good enough for me :)
jnthn Now masak++ introduces bugs so he can submit them :P 16:48
16:49 mj41 left
masak it wasn't like that... :) 16:49
honest 16:50
jnthn :)
16:52 Chillance joined
pmichaud working on this temporary register solution, I'm once again reminded just how completely broken parrot's object model is. 16:52
sorry, how broken parrot's lexical model is
.lex 'name', $P999 # $P999 must not be reused 16:53
$P999 = find_lex 'name' # reusing $P999 is okay
bleh
jnthn pmichaud: .lex 'name', $P9999 is actually associating that lexical name with that register
pmichaud I now that.
*I know that.
that's what is kinda broken about it. 16:54
jnthn Not that I really think relxicals belong in registers
wtf
lexicals
pmichaud they don't
that "feature" was really a premature optimization, I think.
and it's come back to bite us many times.
moritz can one do $S999 = find_lex 'str_lexical' ?
jnthn For one, you can't free the register set if there's a closure around. 16:55
pmichaud not in parrot, not yet
you could at least null out the non-bound registers, though
jnthn I actaully in theory could, with dynops, implement that now we have our own lexpad/lexinfo
oh, but .lex 'foo', $S0 probably won't work. 16:56
pmichaud at some point I wonder if we just give up on Parrot's lexicals altogether and use our own lexical opcodes and lexpads
jnthn Probably.
That's what we do with most things. 16:57
:)
16:57 lumi_ left
moritz \o/ t/01-sanity/02-counter.t passes nwo 16:57
*now
jnthn moritz: Probably 05-subs.t too 16:58
moritz jnthn: yes
dalek kudo/nom: 90513c2 | moritz++ | src/core/operators.pm:
implement ++ and --
kudo/nom: 4f41d0b | moritz++ | src/core/ (2 files):
add missing .pred methods
pmichaud jnthn: currently PAST does a little bit of work to optimize out a 'set' opcode when dealing with lexicals.
16:58 lumi_ joined
pmichaud I'm thinking of pessimizing that again to make sure we're using temporaries safely. 16:58
jnthn pmichaud: set is cheap 16:59
pmichaud yeah
I'll do that.
oh, one of the cases I was worried about is already handled! pmichaud[2008]++ 17:02
17:04 Maddeth joined
Maddeth hello 17:04
moritz looks for more LHFs 17:05
Maddeth may i be a pain in the butt and ask about ilbot :)
moritz Maddeth: I'm the author of ilbot, feel free to /msg me
17:06 dakkar left 17:08 [hudnix] joined, hudnix left 17:13 lichtkind joined
JimmyZ sleeps 17:16
17:17 JimmyZ left 17:28 cooper left 17:29 cooper joined, cooper left, cooper joined 17:32 cognominal_ joined 17:33 lumi_ left 17:34 lumi_ joined 17:35 cognominal left 17:39 araujo left
tadzik o/ 17:40
17:40 [hudnix] left
jnthn o/ tadzik 17:43
masak \o tadzik 17:44
pmichaud erg.... something in nqp and also in rakudo master is relying on parrot's lexical register mapping behavior :-(
jnthn pmichaud: ? 17:45
17:46 ymasory joined
jnthn pmichaud: As in, that .lex '$foo', $P1 will actually expect $P1 to not get re-used? 17:46
pmichaud no
suppose I now have
.lex '$foo', $P1
wait, start over
suppose I now have
$P1 = ...stuff to initialize a lexical...
.lex '$foo', $P1 17:47
if I change that to
$P1 = ...stuff to initialize a lexical...
$P100 = $P1
.lex '$foo', $P100
then things are failing
jnthn OK, that confuses me.
pmichaud me too
maybe to be a little more accurate 17:48
(rephrasing one more time)
we have
$P1 = ...stuff to initialize a lexical...
.lex '$foo', $P1
17:48 ymasory left
pmichaud ... use $P1 for other operations ... 17:48
but if that gets changed to
$P1 = ...stuff to initialize a lexical...
17:49 uniejo_ joined
pmichaud $P100 = $P1 17:49
.lex '$foo', $P100
... use $P100 for other operations ...
then things start breaking
17:49 uniejo_ left
jnthn I suspect in either case using it for other operations may be a problem. 17:49
But I can't explain why it'd work out in the first and not in the second. 17:50
pmichaud the first case is normal
jnthn Wait, what you you mean by "use for other operations"?
pmichaud the result of a PAST::Var :scope<lexical> node
jnthn ah 17:51
pmichaud as in
jnthn Which is $P1 / $P100.
pmichaud oh, I think I see the problem
I have to go pick up kid -- bbi20
Su-Shee where do I find some explanation about yapsi - npq - rakudo and their relationship to pass to someone? 17:52
17:53 kaare_ left, Mowah_ left
pmichaud Su-Shee: there's a description of our plan for nqp at pmthium.com/2011/01/31/nqp-roadmap-2011-01/ 17:54
also pmthium.com/2011/02/08/new-nqp-repo...do-branch/
Su-Shee ok, I consider that the "that's what people should know" until further notice? :)
pmichaud (no kid pickup -- someone else is taking care of it)
it's probably time for an update 17:55
but for now, that's what we have
17:55 Mowah_ joined
pmichaud jnthn: okay, here's the problem (stupid $&!#$% :pasttype<bind> again) 17:55
17:56 envi_laptop left
pmichaud PAST::Op.new( :pasttype<bind>, PAST::Var.new(:scope<lexical>, :name<$foo>), $ast) 17:56
something is relying on having the register for $ast and the .... wait, that can't be it. 17:58
oh, yes it is
I have to rephrase this one
PAST::Op.new( :pasttype<bind>, PAST::Var.new(:scope<lexical>, :name<$foo>, :isdecl), $ast)
something is relying on the result of the PAST::Op being exactly the same as $ast 17:59
jnthn Where "exactly the same" means?
Same register?
pmichaud yes.
because normally :pasttype<bind> returns the register associated with the lexical
jnthn tries to think of a place where that's relied on 18:01
pmichaud I can't imagine quite why/where it would make a difference
jnthn I'm struggling also. 18:02
It feels like it shouldn't matter.
pmichaud let me back up and make the change with a normal parrot master, no temporaries involved
see if I get the same problem.
sorear good * #perl6 18:04
pmichaud yes, I get the error 18:06
18:07 cooper left
pmichaud here's the patch that breaks things: gist.github.com/1023329 18:08
Su-Shee now I'm confused by the roadmap.
pmichaud suddenly wonders why we call "plan for unexplored territory" a "roadmap" :) 18:09
Su-Shee "the map is not the territory" :) 18:10
pmichaud jnthn: all I'm doing is making sure that the lexical gets its own register instead of using whatever register comes back from vivipost
Su-Shee: maybe I can give a quick overview here, you can ask questions, and we'll make a blog post about it for others
the pieces:
18:11 molaf left
pmichaud parrot - the virtual machine 18:11
Su-Shee pmichaud: it sounds like phasing out parrot by making nqp an vm-independent ... something to run perl 6 implementations on. (rakudo these days)
jnthn pmichaud: I agree the patch should be innocuous.
18:11 lumi_ left
pmichaud jnthn: when compiling with nqp, I get 18:11
Su-Shee: the point is not to phase out parrot, it's to enable rakudo (and other nqp-based programs) to target VMs other than parrot 18:12
gist.github.com/1023342
18:12 lumi_ joined
pmichaud jnthn: s/with// 18:12
also, we've decided that parrot's API is a very poor match for Perl 6, so NQP is giving us a level of abstraction where we can fix that 18:13
TimToady the first-arg-is-invocant policy is talked about at S12:349 and following
pmichaud (we expect the same may be true for others VMs that we target -- i.e., they probably won't fit Perl 6's expectations, so NQP gives us a layer in which to make things match) 18:14
Su-Shee pmichaud: did you have something like "Clojure" in mind? I mean it's a lisp on a Java VM which "accidently" can incorporate all the Java libs out there...
jnthn pmichaud: looking
pmichaud Su-Shee: our primary other targets have been CLR and JVM
but we're not limiting ourselves to those. we'd also be interesting in JavaScript (e.g., Google's V8) and llvm 18:15
*interested
jnthn pmichaud: Please can you gist me the contents of _block2576 in src/stage1/gen/nqp-mo.pir? 18:16
pmichaud: If I can see that there's a good chance I can fairly quickly tell you what's producing it.
pmichaud gist.github.com/1023350
Su-Shee pmichaud: I think that'll make many people happy and interested. 18:17
pmichaud Su-Shee: that's our hope/expectation as well
jnthn pmichaud: OK, I know what bit of code that is.
18:18 Zapelius joined
jnthn pmichaud: It's result of compiling what's in src/how/EXPORTHOW.pm 18:18
pmichaud ...are there lexical declarations there? I don't see any. 18:19
also, the problem might not be in what is being compiled but rather in the thing doing the compiling
Su-Shee how does sorear's c# implementation fit in all that? it's totally independent?
pmichaud code-wise, it's fairly independent
there's not any direct code relation between niecza and rakudo/nqp/parrot 18:20
Su-Shee c# .net and jvm sounds very enterprise-compatible.
pmichaud yes, that's another reason rakudo went this way
we think there needs to be a .net and/or .jvm Perl 18:21
jnthn pmichaud: oh :(
pmichaud: I think I know what's up.
pmichaud: $?PACKAGE and $?CLASS are in the static lexpad. 18:22
Su-Shee pmichaud: from my office's code point of view I'd buy it yesterday.
jnthn pmichaud: At lexpad creation time, we populate those lexicals with values from the static lexpad.
pmichaud: Before it was just: 18:23
.lex "$?PACKAGE", $P2579
Which has zero runtime effect.
It just declares "this lexical goes in this register"
set $P2579, $P2578
.lex "$?PACKAGE", $P2579
Is thus scribbling over the value from the static lexpad with a null.
jnthn shoulda seen this issue earlier... 18:24
The bind threw me off
It's not binds that are the issue
It's a PAST::Var.new( :name('$?PACKAGE'), :scope('lexical'), :isdecl(1) )
Directly in a PAST::Stmts
with no viviself and not being bound. 18:25
pmichaud ohhhhh
checking
well, there's always an implied viviself in this particular codepath 18:27
18:27 mj41 joined, colomon joined
sorear pmichaud: I agree that roadmap is an extremely stupid name for it 18:27
pmichaud sorear: yeah, I think the analogy should be more of "we see this cool mountain peak in the distance... here's our plan for how to reach it. There's a lot of unexplored territory between here and there, though" 18:29
so whatever we'd call that plan. "expedition", perhaps, although I don't necessarily like some of the connotations of that word :)
jnthn It's more a taiga map than a road map, in terms of how hard it is to cut our way through to the mountain. :) 18:30
pmichaud jnthn: so, is the "Can only use get_who..." message coming from trying to use get_who on a PMCNULL ?
jnthn pmichaud: Yeah, looks so
pmichaud maybe we should error that case out a little better :)
Su-Shee whatever you call it, I compile it monthly like clockwork. ;)
jnthn pmichaud: Yeah, I'd not really run into this so much :) 18:31
pmichaud jnthn: well, that's a good thing!
jnthn pmichaud: Most of the time it's "oh no, it's a Parrot object that got in" :)
pmichaud well, that's really what this is, too :)
it's a Parrot object (PMCNULL) that got in
jnthn It just checks vtable->base_type
Right :)
pmichaud so, the error message should say what it did get
jnthn Null is just a PMC type.
pmichaud Can only use get_who on a SixModelObject, not a silly Parrot <foo> 18:32
anyway, now that you've identified the problem, I'm certain I can fix it.
(trivially, even.) 18:33
jnthn OK, now you've given me the wording, I can happily add that. <grin>
TimToady it's too bad that ✕ looks so much like x, or we could say * ✕ * instead of * * *
pmichaud btw, on another topic... earlier today I was thinking about using a role Parrot::PMC[::T] to be able to get to Parrot PMC's. For example: Parrot::PMC[ResizablePMCArray] :-P 18:34
18:34 Tedd1 left
jnthn O.O 18:34
pmichaud (this was in reaction to binding Mu variables to non-Rakudo objects :-)
which I think is okay for now if you want to add that :) 18:35
jnthn role Parrot::PMC[$type] { method new() { pir::new($type) } }
:P
pmichaud yeah, something like that :)
but being a little smarter about handling $type, such as being able to parse 'PAST::Node' into namespaces
jnthn: okay, so what you just described explains why nqp fails... is there as similar problem in rakudo master? 18:37
(there must be :-) 18:38
18:38 Tedd1 joined
pmichaud trying patch now 18:39
jnthn master surprises me more
pmichaud yeah, me too
anyway, we'll know soon (about 4 mins)
18:40 tewk left
pmichaud seems to have resolved the nqp issue 18:40
let's see how rakudo master does
jnthn nom uses static lexpads too, but we didn't have them in master 18:41
18:43 Mowah_ left 18:45 fhelmberger_ joined, fhelmberger left
pmichaud okay, that fixed seems to have resolved it in master also. 18:47
18:50 lumi_ left 18:51 lumi_ joined 18:52 wamba left 18:53 dju_ joined 18:54 breinbaa1 left 18:55 breinbaas joined 18:56 dju left
jnthn afk for a bit 18:56
18:58 daniel-s_ joined 19:01 daniel-s left
pmichaud jnthn: (for when you get back) now nqp's t/p6regex/01-regx.t hangs for me when it gets to the "end" 19:01
it runs through all of the test files and displays the final plan, but doesn't actually exit. Weird. 19:02
TimToady hah, the ir clog gives a link to S99 in irclog.perlgeek.de/perl6/2011-06-13#i_3917424 19:03
pmichaud time for lunch 19:05
masak oh man. S99... how big is this project? /o\ 19:07
all I ever got to was S53.
"Illexical hyperroles" 19:08
TimToady well, the bug is actually that it was a ref to S999
masak oh, phew. what!? 19:10
/o\
mberends S99/S999 could be a meta-Synopsis of all the Synopses: "DWIM. TIMTOWTDI. Amen."
masak I still have nightmares about S38 sometimes. "Autojunctive paratokens." 19:11
TimToady that would be Sω
Su-Shee and it's not really a good sign if I can't tell wether you're just making things up or if it's a feature... ;) 19:12
masak someone should totally build a Markov chain spec generator.
Su-Shee oh god... :)
masak: you realize that someone will come along and implement it? ;)
masak hee hee 19:13
TimToady wait, isn't that what I did already <mmmph!>
pay no attention to the bdlf behind the curtain...
*fl
masak "The metaclass is the sole hyperoperator in the module that can't control the method and the dynamic variable for loop." 19:14
TimToady my irc remarks are also generated markovianesquely
masak I bet a good Markov spec generator could give implementors gray hairs... :)
TimToady how would you distinguish it from the current spec? 19:15
masak "But I just did the MOP according to the old spec! What's all this new stuff?"
"It's brilliant, but..."
Su-Shee "In quantum dispatch multiple objects can easily dispersed by a simple hyperrole actor model."
masak Su-Shee: you're better at it than I am :P
Su-Shee masak: I like to see the code you make out of it ;) 19:16
masak "We also see that a single given/WHICH interpolation suffices to turn off the LTM."
Su-Shee oh boy this will end badly.. :) 19:17
TimToady if we run it enough times, we can have everything specced that is currently missing
Su-Shee TimToady: you should consider a new spec to be released on April, 1st 2012 ;)
masak "Note that the base representation of a Unicode metaoperand is fixed at a precedence level of MONKEY_TYPING." 19:18
TimToady ponders a series of Google searches as a markov chain driver 19:19
masak ooh
TimToady maybe that could be Perl 6's killer app :) 19:20
Su-Shee "On a subatomic level - which is a metaphor for the single most basic unit type coercion happening during initialization of the most basic object of type ObjectType - one can prove the speed improvement by factor 10 due to the extremely late build of basic heaps"
masak TimToady: how automorph. :) 19:21
Su-Shee++
Su-Shee also, someone's already done something like this in perl.. for postmodern philosophy. :) www.elsewhere.org/pomo/ 19:22
masak btw, today's autopun: "The argument from authority is the weakest form of argument, according to Boethius." -- St. Thomas Aquinas
Su-Shee *haha* :)
masak even when I give a heads-up... :P 19:23
TimToady Argument by assertion is even weaker.
masak :P
Su-Shee masak: we should write a paper and submit it somewhere ;) 19:25
19:30 lumi_ left
masak Su-Shee: ;) 19:30
19:31 lumi_ joined
masak "On the autopunny properties of online programming communities, and their effects on morale and digestion." 19:31
masak will probably be chewed out for that one...
TBA2 is there a way to binmode $*IN in rakudo without opening a new filehandle? 19:32
masak TBA2: good question. there really should be.
TBA2 masak: i like it, a no without being negative ;) 19:33
masak no.
:)
it was more like an "I don't know."
TBA2 lol :) 19:34
TBA2 starts digging
19:35 dju_ is now known as dju
masak S16, IIRC. 19:35
lue hello world! o/ 19:36
masak lue! \o/
colomon \o
masak lue: could you write us a Markov-chain spec generator? :) 19:37
sorear o/ masak 19:40
masak sorear \o
how goes the Niecza hacking?
lue why would you ask me a question like that? .oO(What is a markov chain? To the Wikipedia!)
masak lue: because I know you'll be delighted ;)
colomon sorear: I started coding up .sin for Niecza this morning -- need to talk to you about it at some point, but now is not really a good time for me. :) 19:41
masak lue: make sure you check prior art: en.wikipedia.org/wiki/Dissociated_press
19:41 cooper joined, cooper left, cooper joined
lue I'm still wondering what exactly you mean by Markov-chain spec generator. spec as in the Perl6 spec? would it just take various synopses and use them to create humorous texts? 19:47
sorear secure.wikimedia.org/wikipedia/en/wiki/SCIgen is much better prior art, IMHO
Su-Shee lue: scroll up :) 19:48
pmichaud detects a lightning talk for yapc::eu
mberends lue: FYI: irclog.perlgeek.de/perl6/2011-06-13#i_3918205 etc etc 19:49
Su-Shee a real one or a made-up-on-the-fly one with realtime human markov chaining specs? ;)
masak lue: at this point, you might want to backlog :P
oh, Su-Shee++ and mberends++ beat me to it :)
lue Hm, I wonder if I should backlog. 19:50
</sarcasm>
pmichaud my wife suggests a game: "Is it markov or is it spec?" 19:51
19:51 Bzek_ left
jnthn lol :D 19:52
pmichaud grab markov chain sequences and intersperse them with real stuff from the spec and see who can tell the difference :)
jnthn pmichaud: I've heard all kinds of interesting reports about that test file.
pmichaud jnthn: which one? the 01-p6regex.t?
jnthn pmichaud: How's the temps patch looking otehrwise?
pmichaud: yes
pmichaud I need to muck around with it a bit I think.
jnthn pmichaud: I don't even get it run when I do make test here :S
TimToady it helps to filter generated sentences through a parser, though, to weed out obvious grammaros
colomon But the spec has those too.... ;) 19:53
pmichaud we'd probably pick out some candidates in advance
jnthn: I think I'm almost done.
the basic implementation was pretty straightforward, but then one has to be careful with things like exception handler blocks and lexicals and the like
jnthn pmichaud: Yes, can imagine :) 19:54
pmichaud: Any sense on improvement to CORE.setting.pir compilation?
pmichaud haven't gotten to that yet.
will do that next.
jnthn k 19:55
pmichaud however, my test case I was looking at yesterday is down to 15 "permanent" registers being allocated, with the rest all as temporaries.
jnthn Just need to write something up for $dayjob and then can get back to nom hacking for a bit.
lue So the basic premise of the generator is to mathematically take words from the spec and put them together, am I right? 19:56
masak lue: yes. semi-guided randomness. 19:57
lue Sounds like fun :)
19:59 mj41 left
TimToady see cpan.perl.org/scripts/nutshell/ch6/travesty 19:59
dalek kudo/nom: 11eb26f | moritz++ | LHF.markdown:
remove Complex from LHF
20:00
20:04 araujo joined, araujo left, araujo joined
pmichaud jnthn: with latest version of temporary register allocator, my test program goes from 173 permanently allocated registers to 10. And all but two of those are lexicals or subroutine constants. (The two that remain need to be non-temporary as well.) 20:06
20:06 Moukeddar joined
Moukeddar Hello 20:07
mberends hi again Moukeddar
Moukeddar still good?
masak rehi, Moukeddar.
better than ever :)
Moukeddar Good to hear 20:08
mberends Moukeddar: very good, you too I hope
Moukeddar i'm fine , the exams are soon :)
take a look masak
i.imgur.com/xyI7P.png
masak looks
Moukeddar: nice :) 20:09
mberends likes
lue (aah, now you got me thinking hard about how to do such a thing /o\)
Moukeddar now , the hard part , actuallty coding it :) 20:10
dalek kudo/nom: 135459a | moritz++ | src/core/List.pm:
add some numeric coercion methods to List
jnthn pmichaud: Great! I think we'll need that sort of thing for when I get to implementing hyperroles...they'll need lots of registers.
masak Moukeddar: no, the design is the hard part. it's just not evident yet ;)
Moukeddar i'm just getting started 20:11
jnthn pmichaud: Gotta do the quantum dispatch first though....
moritz masak: that always depends on the level of experience
mberends Moukeddar: s/hard/fun/ !
masak moritz: you're right, as always.
Moukeddar yes , yes , i'm accumulating the knowledge :)
mberends jnthn: s/hyperr/hyperb/ ! 20:13
moritz in rakudo/master, push, pop etc. al. are implemented in List, not in Array. Is that intentional? 20:14
pmichaud jnthn: ... it didn't help.
gist coming.
what is responsible for generating gist.github.com/1023585 ? 20:15
masak hoped it was Markov spec and was disappointed :)
20:16 lumi_ left 20:17 lumi_ joined
lue As soon as I understand Markov chains, I can start thinking about that spec generator. 20:18
jnthn pmichaud: It didn't? Ouch. :S
pmichaud: What's the range it allocates registers in as temporaries?
pmichaud: For example, if I look at this: 20:19
.const 'Sub' $P24021 = "12_1307995813.53488"
nqp_get_sc_object $P24022, "1307995813.26545", 92
nqp_get_sc_object $P24023, "1307995805.20037", 206
setattribute $P24022, $P24023, "$!do", $P24021
Here, $P24022 and $P24023 should be temporaries
pmichaud sure
but I'm thinking whatever generated that isn't marked properly (more) 20:20
I ended up leaving PAST::Stmts alone, for backcompat and other reasons
instead, there's now PAST::Stmt, which represents a single "statement"
jnthn pmichaud: SymbolTable.pm in Rakudo and HLL::SerializationContext in NQP are responsible.
pmichaud: Ah, that's new?
pmichaud yes.
jnthn pmichaud: 994/995 20:21
In SymbolTable.pm
pmichaud PAST::Stmt can contain multiple operations to be performed, like Stmts, but it considers any temporary registers allocated within to be reusable outside of the statement
I already fixed 994/995 to be Stmt
jnthn Oh.
pmichaud I'm thinking it's 432 that needs to change
I want to s/Stmts/Stmt/ there 20:22
jnthn pmichaud: here 432 is a comment line
pmichaud # Fixup will install the real thing.
$fixups.push(PAST::Stmts.new(
sorear is Stmts the old thing that allows for reusing temporaries? 20:23
pmichaud Stmt is just like Stmts but handles the register boundary. (Also, one could consider that Stmts is the container for multiple Stmt nodes
jnthn pmichaud: Ah, that's 451 here. :)
sorear masak: (how's the niecza hacking) ok. I'm moving niecza away from "use STD with as few modifications as possible", which is a bit... sad 20:24
jnthn pmichaud: How did you get that chunk of PIR, ooc?
pmichaud looking at src/gen/CORE.setting.pir
jnthn pmichaud: Oh...do you have my patch from yesterday applied?
pmichaud the Stmts one, yes. but not the one that turns off the part that needed turning off :) 20:25
masak sorear: why are you doing that?
pmichaud I said I wasn't going to pull until I had temporaries working. :)
jnthn pmichaud: *nod*
pmichaud: It's just that the bit of code you gisted me is a part that we don't emit in the CORE.setting.pir case any more ;)
sorear masak: because STD isn't just a parser
pmichaud right 20:26
jnthn pmichaud: Though it is emitted in the run-right-away case.
pmichaud it's the part that is making things slow
jnthn So it's still relevant to fix.
Ah, hm
pmichaud which is why I need it to remain so I can figure out when we've crossed over to not-as-slow
jnthn Yup
OK, maybe the PAST::Stmt where you suggested helps.
pmichaud actually, I'm going to do it in several places that look right and see what happens :)
jnthn pmichaud: Also on 463 20:27
Under CLONE_CALLBACK
sorear masak: STD also does various kinds of lexical scope analysis; it's redundant (and slow) with the more-complete analysis niecza does to compile, and when the two get out of sync, things get pretty confused
niecza: { our $x }; say $x
p6eval niecza v6-153-g6cb84d6: OUTPUT«===SORRY!===␤␤Variable $x is not predeclared at /tmp/X7GS_mLUbw line 1:␤------> { our $x }; say ⏏$x␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 469 (CORE die @ 2) ␤ at
../home/p6eval/niecza/src/STD.pm6 …
pmichaud yeah, I shuddered when I saw the setprop opcode there :)
jnthn pmichaud: Evil trick is evil
sorear oops, I fixed that one already :)
jnthn pmichaud: It's the only setprop in the entir eof nom :)
*entire of
pmichaud tsk tsk... once you start down the dark path, forever will it dominate your destiny. :-) 20:28
jnthn pmichaud: I, er...didn't have an unused PMC * in Parrot Sub to use.
masak sorear: understandable. sounds like the right decision, if you ask me.
jnthn I'm already abusing its multisig slot for something that's not one. :)
benabik In NQP-rx is `foo_sub(:named<a>)` supposed to be the same as `foo_sub(named => 'a')` or `foo_sub(named => ['a'])`? I thought it was the former but it turned out to be the latter. 20:31
20:31 cooper is now known as Cooper
sorear If Parrot were to deprecate property hashes in 3.6.0, would nom care? 20:32
sorear is excited by the possibility of saving 1 word per PMC 20:33
20:34 hudnix joined
pmichaud nom wouldn't, but master would. 20:37
(and nom might also)
compile of src/gen/CORE.settings.pir: was 48sec now 17sec
benabik pmichaud++
(Even if he keep changing code out from under my GSoC project. ;-) ) 20:38
pmichaud yeah, sorry for the extra hassle
benabik pmichaud: Bah. I'd rather not have my project hold up improvements. 20:39
20:39 masak left
thou szabgab: did you ever solve that rakudo compile issue? this is what i'm looking at when i compile rakudo-star-2011-04: www.pastebot.net/paste/842gPkQVRS5/ 20:41
(and sorry i dropped out on you yesterday about this...)
sorear o/ thou
20:42 Zapelius left
thou that was during "perl Configure.pl --gen-parrot", which i assume you were doing, too 20:42
pmichaud jnthn: how about gist.github.com/1023646 .... what's generating that? 20:43
jnthn pmichaud: phone, moment
pmichaud okay
thou szabgab: odd that you're using cc instead of c++; but the main thing i see is that the first -L flag for you isn't pointing at .../parrot-VERSION/blib/lib, it's just going to .../blib/lib -- and it seems that libparrot isn't getting installed there like it should 20:46
20:46 masak joined
pmichaud bbi10 20:47
thou szabgab: in my test i didn't pass --prefix=FOO, which might be part of the issue; anyways, it doesn't seem to be related to Ubuntu 8.04, since it seems due to bad flags being passed to the tools or similar, not due to compiler version or something
szabgab: i didn't go to the lengths of installing ubuntu 8.04 and trying it there, though. 20:48
sorear: howdy!
masak hi, thou. 20:50
I haven't named my sourdough yet.
thou hej, masak. :-) 20:51
masak :)
20:51 Zapelius joined
thou i think Herman was like 20 years old when Mom got [some of] him 20:51
at least i remember being pretty impressed with the story when she first brought him home 20:52
masak indeed impressive.
thou could have been 2 years, i suppose, given a youngster's time perspective :-)
colomon My beloved Homer went all moldy in '10.
He was given to me by a fictional character, weirdly enough.
thou awwww 20:53
lue I'm thinking the MCSG should work on a per-character basis. I can easily come up with a way to do it, but it involves a large table and I'm not sure I like that idea so much...
masak lue: it does involve a large table.
lue: from experience, per-character is too fine-grained. 20:54
lue: per-word is much more fun. or two or three words, even.
sorear per-character makes it generate nonsense words like "Presidentagon"
masak if you're lucky.
sorear thou: I think --gen-parrot is obsolete and we use --gen-nqp now
thou will try that w/ trunk 20:55
lue Oh, you don't use --gen-parrot anymore? 20:56
20:56 lumi_ left 20:57 Moukeddar left
thou at least the 2011.04 README still recommends --gen-parrot 20:57
sorear must be a nom/master thing
20:57 lumi_ joined
thou still doesn't know what nom is 20:57
lue This is a per-character generator which works quite well (on the default order of 4, whatever "order" means): www.haykranen.nl/projects/markov/demo/
thou ... except as part of "nom, nom, nom, COOKIE!!!, nom nom" 20:58
jnthn pmichaud: back
pmichaud: Revenge of the $dayjob :)
pmichaud: Looks like you're looking at create_parameter output
sorear thou: nom! it's like Rakudo, but better. 20:59
jnthn pmichaud: Actually, method set_attribute - put a PAST::Stmt around that.
sorear it's pretty clearly the best Perl 6 compiler available. 21:00
lue
.oO( nom > ng > alpha )
jnthn sorear: not yet :) 21:01
sorear: Maybe when we have more features, and less SEGV :)
21:03 scottp joined, scottp left
moritz it's both pretty amazing what nom can do, and what it can't do yet :-) 21:04
jnthn
.oO( It's pretty amazing how big Perl 6 is... :) )
21:05
thou yeah, i had a vague idea that it's related to 6model. now i have googled and know more what it is :-)
21:07 Juerd left
jnthn thou: It's re-building Rakudo on top of 6model, essentially. 21:08
lue [ running S03 through the Markov chain generator created this line as its own paragraph: "S03-metaoperator more complicated." :) ] 21:09
masak lue: hard to argue with that :P 21:10
pmichaud jnthn: PAST::Stmt around set_attribute still leaves gist.github.com/1023717
jnthn pmichaud: OK, that looks like create_parameter output. 21:11
thou thanks to whiteknight++ for whiteknight.github.com/2011/05/07/6...arrot.html 21:12
moritz is the setting compilation (the pir->pbc) part actually faster with the new stuff?
jnthn pmichaud: And partly build_container_past
21:19 Zapelius left, bitpart joined
lue I think I'll go do a true Markov chain (weighted probability word-for-word) instead of the dissociated press method (what emacs uses). Off to the races, I guess! 21:21
sorear well, they are equivalent
21:34 estrabd joined 21:36 bitpart left
lue afk 21:38
21:40 estrabd left, jfried left 21:41 Psyche^ joined
lichtkind how much faster rakudo went in last year you would estimate? 21:42
masak rakudo is slower than alpha. 21:43
lichtkind you mean rakudo ng is still slower than the old branch? 21:44
masak I would say so.
lichtkind ah
pmichaud but it does so much more than the old branch
21:44 Patterner left, Psyche^ is now known as Patterner
masak oh, for sure. 21:44
pmichaud so it's not an apples-to-apples comparison.
masak ng is more correct.
pmichaud the purpose of the ng branch was feature completeness and correctness more than "faster alpha" 21:45
21:45 spq1 left
lichtkind and has more layer if understand correctly 21:45
masak I'm not criticizing, of course. I'm saying November runs faster on alpha than on ng.
pmichaud I can't speak to "the past year" (also an apples-to-oranges comparison), but since January Rakudo+Parrot have sped up about 8%.
as much as 30% depending on your machine's characteristics and application.
github.com/pmichaud/rpbench-results 21:46
21:46 george_z0rwell left
pmichaud more specifically: github.com/pmichaud/rpbench-result...191411.txt 21:46
21:47 bluescreen10 left
pmichaud github.com/pmichaud/rpbench-result...191414.txt 21:47
21:47 bluescreen10 joined
jnthn
.oO( are they named after fruits, colors, or both? :) )
21:48
pmichaud fruits more than colors
but yes, when I remote shell into any of the machines, the window background matches the color of the fruit (suitably tinted as to not be over-saturated) 21:49
that way I can instantly know what machine a window is for without having to check the title
jnthn wow, nice :)
pmichaud or can have a subtle clue that "sudo poweroff" might be going to the wrong target. :-)
lichtkind thank you patrick
pmichaud all of the computers in the Pm household are named for fruits :) 21:50
lichtkind he isnt nuts :)
jnthn looks forward to benchmarks from pomegranate
thou sorear: looks like nom's Configure.pl will add --gen-nqp if --(with|gen)-parrot is specified, so the old instructions should still work. i'm testing it out now :-) 21:51
pmichaud for some reason nom isn't reusing registers as well as it should.
and --target=past doesn't help :(
s/help/work/ # actually 21:52
21:52 lumi_ left 21:53 lumi_ joined 21:54 estrabd joined
jnthn pmichaud: In 21:54
pir::setattribute__0PPsP(
pir::repr_instance_of__PP(List),
List, '$!rest', $!params);
pmichaud: Might this be destructive to $!params?
masak blog post! strangelyconsistent.org/blog/june-13-regexes
pmichaud jnthn: what file? 21:55
21:55 estrabd left
pmichaud (short answer: yes, it could destroy $!params. but depending on context that may be okay) 21:55
jnthn pmichaud: ah 21:56
pmichaud: That, er
Probably explains why when we .perl a signature, it loses its parameters :)
pmichaud use pir::clone__PP($!params) then.
jnthn *nod*
Guessed that would do it :)
Was a bit spooky 21:57
"huh, where'd the params go?!" :)
pmichaud jnthn: where do PAST::BLOCK objects go in nom? e.g., for a subroutine definition?
21:57 Maddeth left
pmichaud do they still remain children of the outer block? 21:57
jnthn pmichaud: Into [0] of the outer block
21:57 estrabd joined
pmichaud not as statements, then? 21:57
jnthn pmichaud: We don't do *anything* with PAST::Block in nom other than stick them in the outer block. 21:58
pmichaud: Anything in SymbolTable.pm that wants to talk about one uses PAST::Val.new( :value($the_past_block) )
Otherwise the lexical scoping gets all busted, which was the source of much pain in master.
pmichaud okay.
would it hurt much to change 21:59
$outer[0].push($block);
to
$outer[0].push(PAST::Stmt.new($block))
(I'm thinking "yes")
jnthn pmichaud: Would it affect capture_lex?
pmichaud it might.
okay, I have another approach.
jnthn OK, if yes then we're in trouble 22:00
oh wait
It's unlikey to
Becuase [0] is a PAST::Stmts.
(I retained the PAST::Block with 2 PAST::Stmts approach we used in ng...)
pmichaud right
right, it won't affect capture_lex
okay, let me try it and see what happens
I follow the model you're using now (and lik eit)
jnthn Well, you created the 2-stmts bit ;) 22:01
pmichaud if $outer[0] is Stmts then it makes almost infinite sense that its contents will be Stmt
jnthn ;)
Note that this probably helps the SC little.
But I guess you're looking at nom's register alloc more generally. 22:02
pmichaud it's not the SC that I'm grappling with at the moment.
jnthn ah, OK
22:02 bluescreen10 left
pmichaud after making that change.... 22:02
jnthn SEGV (core dumped)
;)
pmichaud compilation of CORE.settng.pir: was 47sec now 5sec 22:03
benabik !
pmichaud (47sec is where things were before I started this morning. without that small change, CORE.setting.pir was 16sec
jnthn \o/ 22:05
pmichaud++
!!
pmichaud: Wonder if there's a further improvement with my patch from yesterday also 22:06
pmichaud I'm sure there will be
CORE.setting.pir is still 45K lines long. With your patch it'll be much less.
sorear I thought jnthn's patch from yesterday had no effect on --target=pir 22:07
jnthn sorear: You misthunk. :)
It had a smaller effect on that than the other case.
But an effect nonetheless. 22:08
pmichaud okay, time for me to go back and put a few items in place
not having --target=past is hurting, though.
tadzik why is it broken? 22:09
jnthn dumper doesn't know 6model, I guess
pmichaud I think .... what jnthn++ said
tadzik did it work before 6model? 22:11
jnthn nom: sub x($a) { }; say &x.signature.perl; say &x.signature.perl
p6eval nom: OUTPUT«:(Any $a)␤:()␤»
jnthn lol :) 22:12
pmichaud jnthn: does nom fetch all of its constants at the beginning of a block/routine? 22:13
jnthn pmichaud: Not yet (more) 22:14
pmichaud: The more obvious one is to fetch the SCs it uses so it can do cheaper lookups
I can do taht with the deserialization code too and get a small discount on startup time.
Lots of room for optimization.
sorear On the subject of ENTER stuff and constants, I'm having a problem with S04:1720 22:17
niecza: sub foo($x = { say 5 }) { $x }; foo().() 22:18
p6eval niecza v6-153-g6cb84d6: OUTPUT«Unhandled exception: System.Exception: Improper null return from sub default for $x = { say 5 } in MAIN foo␤ at Niecza.SubInfo.Binder (Niecza.Frame caller, Niecza.Frame outer, Niecza.P6any sub, Niecza.Variable[] pos, Niecza.VarHash named, Boolean quiet,
..Niecza.DispatchEnt de) [0x0…
sorear { say 5 } is cloned when the lexical scope is entered, but that's too late to produce a non-null value for the binder 22:19
jnthn nom: sub foo($x = { say 5 }) { $x }; foo().() # not sure if it'l handle it...
p6eval nom: OUTPUT«Lexical '$_' not found␤current instr.: '_block22' pc 923 ((file unknown):519) (:1)␤»
22:19 lumi_ left
jnthn nom: sub foo($x = -> { say 5 }) { $x }; foo().() # not sure if it'l handle it... 22:19
p6eval nom: OUTPUT«5␤»
jnthn sorear: We carefully call the binder after that.
22:20 whiteknight joined, lumi_ joined
sorear nom: my $i = 0; my @x; push @x, sub () {} while ($i++) < 2; say @x[0] === @x[1] 22:20
p6eval nom: OUTPUT«Can only use get_who on a SixModelObject␤current instr.: '_block13' pc 137 ((file unknown):26123756) (:1)␤»
sorear rakudo: my $i = 0; my @x; push @x, sub () {} while ($i++) < 2; say @x[0] === @x[1] 22:21
p6eval rakudo ae5bea: OUTPUT«Bool::False␤»
pmichaud okay, time to do some merges and pushes.
sorear niecza: my $i = 0; my @x; push @x, sub () {} while ($i++) < 2; say @x[0] === @x[1]
p6eval niecza v6-153-g6cb84d6: OUTPUT«Bool::True␤»
sorear it seems master doesn't implement S04:1720
does nom?
jnthn Not sure why I'd expect that to be true.
Oh, maybe for === I can 22:22
jnthn was thinking =:=, which will certainly be false
sorear: I can implement it easy enough in nom if that's what needs to happen.
sorear: tbh, master doesn't really get .WHICH right at all. 22:24
sorear: So that whole lot needs a re-visit anyway.
sorear jnthn: long-term, it won't be obverbable; Sub is an immutable type, and two clones of the same sub with the same OUTER:: should be === 22:26
observable
Rakudo/master compiles sub () { } to something like Sub.new(pir::capturelex(pir::clone($SUB))) 22:27
niecza compiles sub () { } to something like &anon_42 with code at the beginning to Sub.new($subinfo, callframe) 22:28
which does nom do?
jnthn sorear: Similar to master. I wasn't planning on changing that really.
sorear: Also Sub is explicitly not immutable by spec
sorear: Routines are mutable, otherwise .wrap can't work. 22:29
sorear jnthn: the spec is unclear whether .wrap is intended to apply to the Sub or to the underlying code object
jnthn sorear: That may be a good thing.
sorear sub mkacc() { my $x = 0; sub () { $x++ } }; my $a = mkacc; my $b = mkacc; $a.wrap(sub () { return 42 }); say $b() 22:30
jnthn I don't really get "underlying code object" 22:31
Sub ~~ Code
Or do you mean $!do?
pmichaud: my @x = 1,2,3; my @y = @x; @x[0] = 100; say @y[0] looks dubious 22:32
sorear jnthn: In Rakudo terms, I mean $!do
except not
because $!do is cloned
jnthn Right
sorear I mean the part which isn't cloned
the code segment
jnthn Yeah, that's how I'd do === being true for two subs 22:33
Look at the code segment pointer.
sorear: In your example I'd expect only $a to have been wrapped. 22:36
dalek kudo/nom: e8bda83 | jnthn++ | src/binder/multidispatch.c:
Try a simpler approach to signature bind testing for mutli disambiguation.
22:38
kudo/nom: 0144714 | jnthn++ | src/ (2 files):
Handlers for 'is rw' and and 'is copy' trait on parameters, plus a stub trait_mod:<as>.
kudo/nom: e3273a5 | jnthn++ | src/core/traits.pm:
Oops, didn't mean to commit Parameter rw trait commented out.
kudo/nom: 54141c8 | jnthn++ | src/Perl6/Actions.pm:
Apply parameter traits.
kudo/nom: 2354e78 | jnthn++ | src/ (2 files):
First cut of 'is rw' and 'is copy'. Not fully right yet; looks like there may be a .STORE issue on Array.
kudo/nom: 1727d60 | jnthn++ | src/core/Signature.pm:
Make sure Signature.params doesn't nom the params.
22:44 tomize left
jnthn wishes he'd slept more than 3ish hours last night... 22:45
kliff hello 22:48
:)
22:49 Tedd1 left
thou hi, kiff 22:51
s/kiff/kliff/
22:52 Tedd1 joined
thou moritz: should we s/proto/panda/g on github.com/rakudo/rakudo/wiki/What...akudo-*%3F ? 22:54
(which is pointed to by rakudo/star/README)
jnthn thou: Probably yes 22:55
thou: Well, almost certainly yes :)
23:01 tomize joined
thou hmmm, i guess the first reference to proto still needs to be proto -- regarding the bootstrapping of rakudo and parrot themselves. 23:02
ok, edit made, hopefully it's in the right direction. 23:04
23:07 mtk left 23:14 cdarroch left 23:16 nsh left, icwiener left 23:18 nsh joined 23:19 nsh is now known as Guest87668 23:27 Cooper is now known as cooper 23:32 Chillance left
sorear jnthn: ping 23:34
23:36 dju_ joined
jnthn sorear: sleepy pong 23:37
(easy questions, plz :))
sorear jnthn: does it make sense to catch redeclarations of our-symbols?
generally I interpret our-scope as a COMMON sort of thing
likewise nom seems to 23:38
jnthn sorear: Do you mean "within the same lexical scope"?
sorear no
jnthn sorear: Or in a wider sense?
23:38 dju left
sorear I mean redeclaration of the package object 23:38
in particular, sub Foo::bar() { }; sub Foo::bar() { } 23:39
jnthn Oh, that. :/
23:39 kliff left
jnthn That's weird too because subs default to my scope 23:39
sorear related questions include: 'package Foo { our &bar; }; sub Foo::bar() { }' 23:40
jnthn I'm not sure master has ever supported multi-part sub names.
I'd forgotten you could do that. 23:41
I suspect it's not an error, anyway
jnthn has to wonder *why* you can do that
sorear Do you rule that the second overrides the first?
jnthn Also whether my sub Foo::bar() { } and our sub Foo::bar() { } mean different things.
sorear: It'd seem so. 23:42
sorear: But I'm quite bothered about this:
sorear jnthn: I rule that "my sub Foo::bar" is an error
jnthn sorear: Then sub Foo::bar is also an error.
Because the default scope declarator for subs is "my"
sorear lack of a scope is weakly DWIM. for instance, 'my sub () { }' makes no sense, but 'sub () { }' means "anon"
jnthn What happens here: 23:43
my package Foo { }; our sub Foo::bar { }
sorear I fear I may have asked a non-easy question :/
jnthn Does Foo suddenly get promoted to an our-scoped package? Error? 23:44
sorear No
jnthn Well, mostly you've ticked my "wtf do we even want to support Foo::bar as a sub name anyway" nerve :-)
sorear "our" just means "in a package"; it says nothing about where *the package* lives
jnthn That's not really true.
Oh, wait 23:45
I see what you were getting at.
I still don't like this at all.
My gut feeling is just "ban multi-part sub names and save people a lifetime of confusion over the semantics"
sorear Multi-part sub names have exactly the same semantics as multi-part class names 23:46
(and they share a LOT of code in niecza)
If I ban the latter people will not be amused.
This isn't just a question of subs; it's also about if and how 'class Foo::Bar {}; class Foo::Bar {}' should be detected and caught. 23:47
jnthn Yes, those absolutely should.
So maybe the answer for subs is the same. They declare-y, after all. 23:48
Maybe I should just shove multi-part sub names through the same code path as multi-part package names and see what happens. :) 23:49
sorear the other question is how do you *detect* redeclaration? 23:53
jnthn nom: class Foo::Bar { }; class Foo::Bar { } # checking... 23:54
p6eval nom: OUTPUT«"load_bytecode" couldn't find file 'CORE.setting.pbc'␤current instr.: 'nqp;Perl6;ModuleLoader;_block314' pc 3008 (src/gen/perl6-moduleloader.pir:1160)␤»
jnthn fail
nom: class Foo::Bar { }; class Foo::Bar { } # checking...
p6eval nom: OUTPUT«Illegal redeclaration of class 'Foo::Bar' at line 1, near "{ } # chec"␤current instr.: 'nqp;HLL;Grammar;panic' pc 26397 (src/stage2/gen/NQPHLL.pir:7039)␤»
jnthn ah, rebuild
sorear: We just look in the Foo package to see if there's a Bar there :)
And if there is a Bar there, we go in for a pint...er...complain. :) 23:55
sorear jnthn: what if there's only a Bar there because of an autovivifying reference to defined(Foo::Bar) in a BEGIN somewhere?
jnthn It'll have only auto-vivified a package, and I consider those "stealable" 23:56
That's why I'd expect class Foo::Bar { }; class Foo { } to work also.
sorear How does stealing work?
jnthn Grab the WHO of the package, make it your own WHO, install yourself. 23:57
sorear Are packages always stealable?
jnthn By packages I mean things declared with "package" or auto-viv'd to "package"
So for that definition yes. 23:58
module Foo { }; class Foo { } # problem.
Where problem means redeclaration error.
Note, didn't get to implementing these semantics in nom yet. 23:59
On my todo ist.
*list
23:59 gabiruh left
jnthn Probably for the nearish future...if I ever get roles finished. :) 23:59