»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by lichtkind on 5 March 2010.
diakopter TimToady: q about STD.pm6 ^^ this morning 00:00
jnthn rakudo: say &[+] 00:03
p6eval rakudo 35bcd5: OUTPUT«Unable to parse postcircumfix:sym<[ ]>, couldn't find final ']' at line 11␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
colomon jnthn++ 00:06
lue o hai 00:07
jnthn hellue! 00:08
colomon: o/
00:08 kensanata left 00:17 daemon joined
jnthn > say sort(&[<=>], <1 10 2 3>).perl 00:20
("1", "2", "3", "10")
lue that's a good thing, right? 00:22
rakudo: say sort(&[<=>], <1 10 2 3>).perl
p6eval rakudo ba1943: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class ''␤current instr.: '!postcircumfix:<[ ]>' pc 10733 (src/builtins/Role.pir:90)␤»
pugssvn r30412 | lwall++ | [S02] define the term 'now' 00:23
r30412 | define math on instants and durations
jnthn lue: Yeah, just implmented that work. 00:24
gah
*form
00:25 baisong joined
TimToady diakopter: dunno, probably depends on the position of the type 00:25
diakopter mostly the contextuals 00:26
TimToady gimme5 will parse --> but do the wrong thing with it currently
well, p5's my and our accept a typename but (last I heard) ignore it
diakopter well, the contextuals and all the scalar/list declarations without initializers
O_O
TimToady bbl & 00:29
diakopter std: (now)()
p6eval std 30412: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'now' used at line 1␤Check failed␤FAILED 00:01 107m␤»
dalek kudo: f162a26 | jonathan++ | src/glue/subset.pm:
Correc the order we do checks of subtypes from most general to most specific, so we at least always consider type first before the extra conditions.
00:45
kudo: 1f9b1dd | jonathan++ | src/Perl6/ (2 files):
Implement &[+] shortcut form for infix ops.
colomon oh, that's &[+] instead of &infix:<+>? 00:46
00:47 ash_ joined
colomon (and hi back to the hi's earlier, I got shanghai'd into reading good night stories for a while there. 00:48
)
00:50 yinyin joined
jnthn colomon: Yes :-) 00:51
lue of course ya did :)
jnthn colomon: Heh, it was your ticket. ;-)
colomon The &[+] was?
(I saw that you did Rat.new.Str, which was mine...)
jnthn colomon: Yes :-) 00:52
colomon Dang, I totally don't remember that.
Please tell me it was from last year, at least. :) 00:53
jnthn Date: Wed, 29 Jul 2009 08:55:54 -0400
rt.perl.org/rt3/Ticket/Display.html?id=65588
std: say "\123"
p6eval std 30412: OUTPUT«===SORRY!===␤Unrecognized backslash sequence: '\1' at /tmp/aQmtsVrzvv line 1:␤------> say "\1⏏23"␤Check failed␤FAILED 00:01 107m␤»
colomon crazy! nine months ago, seems like a lifetime. 00:54
jnthn We're back under 630 tickets. 00:57
colomon \o/
jnthn I musta given moritz++ about ten or so of them to write or check we have tests for too.
lue Yay!
jnthn (or anyone who fancies writing tests of course) 00:58
colomon any chance you'll have some time to look at my role issues? (wants a pleading face smiley...) 00:59
jnthn colomon: It's like 3am and I"m kinda meant to work tomorrow. Harrass me about it tomorrow. 01:00
colomon jnthn++
sure thing.
jnthn Tonight I just wanted to finsih my hash slice patch which has been sitting half-done on my computer for about a week.
And then got sucked into LHF and reviewing RT. :-)
colomon ah, I thought the check-in early was it.
(misread, obviously it was it.)
lue what is LHF? 01:01
colomon low-hanging fruit, the kind that is easy to pick.
jnthn colomon: Yes, I did finish it. :-) 01:02
Then got sucked in. ;-)
colomon sucked into the bug-fixing vortex! 01:03
jnthn++
should I try to get chromatic looking at the memory usage of the mandelbrot script? 01:04
lue *slurp*
jnthn 627. :-)
colomon: Maybe, yeah...he may be able to determine at least if it leaks or is just having a hungry. 01:05
lue the stalled ones bug me :) 01:06
pugssvn r30413 | lwall++ | [STD] implement now term 01:07
r30413 | [CORE.setting] a few more time-related names
lue those 5 stalled bugs. Let's do something about them :) 01:08
jnthn didn't know we only had 5 of them :-)
lue the numbers are coming up... 01:09
#52242 #58922 #62068 #62224 #67064 01:11
01:11 gurjeet joined
dalek kudo: b05155e | (Martin Berends)++ | src/cheats/setup-io.pm:
[src/cheats/setup-io.pm] implement $*PID and make the source code even more cheaty. Parrot TT#1564 requests a less cheaty feature.
01:11
lue
.oO( oh, and get rid of the cheating at some point :) )
01:12
jnthn Wow. I've trawled through the whole RT queue tonight. :-) 01:13
lue :O 01:14
rakudo: my @a = (1); @a[0] := @a; @a.perl # starting with #58922
p6eval rakudo ba1943: OUTPUT«:= binding of variables not yet implemented␤current instr.: '&die' pc 17194 (src/builtins/Junction.pir:404)␤»
lue Ah! D: 01:15
01:16 orafu left
lue that is really annoying at this point 01:16
01:16 orafu joined 01:17 alester left
jnthn Aye. 01:17
lue It's a problem with self-referent structures and how .perl should handle them 01:18
jnthn Ok, I think I'm done for tonight. I didn't plan to stay up until 3:20am!
lue good night then o/
jnthn has quite a lot of $dayjob tasks tomorrow. :-)
night o/
lue afk (but _not_ goodnight) 01:19
01:22 gurjeet left 01:23 wknight8111 left
diakopter sorear: ping 01:38
diakopter ponders how to implement contextuals 01:41
diakopter considers a very hacky thing 01:42
sigh. a bunch of dynamic checks will have to suffice until I or someone else can think of a more elegant/efficient implementation. 01:46
01:50 bacek_at_work left
diakopter does rakudo do contextuals? 01:56
(i've forgotten)
01:57 Psyche^ joined
diakopter TimToady: if a routine assigns to a contextual more than once in a single code path, to which value does it revert when the routine returns? 01:58
I guess the original?
diakopter figures out an efficient way to solve it. whee. 02:01
contextuals coming right up.
02:01 Patterner left, Psyche^ is now known as Patterner 02:03 nihiliad left 02:04 sail0r joined 02:06 awwaiid joined 02:07 sail0r left 02:23 gurjeet joined, snarkyboojum joined
diakopter the only check at runtime will be 1 int comparison for each contextual that could possibly have been assigned-to in the routine at the end of the routine. 02:25
02:26 huf left 02:27 huf joined 02:29 dual left, nihiliad joined 02:33 gurjeet left 02:36 dual joined 02:39 agentzh joined 03:03 nadim left 03:06 molaf joined 03:08 snarkyboojum left 03:25 gfx joined
diakopter this is taking quite a long time to code up. 03:33
03:36 nihiliad left 03:46 justatheory left
sorear diakopter: pong 03:46
hejki usually when something takes longer than estimated it's either caused by bad design or too much simultaneous ircing while working 03:47
sorear don't plan to throw one away 03:48
plan for 8
03:50 ash_ left
diakopter hejki: :D but I didn't estimate... 03:56
no srsly it's a lot of coding. I can't think of a more efficient design.... 03:58
sorear oh wow 04:00
bug closings! 04:01
04:19 alester joined 04:24 meppl joined 04:35 stephenlb left 04:47 molaf left 04:49 quester_ joined
CokeBot9000 szabgab: ping. 04:55
szabgab CokeBot9000, reping
hmm, is this really a bot?
diakopter almost there.. 04:56
"stay on target..."
04:58 hicx174 joined
CokeBot9000 szabgab: no, it's Coke. 04:58
szabgab: are you still having trouble building rakudo on windows? 04:59
rt.perl.org/rt3/Ticket/Display.html?id=67574 ?
Looks like you were trying to build it without a parrot in your path.
szabgab I have built it since then I am quite sure
04:59 ReiniUrban joined
szabgab so from my pov that ticket is irrelevant 05:00
CokeBot9000 Danke. Closing...
szabgab ty
05:01 rurban left
szabgab what happened to the real Coke? 05:01
05:01 ReiniUrban is now known as rurban
CokeBot9000 someone on freenode stole my nick! 05:01
or, you know, registered it several years before I bothered to show up.
szabgab oh
CokeBot9000 question on rt.perl.org/rt3/Ticket/Display.html?id=68662 - shouldn't that test be checking for $frew == 5 instead of 15? 05:03
rakudo build question - why dump all the .pm files into the giant core.pm ? why not just build those pms individually? 05:06
(68662) - nevermind, test was fixed, ticket is still borked. 05:08
05:08 rv2733 left
CokeBot9000 rakudo: multi sub infix:<+=> (Num $a, Num $b) { $a -= 05:09
$b }
p6eval rakudo b05155: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 11␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
CokeBot9000 rakudo: multi sub infix:<+=> (Num $a, Num $b) { $a -= $b}
p6eval rakudo b05155: ( no output )
CokeBot9000 rakudo: multi sub infix:<+=> (Num $a, Num $b) { $a -= $b}; my $joe = 10; $joe += 4; say $joe;
p6eval rakudo b05155: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 17194 (src/builtins/Junction.pir:404)␤» 05:10
CokeBot9000 rakudo: multi sub infix:<+=> (Num $a, Num $b) { $a = $a - $b}; my $joe = 10; $joe += 4; say $joe;
p6eval rakudo b05155: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 17194 (src/builtins/Junction.pir:404)␤»
CokeBot9000 I can't build rakudo-current. getting complaints on Undef. 05:11
invoke() not implemented in class 'Undef'
05:13 finanalyst joined
finanalyst alpha: $_="a\tb\tc"; my ($k,@f) = map { .trim }, .split("\t"); @f.perl.say;$k.say 05:15
p6eval alpha 30e0ed: OUTPUT«["b", "c"]␤a␤»
finanalyst rakudo:$_="a\tb\tc"; my ($k,@f) = map { .trim }, .split("\t"); @f.perl.say;$k.say
rakudo: _="a\tb\tc"; my ($k,@f) = map { .trim }, .split("\t"); @f.perl.say;$k.say
p6eval rakudo b05155: OUTPUT«Could not find sub &_␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
finanalyst rakudo: $_="a\tb\tc"; my ($k,@f) = map { .trim }, .split("\t"); @f.perl.say;$k.say 05:16
p6eval rakudo b05155: OUTPUT«[["b", "c"]]␤a␤»
aesop perl 5.12!! 05:17
finanalyst rakudo: $_="a\tb\tc"; my $k,@f = map { .trim }, .split("\t"); @f.perl.say;$k.say 05:20
p6eval rakudo b05155: OUTPUT«Symbol '@f' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)␤»
05:21 Kyril left
diakopter perlesque: my $*a = 5; say($*a); my $b = sub int () { $*a = 7; say($*a); return 1 }; $b(); say($*a) 05:23
p6eval perlesque: OUTPUT«5␤7␤5␤»
diakopter perlesquel: .
p6eval perlesquel: OUTPUT«5␤7␤5␤real 0.04␤user 0.05␤sys 0.00␤»
diakopter and, I present to you, contextuals. 05:24
quester_ rakudo: multi sub infix:<+=> (Num $a is rw, Num $b) { $a = $a - $b}; my $joe = 10; $joe += 4; say $joe; 05:26
p6eval rakudo b05155: OUTPUT«6␤»
diakopter heh 05:27
05:28 kaare joined
quester_ CokeBot9000: your infix:<+=> just needs "is rw" on $a. 05:28
05:28 kaare is now known as Guest76758 05:32 Guest76758 is now known as kaare_
finanalyst alpha: $_ = "a\tb\tc\td"; my @f=map { .trim }, .split("\t"); my %h; %h{@f[0]} = @f[1 ..^ +@f]; %h.perl.say 05:33
p6eval alpha 30e0ed: OUTPUT«{"a" => ["b", "c", "d"]}␤»
finanalyst rakudo: $_ = "a\tb\tc\td"; my @f=map { .trim }, .split("\t"); my %h; %h{@f[0]} = @f[1 ..^ +@f]; %h.perl.say
p6eval rakudo b05155: OUTPUT«{"a" => Seq.new()}␤»
finanalyst alpha: my @a = 1,2,3,4; my %h= @a[0] => @a[1 ..^ +@a]; %h.perl.say 05:35
p6eval alpha 30e0ed: ( no output )
finanalyst alpha: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h.perl.say 05:36
p6eval alpha 30e0ed: OUTPUT«{"1" => [2, 3, 4]}␤»
finanalyst rakudo: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h.perl.say
p6eval rakudo b05155: OUTPUT«{"1" => Seq.new()}␤»
CokeBot9000 quester_: can you patch the spectest for that? 05:37
Actually I guess I can. =-) 05:38
diakopter rakudo: my $*a = 5; say($*a); my $b = sub () { $*a = 7; say($*a); return 1 }; $b(); say($*a)
p6eval rakudo b05155: OUTPUT«5␤7␤7␤»
diakopter perlesque: my $*a = 5; say($*a); my $b = sub () { $*a = 7; say($*a); return 1 }; $b(); say($*a);
p6eval perlesque: OUTPUT«5␤7␤5␤»
diakopter pugs: my $*a = 5; say($*a); my $b = sub () { $*a = 7; say($*a); return 1 }; $b(); say($*a);
p6eval pugs: OUTPUT«␤7␤7␤»
quester_ Cokebot9000: Oh. Good thing, I don't have a commit bit.
pugssvn r30414 | coke++ | Since we're modifying the LHS, it needs to be rw. 05:40
r30414 |
r30414 | quester++ on #perl6
diakopter oh, it's 'my' on the inner contextual. oh yeah...
heeeeee
finanalyst rakudo: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h.say
p6eval rakudo b05155: OUTPUT«1 2 3 4␤␤»
05:40 jhuni left
diakopter oh, that's easier. SIGH 05:41
quester_ finanalyst: I think the .perl method is the culprit:
finanalyst Yes just come to that conclusion
quester_ rakudo: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h<1>.eager.perl.say
diakopter hejki: you were right; incorrect design :)
p6eval rakudo b05155: OUTPUT«(2, 3, 4)␤»
hejki diakopter: not preplanning all logical steps usually leads to that :>
diakopter I guess I could bother to read the spec, too, instead of relying on faulty memory 05:42
hejki :P
quester_ finanalyst: .perl could call .eager at each structure level, although that would cause other mischief with real lazy list.
diakopter ah well; I should be able to make the change quickly now that the reversion structure is in place.
after all, it's a syntactic difference only
quester_ ... err, s/list/lists/
sorear diakopter: you ping me, then you ignore me. :(
finanalyst is this worth a bug report? 05:43
diakopter sorear: o hai
quester_ finanalyst: Yes... I'm not sure how it's speced though.
diakopter sorear: sry. I was just going to ask if you've implemented dynamically scoped variables before 05:44
merely curious.
finanalyst rakudo: my @a= ^5; say @a[1 ..^ *]
sorear yes
p6eval rakudo b05155: ( no output )
sorear perl 6 contextuals are a little weird though
finanalyst alpha: my @a= ^5; say @a[1 ..^ *] 05:45
p6eval alpha 30e0ed: OUTPUT«1234␤»
sorear because they aren't just dynamically scoped - they're also thread-local
does CLR support TLS?
diakopter ?
diakopter will have to read up on that. 05:46
I bought "Concurrent Programming on Windows" a few weeks ago, and have barely cracked it.
it covers both CLR stuff and C++
and most of the CLR stuff applies to linux/mono 05:47
sorear what does C++ have to do with concurrent programming
diakopter that's kindof a combative question
05:48 alester left
sorear not really 05:49
diakopter I mean, how would I know?
sorear C++ is one of many programming languages
and it's not a programming language designed to research concurrency issues (like CSP)
diakopter the book is not a research book.
sorear so... why is it treated as part of "concurrent programming"
diakopter the book has nothing to do with academia 05:50
feel free to read about it on Amazon if you're curious.
sorear: to answer your question, I assume the book focuses on C++ and the CLR because those are the languages/environmenets most Windows programmers use. 05:52
05:57 uniejo joined 05:59 finanalyst left 06:00 snarkyboojum joined 06:03 |Jedai| joined
diakopter I'll correct the contextual semantics tomorrow night. 06:05
06:06 jonasbn joined 06:08 |Jedai| left 06:20 clintongormley joined 06:31 gfx left 06:45 jaldhar_ left 06:51 yinyin left
quester_ Does anyone have an opinion on what "my $a=(1,1,* + * ... *); $a.perl.say;" should print? Does 'GatherIterator(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ???)" look about right? 06:54
moritz_ quester_: not quite, since evaling it back doesn't return the original sequence 06:55
TimToady I'd think it should say "1, 1, *+* ... *" 06:56
moritz_ problem is, currently we don't serialize closures
or any type of code objects, for that matter
TimToady well, 1,1,<mumble>...* for now :)
moritz_ 1,1,{...}...* probably 06:57
TimToady looks like a mumble to me :)
quester_ Umm, well, yes, it would be nice if it were that intelligent, but if the seqence is, say, an IO object, that's going to be much, much, more difficult.
I was thinking we could print the first n values, for some value of n, and it would be of some help in debugging. 06:58
Moreover, it would finish in finite time, unlike the current implementatio.
TimToady that would be something other than .perl
moritz_ quester_: well, it would be an improvement
pugssvn r30415 | moritz++ | [t/spec] unfudge some tests that rakudo now passes 06:59
r30415 |
r30415 | <rant>A test file with all tests fudged for the same implementation doesn't
r30415 | really make sense - who does such a thing?</rant>
quester_ Okay... does the first ten values strike you as reasonable, and add {???} at the end if there are more?
moritz_ I think it's an improvement, but it's not quite correct 07:00
TimToady I think that's a reasonable thing for *say* to do with an infinite list
moritz_ std: 1 [+] 2
p6eval std 30414: OUTPUT«ok 00:01 109m␤»
sorear quester_: it's perfectly legal to form a sequence where computing the 10th value requires 15 billion years 07:02
pugssvn r30416 | moritz++ | [t/spec] more tests for &[+] and [+] short forms
TimToady but I'd say first thirty or forty values in that case
sorear so I don't really think "just the first ten" makes much sense
personally I support TimToady's initial proposal
I played with FORTH once, my favorite feature was the integrated decompiler
quester_ TimToady: So... in your opinion, and perhaps just as a stopgap measure until [some] code can be serialized, (1,1,* + * ... *).perl.say should print...? 07:03
sorear 1, 1, {...} .. * ?
moritz_ '1, 1, {...} ... *'
sorear rakudo: (* + *).perl.say
p6eval rakudo b05155: OUTPUT«{ ... }␤»
quester_ Oh. Hmm. Okay, but I can't write a patch that sophisticated... 07:04
moritz_ isn't there an internal interface for finding out which values are already evaluated? 07:05
07:05 clintongormley left
TimToady that's what I keep saying, a list is just like an array, in the sense that it has a reified part and an imaginary part 07:06
07:06 clintongormley joined
TimToady I'd think the reified part of a list would (internally) look very much like an array 07:06
(a reified array)
the difference between a list and an array is in the 07:07
API
but the internals are almost identical
moritz_ TimToady: and you still believe people listen to you, just because you're the language designer? :-)
TimToady well, sometimes I have to repeat myself till either I change my mind or everyone else does... 07:08
moritz_ rakudo: sub foo($a?, $b) { }
p6eval rakudo b05155: OUTPUT«Can't put required parameter after optional parameters at line 11, near ") { }"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
clintongormley it's almost like believing that the french listen to the les immortels
TimToady std: sub foo($a?, $b) { }
p6eval std 30414: OUTPUT«===SORRY!===␤Can't put required parameter after optional parameters at /tmp/BZjReZ3qDN line 1:␤------> sub foo($a?, $b⏏) { }␤Check failed␤FAILED 00:01 108m␤»
TimToady std: sub foo($a?, $b) { }; 42 43 07:09
p6eval std 30414: OUTPUT«===SORRY!===␤Can't put required parameter after optional parameters at /tmp/A6w5xbl3K9 line 1:␤------> sub foo($a?, $b⏏) { }; 42 43␤Two terms in a row at /tmp/A6w5xbl3K9 line 1:␤------> sub foo($a?, $b) { }; 42 ⏏43␤
..expecti…
spinclad sorear: 'perl 6 contextuals [are] thread-local' -- as i recall the spec, it's rather that they are easily thread-localized, with a 'my'.
moritz_ jnthn++ # giving me 15 tickets last night
07:09 gfx joined
spinclad the les immortels -- is that like the hoi theoi? 07:10
quester_ rakudo: my $a=(1,2,4...*); $a.get.say; $a.get.say; $a.get.say;
p6eval rakudo b05155: OUTPUT«1␤2␤4␤»
clintongormley en.wikipedia.org/wiki/Les_Immortels - the members of the académie francaise, who decide what is allowable french and what is not
otherwise known as the last bastion against the english 07:11
quester_ The "get" method is the only public method I see in src/cheats/gatheriterator.pir
moritz_ quester_: you can still use private methods internally 07:12
TimToady std: now now
p6eval std 30414: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/JbW6uR8mFO line 1:␤------> now ⏏now␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier loop␤Parse failed␤FAILED 00:01 107m␤»
moritz_ TimToady: re latest spec changes, now + 300 # isn't that precisely what you wanted to discourage, because it's wrong in the presence of leap seconds? 07:13
quester_ So no, unless I'm missing somethngi, there doesn't appear to be any notion of reified (cached?) values in the GatherIterator.
dalek kudo: 027ff40 | moritz++ | t/spectest.data:
[t/spec] enable S03-operators/nesting.t
spinclad clintongormley: sorry, just snarking on the double article.
quester_ moritz_: True, but !gather_coroutine and !GATHER don't look very useful in this context... 07:14
TimToady moritz_: instants and durations have no $#@#$ clue about leap seconds
clintongormley oh did i? :) i was about to write the immortals, then changed it :)
TimToady leap seconds are civil time, not atomic
moritz_ isn't civil :-)
-> decommute & 07:15
spinclad 11:59:00 + 120 over a leap second = 12:00:59, because the 120 is true seconds
/is/are
oop, /11/23/ and /12/00/ 07:16
TimToady yes, you don't want the X-ray machine running an extra second merely because there happened to be a leap second in the middle 07:17
civil time is like having a number system in which 2 sometimes equals 3 07:18
sorear quester_: if it's in /cheats/, all is not how it appears
TimToady if all iterators eventually allow unget, then all iterators will eventually require a reified part, at least optionally 07:19
sorear there's a lot of monkeypatching and clandestine cooperation in /cheats/, the dark underworld of Rakudo
spinclad: Contextuals in Perl 6 are defined in terms of walking up the call stack, which is always a thread-local structure 07:20
quester_ sorear: No doubt.... I've noticed that almost everything I've looked at in rakudo, not just /cheats/.
sorear the stack is the mother of all thread-local structures
TimToady sorear: whatever spawned your thread is the caller of the thread 07:21
so all threads eventually converge on the same outer scopes
sorear yes
TimToady they all see the same $*PID, for instance, unless the thread itself redefines is
*it
sorear fun implementation trick of the day: On Linux (i386 kernel mode), stacks are 8kb in size and 8kb aligned. To access thread local data, the top N-13 bits of the stack pointer are masked off, and the TLS block is located at a fixed offset from the stack bottom 07:22
TimToady for readonly values, it makes no difference whether values are copied into the thread (as env vars are into Unix processes), or if you just keep walking up the call stack
sorear user TLS doesn't use quite such a clever implementation, mostly because user stacks can grow 07:23
TimToady for rw values, locking or some such will be needed outside of a thread
sorear values are bound into the thread, then
TimToady the value of a rw var is its container's identity
that can be copied in, but the contained value is shared by all dynamic scopes, incl threads 07:24
if one thread changes is, they all see it
a thread can explicitly copy in the current value, of course 07:25
spinclad 'the lvalue of a rw var'?
TimToady and make its own thread-local version at the top scope of the thread
07:25 iblechbot joined 07:26 jaldhar_ joined
TimToady currently 'temp $*PID;' at the top of the thread would make the thread have its own copy 07:26
that's short for something like 'my $*PID = DYNAMIC::<$*PID>;' 07:27
07:27 riffraff joined
TimToady unless that finds the new one by accident :) 07:27
IllvilJa o/ 07:29
spinclad \p
spinclad to bed lest he fall asleep on channel & 07:31
TimToady 2 &
quester_ afk 07:34
07:34 quester_ is now known as quester--away-- 07:35 jaldhar_ left 07:36 jaldhar_ joined, hercynium left
sorear wonders if temp $*PID; is Perl6 for fork() 07:36
07:36 Intensity left 07:37 hercynium joined
sorear hmm, S17 looks very drafty 07:41
moritz_ draftiness is a nearly monotonic function of the synopsis number 07:43
07:57 ejs joined
sorear wait, Date is in the /setting/ 08:01
?
no 'need Date;'?
moritz_ right
08:02 ejs left 08:03 ejs joined
sorear src/core/Date.pm looks like a good application for an anonymous module 08:04
moritz_ how so? 08:05
the helper subs maybe just need to go inside the class 08:06
haven't tried that yet
sorear import (module { sub private { ... }; sub public is export { ... }; }) 08:07
actually this could have ramifications on the separate setting compilation project 08:08
put all the /core/ bits in named modules, and make the setting 'use Rakudo::Any; use Rakudo::Num; use Rakudo::Date; ...; YOU_ARE_HERE"
moritz_ I think the bigger problem is currently how to handle traits 08:09
sorear is Rakudo::Date supposed to export anything beyond 'Date'?
How so?
moritz_ because they are defined in the setting
and needed by the setting
so maybe we need to add another compilation stage 08:10
mberends fwiw, to reduce the size of the main executable when Date is not used, I would like Date.pm to be a separate file that the application "use"s, and that is always installed with Rakudo.
it would be a first experiment with system components loadable at runtime, an important technique for scalability 08:11
moritz_ mberends: what would happen then when you don't use Date, and say DateTime.now.Date?
would it blend? :-) 08:12
mberends moritz_: I'll figure that answer out later, I'm sure it's solvable
it may fall out of a to-be-specced pluggable locale design 08:14
hopefully Rakudo can load Date.pbc or Date.pir quite efficiently 08:15
also there should be a complementary Time.pm for symmetry 08:16
sorear rakudo: $*PID.say 08:17
p6eval rakudo 027ff4: OUTPUT«22600␤»
mberends moritz_: I would spec it that if you want Date only without time, the program *must* contain "use Date;", and then DateTime.now.Date would cease to exist. 08:19
moritz_ that would be very sad 08:21
if DateTime and Date didn't integrate properly
also if we move Date out of core (and make available as a module), then I'd love to see that for lots of other stuff too 08:22
DateTime, KeyBag, KeySet, ...
mberends moritz_: it's one of those "where to draw the line" questions. I'm for a compact (and faster) core.
08:23 quester--away-- is now known as quester_
moritz_ I'd be fine with that - you have to get consensus from TimToady here 08:23
mberends sure :-)
08:24 snarkyboojum left
mberends btw, TimToady++'s X-ray scanner example at 07:17 of why civil time is so dumb is really good irclog.perlgeek.de/perl6/2010-04-20#i_2243817 08:25
08:26 riffraff left
mberends unfortunately most computers rely on a CMOS clock that is set to civil time, and Parrot knows no more than that. 08:27
08:28 masak joined
masak oh hai, #perl6 08:33
m6locks oh hai
mathw oh hai masak
masak nice to see jnthn++ cause a lot of closages in RT :)
moritz_ he transferred 15 tickets to me 08:35
08:35 dakkar joined
mathw closages? 08:35
masak sorry, I meant closifications.
mathw ah that's okay then 08:36
masak jnthn: ah, yes #71478 was the one I thought of in my kitchen a few weeks back. the scary one :)
thanks for closifying that.
sorear civil time should be called astronomical time 08:42
civil time is about taking real time, and fudging it so that the revolution of the Earth, Moon, and Earth-around-Sun are all "neat"
it's important to some people that the Sun be directly overhead at 12:00 08:43
huf which is ultimately silly, as the entire situation is temporary
the earth isnt the center ;)
sorear but you can't get that with real time, because the earth is randomly speeding up and slowing down like one of those chaos pendulum toys
it basically /is/ one 08:44
mberends hence leap seconds
huf just count seconds with the usual prefixes 08:45
sorear atomic time should be called proper time 08:46
proper time is a relativity concept - time measured by a perfect clock in a sealed box
your X-ray machine gives off radiation by the proper-second
time, as observed by the machine 08:47
under normal circumstances (computer and operator are ~ at relative rest), proper time is likely to be what the user expects too
CPU clocks count in proper time
proper time has the annoying disadvantage that you can't meaningfully compare it 08:48
proper time measured on Earth does not tick synchronously with proper time in orbit
when Perl 6 starts being used for programming on spacecraft and satellites, this is going to be a lot more important 08:49
moritz_ and you think those people will use the built-in time mechanisms? 08:50
sorear only if we let them
only if we force them to
no, let was correct 08:51
mberends internet connected computers often use NTP which is based on UTC, which is offset from TAI by the leap seconds. en.wikipedia.org/wiki/Network_Time_Protocol
moritz_ Perl 6 never tries to force anybody to do anything in a particular way :-)
sorear if we use built-in time mechanisms that are stuck in the first millenium, then yes spacecraft engineers will NIH time
I think it would be awesome if Perl 6 was the first mainstream programming language to embrace the distinctions between proper, civil, and coordinate time 08:52
we're already mostly there
moritz_ I don't think there are sufficiently many use cases for built-in relativistic time diletation calculations :-)
mathw Just as long as I don't have to say my $f = DateTime::Gregorian::Civil::Factory.new; my $time = $f->time(DateTime::TimeZone::SYSTEM); to get the time. 08:53
sorear we don't even need to calculate, we can let the user do that
but we should draw lines in the sand
"this Time is a ProperTime"
earthbound people can treat ProperTime as Interval and things will work 08:54
jnthn morning o/
moritz_ \o jnthn
sorear we can't automatically translate between ProperTime and CoordinateInterval, anyway
the conversion factors depend on your trajectory
moritz_ jnthn: will you fix the two regressions in syntax.t before the release tomorrow, or should I fudge them out?
masak jnthn++: mroing! :) 08:55
jnthn moritz_: Feel free to fudge, I'd *like* to fix 'em but didn't actually get down to the root cause of them yet. 08:58
moritz_: Please file a ticket so we don't forget. :-)
masak: oh hai
moritz_ sure, will do 09:00
masak std: now 09:01
moritz_ www.perlmonks.org/?node_id=835731 chromatic++
p6eval std 30416: OUTPUT«ok 00:01 109m␤»
jnthn moritz_++ # thanks
moritz_ std: then
p6eval std 30416: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'then' used at line 1␤Check failed␤FAILED 00:01 107m␤»
jnthn std: later
p6eval std 30416: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'later' used at line 1␤Check failed␤FAILED 00:01 107m␤»
masak std: laterz
p6eval std 30416: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'laterz' used at line 1␤Check failed␤FAILED 00:01 107m␤» 09:02
masak chromatic++ indeed 09:04
jnthn chromatic++ 09:05
That *is* a good post.
masak sorear: sounds like a good idea for a module.
(the relativistic stuff)
"You just need to be a little bit patient, a little bit stubborn, a lot interested, and humble enough to be willing to learn and to experiment." -- that puts it better than I've ever managed. 09:06
mathw the second comment, however, is astonishing 09:17
and kind of insulting
and also displays great ignorance 09:18
it's not like the perl 6 grammar engine is a simple instance of a context-free parser
most of us could write one of those without too much difficulty
excellent node though
chromatic++
masak mathw: AFAIU pmichaud's background, he has just that, skills 'acquired in universities(preferably good ones) where professors teach courses like "Formal Languages and Automata" or "Compiler theory"'. 09:28
he even taught such courses himself.
oh! moritz_++ says as much in a reply. 09:29
mathw quite 09:32
and I've done those courses at least...
not that I'd really care to take on the perl 6 grammar engine by myself
because pmichaud's a lot cleverer than me :)
and as you point out, has much greater experience as well
mathw -> meeting/argument
moritz_ rakudo: say <a b c>.Seq.perl 09:35
p6eval rakudo 027ff4: OUTPUT«Seq.new()␤»
moritz_ seems like a LHF to improve that
masak it does. 09:36
interesting to see how many comments are written by 'Anonymous Monk' in the www.perlmonks.org/?node_id=835419 thread. feels like a much higher ratio than usual on perlmonks. 09:40
moritz_ and there are at least two different anon monks
masak aye.
moritz_ one full of FUD, and one genuinely interested
probably more than one of the latter category 09:41
masak I count at least two of the latter category. 09:42
09:44 jaldhar_ left 09:47 snarkyboojum joined
sorear does "my method" currently make sense? 09:48
jnthn yes
sorear what does it do?
masak install the method in the lexical scope. 09:49
sorear has just had a revelation on how to solve most of our hll interop problems using a new notion of lexical methods, henceforth termed methodicals
masak: what does a method that's not installed in a class mean? 09:50
masak that's a good question. 09:51
quester_ masak and moritz_: I'm working on a patch for Seq.perl (and also GatherIterator.perl, although that one is too deep to take more that a superficial swipe at.)
sorear and where should I talk about methodicals? p6l?
masak aye. or here.
rakudo: class A { my method foo() { say "OH HAI" }; A::foo(A) }
p6eval rakudo 027ff4: OUTPUT«too many positional arguments: 2 passed, 1 expected␤current instr.: 'perl6;Failure;' pc 15153 (src/builtins/Array.pir:77)␤» 09:52
masak rakudo: class A { my method foo() { say "OH HAI" }; A::foo() }
p6eval rakudo 027ff4: OUTPUT«Can not find sub A::foo␤current instr.: 'perl6;Perl6Exception;throw' pc 14719 (src/builtins/Seq.pir:41)␤»
jnthn The second is what I expected
The first is...er...oops :-)
Anyway 09:53
write "our" for that.
masak jnthn: first one if a bug, that's what you mean?
masak grins
s/if/is/
rakudo: class A { method foo() { say "OH HAI" }; A.foo } 09:54
p6eval rakudo 027ff4: OUTPUT«OH HAI␤»
sorear masak: I need more space to explain what they are and why they're awesome. At least a few paragraphs. 09:55
09:55 gfx left
sorear so I'll pitch them on p6l tomorrow. 09:56
I've had lots of nice insights about interop and blizkost tech today... expect interesting things tomorrow
jnthn masak: Yes, it's a bug and I know why too.
masak submits rakudobug
jnthn (the thingy that throws the "OMFG that doesn't exist!!1!!" thing gets upset about arguments :-)) 09:57
sorear jnthn: can you give me a /working/ example of what my method needs now?
10:00 Patterner left
jnthn rakudo: class A { method foo() { say 42 }; foo() } # won't find it 10:00
p6eval rakudo 027ff4: OUTPUT«Could not find sub &foo␤current instr.: 'perl6;A;_block45' pc 302 (EVAL_1:136)␤»
jnthn rakudo: class A { my method foo() { say 42 }; foo() } # will
p6eval rakudo 027ff4: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤current instr.: 'perl6;A;foo' pc 387 (EVAL_1:172)␤»
moritz_ just needs an invocant, no?
jnthn rakudo: class A { my method foo() { say 42 }; foo(A) } # but of course needs something passed as invocant
p6eval rakudo 027ff4: OUTPUT«42␤»
jnthn Note you're doing sub dispatch there 10:01
Not method dispatch.
sorear my method installs into the namespace /as well as/ the class, then?
jnthn But the method itself is just a routine. It doesn't really care how you call it.
NO *not* the namespace!
sorear but installs it as a sub?
jnthn That's what our does.
sorear lexical namespace
jnthn my puts it in the *lexpad8
sorear not package namespace
a namespace is something that maps names to values 10:02
jnthn I'm not sure I've really heard it called a "lexical namespcae" before.
lexpad is the more common terminology. :-)
moritz_ a lexpad also maps names to values
jnthn namespace has too much connotation of package.
moritz_ but only from the inside
masak my:lexpad :: our:package :: has:vtable -- correct?
sorear I've never heard the term 'lexpad' used outside Parrot. Also, I'm tired.
masak sorear: 'lexpad' just means 'the thing that binds names in your lexical scope to things'. even if the term isn't the same in other languages, it's a very common thing. 10:03
'environment' is another common term for the same thing.
jnthn masak: Correct
masak \o/
jnthn BTW, if anyone is in the Malmö area and a member of Dataföreningen, I'll be giving a talk for the user group a week today on Perl (with some focus on Perl 6 too). 10:05
10:06 Psyche^ joined, Psyche^ is now known as Patterner
jnthn hopes that flights will be back in order in time for the Nordic Perl Workshop too. 10:07
10:11 yinyin joined, yinyin_ joined, yinyin_ left, yinyin left
colomon morning! 10:14
moritz_ c\olo/mon!
colomon :) 10:15
jnthn o/ colomon
colomon I did send the mandelbrot script to chromatic++ last night. 10:16
jnthn k
colomon I suspect that if he can unravel what is going on, it will be a big win all around. 10:18
10:19 baisong left 10:22 pmurias joined, JimmyZ joined
jnthn Indeed. 10:23
10:28 riffraff joined 10:31 JimmyZ left 10:33 riffraff left 10:34 Intensity joined 10:49 agentzh left 10:54 araujo joined 10:56 jaldhar_ joined 11:09 REPLeffect joined, PacoLinux left 11:12 muixirt joined 11:15 iblechbot left 11:18 molaf joined 11:19 meppl left 11:25 molaf left, XaeroOne joined 11:30 [particle]1 joined 11:31 jaldhar_ left 11:33 [particle] left
moritz_ paste-it.net/public/bc8442c/ # build failure of latest rakudo 11:33
reported by alexn_org++ on #parrot
somehow this seems vaguely familiar to me, but I'm not sure 11:34
mberends I'll try a build with my recent $*PID code commented out 11:35
jnthn oh noes 11:41
mberends: I suggest wrapping the $*PID setup code in an exception handler. 11:42
Just in case it accidentally the fejl.
moritz_ mberends: I've asked the reporter to do the same
11:43 XaeroOne left
mberends ok, after I learn how to wrap code in an exception handler (istr something about begin_eh) 11:44
jnthn masak: Your ticket is wrong.
74520
moritz_ a bug in a rakudobug!
masak looks
jnthn The bug is not that it didn't find the sub
It shoudln't 11:45
The bug is it gave an internals error rather than a good one.
11:45 renormalist joined
jnthn I guess more succinct is: 11:45
rakudo: A::foo # right error
p6eval rakudo 027ff4: OUTPUT«Can not find sub A::foo␤current instr.: 'perl6;Perl6Exception;throw' pc 14719 (src/builtins/Seq.pir:41)␤»
jnthn rakudo: A::foo(42) # I think this is what is broken
p6eval rakudo 027ff4: OUTPUT«too many positional arguments: 2 passed, 1 expected␤current instr.: 'perl6;Failure;' pc 15153 (src/builtins/Array.pir:77)␤»
masak ok, I'll add that to the ticket.
jnthn Yeah, that's the thing I was saying to submit 11:46
masak so next question: how *does* one call a 'my' method?
jnthn We're right to fail, just wrong the fail in that way
foo()
masak o.O
jnthn ?
masak not foo(self) or something?
jnthn well, yes with args
masak oh phew.
jnthn My point was not the package qualifier out front.
masak right.
quester_ submitted RT #74526: [PATCH] Fix Seq.perl to not say Seq.new(). Interim fix for Iterator.perl to fix infinite loops 11:47
jnthn That is, class A { my method foo() { }; foo(A) } # should work
masak because it's not associated with the package, it's associated with the lexpad.
jnthn That is, class A { my method foo() { }; A::foo(A) } # rightly should not work
Correct
masak rakudo: class A { my method foo() { say "OH HAI" }; foo(A) }
p6eval rakudo 027ff4: OUTPUT«OH HAI␤»
masak \o/
rakudo: class A { my method foo() { say "OH HAI" }; foo(42) }
p6eval rakudo 027ff4: OUTPUT«OH HAI␤»
masak no invocant checking :P 11:48
jnthn Yeah, I knows.
That's already ticketed though. :-)
masak I knows. :)
jnthn omgzlaundry!
brb
11:53 christine joined, jaldhar_ joined 11:54 leon joined, leon is now known as Guest95301 11:55 Guest95301 is now known as leont 11:57 sorear left, s1n left
leont Anyone care to give me some feedback on this before I go post it on reddit & co? : blogs.perl.org/users/leon_timmerman...erent.html 11:57
masak looks 11:58
mberends leont++: it's great exactly as is stands 11:59
*it stands
quester_ leont: great, but... macro's with an apostrophe? That's unusual.
mberends leon is Dutch, that's why ;) 12:00
leont Yup, that's why
But I just fixed that
masak 'but Perl 6 that to a new level' missing 'takes' or equiv. 12:01
'it is build' -> 'it is built'
12:03 sorear joined, s1n joined, ascent_ joined
mberends 'overstate the profound' -> 'overstate how profound' 12:04
pmichaud good morning, #perl6
masak 'Perl 6ys' -> "Perl 6's"
pmichaud: \o
mberends good morning pmichaud
leont Good morning
frettled pmichaud: \o/
masak hm, actually, s/Perl 6ys 's/Perl 6's/
frettled pmichaud: How are you doing? /me worries.
masak leont: very nice article. I fully agree with the sentiment. 12:05
jnthn morning, pmichaud
quester_ leont++
jnthn reads leont's article
12:05 bluescreen joined
leont blushes 12:05
12:06 bluescreen is now known as Guest51887
pmichaud leont++ # good article! 12:06
masak granted, modifying the language/grammar is probably not something that you do every day, even in a language where that is made easy like Perl 6. (though I'm willing to state in five years or so that I was wrong on that point.) 12:07
jnthn leont++
masak thing is, even if it isn't, it might still mean a lot for everyday module consumers.
pmichaud p6eval: rakudo: my $a = 'hello'; say "$a.chars"; 12:09
p6eval pmichaud: rakudo 027ff4: OUTPUT«hello.chars␤»
pmichaud oops
oooh, nice
p6eval: rakudo: my $a = 'hello'; say "$a.chars()";
p6eval pmichaud: rakudo 027ff4: OUTPUT«5␤»
mberends rakudo: my $a = 'hello'; say "{$a.chars}"; 12:11
p6eval rakudo 027ff4: OUTPUT«5␤»
leont Thanks all for your feedback :-)
12:11 alexn_org joined, gurjeet joined
pmichaud rakudo: my $a = 'hello'; say "$a.chars.chars()" 12:12
p6eval rakudo 027ff4: OUTPUT«1␤»
alexn_org hi people ... is anyone else having this bug? ... rt.perl.org/rt3/Ticket/Display.html?id=74524
frettled leont: inspiring, thanks for writing that! 12:13
12:14 alexn_org left
pmichaud rakudo: my $a = 'hello'; say "$a.chars.chars" 12:18
p6eval rakudo 027ff4: OUTPUT«hello.chars.chars␤» 12:19
pmichaud rakudo: my $a = 'hello'; say "$a.chars.chars.()"
p6eval rakudo 027ff4: OUTPUT«invoke() not implemented in class 'Integer'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
jnthn rakudo: my $a = 'hello'; say $a.chars.chars.()
p6eval rakudo 027ff4: OUTPUT«invoke() not implemented in class 'Integer'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
jnthn Ah, not specific to interpolation at lesat. 12:20
pmichaud rakudo: my $a = 'hello'; say "$a.chars().chars()"
p6eval rakudo 027ff4: OUTPUT«1␤»
jnthn mberends: Did you figure out the exception thingy?
pmichaud rakudo: my $a = 'hello'; say "$a.chars().chars"
p6eval rakudo 027ff4: OUTPUT«5.chars␤»
pmichaud how/where does it know to look for the trailing ()?
jnthn pmichaud: See, iirc, termish
And $*QSIGIL
mberends jnthn: no, but it *is* possible to reproduce the error by putting in a wrong function name
jnthn mberends: Actually 12:21
You have a line like $P0 = dlfunc ...
12:21 snarkyboojum left
jnthn mberends: After it just do a 12:21
unless $P0 goto skip_pid
mberends: I mean, if we can't find it, what can we do...but we shouldn't crash. :-)
But that's cheaper/easier than an exception handler to catch it if it does go wrong.
mberends jnthn: thanks. It means OS X will not get a $*PID though :-( 12:22
jnthn pmichaud: Yes, certainly it's termish.
pmichaud jnthn: yes, I see it now. Icky, but I guess it works.
jnthn pmichaud: Our factoring is pretty much the same as STDs, modulo a hack because we don't have <afer> yet
*after
pmichaud: But otherwise it follows STD.
pmichaud STD doesn't seem to use after 12:23
jnthn mberends: Well, they have other shiny things.
leont posted it to reddit programming, hopes it doesn't get snowed in
pmichaud afk, school trip
jnthn pmichaud: here: 12:24
|| <?{ $*QSIGIL eq '$' }> [ [<!before '\\'> <POST>]+! <?after <[ \] } > ) ]> > ]?
|| [<!before '\\'> <POST>]+! <?after <[ \] } > ) ]> >
pmichaud oh, there it is.
jnthn ooh, I think the <!before '\\'> in STD is new since I copied from it though.
pmichaud what about » ? 12:25
afk
jnthn Yeah, adding » to the list could also be sane.
I almost wonder if we should just generalize it to <!after \w> 12:26
12:27 envi^home left 12:29 SmokeMachine joined 12:30 envi^home joined 12:31 gurjeet left
quester_ Good night, #perl6. sleep & 12:33
mberends jnthn++: your suggestion worked. Testing a bit more before committing... 12:34
12:35 quester_ left
jnthn \o/ 12:36
mberends does any OS X user know the Darwin equivalent of the Linux 'getpid' in 'libc' (or of the MSWin32 'GetCurrentProcessId' in 'kernel32') ?
masak has no idea 12:38
what does Google say?
leont It really should have getpid
pmichaud I would expect getpid, if it's posix-like. 12:39
masak over lunch, since I'm so into scoping of different kinds right now, we got to talking about class-bound variables again. my colleague jonalv, whose home language is Java, thought that it was a shocking omission not to have class-based variables.
I explained how 'my' and 'our' didn't do what was intended, since lexpads and packages are orthogonal to OO inheritance. 12:40
mberends google says other people are asking the same question :/
leont developer.apple.com/mac/library/doc...pid.2.html
masak when I talked about 'state' variables, he was a bit mollified and admitted that the need wasn't as great for class-bound variables. 12:41
and when I explained about the non-need for class-level methods due to type objects, I had almost convinced myself that we don't need class/static variables :) 12:42
12:43 snarkyboojum joined
masak but one use case that I can see is something akin to a constant defined in a class, which ought to be reachable from all its methods and the methods in derived classes. 12:43
same with enums. sometimes that might be useful.
snarkyboojum: hi!
snarkyboojum hello masak-san 12:44
o/ :)
masak I've started in on blocks in Yapsi.
snarkyboojum you're a machine :) 12:45
masak no, just single and obsessive :P
12:45 REPLeffect left
arnsholt masak: There's a difference? O=) 12:46
masak github.com/masak/yapsi/commits/blocks
mberends thanks leont. Nevertheless, cheats/setup-io.pm uses it fine on Linux but not on OS X :-( I have just pushed a default to 0 if the function cannot be found.
snarkyboojum masak: heh
masak snarkyboojum: 'started in on' here means that it parses and runs the blocks.
snarkyboojum masak: perusing the blocks branch atm
masak snarkyboojum: but it currently runs *all* blocks, even the non-immediate ones. 12:47
snarkyboojum masak: heh - interesting
masak I'll have to put in some restrictions there, because I don't want to handle the complexity of non-int values just yet.
dalek kudo: d0e93e5 | (Martin Berends)++ | src/cheats/setup-io.pm:
[cheats/setup-io.pm] set $*PID to 0 if the getpid() function cannot be
12:48
masak but currently, this works: 'my $a = 42; { say $a }'
12:48 iblechbot joined
snarkyboojum I'm going to have to build alpha on my new laptop I see :) 12:48
masak and this runs but prints when it shouldn't: 'my $a = 42; my $b = { say $a }'
and this runs and prints a warning though it shouldn't: 'my $a; { my $a }' 12:49
and this runs and prints the wrong thing: 'my $a = 42; { my $a; say $a }'
basically, it's aware of blocks syntactically, but not semantically yet.
snarkyboojum sounds pretty cool to me :) 12:50
masak the next step is kinda the big one. 12:52
breaking the SIC up into sub-like units, like PIR.
but the road ahead seems clear, at least.
snarkyboojum what's next?
masak after that? probably if statements and while loops. 12:54
CokeBot9000 moritz_: hio. 12:55
pmichaud mberends what does dlfunc return if the requested library function isn't found? 12:56
this line looks suspicious:
+ unless $P0 goto setup_io_no_getpid_func
mberends pmichaud: null or 0, I think. 12:57
I tested it with a bogus function name and it followed the goto path
pmichaud if so, then the test needs to be "if null"
masak snarkyboojum: but it'd be really nice to have yapsi and tardis talking to each other by the 2010-05-01 release, too. :)
pmichaud hmmmm
traditionally, boolean tests on null cause a "Null PMC" error. 12:58
mberends I'll check the parrot opcode docs
pmichaud :docs don't seem to say :-(
12:58 REPLeffect joined
jnthn It gives Undef 12:58
snarkyboojum masak: :)
pmichaud okay, Undef works. 12:59
masak snarkyboojum: I'll see if I can do the Yapsi part of that, i.e. write the calls to the hooks in the runtime.
12:59 ReiniUrban joined
mberends pmichaud: would that be better written: if undef $P0 goto ... ? 13:00
pmichaud nope, "undef" isn't a valid PIR keyword
if dlfunc returns undef (which it does), then what you have written is probably okay for now.
13:00 rurban left 13:01 ReiniUrban is now known as rurban
pmichaud at least, as long as NCI PMCs return "true" for boolean-ness :-) 13:01
mberends crosses fingers
pmichaud feels like $*PID should return a Failure object if we weren't able to find the PID, though. 13:02
instead of 0. 13:03
PerlJam good morning
mathw That seems fairly sensible
CokeBot9000 even though it's just NYI? 13:04
pmichaud CokeBot9000: yes. Better to return an error value than to return something that could be considered valid.
*explicit error value
CokeBot9000 hurm. can you mark a Failure with a NYI attribute? 13:05
pmichaud sure, the Failure can carry a NYI message
so that "say $*PID" results in a warning of "$*PID not yet implemented on this system" 13:06
CokeBot9000 gnifty.
mberends good idea. I'm doing something else, but I can add that shortly.
pmichaud CokeBot9000: Failures are one of the neat pieces of Perl 6 -- we're no longer limited to failure sentinel values; we can actually return Failure objects that contain the explanation of the failure 13:07
arnsholt mberends: IIRC the correct PIR incantation to check for Null PMC is isnull
pmichaud arnsholt: it is, but dlfunc doesn't return null PMCs, it appears.
arnsholt Oh, right. How convenient 13:08
jnthn Yeah, I was a tad surprised they gave Undef rather than Null 13:10
(Since Parrot often uses Null to indicate failure/non-existence)
arnsholt Maybe something that can be changed?
pmichaud probably pre-dates the exposure of pmcnull to PIR
13:11 REPLeffect left, leont left
pmichaud early versions of parrot tended to try to hide PMCNULL from PIR programmers as much as possible 13:11
13:11 rgrau joined
jnthn True 13:11
arnsholt: Heh, if they change it we gotta go patch up a load of code. :-/
pmichaud arnsholt: could be changed yes, but needs a deprecation cycle :)
arnsholt Yeah, there is that 13:12
pmichaud jnthn: do we use dlfunc all that much?
CokeBot9000 best bet is probably to add a new opcode that DTRT /now/ and deprecate the old one.
pmichaud I wouldn't think it'd be a lot of code to fix.
jnthn pmichaud: No
pmichaud: Zavolaj uses it though, of course. :-)
pmichaud CokeBot9000: Yeah. OTOH, since NCI handling itself seems to be deprecated, we can just wait for that.
CokeBot9000 I'm just glad that we're down to Null & Undef. (Used to also have None)
pmichaud: there you go. 13:13
jnthn NCI itself had best not be deprecated!
CokeBot9000 there will be nci.
jnthn phew. :-) 13:14
pmichaud okay, not NCI itself, but NCI signatures.
jnthn Current state sucks though.
pmichaud TT #1565
jnthn The previous frame builder but ripped out.
arnsholt I'd guess that means the current implementation is being deprecated
jnthn *got
pmichaud I meant ... what arnshold++ said
arnsholt Hopefully in favour of something shinier
pmichaud *arnsholt++
(argh, can't type today.) 13:15
mberends (Whatever)arnsholt++ ?
13:15 jjames joined
jnthn can't believe it's *that* hard to write one that works on the major platforms. 13:15
Tricky and annoying to write, though. 13:16
CokeBot9000 jnthn: kind of like writing perl6? ;)
jnthn Yes, but more tricky than annoying in Perl 6. ;)
Whereas a frame builder is annoying in that various platforms want things *slightly* different. :-) 13:17
13:20 [particle]1 is now known as [particle] 13:21 Lorn joined, astinus joined
CokeBot9000 is there a need for all the various .pm files to be combined into core.pm or could that be done after they were individually compiled to pir? 13:23
(I'm just wondering if that would be a temporary speed up for compilation.)
pmichaud CokeBot9000: they're not entirely independent 13:24
13:24 REPLeffect joined
pmichaud some files want to know the definitions coming from previous files 13:24
moritz_ CokeBot9000: mberends and I have been working on branches to split the compilations
mberends CokeBot9000: moritz_++ and I have tried to do separa...
moritz_ CokeBot9000: it seems doable, but not trivial
CokeBot9000 hokay.
PerlJam alternatively ... parrot could just be made faster ;) 13:25
mberends moritz_: the state of those branches is quite out of date, it might be easier to just delete them and start afresh
jnthn The other problem is that they all need to form a coherent outer lexical scope 13:26
We could go down the "export and then import them into one lexpad" thing I guess. 13:27
moritz_ and then there's the problem with traits being defined in the setting, and later on needed in the setting...
jnthn That too.
CokeBot9000 So, "not trivial". that's all I needed. =-) 13:29
13:30 REPLeffect left, kaare_ left 13:37 ejs left
masak Alias: ping 13:39
std: [+]
p6eval std 30416: OUTPUT«===SORRY!===␤Prefix requires an argument at /tmp/cGbaRKgDuD line 1 (EOF):␤------> [+]⏏<EOL>␤Parse failed␤FAILED 00:01 110m␤»
13:39 araujo left
masak TimToady: [+] no longer parses as a listop? 13:39
moritz_ mberends++ # fixing $*PID on Mac 13:40
13:40 araujo joined 13:41 learnperl6 joined, dalek left 13:42 the_raven joined
pugssvn r30417 | moritz++ | [t/spec] some unfudges for rakudo 13:42
the_raven righto
pugssvn r30418 | moritz++ | [t/spec] fudge failing tests for rakudo in syntax.t - the ticket on RT is re-opened for them
13:43 dalek joined, the_raven left, REPLeffect joined
colomon "Why Perl 6 is different" is at the top of Hacker News at the moment... :) 13:44
jnthn masak: Matches my expectations from sTD, where it's parsed as a prefix. 13:45
masak ISTR it was once parsed as a listop.
jnthn see token PRE
masak what about `[+] 1, 2, 3` ?
jnthn Me too, but not before Rakudo copied it from current STD
? 13:46
Still a prefix
13:46 PacoLinux joined
masak ah, I guess it comes down to precedence. 13:46
moritz_ also thought that [+] parses as listop
masak and why shouldn't it? it feels perfectly natural.
masak raises the 'formal protest' flag 13:47
:)
jnthn It's an operator, it should parse in one of the operator categories.
moritz_ listop = list operator (isn't that an operator category?)
jnthn And yes, it has %list_prefix precedence so it sucks up da whole list.
moritz_: There's no syntactic category listop afaik. 13:48
masak the practical difference between listop and list prefix is that 'say [+];' gets disallowed.
I wonder why that choice was made. 13:49
jnthn I consider that a benefit.
masak I don't.
I liked it :)
jnthn It looks too close to say &[+]
Which means something quite different.
masak meh.
jnthn Anyway
You can do say [+] ()
masak yes, but why would I need parens there and nowhere else? :(
13:50 ruoso joined
masak *that's* the exception, and that's what I don't like. 13:50
13:51 Cristina_ joined
jnthn Why would you want to write such a thing anyway? 13:51
masak as the limit case of a series of example expressions? 13:53
[+] 1, 2
[+] 1
[+]
13:53 uniejo left
dalek kudo: 5a0581f | moritz++ | t/spectest.data:
one more passing test file
13:53
colomon should >>.= work?
masak sure, why not? 13:54
jnthn I think it maybe even does work
rakudo: my @a = 1,-2,3,-4; @a>>.=abs; say @a.perl
colomon rakudo: my @a = -5..5; @a >>.= abs; say @a.perl
p6eval rakudo d0e93e: OUTPUT«[1, 2, 3, 4]␤»
rakudo d0e93e: OUTPUT«Missing << or >> at line 11, near " abs; say "␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
jnthn No, you can't put the space there.
colomon great minds think alike, but mine is a little buggy. 13:55
jnthn std: my @a = 1,-2,3,-4; @a>>.=abs; say @a.perl
p6eval std 30416: OUTPUT«ok 00:01 109m␤»
masak one can never have space before ops in the postfix or postcircumfix categories.
jnthn std: my @a = -5..5; @a >>.= abs; say @a.perl
p6eval std 30416: OUTPUT«===SORRY!===␤Missing << or >> at /tmp/mxIDkTACbt line 1:␤------> my @a = -5..5; @a >>.=⏏ abs; say @a.perl␤ expecting infix_circumfix_meta_operator__S_267LtLt_GtGt␤Parse failed␤FAILED 00:01 109m␤»
jnthn The error is...not the most helpful in a sense...
...but we at least match STD.
colomon I just used >>.= for work. :) 13:57
afk
13:59 masak left 14:00 jjames left, learnperl6 left 14:01 sorear left 14:02 sorear joined, alester joined 14:05 meppl joined
dalek kudo: e135f23 | moritz++ | docs/ChangeLog:
[docs] update ChangeLog
14:06
moritz_ jnthn: I'm thinking about names for the upcoming release... what was the conference in Russia you were attending? was Moscow.pm involved? 14:08
CokeBot9000 .u degree
phenny: .u degree
moritz_ ENOPHENNY 14:09
jnthn moritz_: It was a commercial one, RIT
Though I did have beer with Moscow.pm
;-)
Actually I think I've had beer with Moscow.pm folks a few times by now 14:10
But never actually spoken at a YAPC::Russia or Moscow.pm meeting.
moritz_ hm, maybe then it's LTA as a release name 14:11
jnthn Beer is awesome!
But yes.
:-)
moritz_ jnthn: any other ideas? .pm groups you have visited lately?
jnthn We already used all the ones I've been to recently. 14:12
14:12 masak joined
jnthn ponders 14:12
lolitstakak 14:13
masak Firefox is stable yet again. 14:16
jnthn masak: How many tabs this time? :-) 14:22
masak jnthn: I think I lost some in the reboot, so I'm down to 1.5k
14:22 sorear left
masak Firefox starts to become really unreliable around 2k. 14:22
14:23 sorear joined
dalek kudo: ad01dca | moritz++ | docs/announce/2010.04:
first draft for 2010.04 release announcement
14:23
moritz_ still thinks that masak's workflow might benefit from having a queue of URLs, rather than having the full page open for each to-be-read article 14:24
but of course I wouldn't try to impose any "work"flow on masak++ :-)
masak moritz_: that's basically what it boils down to, though. 14:26
moritz_ I know
masak since I start up Firefox and pull the ethernet cable, so only the URLs actually load.
14:27 sahadev joined
moritz_ it just feels like having a whole memory page for each byte, or so 14:27
masak .oO( sounds like Parrot ) 14:28
masak hides
jnthn masak: I...thought that and wasn't going to say it! :-P 14:29
14:29 ejs joined
masak great teases think alike. 14:30
jnthn The rain is teasing me at the moment. 14:32
Keeps looking like it'll stop, then doesn't.
colomon rakudo: sub postfix:<!>($n) { $n > 0 ?? $n * ($n - 1)! !! 1 }; say 7!
p6eval rakudo 5a0581: OUTPUT«5040␤»
colomon rakudo: sub postfix:<!>($n) { $n * ($n - 1)! }; sub postfix:<!>(0) { 1; }; say 7! 14:33
p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'parrot;P6object;HOW' pc 54 (runtime/parrot/library/P6object.pir:98)␤»
jnthn rakudo: multi postfix:<!>($n) { $n * ($n - 1)! }; multi postfix:<!>(0) { 1 }; say 7! # I like this formulation a little more ;-)
p6eval rakudo 5a0581: OUTPUT«5040␤»
masak rakudo: say 7!; sub postfix:<!>($n) { $n > 0 ?? $n * ($n - 1)! !! 1 }
p6eval rakudo 5a0581: OUTPUT«Confused at line 11, near "say 7!; su"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
jnthn Win.
colomon rakudo: multi postfix:<!>($n) { $n * ($n - 1)! }; multi postfix:<!>(0) { 1; }; say 7! 14:34
p6eval rakudo 5a0581: OUTPUT«5040␤»
jnthn colomon: multi. But Rakudo shoulda complained.
masak so... the grammar changes after the parsing of the sub?
jnthn masak: Exactly.
How godis that?
colomon \o/ 14:35
moritz_ there's a ticket for that :-)
(though not for operators specifically) 14:36
14:36 molaf joined, PacoLinux left
jnthn moritz_: Aye, I spotted the ticket yesterday when I was going through the whole RT 14:37
colomon the grammar doesn't change after parsing a normal sub, does it?
jnthn colomon: no 14:38
colomon rakudo: multi postfix:<!>($n) { $n * ($n - 1)! }; multi postfix:<!>(0) { 1; }; ((1..10)>>!).perl.say 14:39
p6eval rakudo 5a0581: OUTPUT«Could not find sub &postfix:<!>␤current instr.: '' pc -1 ((unknown file):-1)␤»
colomon rakudo: our multi postfix:<!>($n) { $n * ($n - 1)! }; our multi postfix:<!>(0) { 1; }; ((1..10)>>!).perl.say 14:40
p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)␤»
colomon :\
jnthn :-/
dalek kudo: cf4eb89 | Coke++ | docs/announce/2010.04:
untypo
jnthn I know we have the our bug 14:41
er, bug that means we need our
But I expected that to work.
our multi postfix:<!>($n) { $n * ($n - 1)! }; our multi postfix:<!>(0) { 1; }; ((1..10).Seq>>!).perl.say
rakudo: our multi postfix:<!>($n) { $n * ($n - 1)! }; our multi postfix:<!>(0) { 1; }; ((1..10).Seq>>!).perl.say
p6eval rakudo 5a0581: OUTPUT«[1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]␤»
jnthn Ah
colomon rakudo: our sub postfix:<!>($n) { [*] 1..$n; }; ((1..10)>>!).perl.say
p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)␤»
jnthn Needs .Seq for some inexpelicable reason. 14:42
Submit rakudobug.
colomon rakudo: our sub postfix:<!>($n) { [*] 1..$n; }; ((1...10)>>!).perl.say
p6eval rakudo 5a0581: OUTPUT«[1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]␤»
colomon jnthn: I think you need to say masakbot: submit rakudobug. ;) 14:43
I've got it.
14:43 pyrimidine joined
jnthn :-) 14:44
colomon unless you meant to say "submits rakudobug", ala masakbot.
jnthn Anyway, yes, once that works properly...quite.
no, no
I was trying to invoke masakbot
colomon rakudo: our sub postfix:<!>($n) { [*] 1..$n; }; (-<<(1..10)).perl.say 14:45
p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)␤»
jnthn It's just rnages and >> I think
rakudo: say (1..10)>>.say
p6eval rakudo 5a0581: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤1111111111␤»
jnthn oh.
colomon just trying to find a simpler example.
rakudo: (-<<(1..10)).perl.say
p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)␤»
jnthn ah
colomon rakudo: (-<<(1...10)).perl.say
p6eval rakudo 5a0581: OUTPUT«[-1, -2, -3, -4, -5, -6, -7, -8, -9, -10]␤»
jnthn rakudo: (-<<(1..10))
p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)␤» 14:46
jnthn rakudo: (-<<(1..10)); say "omg I live!"
p6eval rakudo 5a0581: OUTPUT«maximum recursion depth exceeded␤current instr.: 'perl6;Iterable;list' pc 10791 (src/builtins/Role.pir:111)␤»
masak should I submit a rakudobug above? sorry for the lag :) 14:47
colomon I just did.
using the shorter version (no need to muck about with factorial)
[particle] colomonbug++
pugssvn r30419 | pmurias++ | [mildew] add missing file 14:48
pmurias diakopter: hi 14:49
masak the "Perl 6 is different" is making my Twitter client vibrate with "Perl 6" live search results. leont++
colomon++
jnthn IIRC, we moved #rakudosketch to be Tuesday, yes? 14:51
Can anyone remember what time? :)
[particle] it used to overlap the sixperl call by half an hour, so i'm guessing now it overlaps parrotsketch by half an hour :/ 14:52
jnthn I'm not sure attendance hugely overlaps. 14:53
[particle] i see last tuesday's started at 12p pdt
i think i'm -8 utc
jnthn I think I'm +2 utc
[particle] er, utc - 8 of course
jnthn
.oO( my timezone did +2 utc )
14:54 PacoLinux joined
[particle] wonders if there's a foxclocks equivalent for chrome 14:54
jnthn That'd mean 10pm here for me. I'm not sure that's right.
14:54 justatheory joined 14:55 jonasbn left
colomon Wasn't the old time four hours from now? 14:56
jnthn That sounds righter to me. 14:57
That's 9pm my time.
Let's go for that.
colomon is anyone over there right now? I just got strange results when I tried to join the room... 15:00
jnthn appears to be in #rakudosketch
colomon ah, that's better. danke. 15:01
jnthn :-)
colomon not sure what I did wrong the first time.
15:03 rurban left 15:05 rurban joined
jnthn bbiab 15:06
15:08 ejs left 15:12 ejs joined
snarkyboojum std: ; 15:19
p6eval std 30419: OUTPUT«ok 00:01 108m␤»
masak :) 15:20
moritz_: autarch++ has a nice message about Date.daycount on p6l.
15:26 Kyril joined
sunnavy re 15:30
15:35 rv2733 joined
jnthn back 15:37
15:55 masak left 15:57 REPLeffect left, iblechbot left 16:04 muixirt left 16:11 REPLeffect joined 16:13 snarkyboojum left 16:16 ejs left 16:17 Cristina_ left, hercynium left 16:19 IllvilJa left 16:21 REPLeffect left 16:32 IllvilJa joined
TimToady std: has constant $.pi = 3; 16:33
p6eval std 30419: OUTPUT«ok 00:01 110m␤»
jnthn o.O
16:34 REPLeffect joined
TimToady masak++ was conjecturing class-based constants, but it already falls out 16:34
in fact, that was one of the reasons the constant declarator moved from being a scope_declarator to being a type-declarator, so we could use it in arbitrary scopes 16:36
jnthn ...I guess I missed the change where constant stopped being a scope declarator.
TimToady well, but I think you know that constants "default" to our 16:37
what can that mean, other than that you can put other scopes?
but anyway, no one to blame but myself, for putting constants in the wrong place to begin with :) 16:38
jnthn I guess it wants to do something like $*SCOPE ||= 'our' or something. 16:39
Hmm. I don't see STD doing anything there. 16:40
oh, but maybe doesn't need to.
TimToady there's probably a bug in there somewhere, but maybe only for add_name, which seems to default to 'my' 16:44
add_variable seems to default to 'our'
16:45 nihiliad joined
TimToady it's really something that should be specified on all type_declarator:*, but we don't have our protos set up for that yet 16:47
we need a way to write our proto block such that it functions as a wrapper around the dispatch to various specific rules 16:48
that would simplify the 'is endsym' stuff too 16:49
well, maybe not
jnthn :/
That sounds...weird.
16:50 leon__ joined
TimToady well, internally, (in STD at least), the type_declarator proto is the routine you're actually calling to dispatch to all its alternatives 16:50
so there's no magic in the <type_declarator> call itself, only lower down
jnthn Ah, I see. 16:51
TimToady and certainly the current default is fine, where an empty proto defaults to the redispatch
16:51 REPLeffect left
TimToady but if we could have a way to say "insert sub-dispatch here" then we get more power 16:51
currently gimme5 just rewrites any proto into a sub-dispatcher directly 16:52
16:52 REPLeffect joined 16:53 batta joined
TimToady hmm, I made up a <...> assertion, but that's completely redundant, when you can write {...} just about as easily 16:54
also, you might want to write some proto rules as methods rather than as regexen 16:55
such as in this case, where you want to throw in a 'my $*SCOPE //= "our"'
16:56 batta left
jnthn s/my/temp/ ? 16:56
diakopter pmurias: after another hour thinking about it, I figured out how to do the contextuals correctly & efficiently; I'll make the changes in 8 hours or so.
TimToady well, actually, it's $*SCOPE ||= 'our' 16:57
jnthn ah, ok
TimToady no declarator, since $*SCOPE is rw and already scoped to the statement
jnthn nod
TimToady and is already defined to '', in fact
well, scoped to the current declaration, anyway 16:59
declarations are terms, not statements
diakopter sorear: re TLS, Perl 6 contextuals will not be implemented directly by perlesque contextuals. 17:00
17:00 pmurias left
diakopter sorear: and the STD-from-STD won't be multithreaded :P 17:01
17:01 REPLeffect left, dakkar left 17:02 nihiliad left 17:06 sunnavy left
sorear pmichaud: ping 17:07
17:07 sunnavy joined 17:12 hercynium joined 17:15 sunnavy left, sunnavy joined 17:17 szabgab joined 17:20 thowe joined
sorear Jonathan Worthington — Perl 6 talk in Malm&#246; 17:21
(re-escaping escaped text)--
thowe I am curious if there is a page that explains the canonical way of licensing ones own software under the Artistic 2.0 license. Something that says what's normal to do like "include the file here, named this. add the license to these files" etc... Is there such a document?
jnthn sorear: ugh, fail.
thowe like, don't the GPL people like a file called "COPYING" 17:23
diakopter thowe: no page that I know of. usually there is a file named COPYING that has any copyright notification and also says something like "you can redistribute the source code of this software under the terms of the license found in the file named LICENSE"
afaicg
that's what I would do, anyway 17:24
thowe OK. My practice with ISC code was to always include it in the header file and point the source file there (for C/C++) but the artistic license is long...
That sounds like the way to go. 17:25
Thanks
diakopter I think the parrot source includes a copyright notice at the top of every source file
17:26 hercynium left
sorear all software licenses are used in the same way 17:26
personally, I don't like the whole license boilerplate on every file thing 17:27
PerlJam sorear: me either. But there's liking something and then there's something that's legally defensible.
17:27 pjcj joined
plobsing apparently rakudo will see a huge startup improvement if parrot gets a fix for freeze/thaw of complex PMCs. Can someone describe what needs work in that area? 17:30
17:31 iblechbot joined
oskie i get a little scared when i see that the perl6 binary on my system is 22 MB... i mean, the perl5 binary is only 7K, and the libperl so is 1.5 MB 17:33
anyone know why that is? 17:34
17:34 stephenlb joined
plobsing oskie: parrot bytecode (which gets baked into perl6.exe) isn't very compact ATM. it does compress well however. 17:34
17:35 astrojp joined
jnthn It's been in theory more optimized for fast reading (machine sized ints) and immediately mmap-n-run than it has for being compact. 17:35
oskie ah, I see. it compressed to 700K (basic test with bzip2)! that's pretty good 17:36
jnthn plobsing: While that is in some senses true (on the freeze/thaw), it's probably not so much just that Parrot can do the work and suddently we're faster. Rakudo would need changes to catch up with it too. 17:37
plobsing: In a sense, we almost need to be able to say "freeze everything that's currently in memory" or something close to that.
And then thaw it and run from there.
Part of the issue is with dynpmcs. 17:38
Which I think you can't freeze/thaw at all today.
plobsing jnthn: so this is about pre-calculating the language prelude?
TimToady s/prelude/setting/ these days, at least for Perl 6 17:39
17:39 hercynium joined
jnthn plobsing: Right 17:39
TimToady a setting establishes one or more outer lexical scopes 17:40
jnthn plobsing: Modulo terminology as TimToady pointed out. ;-)
Well, a little more than terminology in some senses.
But probably not in a way that affects what we need to be able to freeze.
TimToady depends on whether you need to be able to freeze a lexical scope and then compile inside that :) 17:41
plobsing So if I were able to "freeze everything in this namespace" (including dynpmcs, methods with dynops, other nastiness) rakudo could get a startup improvement?
jnthn TimToady: There's a way in Parrot to take something and dynamically set its outer scope
TimToady: That's how we do it today.
plobsing: Well, lexpads too. 17:42
We store a decreasing amount in the namespace.
TimToady but you need to be able to freeze a lexical scope in order to pull it in and link to it
package freezes aren't quite up to that 17:43
jnthn TimToady: Right.
plobsing er... ok. It boils down to "freeze this continuation" then?
jnthn Hmm. :-)
Just about I guess. :-) 17:44
Well
TimToady that's perhaps...overkill...but only slightly
jnthn We don't actually care about where the program counter is.
TimToady if you *could* freeze a continuation, that would do very well for freezing a setting :)
jnthn A Closure has a pointer to a lexpad which is the one it was last invoked with. 17:45
TimToady though it's still not quite right
jnthn So we'd need to freeze the lexpad hanging off there.
That'd *probably* do it.
TimToady if you have a setting like for -p with an outer loop, you don't actually want to freeze a continuation at the YOU_ARE_HERE, I think 17:46
jnthn No, probably not
I don't think we want it to be continuation-y
TimToady you really want the setting's compilation frozed at approximately its CHECK time
*zen
jnthn Sounds about right. 17:47
diakopter *dao
*tao
sigh
YApunfail
TimToady so the while loop in the setting is compiled, and the lexical scope inside is remembered, but we don't actually start running the while loop till the user's program runs
otherwise how would we know which file to open? 17:48
actually I think the spec currently requires such a loop to be written in a MAIN sub
that defers it already
diakopter my head spins
what was the question? 17:49
TimToady what mechanisms are necessary to compile settings as specced
plobsing what would I have to do to be able to store the setting library?
diakopter oh 17:50
jnthn I'm not quite sure I follow the question.
I expect we'd get a PBC file out, if that's what you mean.
That has the frozen PMCs and the code in it.
17:50 masak joined
diakopter oh; I don't see a way to get around the toplevel of the setting being executed directly on every run 17:51
plobsing yup, thats it exactlly. I'm thinking it would get rolled into the main rakudo exe
masak TimToady++ # has constant
jnthn plobsing: Yes.
TimToady diakopter: yes, but if the setting is all declarations, there's nothing much to run
(at INIT time, I presume)
probably before INIT time, actually 17:52
diakopter ok. 'tis straightforward in perlesque realm, afaict
plobsing jnthn: is there any gradual way to do this? or is this a 2 step thing with 1) make it work in parrot 2) make rakudo use it?
TimToady given that loops can go into MAIN, we might actually be able to run the setting at compile time and take a continuation if we hit a YOU_ARE_HERE that isn't hidden in a sub 17:53
but that's conjectural for now
masak plobsing: hi; are you a Parrot person? 17:54
TimToady esp. since we don't require continuations in Perl 6 :)
17:54 nihiliad joined
plobsing masak: yes. 17:54
masak nice.
PerlJam He's very parroty
jnthn plobsing: I'm not sure about a gradual way tbh.
masak I like it when Parrot people hang out on #perl6. 17:55
jnthn plobsing: I mean, you can certainly build up a set of tests.
plobsing: Trying to persist and resurect more and more complex things.
17:55 astrojp left
TimToady masak: even if they later sneak off to #parrot and complain about how much we talk :) 17:55
jnthn plobsing: We could then start a Rakudo branch.
plobsing: And try it, iterate until it works. :-) 17:56
plobsing I guess that's what I'll do. I'll get back to you when I've got either lexpads or continuations with dynpmcs and dynops freezeable/thawable
PerlJam plobsing++
jnthn plobsing++
If you can do that, then, well, wow. :-)
plobsing: Any news on NCI frame building? 17:59
masak TimToady: there's something quite odd about #parrot complaining how much others talk... :) 18:00
diakopter TimToady: given that perlesque supports reified continuations, would you speculate on how that might be syntaxified in Perl 6? call/cc? let/cc? both? some crazy symbol sequence?
plobsing not much to speak of. I did sneak some hooks into 2.3 so a library could be created at a later time to support more signatures.
also tons of deprecations of blockers
diakopter masak: I just repeat what I hear
masak diakopter: $SNAPPY_COMEBACK :) 18:01
TimToady maybe just goto $continuation; # :D 18:02
plobsing jnthn: I'm thinking of updating zavolaj after I make some of the improvements
18:02 uniejo joined
TimToady errands & 18:03
18:03 meppl left
jnthn plobsing: OK, cool! :-) 18:07
plobsing: It's the limit on what signatures are possible that makes Zavolaj less useful today really.
diakopter TimToady: ok, but how to create them, seeing as how a continuation savepoint needs to be statically recognizable by the compiler 18:08
(there's always COMEFROM) 18:09
o_O
or RETURNHERE 18:10
or RETURN_TO_ME (David Duchovny/Minnie Driver/Bonnie Hunt) 18:11
18:13 batta joined 18:14 batta left
plobsing jnthn: If you want more signatures, you can compile a dynlib for parrot using the nci_thunk_gen tool. After loading that library, parrot will have the additional signatures available. Not as good as a JIT, but maybe it'll help you. 18:20
PerlJam slightly increases the odds that plobsing will be a mentor this summer 18:25
jnthn noms, #rs in 30 18:29
18:29 uniejo left 18:30 masak left, hercynium left, xinming_ left 18:32 xinming joined 18:41 finanalyst joined 18:53 PacoLinux left 19:06 smash_ joined, clintongormley left
smash_ hello everyone 19:06
pmichaud #rs is on tuesday now? 19:07
[particle] pmichaud: yes, that's new. it's going on now. 19:08
jnthn pmichaud: Yes, after a bunch of people couldn't do Wednesday
19:10 ShaneC joined, ShaneC left 19:20 gurjeet joined
gurjeet moritz_: Good afternoon 19:21
A quick question..
Do you think there's any uptake of the IRC logs you have been generating?
diakopter gurjeet: uptake? 19:24
gurjeet I mean, do people go back an look up past conversations? Or are the search engine results helping people find useful info?
19:24 nihiliad left
diakopter all the time 19:24
lots of people backlog using the web irclog
incl me
gurjeet Thanks.. that'd help me make a case at #postgresql . 19:25
How about people finding info via google etc.? 19:26
arnsholt I've occasionally found the logs with google
CokeBot9000 google is helpful. being able to throw links to convos on tickets++. 19:27
mberends too, I posted the url of a home webserver in #perl6 and google and yahoo came to crawl it every 6 hours.
19:28 christine left 19:29 obra joined 19:30 hercynium joined 19:34 rgrau left 19:37 M_o_C joined
rurban Will the new rakudo release not complain about parrot -r0? 19:40
(installed parrot-2.3.0)
19:44 M_o_C left 19:50 hercynium left
rurban docs/announce/2010.04 contains March, not April 19:51
mberends rurban: that's normal when getting Parrot from a tarball instead of svn.
rurban I known, but I want to release it properly :) 19:52
mberends although it does look a bit silly in perl6 -v
rurban A normal version check is better than a svn rev check.
Even if the reality parrot-wise is different
19:53 jaldhar_ left
rurban But at least the monthly releases are matching the parrot version exactly 19:53
BTW: When will it be released? 19:54
[particle] usually thursday following parrot tuesday 19:57
rurban Hmm, I get PMC has attributes but no auto_attrs or manual_attrs ...
In PMCEmitter:744 for the p6 pmc's 19:58
CokeBot9000 is that with svn-latest or the released version of parrot?
rurban 2.3.0 release 19:59
That's what I'm testing and releasing
19:59 christine joined
CokeBot9000 easy enough fix: the perl6 pmcs need one of those in the pmclass def. 20:00
slavik kids, don't upgrade a DB unless you have a backup 20:02
Guest52061 i think even kids know that :> 20:03
20:04 h_ joined, Guest52061 left
rurban FWIW All tests and spectests pass on cygwin with current rakudo-git, released parrot-2.3.0 20:12
TODO passed: 4-6, 11-13, 544-546, 550
20:12 h_ is now known as hghgd, finanalyst left
jnthn rurban: which fail? 20:12
er 20:13
file?
rurban t/spec/S05-mass/properties-general.rakudo for the TODO
jnthn Ah, OK
20:14 M_o_C joined, leon__ left 20:15 ash__ joined
rurban Is there a plan to remove the final . from @*INC? 20:17
moritz_ rurban: it seems it's not passing them on all platforms
20:19 nihiliad joined
rurban I have it at first on cygwin 20:19
(speaking of security riscs)
moritz_ yes, will be removed in the long run
rurban you cannot do a build-time check to add it temporarily? 20:21
moritz_ the question is not "you cannot" :-)
rurban ok, it gets slower
20:22 SmokeMachine left
pmichaud ('cool' branch review) overall looks good. I'm not sure why we need src/core/Cool.pm, it appears to be empty. 20:23
jnthn Empty?
jnthn is a tad surprised by that
pmichaud well, it's essentially "augment class Cool { }" 20:24
20:24 envi^home left
jnthn I thought all the Cool methods would be in it? 20:24
Oh. Are the methods in PIR?
pmichaud they tend to go in Cool-str, Cool-num, etc.
jnthn oh, I see!
Maybe it's for the benefit of the export code-gen.
moritz_ pmichaud: I wanted to add a postcircumfix:<{ }> method there
pmichaud: but I forgot
20:24 M_o_C left
jnthn Ah, OK. 20:24
pmichaud I don't believe postcircumfix:<{ }> belongs in Cool.
colomon I forgot we almost have Cool! \o/ 20:25
jnthn If it's doing auto-viv, no, I agree not.
moritz_ it does not
it just returns self if the argument is 0, and Nil otherwise
so that <foo bar>[0] and <foo>[0] both work
pmichaud do you mean perhaps postcircumfix:<[ ]>, then?
moritz_ erm, yes 20:26
sorry
20:26 alexn_org joined
lisppaste3 colomon pasted "Roles and multis" at paste.lisp.org/display/98058 20:26
moritz_ you're right, { } doesn't have a place in Cool
pmichaud <foo>[1] should probably return a failure
alexn_org hei ... I'm trying to play with Rakudo ... does perl 6 has an equivalent "perldoc" ?
pmichaud although I suppose Nil is possible 20:27
moritz_ alexn_org: not really yet
pmichaud I'm not sure Parameter should inherit from Cool.
20:27 SmokeMachine joined
alexn_org moritz_: how can I discovers the methods available on an object? 20:28
moritz_ rakudo: say 5.^methods(:local)».names.join(', ') 20:29
p6eval rakudo cf4eb8: OUTPUT«Method 'names' not found for invocant of class 'Perl6MultiSub'␤current instr.: '!dispatch_method_parallel' pc 359 (src/glue/dispatch.pir:72)␤»
jnthn colomon: Is that nopaste The Bug?
pmichaud other than those two items, my quick-scan didn't see any major flags with the cool branch
moritz_ rakudo: say 5.^methods(:local)».name.join(', ')
p6eval rakudo cf4eb8: OUTPUT«get_attr_str() not implemented in class 'Sub'␤current instr.: 'perl6;Code;name' pc 13209 (src/builtins/Str.pir:68)␤»
moritz_ alexn_org: buy guessing; or introspection when it works; or reading source code
alexn_org: or by implementing perldoc, and using it :-)
alexn_org :)
colomon jnthn: I don't know if it's The Bug, but it's certainly A Bug. Doing different things got different bad reactions, but that's the first one I've been able to easily isolate.
alexn_org moritz_: thanks 20:30
jnthn colomon: If you mark them all multi does it work out any better?
colomon: In this case though, the only method in the class should probably just win.
20:30 _buno_ joined
moritz_ pmichaud: I couldn't think of any reason why Paramater should not be Cool 20:30
it's a builtin type after all 20:31
pmichaud It just feels weird. It's not a normal "value type"
colomon jnthn: nope, same get_attr_str error.
jnthn colomon: OK
colomon: Debugging.
pmichaud I'd tend to keep things out of Cool until we have a good reason for them to be in.
colomon \o/
jnthn Parameters just ain't Cool enough.
pmichaud as opposed to assuming they're Cool until we decide they shouldn't be.
moritz_ pmichaud: afaict the idea was that all builtin types are Cool, unless they have a very good reason not to 20:32
pmichaud I think that's more for value types than "all types"
I can be argued into it, yes. 20:33
moritz_ what definition of "value types" are you currently using?
pmichaud but from a deprecation perspective, it's much easier to put things into Cool than it is to take them out.
moritz_ $thing eq $thing.WHICH
pmichaud Num, Str, Array, Hash, etc. tend to be "value types" to me
and we expect them to automagically work in other contexts 20:34
Parameter (as an object) doesn't feel to me like something that should behave like a numeric just whenever it wants
20:34 _buno_ left
jnthn buys pmichaud's argument 20:34
moritz_ I'll spectest with having 'is Cool' removed from Parameter
pmichaud i.e., I wouldn't expect to be able to do: my Parameter $x = &sub.signature.whatever; say $x.sin; 20:35
doing .sin on a Parameter object doesn't feel Cool. :-)
whereas I would expect "3.14".sin to work, because Str is Cool
20:37 alexn_org left 20:38 molaf left
colomon I thought delegation to Cool was supposed to be automatic, rather than through normal subclassing? 20:40
jnthn No, it's just subclassing 20:41
moritz_ colomon: nope, only the conjectural fallback mechanism is magical
japhb pmichaud or jnthn: could we get one of you for a couple minutes in #ps?
jnthn There is some spec-ulation that there's some fallback mechanism too.
pmichaud japhb: I'm in.
colomon subclassing++, magic--
jnthn pmichaud++
jnthn doesn't even appear to be on that IRC server
jnthn reads the logs 20:42
japhb thanks, pmichaud
jnthn pmichaud: +1
pmichaud jnthn/others: any reason to believe that the Rakudo release won't target Parrot 2.3.0 ? 20:43
i.e., it's okay for Parrot to start merges?
jnthn pmichaud: Can they hold for 10 mins?
pmichaud: My spectest run against 2.3.0 will be done then. 20:44
pmichaud jnthn: have you had any errors yet?
jnthn No.
[particle] heh, you're asking a lot ;)
pmichaud that's good enough for me.
jnthn But I'm only down to S05. ;-)
pmichaud in other words, we're not going to be doing things against parrot trunk until after the release
moritz_ jnthn: I've already spectested successfully a revision *very* close to parrot 2.3.0, only doc and test changes since then
jnthn moritz_: And passed?
moritz_ jnthn: yes :-) 20:45
jnthn pmichaud: Right, jsut normal procedure.
moritz_ would have screamed if not
jnthn moritz_++
OK, in that case I'm happy to give Parrot folks the go-ahead.
pmichaud I just did. :) 20:46
they're merging in the immutable_strings branch.
moritz_ \o/
[particle] and the line numbering fix
moritz_ oh, that exists?
20:47 PacoLinux joined
[particle] (1:14:50 PM) chromatic: I worked on line numbering and have a branch ready to merge there. That should fix up a lot of problems. 20:47
chromatic++
moritz_ still looks for a release name for #28
pmichaud Moscow.pm 20:48
jnthn \o/
moritz_ pmichaud: why?
pmichaud they invited me to present at their conference. jnthn++ went in my place :)
jnthn++ can add more reasons why :)
moritz_ I thought it wasn't their conference...
well, wfm 20:49
pmichaud okay, it wasn't their conference, but they made sure Perl 6 was represented :)
*well represented
jnthn It wasn't, but I rather suspect that Moscow.pm did help...right, what pmichaud++ said.
Plus they have had Perl conferences before, and are Perl 6 friendly.
*and* they took me for beer.
pmichaud more to the point, they made sure Rakudo was well represented :)
20:49 nihiliad left
moritz_ do you know any web page of that conference? 20:49
[particle] should you name it in cyrillic?
jnthn ;-) 20:50
moritz_ [particle]: I actually thought about that...
[particle] fear not utf-8
pmichaud anyway, I vote for Moscow.pm . :-)
slavik Москва.пм
jnthn Just don't ask me for the translation. ;-)
moritz_ [particle]: but since I don't read cyrillic very well, I was afraid to mis-spell it
jnthn moritz_: What slavik++ said :-)
20:50 pmurias joined, nihiliad joined
[particle] yes, we'd hate for it to translate to 'pants.pm' 20:50
pmichaud if we do use cyrillic, be sure to tag the ascii version also :-)
moritz_ pmichaud: I'll use the ASCII version, but mention the "real" name in the announcement 20:51
pmichaud and we might want to go back and fix any other names we've anglicized
moritz_: +1
jnthn пиво.пм
slavik when?!
I want
pmurias diakopter: get_continuation()?
jnthn It *would* be an awesome PM group!
moritz_ so... link to that conference?
pmichaud wfm 20:52
slavik not as awesome as Водка.пм
Еслиб было море водки, я бы стал подводной лодкой. 20:54
moritz_ was it DevConf?
slavik Еслиб было море пиво, яб дельфином стал красивым.
:)
jnthn moritz_: RIT
moritz_: But IIRC masak++ is going to speak at DevConf
moritz_: So essentially Perl 6 is represented at two conferences in Moscow!
Has been at one, and will be at another. :-) 20:55
20:55 hercynium joined
jnthn slavik: I'd even take up swimming! 20:55
slavik :) 20:56
moritz_ ok, merging master into Cool makes just t/spec/S12-introspection/parents.t fail 20:57
(I remvoved Cool.pm and Cool from Parameter.pm) 20:58
should I merge?
jnthn Yes, unless pmichaud++ has any objections.
pmichaud no objections
jnthn colomon: I have a fix for you.
20:59 lumi_ joined, lumi_ left 21:00 ReiniUrban joined 21:01 scheriii joined, rurban left, ReiniUrban is now known as rurban
scheriii hallo? 21:03
moritz_ monster commit coming up 21:04
erm, s/monster/merge/
colomon jnthn: \o/
m6locks omg 21:05
dalek kudo: 10b0ff4 | jonathan++ | build/PARROT_REVISION:
Bump PARROT_REVISION to 2.3.0.
kudo: 698ba87 | jonathan++ | src/builtins/Multi.pir:
Add a .name method to Multi. Fixes various issues with introspection and also role composition, which uses this introspection.
m6locks gettin ready
to build my rakudo
pugssvn r30420 | moritz++ | [t/spec] in inheritance hirarchies, take Cool into account; also remove some test for parents of builtins, they are underspecced 21:06
ash__ you can have anonymous classes right?
scheriii ok.. somebody there who could help me? perhaps? i have no idea about irc, but no idea about perls either ;) but i have to solve an easy (for me quite difficult) problem with perls...
ash__ scheriii: what kind of problem? 21:07
moritz_ scheriii: if it's a Perl 6 problem, we can try
ash__ rakudo: my $a = (class { has $.a; has $.b; }).new; # should work?
p6eval rakudo cf4eb8: OUTPUT«Invalid namespace key in set_pmc_keyed␤current instr.: 'perl6;ClassHOW;new' pc 3809 (src/metamodel/ClassHOW.pir:27)␤»
moritz_ ash__: yes, should work. There's also a ticket for that in RT 21:08
ash__ cool, was going to add one if there weren't any
moritz_ masak++ took care of that :-) 21:09
colomon jnthn: afk on walk, but will see where role patch gets us asap. 21:10
pmurias diakopter: get_continuation()? 21:11
colomon after that, I mean
jnthn ash__: NYI, in my plans for $soon :-)
ash__ rakudo: multi foo(Int $a) { say $a; nextwith("and then..."); }; multi foo(Str $a) { say $a }; foo(1); 21:12
p6eval rakudo cf4eb8: OUTPUT«1␤Null PMC access in clone()␤current instr.: '&nextwith' pc 17662 (src/builtins/assign.pir:34)␤»
ash__ is that in the bug tracker? i didn't see it from my searching... but i might be using the wrong keywors
scheriii :D ok dont know if it works... tried to write moritz... hm ... i'll try to explain ;) doing an internship and its my first day i got a own webserver to "play" with and an exercise to write a pearls programm... i'm a little bit lost ;)
ash__ you probably mean perl 5... i'd guess
moritz_ scheriii: doesn't sound like Perl 6 - www.perlmonks.org/?node=SoPW might be a good address for your questions
scheriii: or /join #perl
scheriii ah ok... thank you... 21:13
21:14 clintongormley joined 21:15 gurjeet left
jnthn ash__: That is tracked iirc. It's also...debatable how to fix that. 21:15
dalek kudo: aa12544 | moritz++ | (3 files):
a wee bit uncooling
21:17
kudo: 77b52fd | moritz++ | (24 files):
Merge branch 'cool'
kudo: d3b8168 | moritz++ | docs/ (2 files):
next release will be named "Moscow"
kudo: bdc5dca | moritz++ | (3 files):
Merge branch 'master' of github.com:rakudo/rakudo
moritz_ rakudo: sub infix:<@@> ($x, $y) { $x + $y }; say 3 @@ 4
p6eval rakudo cf4eb8: OUTPUT«A method named '>' already exists in class 'Perl6;Grammar'. It may have been supplied by a role.␤current instr.: 'parrot;P6metaclass;add_method' pc 422 (runtime/parrot/library/P6object.pir:326)␤» 21:18
moritz_ weird
pugssvn r30421 | moritz++ | [t/spec] test that subs without an "our" are not entered into the namespace
21:18 railk joined
moritz_ fwiw the error above is trigged by a fudged-out test in t/spec/S06-advanced_subroutine_features/lexical-subs.t 21:19
ash__ rakudo: sub infix:<@!> ($x, $y) { $x + $y }; say 3 @! 4
p6eval rakudo cf4eb8: OUTPUT«A method named '!>' already exists in class 'Perl6;Grammar'. It may have been supplied by a role.␤current instr.: 'parrot;P6metaclass;add_method' pc 422 (runtime/parrot/library/P6object.pir:326)␤»
ash__ does @ mean something like escape?
or is it happening to mean something like escape by accident? 21:20
moritz_ it should not
21:22 scheriii left
ash__ something odd is happening with @, i am trying it in different ways, and @ seems to be the common denominator... 21:24
railk i was reading through A05 and something puzzles me with the rule that is supposed to be equivalent to <%hash> (under section variable interpretation), it states `$val := <%hash.prop{valuematch}> # find value <( $val eq %hash{$val} )> # assert eq` but wouldn't that second part have to be `<( $val eq %hash{$key} )>`? am i missing something? 21:25
moritz_ railk: don't read A05, but rather S05
railk oh
moritz_ railk: the Apocalypses documents are long out of date, and not maintained anymore 21:26
ash__ the A## are a bit older, and probably not the same as S##
moritz_ railk: and we've abandoned hash interpolation in favor or proto regexes, iirc
pugssvn r30422 | moritz++ | [t/spec] test various rakudo oddities when overloading postcircumfix:<{ }> 21:31
jnthn colomon: OK, great, let me know how it goes when you get to it. :-) 21:32
moritz_: That @ thing - I've hit that before somewhere. 21:33
moritz_ goes to bed 21:34
jnthn I think it's because masak++ bakes every @ he sees.
;-)
moritz_ :-)
'night
jnthn moritz_++ # nice test stuff!
o/
dalek kudo: 5530662 | moritz++ | t/spectest.data:
run S06-operator-overloading/methods.t
diakopter pmurias: well yeah :) 21:39
21:40 Guest51887 left
pugssvn r30423 | jnthn++ | [t/spec] Fudge a chunk of S12-methods/multi.t; going to start working through getting more of these working again, but good to test the bunch that do work. 21:42
21:44 mberends left
dalek kudo: cdb2b8f | jonathan++ | t/spectest.data:
Turn on S12-methods/multi.t.
21:46
diakopter std: sub infix:<' '> ($x, $y) { $x + $y }; say 3' '4 # TimToady infinite loop? 21:47
p6eval std 30421: OUTPUT«ok 00:01 111m␤»
diakopter oh.
rakudo: sub infix:<' '> ($x, $y) { $x + $y }; say 3' '4
p6eval rakudo bdc5dc: OUTPUT«7␤»
pmurias diakopter: the runtime will be written in perlesque
?
s/will/should
diakopter yeah, but that doesn't mean contextuals will be *implemented* using perlesque conditionals.
contextuals.
pmurias contextuals are not the first think i'm worried about when writting a backend 21:48
diakopter: what are the other uses of pelesque contextuals? 21:49
diakopter STD/Cursor use them heavily
so yes, STD's compilation of itself to perlesque would use perlesque contextuals directly.
pmurias how did you implement them
21:49 astrojp joined, smash_ left
pmurias ? 21:49
diakopter they're not correct yet
but ...,
each frame that assigns to a contextual gets a slot for it 21:50
pmurias and a lookup for a contextual walks the call chain? 21:51
diakopter and the first assignment in that frame that occurs, sets another flag slot for that contextual, and it's reverted when the frame returns
no
each variable, contextual or not is at most 2 pointers away
so effectively, a contextual is a global
but the frames themselves reset the values upon return 21:52
pmurias so where are the contextuals kept?
diakopter slots in the top-level frame, always
no matter where they are initially declared
pmurias and the flags? 21:53
diakopter each frame
per-contextual
a machine word, 0 or non0
pmurias that breaks with concurency
diakopter yes, like I said to sorear, STD's compilation of itself to perlesque doesn't need concurrency., 21:54
pmurias perlesque isn't intended to be generall purpose?
diakopter no, it's not intended to grow into Perl 6 21:55
it's just a subset.
Perl 6 will have to be implemented *in it*, using STD/viv(/mildew) as a front-end.
(or rakudo/nqp-rx/past) 21:56
colomon jnthn: "Currently, adding multiple methods of the same name is not supported." :\
pmurias what i meant in general purpose was that if it was supposed to be a backend for a full compiler or a special cased viv translator
colomon That's with multis on each instance.
with multi on just the first, it works.
jnthn colomon: Aha.
diakopter pmurias: yes, special case viv runtime.
or rakudo/nqp-rx/past runtime.
jnthn colomon: OK, I suspected we may hit that one...
diakopter using Perl6-ish and Perl5-ish features 21:57
colomon jnthn: at the very least, a much nicer fatal error. ;)
jnthn colomon: Well, yes. :-)
colomon: The one you were meant to get to before.
So now I guss my task is the NYI feature. :-)
colomon well, let me see how this works on real code. (sic)
diakopter pmurias: but the thing is, the entire compiler framework is exposed to perlesque code as an API (since it's just .NET classes also), so yes, entire compilers can be implemented on it. 21:58
but the contextual implementation is so brain-dead easy (because of the multi-stage compilation in csmeta) that it could be done just as easily in perlesque.
jnthn colomon: I did just fudge a bunch of S12-methods/multi.t so I could at least see what is passing and what is not.
diakopter probably even easier, in fact. 21:59
jnthn colomon: And certainly there's todos in there. :-)
colomon :) 22:00
pmurias diakopter: done just as easily in perlesque - what do you mean by that?
diakopter the implementation of contextuals. 22:01
22:01 iblechbot left
diakopter just as easily in perlesque as I did in "C#" 22:01
pmurias you mean if perlesque was written itself in perlesque?
22:02 snarkyboojum joined
diakopter it'll need another level of indirection for thread-local storage, but that's smop. 22:02
pmurias: no.
if Perl 6 contextuals were written in perlesque.
22:02 SmokeMachine left
pmurias so why add them to perlesque? 22:03
colomon jnthn: if I add method "abs" to Numeric, perl 6 builds, but you get "Null PMC access in find_method('!select')" when you try to run it.
diakopter pmurias: b/c the first stage is to directly translate STD to perlesque. 22:04
not "implement Perl 6"
transliterate, I should say.
pmurias why is that the first step?
diakopter what are the other options?
pmurias implement enough Perl6 to run STD 22:05
diakopter that's not feasible.
it's already in enough of a Perl5 subset that gimme5 can more-or-less directly transliterate it to p5.
jnthn colomon: Got a patch I can try locally? 22:06
colomon: Did you remove it from elsewhere, or?
colomon one sec.
jnthn OK 22:07
jnthn is hacking on another patch ATM too, though not a multi/role one...
lisppaste3 colomon pasted "jnthn++ add this to Numeric.pm (warning: breaks p6)" at paste.lisp.org/display/98066
jnthn colomon: Ah, that'll be very easy for me to try and test. :-) 22:08
pmurias diakopter: one you have a transliterated STD what will you do?
diakopter compile it to CIL using csmeta/perlesque.
then run it in mono.
eternaleye rakudo: grammar Test { regex TOP { <foo><bar> }; regex foo { foo }; regex bar { bar }; }; class TestActions { method TOP { say 'TOP'; }; method foo { say 'foo'; }; method bar { say 'bar'; }; method baz { say 'baz' }; }; Test.parse( 'foobar', :actions(TestActions.new);
p6eval rakudo bdc5dc: OUTPUT«Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 11␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤» 22:09
eternaleye rakudo: grammar Test { regex TOP { <foo><bar> }; regex foo { foo }; regex bar { bar }; }; class TestActions { method TOP { say 'TOP'; }; method foo { say 'foo'; }; method bar { say 'bar'; }; method baz { say 'baz' }; }; Test.parse( 'foobar', :actions(TestActions.new) );
p6eval rakudo bdc5dc: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤current instr.: 'perl6;TestActions;foo' pc 1677 (EVAL_1:618)␤»
pmurias diakopter: what i meant what's the next step after that 22:10
eternaleye Hm. I was tring to figure out what happened when an action object defined a method with no corresponding regex in its grammar, but this doesn't tell me much.
*trying
jnthn colomon: afk for a little bit, back soonish 22:11
diakopter pmurias: oh; I'll write action routines (in perlesque) that build up csmeta's internal AST (runsharp's), and start writing the Perl 6 runtime (in strongly-typed perlesque) to support it. 22:12
so, there will be a viv-equivalent in CIL
eternaleye The reason I want to know this is that I'm thinking of writing a group of syntax hilighters, which output using actions. However, some languages (say, brainf***) don't have some components, like variables, and therefore the grammar for it won't define a 'variable' regex. I want to know if I can use the same actions object for all hilighters
bkeeler It shouldn't hurt anything to have methods which never get called 22:14
eternaleye Okay, good 22:15
pmurias diakopter: so you want to write a Perl 6 compiler in perlesque?
(firstly hacking together a STD.pm to perlesque translator) 22:16
diakopter yes :)
pmurias :(
diakopter why? 22:17
22:17 hatseflats is now known as confis-ca-tive
diakopter yes, if by "hacking together", you mean "using STD to parse/compile itself" 22:17
it's actually the most direct route to bootstrap, imho. 22:18
instead of implementing a full duplicate front-end and a full-blown backend, implement three front-ends and a backend for a much less complex language. 22:19
diakopter hopes he's communicating clearly 22:21
pmurias so you would have to make perlesque a proper language if you want to write a Perl 6 compiler in it
diakopter what do you mean by "proper language"?
(as opposed to ... what?)
pmurias error message that don't make you want to kill someone
* messages
diakopter :/ 22:22
ok ok, I'll make them all say "parsefail" :P
pmurias the error messages in perlesque would make sure that noone would use it again
22:23 pyrimidine left
pmurias diakopter: parsefail plus position in source is acceptable 22:23
diakopter whew. :) that's doable. 22:24
pmurias if you don't output the postition you'll have to read STD.perlesque to search for the syntax error the translator did
s/did/produced 22:25
diakopter yeah
22:26 Spreadsheet_ joined
Spreadsheet_ When will Perl6 be released? 22:26
pmurias the reason why i don't like the translate STD and write the compiler in perlesque is that seems like a tons of work that's likely to fail
Spreadsheet_ Is it too late to suggest new features
pmurias diakopter: like elf did 22:27
diakopter oh
the thing is, there's already a complete compiler toolkit/framework in csmeta
type-checking and everything
pmurias type-checking? for Perl 6 22:28
ash__ Spreadsheet_: perl6 doesn't have a scheduled release date, but it should come out on christmas, eventually 22:29
Spreadsheet_: and if you have any comments on the current spec's then by all means send an email to the perl6-language mailing list or ask here
pmurias diakopter: you mean at runtime? 22:30
diakopter pmurias: compile time. 22:31
AST generation time.
22:31 quester_ joined
pmurias diakopter: so that would be useless for Perl 6 22:32
diakopter (eye roll)
there are several layers of type systems.
pmurias as Perl 6 is a dynamic language
diakopter (eye roll)
everything's a strongly-typed language at one level or another.
or more. 22:33
for instance, rakudo's runtime objects *behind*the*scenes* don't just up and change type. 22:34
pmurias you want to check that 22:35
diakopter ?
want to check what?
pmurias you want to type check a perl 6 program
diakopter no. you want to type check the code the perl 6 program is being JITted to. 22:36
pmurias that will only give you some guaranties about the correctness of the compiler 22:37
diakopter yes. the Perl6-level type-checking is at a higher level, yes.
or not-very-existent.
but definitely existent for variables that have type annotations.
pmurias at runtime 22:38
ash__ some things are type checked, for instance, all multi-methods, and operators
diakopter yeah, of course. that's a runtime thing.
Spreadsheet_ ash__: thanks
ash__ but some of that can happen at runtime, you can also have type inference on some things too 22:39
diakopter but (luckily) the native types in Perl 6 map nicely to CLR vm native types.
so, the native types are type-checked
ash__ like, if you use a infix:<+> operator, you know both sides will be at least Num's and the result is a num (assuming its using the built in +)
oops 22:40
i said runtime, i meant compile time
pmurias ash__: type inference is a very different thing from type checking 22:41
you try to infer some type info, rather then prove that all the type info is correct
22:42 clintongormley left
ash__ yes, but you can use that to do some type checking at compile time, if someone did "my Str $a = 1 + 2"; you can check that at compile time 22:42
you don't have to get to execution time to figure out that they just assigned a Num-like object to a Str
pmurias thats correct
perl6: my Str $a = 1 +2; 22:43
p6eval elf 30423, pugs: ( no output )
..rakudo cdb2b8: OUTPUT«Type check failed for assignment␤current instr.: '&die' pc 17223 (src/builtins/Junction.pir:404)␤»
pmurias hm?
ash__ rakudo is doing that at runtime
diakopter I don't think so
not certain
oh, I'm wrong
jnthn Rakudo is doing that check at runtime.
(Which is fine) 22:44
In the future, we should be able to spot that one at compile time.
ash__ perl 6 doesn't say you have to do it at compile time, but a compile time check might be useful for optimization and/or error checking
jnthn Right
pmurias diakopter: will the translated STD be fully correct (to the extent STD.pm5 is)? 22:46
diakopter hopefully :) 22:47
I mean, that's the goal, yes.
colomon afk # dinner
pmurias and faster?
diakopter wishful thinking, but yeah, maybe :P 22:48
jnthn clockan öl \o/ 22:49
22:52 wknight8111 joined
Spreadsheet_ So where can I read a draft of Perl 6? It seems really interesting 22:55
Will it have concurrency? Concurrency is trendy now
Will I be able to read my code after writing it? 22:56
22:56 ruoso left
pmurias Spreadsheet_: that depends only on you 22:56
and the quality of your screen
Spreadsheet_ What about concurrency?
pmurias yes 22:57
diakopter :)
jnthn Spreadsheet_: There's various things to read, and even compilers to download and play with. :-) 22:58
Spreadsheet_: www.perl6.org has links to many things, including spec, where to get a Perl 6 implementation, etc. :-)
Spreadsheet_ Will there be a Programmming Perl (camel book) for 6?
diakopter so the rumors say, yes 22:59
ash__ Spreadsheet_: perlcabal.org/syn/ is a good site too 23:00
thowe Is pugs stil under development?
ash__ no, its still maintained so it will compile with current version of ghc, but its not actively developed
23:01 christine left
pmurias diakopter: got the private msg? 23:02
23:03 christine joined, Spreadsheet_ left
cj cotto_work, diakopter: do we have a decision on the p6 on dlr thing? miguel and mhutch are asking me if I'd be willing to work on a different project with them. 23:04
23:09 orafu left, orafu joined
pmurias sleep& 23:10
23:10 pmurias left 23:17 eternaleye left 23:22 quester_ left 23:26 [synth] joined 23:29 synth left
lue hello there! 23:29
jnthn hellue! 23:30
lue rakudo: my @a = 1,2,3; my @b := @a; say @b 23:32
p6eval rakudo cdb2b8: OUTPUT«:= binding of variables not yet implemented␤current instr.: '&die' pc 17223 (src/builtins/Junction.pir:404)␤»
lue ah! D: 23:33
I'd fix it myself, but I haven't learnt the deep magic yet :)
ash__ rakudo: my &infix:<:=> = &infix:<=>; my $a := 5; say $a # lol i am bad peoples 23:35
p6eval rakudo cdb2b8: OUTPUT«5␤»
ash__ does nqp := mean the same as perl6 := ? 23:36
bkeeler Semantically yes, but I think things are more complex under the hood in p6 23:39
23:40 spreadsheet joined
spreadsheet Will there be an interactive interpreter for perl 6? is there one for perl 5? 23:40
Something like Python interactive or IRB
jnthn ash__, bkeeler: Both correct. :-) 23:41
lue for rakudo at least, there is the REPL
jnthn spreadsheet: We kinda have one in Rakudo already but it's not great.
lue but it's not very good
jnthn spreadsheet: We plan to improve it soonish.
spreadsheet: But it exists at lesat. :-)
lue i.e. if you type: my $a = 3 <Return> say $a 23:42
you get an error
spreadsheet I think it should be more like ipython (if you have heard of that) 23:43
ipython is a much better version of the standard python interactive prompt
jnthn spreadsheet: I haven't; what do you like about it? 23:44
spreadsheet It has tab completion, auto-formatting, and you can scroll back in history one function (subroutine) at a time, instead of line by line
lue REPL, by the way, is what you get when you type `perl6'. It's not separate, like ipython.
jnthn spreadsheet: Ah, interesting.
lue The one crummy thing about the standard python interpreter is that you automagically forget about indentation.
ash__ there are lots of good things with can do with a commandline interface, and many of them will be worked on eventually, but i don't think they are high priority 23:45
like readline support would be nice
jnthn ash__: I think that if you manage to get a Parrot built with readline support, Rakudo's command line will use it. 23:46
afaik anyway.
ash__ with readline you could do a bunch of new things, like have a history, and with cursres or ncurses you could add tab competition
jnthn ash__: I already get history here, fwiw.
Ooh. I have a patch for anonymous class support. 23:47
ash__ oh, it works here too, never noticed it before
jnthn That gets it a bunch more right than we did in alpha.
ash__: yay :-)
spreadsheet jnthn: whoa
pugssvn r30424 | jnthn++ | [t/spec] Tweak and unfudge some more of the anonymous class tests. 23:48
23:48 eternaleye joined 23:49 jhuni joined
TimToady std: [+]; 23:50
p6eval std 30423: OUTPUT«ok 00:01 109m␤»
jnthn std: [+]
TimToady putting whitespace after it causes it to want arguments
p6eval std 30423: OUTPUT«===SORRY!===␤Prefix requires an argument at /tmp/WoHRF4KviA line 1 (EOF):␤------> [+]⏏<EOL>␤Parse failed␤FAILED 00:01 108m␤»
jnthn TimToady: Oh, I thought it was just verboten outright.
TimToady not sure why
jnthn (Thought and hoped ;-)) 23:51
TimToady rakudo: say [*]; # should be 1
p6eval rakudo cdb2b8: OUTPUT«␤Method 'postcircumfix:<[ ]>' not found for invocant of class 'Bool'␤current instr.: '!postcircumfix:<[ ]>' pc 10752 (src/builtins/Role.pir:90)␤»
jnthn wtf.
ash__ lol
jnthn Well. That's a bug.
ash__ alpha: say [*];
p6eval alpha 30e0ed: OUTPUT«say requires an argument at line 10, near " [*];"␤in Main (file src/gen_setting.pm, line 2593)␤»
TimToady rakudo: say [*](); # should be 1 23:52
jnthn TimToady: What tells the OPP not to want a term after a prefix?
p6eval rakudo cdb2b8: OUTPUT«1␤»
jnthn ...after *that* prefix, I mean?
[ <?before '('> || <?before \s+ [ <?stdstopper> { $<O><term> = 1 } ]? > || { $<O><term> = 1 } ]
TimToady ; is supposed to be a terminator
23:52 railk left
jnthn Is it that bit? 23:52
TimToady: We seem to be missing that piece from Rakduo's reduce parsing. 23:53
TimToady rakudo: say [*] ; # should be 1
p6eval rakudo cdb2b8: OUTPUT«␤Method 'postcircumfix:<[ ]>' not found for invocant of class 'Bool'␤current instr.: '!postcircumfix:<[ ]>' pc 10752 (src/builtins/Role.pir:90)␤»
jnthn TimToady: I think because I didn't understand what it did at the time, and also ain't too sure how to translate $<O><term> to rakudo-speak.
TimToady std: say [*] ; 23:54
p6eval std 30423: OUTPUT«ok 00:01 107m␤»
TimToady a week or two ago I removed the implied ; at EOF
jnthn ah.
TimToady not sure why stdstopper doesn't count $ as a terminator, hmm 23:55
std: say ([*] ) 23:56
p6eval std 30423: OUTPUT«ok 00:01 108m␤»
dalek kudo: 7f8397d | jonathan++ | src/Perl6/Grammar.pm:
Bring our morename rule more in line with STDs.
kudo: 22805bd | jonathan++ | src/glue/role.pir:
A nudge in the direction of getting anonymous roles working (they don't yet, this is just part one :-)).
kudo: ea1760c | jonathan++ | src/ (4 files):
Get anonymous classes (mostly) working. Passes all the anonymous class tests apart from those that depend on Numeric and Stringy. Also we can remove some hacky stuff I put in earlier.
23:56 thowe left
kudo: 07fd77b | jonathan++ | t/spectest.data:
Turn on S12-class/anonymous.t.
TimToady anyway, the fact that bare [+] doesn't work is an accident 23:57
jnthn TimToady: OK. I'd taken it to mean it shouldn't. :-)
I (or some other enterprising soul) will fix Rakudo up at some point, I'm sure. 23:58
lue parrot came out today, correct? 23:59