»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by diakopter on 25 January 2010.
00:00 Chillance left 00:05 Khisanth joined 00:08 drbean joined, patspam joined 00:09 colomon left 00:23 lichtkind left 00:26 colomon joined 00:36 p6eval left 00:37 p6eval joined
diakopter oh 00:37
oops.
I broke p6eval. it's fixed now.
pmichaud: p6eval fixed
rakudo: say .say 00:38
p6eval rakudo 6d4078: OUTPUT«Mu()␤1␤»
diakopter rakudo: say say 00:39
p6eval rakudo 6d4078: OUTPUT«␤1␤»
diakopter rakudo: say.say
p6eval rakudo 6d4078: OUTPUT«␤1␤»
diakopter std: say.say
p6eval std 29727: OUTPUT«Potential difficulties:␤ Unsupported use of bare 'say'; in Perl 6 please use .say if you want to say $_, or use an explicit argument at /tmp/oFRomtswGF line 1:␤------> say⏏.say␤ok 00:01 107m␤»
jnthn Heh, need to put that check back in. :-) 00:41
diakopter++ # fixing up p6eval
00:42 xomas left
jnthn Oh, I see it's just a warning rather than an error though. 00:42
diakopter jnthn: you're awake late 00:47
jnthn diakopter: I got sick a couple of days ago, and it messed up my sleep schedule. :-/ 00:48
Thus I unplannedly slept until 2ish today...and despite knowing I should be heading to sleep now am annoyingly untired. 00:49
00:51 meppl left, drbean left 00:55 snarkyboojum joined
colomon jnthn: you definitely should not be less tired than I am, time-zone-wise. 01:02
This minmax.t is more trouble than it is worth. :() 01:07
*:)
rakudo: say abs "-10" 01:13
p6eval rakudo 6d4078: OUTPUT«Method 'Num' not found for invocant of class 'Perl6Str'␤current instr.: 'perl6;Any;abs' pc 251814 (src/gen/core.pir:16824)␤»
01:22 maerline joined, maerline left, maerline joined, maerline left 01:23 shockwave joined, jaldhar left
shockwave Is Rakudo implemented in Parrot's PIR language? 01:23
01:23 jaldhar joined
colomon shockwave: yes 01:27
Well, mostly there's an additional layer in there, called NQP (Not Quite Perl).
jnthn shockwave: A chunk of it is written directly in PIR, however large parts are not - writing an entire compiler in an assembly language would be a frurstrating exercise. :-) 01:29
Rakudo is a mixture of NQP (a subset of Perl 6, including an implementation of Perl 6 regexes, which we use for parsing), Perl 6 itself (we compile a first stage, and use it to compile a bunch of the built-in classes and functions) along with some PIR and C that implement primitives and act as "glue" between the rest and the VM. 01:30
colomon jnthn: Just got "A method named 'min' already exists in class 'Range'. It may have been supplied by a role." 01:32
jnthn Oh?
Curious.
colomon It's actually supplied by "has $.min". I had thought I could use multi to get another min method as well.
?
jnthn No, 'fraid not.
But you shouldn't have to. 01:33
colomon Here's the test in question:
jnthn If you write a method min() { ... } then the $.min should not bother generating a method automatically.
shockwave Thanks for the answer, guys.
colomon (-10..10).min: { abs $^a <=> abs $^b })
jnthn shockwave: Welcome. :-)
01:33 shockwave left
jnthn rakudo: (-10..10).min: { abs $^a <=> abs $^b }) 01:34
p6eval rakudo 6d4078: OUTPUT«Confused at line 11, near ")"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
colomon oh, so my min method should override the auto-generated min method from has $.min ?
jnthn rakudo: ((-10..10).min: { abs $^a <=> abs $^b }).say
p6eval rakudo 6d4078: OUTPUT«too many positional arguments: 2 passed, 1 expected␤current instr.: 'perl6;Attribute;accessor_helper_ro' pc 3204 (src/gen/Attribute.pir:400)␤»
jnthn colomon: It should cause a min method not to be auto-generated, akshually.
colomon: If it's trying to generate both, that's a bug. 01:35
colomon seems like we have a bug, then.
:)
jnthn Yeah, sounds like it.
jnthn is sure he wrote the code that checked there was no method declared already... :-/
colomon: File an RT and/or bug me tomorrow. I'm gonna go sleep in a moment.
And don't fancy twiddling with the metamodel at 2:30am. :-) 01:36
colomon okay. good night!
jnthn night o/
01:42 _jaldhar joined 01:43 jaldhar left
dalek kudo/master: 5383a13 | (Solomon Foster)++ | src/core/Any-list.pm:
Protos for sub versions of min and max.
01:47
kudo/master: 542bfa5 | (Solomon Foster)++ | src/core/Str.pm:
Cheat version of Str.Num.
kudo/master: ee93de4 | (Solomon Foster)++ | src/core/Any-num.pm:
We were getting an infinite loop in Any.abs, I think possibly because .Num was returning a float instead of a Num. Work around that by calling the pir abs function directly on the value returned from self.Num.
colomon jnthn: still awake? 01:50
01:52 mssm left 01:53 jferrero left 01:58 nihiliad joined
pugs_svn r29728 | colomon++ | [t/spec] Skip tests which test for things which are not spec'd and (IMO) not likely to be spec'd the way the tests currently are set up. 02:05
02:14 z3ndrag0n joined 02:20 patspam left 02:27 drbean joined, colomon left 02:28 colomon joined
colomon rakudo: sin(asin(0.5)) 02:33
dalek kudo/master: 2eb5f98 | (Solomon Foster)++ | src/core/Any-list.pm:
Add simple-minded version of uniq.
p6eval rakudo ee93de: OUTPUT«too many positional arguments: 2 passed, 1 expected␤current instr.: 'sin' pc 222680 (src/gen/core.pir:4909)␤»
02:33 z3ndrag0n left, z3ndrag0n_ joined
colomon rakudo: 0.5.asin.sin 02:35
p6eval rakudo ee93de: ( no output )
02:35 z3ndrag0n_ left
colomon rakudo: 0.5.asin('degrees').sin('degrees') 02:36
p6eval rakudo ee93de: ( no output )
02:37 z3ndrag0n joined
colomon rakudo: sin(asin(0.5, 'degrees'), 'degrees'); 02:38
p6eval rakudo ee93de: ( no output )
02:41 nihiliad left
dalek kudo/master: 07e96ba | (Solomon Foster)++ | t/spectest.data:
Turn on uniq.t.
02:44
02:46 arlinius joined 02:52 z3ndrag0n left 02:54 tjc joined 02:59 nihiliad joined
s1n continuing the conversation from earlier about @/$ flattening... 02:59
the last example i posted (my @b = <a b c>; say $b;) does not compute with me 03:00
why would @b and $b be any different? i thought we got rid of context
03:01 dukeleto joined
dukeleto howdy 03:01
pugs_svn r29729 | colomon++ | [t/spec] Refudge power.t a tad. 03:02
colomon rakudo: say pi.WHAT 03:03
p6eval rakudo 07e96b: OUTPUT«Num()␤» 03:04
colomon rakudo: say i.WHAT
p6eval rakudo 07e96b: OUTPUT«Could not find non-existent sub &i␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
colomon rakudo: say e.WHAT
p6eval rakudo 07e96b: OUTPUT«Num()␤»
03:05 nihiliad left, snarkyboojum left 03:07 tjc left
dalek kudo/master: 3d02e7c | (Solomon Foster)++ | src/core/Complex.pm:
More Complex versions of infix:<**>.
03:07
kudo/master: cf0cfea | (Solomon Foster)++ | t/spectest.data:
Turn on power.t.
pugs_svn r29730 | colomon++ | [t/spec] Move capitalize tests from uc.t to capitalize.t. 03:17
03:20 nihiliad joined
pugs_svn r29731 | colomon++ | [t/spec] Unfudge test that now passes. 03:23
03:24 nihiliad left
pugs_svn r29732 | colomon++ | [t/spec] Fudge todo tests. 03:25
colomon jnthn, pmichaud: looking at subst with a Code replacement -- if I have a Match object, how do I evaluate the Code with the Match object as $/ ? 03:33
03:33 LionMadeOfLions joined
colomon Trying to figure out how I can code s:g/(\w+)/{ucfirst $1}/ (from the spec) up with what we've got now.... 03:33
03:34 snarkyboojum joined
colomon afk # bedtime 03:34
dalek kudo/master: 70667a0 | (Solomon Foster)++ | t/spectest.data:
Turn on lc.t, uc.t, and e.t.
03:36
03:47 drbean left 03:49 ihrd joined 03:54 gfx joined 04:00 quester joined 04:10 synth left 04:13 synth joined, ihrd left 04:24 ihrd joined 04:26 ihrd left
lue ...hello? 04:37
04:38 wolf2k_ubuntu left, justatheory left
lue hello... hellooo? 04:48
echo echo echo 05:12
diakopter hi 05:14
sjohnson i /op diakopter colomon 05:20
05:20 sjohnson sets mode: +oo diakopter colomon
sjohnson oops 05:20
05:25 cjk101010 joined 05:26 patspam joined 05:38 vamped joined 05:40 athenot left 06:03 k23z__ left 06:32 am0c joined, k23z__ joined 06:33 scp1 joined
scp1 :) 06:33
06:48 mberends joined
mberends colomon++ # 4051 (24.7% of 16418) pass, 0 fail 06:52
06:59 vamped left 07:03 uniejo joined 07:06 kaare joined, kaare is now known as Guest36069 07:07 Su-Shee joined
Su-Shee good morning 07:08
07:08 quester left 07:14 rgrau left
scp1 morning 07:20
07:27 viklund joined 07:28 k23z__ left 07:59 iblechbot joined 08:11 clausi joined 08:14 gfx left 08:17 meppl joined 08:18 mssm joined
mathw Morning 08:24
08:28 masak joined
masak good morning, #perl6! 08:28
diakopter masak: MORN 08:29
masak :)
diakopter rakudo: my byte $a 08:30
p6eval rakudo 70667a: OUTPUT«Malformed my at line 11, near "byte $a"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
diakopter rakudo: my Byte $a
p6eval rakudo 70667a: OUTPUT«In "my" declaration, typename Byte must be predeclared (or marked as declarative with :: prefix) at line 11, near " $a"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
08:30 k23z__ joined
diakopter masak: rakudo recognizes only uppercase identifiers as typenames? 08:31
masak diakopter: I just arrived. I don't even understand the question :)
diakopter rakudo: my ::byte $a 08:32
p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
diakopter rakudo: my ::Byte $a
p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
masak diakopter: but 'byte' has never worked in Rakudo so far, so why should it now?
diakopter I'm referring to the parser.
masak I think I can rakudobug those.
diakopter it gave different results for Byte vs byte
masak rakudo: my ::a $a
p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
diakopter it didn't recognize my byte $a
masak diakopter: yes. I don't know why.
diakopter: I'm not familiar with the quirks of this new thing they replaced alpha with :) 08:33
yet.
masak submits rakuodbug
mathw Everything suddenly livens up when masak appears! 08:34
Saluton!
diakopter snivels
(sorry, I read "livens" and thought "I should snivel") 08:35
masak hugme: hug diakopter
hugme hugs diakopter; masak++
masak hm -- people get karma for hugging now? :) 08:36
I thought hugging was its own reward.
08:37 diakopter sets mode: +v hugme
mathw hugs masak 08:39
masak \o/
08:39 p6eval left 08:40 p6eval joined
diakopter rakudo: $*me = 3; say $*me.WHAT 08:41
p6eval rakudo 70667a: OUTPUT«Cannot assign to readonly value␤current instr.: '&infix:<=>' pc 15648 (src/builtins/Junction.pir:169)␤»
diakopter o
Junction.pir ? 08:42
08:42 Schwern joined
diakopter zomg 08:42
curiouser and curiouser
masak Junction.pir might simply be the last file loaded into Rakudo. 08:44
rakudo: my $*x
p6eval rakudo 70667a: ( no output )
masak rakudo: my $*x = 42
p6eval rakudo 70667a: ( no output )
masak rakudo: my $*x = 42; say $*x.WHAT 08:45
p6eval rakudo 70667a: OUTPUT«Int()␤»
masak rakudo: $*x = 42; say $*x.WHAT
p6eval rakudo 70667a: OUTPUT«Cannot assign to readonly value␤current instr.: '&infix:<=>' pc 15648 (src/builtins/Junction.pir:169)␤»
masak submits rakudobug
rakudo: $*x = 42 08:47
p6eval rakudo 70667a: OUTPUT«Cannot assign to readonly value␤current instr.: '&infix:<=>' pc 15648 (src/builtins/Junction.pir:169)␤»
diakopter rakudo: say $*me.WHAT 08:49
p6eval rakudo 70667a: OUTPUT«Failure()␤»
diakopter masak: pinch me, I must be dreaming. 08:50
masak diakopter: how so? 08:51
diakopter rakudo: say 1.*WHAT
p6eval rakudo 70667a: OUTPUT«get_iter() not implemented in class 'Sub'␤current instr.: '!dispatch_.*' pc 530 (src/glue/dispatch.pir:167)␤»
diakopter rakudo: say 1*.WHAT
p6eval rakudo 70667a: OUTPUT«Use of type object as value␤current instr.: 'perl6;Perl6Exception;throw' pc 13865 (src/builtins/Seq.pir:28)␤»
masak o.O 08:52
stop producing weird things! :)
I can't keep up.
diakopter I don't know what those are supposed to mean, but I think pmichaudry and TimToadstool and jnthnthnthn mentioned iterators at least once in the past few weeks. ;) 08:53
masak ISTR that too :)
diakopter std: say 1 * .WHAT
p6eval std 29732: OUTPUT«ok 00:01 106m␤»
masak diakopter: by the way, what's with the name-calling? is it your way of expressing affection? :P 08:54
diakopter rakudo: say * * .WHAT
p6eval rakudo 70667a: OUTPUT«Method 'Num' not found for invocant of class 'Block'␤current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)␤»
masak I believe sjohnson has attempted the same at times, with varying results. 08:55
diakopter oh, just, I didn't meant to namecall; just... warping names. probably I shouldn't.
masak up to you, I guess.
diakopter won't
masak now, about that 1.*WHAT thing... 08:56
rakudo: say 42.WHAT
p6eval rakudo 70667a: OUTPUT«Int()␤»
masak rakudo: say 42.?WHAT
p6eval rakudo 70667a: OUTPUT«Int()␤»
masak rakudo: say 42.+WHAT
p6eval rakudo 70667a: OUTPUT«get_iter() not implemented in class 'Sub'␤current instr.: '!dispatch_.*' pc 530 (src/glue/dispatch.pir:167)␤»
moritz_ good morning
masak moritz_: o/
moritz_ rakudo: say 42.*WHAT 08:57
p6eval rakudo 70667a: OUTPUT«get_iter() not implemented in class 'Sub'␤current instr.: '!dispatch_.*' pc 530 (src/glue/dispatch.pir:167)␤»
masak ok, so it's the "call all methods" thing.
diakopter moritz_: rakudo swapped to new git clone on p6eval, and "use Safe" emulation tweaked a bit.
masak it's broken.
what's interesting is that .? isn't broken. :)
I think it should be, if correctly implemented.
moritz_ diakopter: did you also remove ng: from p6eval? 08:59
diakopter no, but I disabled its cron
oh, and removed its parrot (oops!) 09:00
hee
ng: oops
p6eval ng 33bf19: OUTPUT«Could not find non-existent sub &oops␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
diakopter oh
maybe not
hmm, I wonder whose parrot I stole
rakudo: trahend 09:01
p6eval rakudo 70667a: OUTPUT«Could not find non-existent sub &trahend␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
diakopter rakudo: &trahend
p6eval rakudo 70667a: OUTPUT«Symbol '&trahend' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (compilers/pct/src/PCT/HLLCompiler.pir:101)␤»
pugs_svn r29733 | moritz++ | disable ng: target
moritz_ forgot [evalbot] in the commit message
masak moritz_: quick! do a force push with the correct commit! :) 09:03
diakopter rakudo: say &1 09:09
p6eval rakudo 70667a: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class ''␤current instr.: '!postcircumfix:<[ ]>' pc 10607 (src/builtins/Iterator.pir:25)␤»
frettled That one was slightly less than awesome.
diakopter </sarcasm><sarcasm> 09:10
moritz_ rakudo: say "at least some things work"
p6eval rakudo 70667a: OUTPUT«at least some things work␤»
frettled diakopter: What, new sarcasm in the coming? :D
diakopter :U
masak submits rakudobug 09:11
diakopter happy to have figured out my sprixelbug
09:11 frettled sets mode: +o masak
diakopter celebrating with rakudofuzzing 09:11
frettled The masakbot needs op.
masak frettled: classical rookie mistake :P 09:12
masak does the Mickey-Mouse-Sorcerer's-Apprentice thing with the waves
mwhahaha haa! 09:13
frettled edges away nervously.
diakopter rakudo: say |0
p6eval rakudo 70667a: OUTPUT«Could not find non-existent sub &prefix:<|>␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
masak speaking of that, I really like the face of Smith when he has consumed the Oracle. it's madness and euphoria combined, somehow. 09:14
the kind that only an unstoppable virus suddenly endowed with omniscience can muster.
moritz_ evalbot control restart
09:14 p6eval left, p6eval joined 09:15 nbrown left
diakopter rakudo: say (4|0).WHAT 09:15
p6eval rakudo 70667a: OUTPUT«Junction()␤»
diakopter rakudo: say (4|0)
p6eval rakudo 70667a: ( no output )
09:15 nbrown joined
diakopter rakudo: say 00.WHAT 09:16
p6eval rakudo 70667a: OUTPUT«Int()␤»
diakopter std: say 00.WHAT
p6eval std 29732: OUTPUT«Potential difficulties:␤ Leading 0 does not indicate octal in Perl 6 at /tmp/qodLVZOrkv line 1:␤------> say 00⏏.WHAT␤ok 00:01 105m␤»
frettled masak: www.acc.umu.se/~maswan/AgentElrond/ 09:17
diakopter rakudo: say 0..WHAT
p6eval rakudo 70667a: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤current instr.: 'WHAT' pc 216565 (src/gen/core.pir:0)␤»
mathw I'm not sure I like that 'helpful' warning
diakopter masak: see the last ^ 09:18
mathw 'Redundant leading 0 in numeric literal' might be more fun :)
masak frettled: heh :)
masak submits rakudobug for 0..WHAT 09:19
diakopter: what's happening there? how does it parse?
frettled masak: it's the wrong text, but the right concept
The original was awesome.
rakudo: say .WHAT
p6eval rakudo 70667a: OUTPUT«Mu()␤»
frettled Mu \o/
diakopter masak: "so what? who cares?" <voice of SNL guy imitating lady on The View> 09:20
masak :)
diakopter: this goes in the report, you know :P
diakopter hrm. infractions**=infractions 09:21
masak :)
diakopter rakudo: my $i**=$i;
p6eval rakudo 70667a: OUTPUT«Use of type object as value␤current instr.: 'perl6;Perl6Exception;throw' pc 13865 (src/builtins/Seq.pir:28)␤»
masak that might actually be the right behaviour. 09:22
diakopter seems unsurprising if it is (I agree). 09:23
rakudo: my $a=1e5; --$a while $a; say 'finished' 09:24
p6eval rakudo 70667a: OUTPUT«finished␤»
diakopter rakudo: my $a=1e4; --$a while $a; say 'finished'
p6eval rakudo 70667a: OUTPUT«finished␤»
diakopter rakudo: my $a=1e6; --$a while $a; say 'finished'
p6eval rakudo 70667a: ( no output ) 09:25
diakopter 1 million decrements takes more than 15s
TimToady but see S03:3801, which claims it should be 1 09:26
moritz_ new gcc versions would throw out that loop completely (with -O2)
rakudo: my $i**=$i; say $i
p6eval rakudo 70667a: OUTPUT«Use of type object as value␤current instr.: 'perl6;Perl6Exception;throw' pc 13865 (src/builtins/Seq.pir:28)␤»
09:26 moritz_ sets mode: +o TimToady
diakopter rakudo: my Int $a=1000000; --$a while $a; say 'finished' 09:27
p6eval rakudo 70667a: ( no output )
diakopter moritz_: yeah, in a language that's optimizable :P
moritz_ currently type constraints make the code less efficient in rakudo
diakopter: aye
diakopter oh 09:28
rakudo: my Int $a=100000; --$a while $a; say 'finished'
p6eval rakudo 70667a: OUTPUT«finished␤»
diakopter yeah, it did better with the literal Num
rakudo: say (7^^7).WHAT 09:31
masak submits rakudobug based on what TimToady said
p6eval rakudo 70667a: OUTPUT«Method 'WHAT' not found for invocant of class 'Undef'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
masak submits rakudobug
09:32 bacek joined
diakopter rakudo: say (7^^^^^^7).WHAT 09:32
p6eval rakudo 70667a: OUTPUT«Method 'WHAT' not found for invocant of class 'Undef'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
09:32 am0c left
diakopter o_O 09:32
std: say (7^^^^^^7).WHAT 09:33
p6eval std 29733: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix ^^ instead at /tmp/8KnrsfoSCn line 1:␤------> say (7^^^^⏏^^7).WHAT␤FAILED 00:01 106m␤»
masak it parses.
diakopter not in std
masak oh wait. you're right. 09:34
masak submits rakudobug
jnthn oh morning 09:35
.oO( omg, I'm awake and it actually still *is* morning. )
masak jnthn: it's started.
jnthn omfg
jnthn runs away to the comfort of his coffee machine
diakopter moritz_: p6eval seems much more responsive... (both std and rakudo) 09:36
masak hugme: hug p6eval
hugme hugs p6eval
masak #perl6 seems much more responsive, come to think of it :) 09:37
moritz_ that too
09:39 k23z__ left
masak rakudo: undef.WHAT 09:40
p6eval rakudo 70667a: OUTPUT«Could not find non-existent sub &undef␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
masak rakudo: Undef.WHAT
p6eval rakudo 70667a: OUTPUT«Could not find non-existent sub &Undef␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
jnthn There Is No Undef. 09:41
frettled This is not the spoon you're looking for.
09:41 colomon left 09:42 avuserow joined
masak jnthn: just checking, because (7^^7).WHAT apparently tried to call .WHAT on Undef. :) 09:42
mathw :o
that seems like a strange thing to do
naughty rakudo
moritz_ masak: Undef is a parrot class leaking through 09:43
diakopter std: my %r = 4; say ::%%r
p6eval std 29733: OUTPUT«ok 00:01 107m␤»
diakopter rakudo: my %r = 4; say ::%%r
p6eval rakudo 70667a: OUTPUT«Confused at line 11, near "say ::%%r"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
diakopter I don't know whether that's a rakudobug, stdbug, both, or neither. 09:44
TimToady std: :: % %r
p6eval std 29733: OUTPUT«Potential difficulties:␤ Variable %r is not predeclared at /tmp/BecvEU8Bg6 line 1:␤------> :: % %r⏏<EOL>␤ok 00:01 106m␤»
diakopter rakudobug, then
masak submits it
rakudo: 7^^^^^^7 09:45
p6eval rakudo 70667a: ( no output )
masak moritz_: yes. I guessed as much in the rakudobug RT ticket. 09:46
moritz_: wonder why 7^^7 produces it. 09:47
diakopter rakudo: if 1 { &die 4 }
p6eval rakudo 70667a: 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)␤»
pugs_svn r29734 | lwall++ | [STD] add WHAT etc. to list of functions that require an argument
masak diakopter: two terms in a row?
std: &die 4 09:48
TimToady std: if 1 { &die 4 }
p6eval std 29733: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/zb5arA2H0s line 1:␤------> &die ⏏4␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier loop␤FAILED 00:01 126m␤»
std 29733: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/XkZNKvj04l line 1:␤------> if 1 { &die ⏏4 }␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier loop␤FAILED 00:01 126m␤»
diakopter ahah
moritz_ and I thougth that ng was supposed to bring us awesome error messages, comparable with those of STD.pm
TimToady as soon as ng can run STD, sure :) 09:49
masak submits LTA error message rakudobug 09:50
masak has a feeling we can go on like this all day
diakopter std: if 1 { say(;) } 09:51
p6eval std 29733: OUTPUT«ok 00:01 105m␤»
diakopter rakudo: if 1 { say(;) }
p6eval rakudo 70667a: 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)␤»
diakopter (or all night) 09:52
TimToady has the feeling he cannot go on like this all night, or he will produce an LTA error message
mathw masakbot is at full functionality :)
masak keep 'em coming. 09:53
diakopter std: say Int() 09:54
p6eval std 29733: OUTPUT«ok 00:01 105m␤»
diakopter rakudo: say Int()
p6eval rakudo 70667a: OUTPUT«Could not find non-existent sub &Int␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
masak submits rakudobug 09:55
diakopter sprixel: say Int()
p6eval sprixel 29734: OUTPUT«NYI: term__S_identifier␤»
diakopter hee
masak the fact that STD parses that one doesn't mean it should produce anything sensible, though.
are .() calls with empty param lists made on type values defined by the spec? 09:56
diakopter once upon a time..
masak I know .perl produces them, so they oughta be...
moritz_ not perl
stringification
rakudo: say Int.perl
p6eval rakudo 70667a: OUTPUT«Int␤»
masak right. thanks. 09:57
moritz_ rakudo: say ~Int
p6eval rakudo 70667a: OUTPUT«Int()␤»
masak does that mean that 'Int()' isn't necessarily meaningful Perl 6 code?
moritz_ aye
diakopter stdbug then? 09:58
masak no, it definitely parses.
nothing wrong with it as such.
diakopter no,
masak it's like 42[5].
it parses, but it doesn't mean anything sensible in Standard Perl 6.
diakopter it should parse only if Int were a subname, or it would fail. 09:59
TimToady well, it's coercing Nil
frettled Nil will not be coerced! :)
diakopter std: say Boo()
p6eval std 29734: OUTPUT«Undeclared name:␤ 'Boo' used at line 1␤ok 00:01 105m␤»
TimToady my Int $x = Nil; # specced to make Int
diakopter std: class Boo { }; say Boo()
p6eval std 29734: OUTPUT«ok 00:01 105m␤»
TimToady so I suspect .() should just be identity on a type 10:00
masak noted in the rakudobug. thanks.
diakopter std: class Boo { }; say Boo....() 10:01
p6eval std 29734: OUTPUT«ok 00:01 106m␤»
TimToady std: say 1......() 10:02
p6eval std 29734: OUTPUT«ok 00:01 106m␤»
diakopter rakudo: class Boo { method new() { } }; say Boo.new 10:03
p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
masak rakudo: class Boo {}; say Boo.new 10:04
p6eval rakudo 70667a: ( no output )
masak submits rakuodbug
diakopter rakuod: blimey
masak rakudo: class Boo { method foo() { } }; say Boo.foo 10:05
p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
diakopter rakudo: class Boo { method new() { 1; } }; say Boo.new.WHAT 10:06
p6eval rakudo 70667a: OUTPUT«Int()␤»
masak oh.
rakudo: sub foo() {}; say foo
p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
masak the Null PMC access isn't from having a method, it's from the return value. 10:07
diakopter seems so
masak modifies the rakudobug
10:07 IllvilJa left
diakopter rakudo: class Boo { method invoke() { say 444; } }; say Boo.new.() 10:08
p6eval rakudo 70667a: OUTPUT«invoke() not implemented in class 'Boo'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
diakopter does it need a different signature?
(if so, the error should clarify as such)
10:08 Trashlord left
moritz_ invoke() is also a parrotism 10:08
class Boo { method postcircumfix:<[]>() { say 444; } }; Boo.new.() 10:09
rakudo: class Boo { method postcircumfix:<[]>() { say 444; } }; Boo.new.()
p6eval rakudo 70667a: OUTPUT«invoke() not implemented in class 'Boo'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
10:09 snarkyboojum left
diakopter rakudo: class Boo does Snorkable { }; 10:10
p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: 'perl6;Boo;!class_init_11' pc 351 (EVAL_1:158)␤» 10:11
masak submits
diakopter++ # Snorkable
sounds like a concept out of the Mumin mythology :) 10:12
rakudo: class Boo does 42 { };
p6eval rakudo 70667a: OUTPUT«Malformed package declaration at line 11, near "does 42 { "␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
masak rakudo: my $a; class Boo does $a { };
p6eval rakudo 70667a: OUTPUT«Malformed package declaration at line 11, near "does $a { "␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
masak rakudo: class Boo does Boo { }; 10:13
p6eval rakudo 70667a: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class 'Boo'␤current instr.: 'perl6;ClassHOW;add_composable' pc 3686 (src/metamodel/ClassHOW.pir:159)␤»
masak submits rakuodbug
std: class Boo does Boo { };
p6eval std 29734: OUTPUT«ok 00:01 105m␤»
masak that's cik :)
s/cik/sick/
diakopter rakudo: class _'_'_ { method new() { _'_'_ } }; say _'_'_.new.WHAT
p6eval rakudo 70667a: OUTPUT«_'_'_()␤» 10:14
diakopter (no bug, just cute)
masak :)
10:15 nbrown left, nbrown joined
TimToady zzz & 10:15
diakopter std: class class is class { } 10:16
p6eval std 29734: OUTPUT«ok 00:01 105m␤»
diakopter rakudo: class class is class { }
p6eval rakudo 70667a: OUTPUT«No applicable candidates found to dispatch to for 'trait_mod:<is>'␤current instr.: 'perl6;class;!class_init_11' pc 351 (EVAL_1:158)␤»
diakopter ^z & 10:17
masak rakudo: class A is A {}
p6eval rakudo 70667a: OUTPUT«No applicable candidates found to dispatch to for 'trait_mod:<is>'␤current instr.: 'perl6;A;!class_init_11' pc 351 (EVAL_1:158)␤»
jnthn Well, at least we kinda get that one right...
masak rakudo: class A {}; class B is A {}
p6eval rakudo 70667a: ( no output )
masak submits LTA rakudobug
jnthn Though we probably want a fallback trait_mod:is
TimToady class A is A should find the name A already introduced as a type 10:18
frettled It should return a Rand type. 10:19
jnthn TimToady: I was referring to the "is class" one.
TimToady same thing
jnthn Nope.
There's no type "class" 10:20
So it ges translated to a :class pair.
TimToady there is after you've said 'clas clas'
jnthn oh
meh.
TimToady sorry, bad connection -> bad typing 10:21
moritz_ the key is to type locally :-) (yes, I know...)
jnthn very much hopes there will be the same enthusiasm to go through RT and clear up the fixed tickets.
TimToady I should sleep locally...
zzz & # really
jnthn o/ 10:22
masak jnthn: I hope so too! :)
10:23 bacek left, IllvilJa joined
masak after 15 rakudobugs, a lull seems to have set in. 10:26
diakopter++ # masak+diakoter make a good mech 10:27
jnthn masak: fwiw, I'll probably not look at RT while there's So Many Spectests in spectest.data left to unfudge. So you can take your time to fill it up. :-) 10:28
s/unfudge/uncomment/
masak jnthn: understandable.
jnthn: and I suspect my focus will gradually shift to getting the Ecosystem up and running again. 10:29
masak tries to run Druid, and see what falls out
10:30 snarkyboojum joined
masak Druid currently fails 10 lines into the code, on a statement-modifying for loop. the feature I didn't manage to add a couple of days ago. 10:34
masak .oO( I bet jnthn or pmichaud can do it easily )
10:36 UjinT34 joined, ruoso left
masak std: say 10:44
p6eval std 29734: OUTPUT«Potential difficulties:␤ Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/zX2BGwQhfN line 1:␤------> say⏏<EOL>␤ok 00:01 107m␤»
masak rakudo: say
p6eval rakudo 70667a: OUTPUT«␤»
masak submits rakudobug
std: print 10:45
p6eval std 29734: OUTPUT«Potential difficulties:␤ Unsupported use of bare 'print'; in Perl 6 please use .print if you meant $_, or use an explicit invocant or argument at /tmp/tzCoyo7j1e line 1:␤------> print⏏<EOL>␤ok 00:01 105m␤»
masak rakudo: print
p6eval rakudo 70667a: ( no output )
masak rakudo: (class { method foo() { say "OH HAI" } }).foo 10:50
p6eval rakudo 70667a: OUTPUT«Invalid namespace key in set_pmc_keyed␤current instr.: 'perl6;ClassHOW;new' pc 3418 (src/gen/Attribute.pir:473)␤»
masak locally, that gives me a failed assertion, too.
masak submits rakudobug
10:51 k23z__ joined
masak rakudo: (class {}).foo 10:52
p6eval rakudo 70667a: OUTPUT«Invalid namespace key in set_pmc_keyed␤current instr.: 'perl6;ClassHOW;new' pc 3418 (src/gen/Attribute.pir:473)␤»
masak rakudo: my $a = 0 but True 10:56
p6eval rakudo 70667a: OUTPUT«No applicable candidates found to dispatch to for 'infix:<does>'␤current instr.: 'infix:<but>' pc 214077 (src/gen/core.pir:2169)␤»
masak submits rakudobug
10:56 mikehh left
masak rakudo: 0 but True 10:57
p6eval rakudo 70667a: OUTPUT«No applicable candidates found to dispatch to for 'infix:<does>'␤current instr.: 'infix:<but>' pc 214077 (src/gen/core.pir:2169)␤»
jnthn masak: You're mostly running into known NYI. 10:58
10:59 mikehh_ joined
masak jnthn: hm. guess I am. most of those will likely have spectests. 10:59
11:00 jferrero joined
masak nevertheless, from my point of view, they're regressions. 11:00
11:01 snarkyboojum_ joined 11:03 snarkyboojum left, snarkyboojum_ is now known as snarkyboojum
jnthn oh, sure, you can file them. 11:03
masak \o/
jnthn As I said, I just hope you or others will be willing to help clear out the RT queue. 11:04
Once a bunch are fixed up.
11:04 payload left
masak I'll try. it would probably be good for my Rakudo knowledge to jump into the implementation fray early on. 11:05
11:06 snarkyboojum left, k23z__ left 11:08 mikehh_ left
moritz_ note that say() and print() being disallowed can be detected at run time 11:13
(without arguments, that is) 11:14
masak aren't 'say()' and 'print()' allowed? 11:17
and what's the remarkable thing about 'can be detected at run time'? did you mean 'compile time'? 11:18
moritz_ I mean it's as easy as multi say (*@args) { die "say without parameters disallowed" if @args == 0; ... } 11:19
std: say()
p6eval std 29734: OUTPUT«ok 00:01 107m␤»
moritz_ hm
11:19 moritz_ sets mode: +v p6eval
moritz_ maybe I'm wrong 11:19
ng: say 1
jnthn I thought it was compile time check. 11:20
masak moritz_: yes, for once I think you are. 'say;' is disallowed, 'say();' is allowed. 11:21
moritz_ dreads the "empty say not allowed" error message for say + syntax error later on 11:22
masak moritz_: why is that something to dread? the bare say is only a warning. 11:25
moritz_ masak: because the old rakudo did it that way 11:26
11:26 pmurias joined
masak I'm not following. 11:26
moritz_ in auld rakudo, when you wrote 'say 3 4' 11:27
it didn't say "two terms in a row"
but "bare say not allowed at ... "
masak std: say 3 4
p6eval std 29734: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/0ZSLm3DtpG line 1:␤------> say 3 ⏏4␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier loop␤FAILED 00:01 107m␤»
masak moritz_: strangely enough, I've never run into that one.
moritz_ masak: I have, many tiimes
masak moritz_: I sometimes ran into the `for 1,2,3, { block }` typo. 11:28
moritz_ std: for 1,2,3, { block } 11:29
p6eval std 29734: OUTPUT«===SORRY!===␤Expression needs parens to avoid gobbling block at /tmp/xYkkiexVHu line 1:␤------> for ⏏1,2,3, { block }␤Missing block (apparently gobbled by expression) at /tmp/xYkkiexVHu line 1 (EOF):␤------> for 1,2,3, { block
..}⏏<…
11:31 payload joined 11:33 pausenclown joined 11:35 drbean joined 11:37 patspam left
pausenclown oh dear. i was toying around with the grammexes as in the calendar example and wondered how to handle delimited strings. 11:38
and had a look in the std.pm to see if i could cargo cult something from that 11:40
masak 'delimited strings'? aren't all strings delimited?
pausenclown *overload*
masak flaunts his ignorance
pausenclown something like "foo" or bar or [%baz%], masak. 11:41
masak that looks like three examples of very different entities.
pausenclown somethings weird with my keyboard layout 11:42
i meant 'bar'
masak ok.
so you're basically talking about string literals. 11:43
moritz_ STD.pm might be a bit... too much with its approach
masak yes, those are not entirely trivial to parse.
consider just calling into Rakudo's own Perl 6 rule for parsing string literals.
alpha: say "Can I call you like this?" 11:44
moritz_: I see a need sometimes for doing evals on the old Rakudo branch.
at least until ng-now-master reaches its full potential. 11:45
moritz_ but usually you can just do \' [ <-[']> | \\ \' ]* \'
similar to what you'd do in Perl 5
pausenclown yeah but in a perl book i read online they had a syntax like token { "[" ~ "]" restoftoken }. when i try that rakudo croaks. not implemented or deprecated or sillymedumb? 11:50
moritz_ it worked last I looked 11:53
(and yes, goal matching is much nicer for that)
rakudo: say '"abc"' ~~ / \" ~ \"
p6eval rakudo 70667a: OUTPUT«Confused at line 11, near "say '\"abc\""␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
moritz_ rakudo: say '"abc"' ~~ / \" ~ \" \w+ /
p6eval rakudo 70667a: OUTPUT«"abc"␤»
pausenclown can you point me at a detailed documentation for this? 11:54
moritz_ matches
rakudo: say '"abc' ~~ / \" ~ \" \w+ /
p6eval rakudo 70667a: OUTPUT«Unable to parse _block46, couldn't find final \" at line 1␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
moritz_ that bails out, as it should
pausenclown: S05
perlcabal.org/syn/S05.html#New_metacharacters to be more specific
pausenclown cool ty. 11:55
do you know about already made popular grammars? like Grammar::Html or Grammar::TT? Is there a namespace for this? 11:56
moritz_ I've written a JSON grammar in JSON::Tiny 11:57
github.com/moritz/json/
11:59 bluescreen joined
pausenclown that was actually the example in the book i mentioned. when i copy and pasted it didnt work. ill try the repository 11:59
i just wonder if JSON::Tiny::Grammar shouldnt be Grammar::JSON 12:01
moritz_ there are also examples for XML, URIs and so on 12:02
in other github repos
github.com/masak/proto/blob/master/projects.list lists know modules; some of them have (or contain) grammars 12:03
pausenclown: not Grammar::JSON - you also don't name things Class::Foo just because Foo is a class
and grammars are (sadly) rather tightly tied to the class that uses them 12:04
pausenclown why? you can tie entirely different action classes to a single grammar. 12:05
moritz_ yes, but the structure of the captures is very specific to a single grammar
what I mean is that you can't easily replace the grammar with another grammar that parses the same text, but works differently 12:06
for a given action class
lunch& 12:07
12:11 snarkyboojum joined
pausenclown the last line goes a little over my scope and maybe im xy. what do you think would be a good namespace for grammars for popular formats. like *ml, json, tt, etc. ? 12:11
12:12 Schwern left, k23z__ joined
pausenclown rakudo: say '"a\"c' ~~ / \" ~ \" \w+ / 12:16
p6eval rakudo 70667a: OUTPUT«Unable to parse _block46, couldn't find final \" at line 1␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
pausenclown rakudo: say '"a\"c"' ~~ / \" ~ \" \w+ / 12:17
p6eval rakudo 70667a: OUTPUT«Unable to parse _block46, couldn't find final \" at line 1␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
jnthn rakudo: / \" ~ \" \w+ / 12:18
p6eval rakudo 70667a: ( no output )
jnthn rakudo: say '"ac"' ~~ / \" ~ \" \w+ /
p6eval rakudo 70667a: OUTPUT«"ac"␤»
jnthn rakudo: say '"a\"c"' ~~ / \" ~ \" [\w+ | '\\"'] /
p6eval rakudo 70667a: OUTPUT«Unable to parse _block46, couldn't find final \" at line 1␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
jnthn rakudo: say '"a\"c"' ~~ / \" ~ \" [\w+ | '\\"']+ / 12:19
p6eval rakudo 70667a: OUTPUT«"a\"c"␤»
jnthn :-)
pausenclown rakudo: say '"a\\\"c"' ~~ / \" ~ \" [\w+ | '\\"']+ / 12:20
p6eval rakudo 70667a: OUTPUT«Unable to parse _block46, couldn't find final \" at line 1␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
pausenclown boom
jnthn well, yeah, you gotta write a grammar to parse what you want to parse :-P 12:21
rakudo: say '"a\\\"c"' ~~ / \" ~ \" [\w+ | \\.]+ / 12:22
p6eval rakudo 70667a: OUTPUT«"a\\"␤»
pausenclown an arbitrary string delimited be double quotes
escapes allowd
mberends
.oO( rakudobug speleology task: run perl6advent examples on new master )
12:25
jnthn Hmm...that last one I wrote didn't do it. :-/
jnthn is a tad confused why 12:26
oh, I see
rakudo: say '"a\\\"c"'
p6eval rakudo 70667a: OUTPUT«"a\\"c"␤»
jnthn rakudo: say '"a\\\\"c"'
p6eval rakudo 70667a: OUTPUT«"a\\"c"␤»
jnthn rakudo: say '"a\\\\"c"' ~~ / \" ~ \" [\w+ | \\.]+ /
p6eval rakudo 70667a: OUTPUT«"a\\"␤»
jnthn oh gah 12:27
Anyway, I think that regex is about rightish.
rakudo: say '"a\\\\\\"c"' ~~ / \" ~ \" [\w+ | \\.]+ / 12:29
p6eval rakudo 70667a: OUTPUT«"a\\\"c"␤»
jnthn Trouble is the single quotes are doing stuff wiht the \\ too :-)
That was the example i was trying to write 12:30
jnthn has lunch now, brain might start working again...
takadonet morning all 12:49
masak takadonet: \o
takadonet OMG Ng is in the master branch! 12:51
12:51 lichtkind joined
masak I for one welcome our new ng master. 12:51
takadonet indeed brb restarting mahcine
lichtkind masak: hej 12:52
jnthn s/\./ with many bug reports\./ # ;-)
masak lichtkind: moin
lichtkind haha
jnthn At least with the new STD-ish grammar in place implementing s/// may not be so far off. :-)
masak jnthn: you do realize my behaviour is perfectly explainable by a ridiculously pent-up need to submit bugs, right? :)
jnthn masak: Sure. Doesn't mean I can't tease about it. :-P 12:53
masak jnthn: of course. :)
jnthn I'm kinda surprised it's only 15. :-)
masak has smoke coming out of ears 12:54
jnthn rakudo: "ab" ~~ /a { say 42 } b/; say $/; # some things work that didn't before too :-)
p6eval rakudo 70667a: OUTPUT«42␤ab␤»
masak wow!
jnthn See. It's not all new bugs. :-)
rakudo: "ab" ~~ /:my $x = 42; a { say $x } b/; say $/; 12:55
p6eval rakudo 70667a: OUTPUT«42␤ab␤»
masak needs to put back his dropped jaw with his hand
jnthn rakudo: sub foo() { say $*x; }; "ab" ~~ /:my $*x = 42; a { foo() } b/; say $/;
p6eval rakudo 70667a: OUTPUT«42␤ab␤»
lichtkind mberends: wake?
masak jnthn: that's really cool. 12:56
jnthn pmichaud++ for those
masak: We're using those in Grammar.pm :-)
masak \o/
jnthn Contextuals make a lot of things nicer when parsing Perl 6 and building AST. :-) 12:58
$*SCOPE alone has made life a load better.
12:58 kraih_sri left
jnthn Anyways, gonna go wander around for an hour with a friend who has come to visit the city. 12:59
jnthn bbl
12:59 kraih_sri joined 13:04 orafu left, orafu joined 13:06 colomon joined 13:09 takadonet joined 13:13 Guest36069 left
mathw reads some backlog and has to painstakingly reassembled his head, which exploded with delight 13:16
masak making people's heads explode with delight is the business of #perl6 :) 13:17
mathw It's a good business 13:18
Now please to be making grammars work sufficiently for building Form.pm :)
13:22 payload left 13:30 pmurias left
pmichaud good morning, #perl6 13:39
masak and a good morning to you, pmichaud.
pmichaud reads backscroll 13:40
colomon \o 13:41
13:42 drbean left
pmichaud (from backscroll) -- no, nqp doesn't use pge under the hood. It used pge long enough to get it bootstrapped, but since then nqp is parsed using nqp. 13:43
scp1 So... does perl6 rule enough for me to actually try and get parrot running? :) 13:44
masak scp1: Rakudo is in an interesting superposition of 'rule' and 'suck'. YMMV. 13:45
pmichaud it 'rules' because Perl 6 is so awesome. it 'sucks' because there are still some significant bugs/pieces missing 13:46
mathw But they will come. This feels like a big milestone. 13:47
Even though it's a regression in terms of tests passing.
scp1 It seems very interesting. I guess this have been asked before, but in that state is perl6 right now? When should it be fully released, is there some schedule or something?
s/that/what/
moritz_ scp1: there's a shedule for a usable release: Q2 (likely April) this year 13:48
masak scp1: I think the 'fully released' question is strange, if you don't mind me saying it.
scp1 oh really, awesome
moritz_ scp1: but no schdeule for a language freeze or feature complete compiler yet
masak scp1: what you should ask yourself is what needs you have, and how they interact with Rakudo-now and Rakudo-soon.
myself, I have a need to try fun things with Perl 6. Rakudo is certainly ready for that. :)
moritz_ (if you're confused, Rakudo is a Perl 6 compiler) 13:49
scp1 My current needs is still learning perl5, but I think there's place for perl6 too :)
yeah, I know
masak I have next to no need to see a 'full release' of Rakudo. I hardly know what that means.
scp1 Started late with perl, december last year, but since it's the most beutiful thing ever created I doubt perl6 will be any less sexier 13:50
mathw If you think Perl 5 is the most beautiful thing ever created, Perl 6 is going to make your head explode with sheer joy. 13:51
scp1 :D 13:52
colomon afk # skiing!
masak scp1: want the tour? I can show you some things on the p6eval bot. 13:53
rakudo: say "take the tour! " x 2
p6eval rakudo 70667a: OUTPUT«take the tour! take the tour! ␤»
mathw Personally, I'll consider Perl 6 'ready' when there's a compiler release which supports all the features I want every day and produces code which runs acceptably fast.
'Finished' is an alien concept. There are just steps along the road.
scp1 masak, oh nice... that works in perl5 too though :)
mathw scp1: he hasn't really started yet 13:54
masak scp1: true. I'm just warming up :)
mathw: I think that's a reasonable requirement. my point, to the extent I have one, is that 'finishing' will be a gradual thing any way, different for different people.
moritz_: could I have an 'alpha' target? puhleeze?
I don't really trust this new engine :P 13:55
13:55 bluescreen left
moritz_ masak: alpha target? what are you talking about? 13:55
masak moritz_: p6eval access to the old branch 'alpha'.
mathw he wants p6eval to let you run against rakudo/alpha
moritz_ is that the old master? 13:56
masak yes.
moritz_: how am I supposed to demo Rakudo to scp1 on a branch that's hardly capable of doing abacus-like things?
scp1 ;o
masak scp1: (we just switched underpinnings. stand by while we calibrate your reality.)
moritz_ masak: please remind me again in a week... need to prepare at least two presentations, so likely ENOTUIT before that 13:57
scp1 hehe allright
masak diakopter: ping
moritz_ masak: but I guess I could give you access to server, if you want to take matters into your own hands 13:58
(hope that's fine with diakopter who runs the server)
masak moritz_: sure.
oh well. this works, I tried locally:
rakudo: multi sub foo(Int $a) { say "AN INT" }; multi sub foo(Str $a) { say "A STRING" }; foo(42); foo("OH HAI")
p6eval rakudo 70667a: OUTPUT«AN INT␤A STRING␤»
masak scp1: see what's happening there?
scp1 oh, types... 13:59
masak yes :)
actually, I should start by doing this:
rakudo: sub foo(Str $a) {}; foo(42)
p6eval rakudo 70667a: OUTPUT«Nominal type check failed for parameter '$a'; expected Str but got Int instead␤current instr.: 'foo' pc 177 (EVAL_1:75)␤»
masak rakudo: sub foo(Str $a) { say $a }; foo("OH HAI")
p6eval rakudo 70667a: OUTPUT«OH HAI␤»
masak parameter type checking.
scp1 wow, nice
masak yes :) 14:00
scp1 uhm, I can not find any perl6 package in my distro...
community/parrot 2.0.0-1 standalone virtual machine that can be used to execute bytecode compiled dynamic languages
this babe?
and rakudo. 14:01
masak that's the VM.
scp1 yeah, I need both?
masak that and rakudo should suffice.
yes.
14:01 athenot joined
scp1 allright 14:01
masak just the VM doesn't give you Perl 6.
scp1 heh allright
masak compare JVM and Java.
mathw Perl 6 doesn't have one single implementation like Perl 5 does. Perl 6 is a specification, and Rakudo is one of the compilers which implements it. 14:05
masak that said, with all due respect to all implementors of the other implementations, Rakudo is the word that comes to mind when associating freely on "Perl 6" and "implementation" :) 14:06
mathw Yes, it's definitely the furthest along 14:07
cognominal there is a difference so. Java sucks while the JVM are ok. Here, Perl 6 is great while the implementations are immature. :)
scp1 Talking types, isn't it legal anymore to use i.e my $str = 'string'; ?
mathw And it's the one that runs on Parrot, which was always the initial plan
scp1: yes
14:07 pmurias joined
mathw you're free to not use types if you don't want to 14:07
scp1 ah allright
masak 'gradual typing'.
mathw underneath, the type system's still in action but your variables can be unconstrained
cognominal this is not to say there are not great languages on top of the JVM 14:08
masak there's an implicit 'Any' type added to such a container.
mathw my Str $a; # can only assign Str and Str-derivatives to it
my $a; # can assign anything
scp1 yeah, okay, nice... reading about it
mathw So you can choose how much static type checking you want
Personally I tend to go for as much as possible, but I'm a Haskell programmer
scp1 What? 14:09
Are there more languages then perl?
moritz_ lots; and you tend to need many more when you work on a real-world project
like SQL for example
mathw urgh 14:10
I'm not so fond of SQL
And it's well-known in here how I feel about Java :)
14:10 bluescreen joined
masak suck it up. :) it's a sign of professionalism to be able to write good code in a language you dislike. 14:11
Su-Shee it's a sign of good research if you never have to. ;)
pmurias moritz_: after i read Database in Depth from READTHEM i stoped liking SQL ;)
takadonet hard to avoid not writing javascript... 14:12
masak Su-Shee: :)
mathw My manager is aware of my feelings about Java, and also aware that I'm a better C++ programmer, so he tends to let me just do C++ work :)
masak takadonet: JS, fortunately, is not too difficult to like. the DOM API, on the other hand... :/
mathw My previous manager made me do SCJP to try and get me to like it, but it didn't work...
moritz_ pmurias: I'm well aware that SQL is not THE solution, but often it's still handy, and better than writing a storage backend yourself
mathw SQL could be a lot worse
pmurias most things could be a lot worse 14:13
takadonet masak: I'm glad that 99% of my work is Perl 5
masak takadonet: that sounds wonderful :)
mathw And sometimes there's an obscure pleasure in crafting a query that spreads over twenty-five lines and has six joins and a highly elaborate set of WHERE clauses in it :)
scp1 takadonet, any job openings? :)
Su-Shee has 25% javascript, 10% perl 6, 15% css, 10% sql and the rest is perl 5.
takadonet masak: We are looking for Bioinformatician :) 14:14
masak takadonet: just let me finish my degree first... :)
takadonet You guys just need to be willing to move to Winnipeg Canada 14:15
scp1 No perl jobs here in sweden... just java and .NET, urgh
Su-Shee same here.. and a couple of c++ and c stuff. 14:16
and plenty php.
takadonet masak: when do you finish your degree?
mathw there's PHP everywhere 14:17
like some sort of mould
scp1 php :(
Su-Shee :)
masak takadonet: in about a year, I hope.
Real Soon Now.
Su-Shee I love those anglosaxon blogpostings about the great perl job situation ;)
masak takadonet: I can definitely move to Canada, if there's an opening in a year :)
14:21 xomas joined
scp1 who knows - maybe perl6 could actually create some jobs? 14:21
masak it sure creates a lot of work :) 14:22
scp1 yeah I could imagine... :)
moritz_ scp1: I've already got a job offer due to my Perl 6 activity 14:23
scp1 Yeah but I guess you're one hell of a programmer 14:24
PerlJam good morning all
masak PerlJam: \o
moritz_ has no idea if he is a good or bad programmer 14:25
Su-Shee we'll have to offer ourselves the perl 6 jobs for a year or two.
mathw I'd like a job working in Perl 6 14:26
masak me too.
pmichaud yes, a job in Perl 6 might be nice. :) 14:27
Su-Shee you'll have to introduce perl 6 in your actual job as successor. and you're the expert to migrate carefully into it.
scp1 heh 14:28
takadonet planning to introduce Perl 6 to my workplace when Bioperl6 is done....
Su-Shee no, I really mean it. noone is going to throw away all existing xy code and do it all over again in p6.
14:28 k23z__ left
Su-Shee takadonet: well you might be the single one exception of the rule. 14:28
takadonet that reminds me I better start writing it
Su-Shee: Why is that? 14:29
Su-Shee takadonet: if you are already doing perl 6?
takadonet Su-Shee: I was doing some but then work took over...
PerlJam Perl 6 needs some "killer apps" (there will be more than one :)
Su-Shee PerlJam: don't those require some boring base apps like DBI6? :) 14:30
pmurias or use DBI:from<perl5> ;) 14:31
masak yeah, rather that.
until then, we can get by on things like Squerl, hopefully.
scp1 I'll try to port some thing I've done to perl6, might be good exercises 14:32
masak scp1++ 14:33
rakudo: say $ss_SS_S_S__S_S_s.WHAT 14:34
p6eval rakudo 70667a: OUTPUT«Block()␤»
pugs_svn r29735 | pmurias++ | [mildew] remove phi functions before the ssa form is executed
r29735 | make test-ssa passes
14:34 wolf2k_ubuntu joined 14:38 snarkyboojum left
jnthn rakudo: say $ss_SS_S_S__S_S_s 14:40
p6eval rakudo 70667a: OUTPUT«_block25␤»
jnthn wtf 14:41
masak jnthn: don't worry :)
jnthn: it's just the variable through which Safe.pm is inlined nowadays.
jnthn oh!
masak I liked the name, though :) 14:42
jnthn :-) 14:43
jnthn suspects he's not going to get a round tuit for Rakudo today.
(Visiting friends)
pmichaud I'm likely to be mucking with scalars all day anyway :)
although first round of changes over the past 45 minutes has gone quite nicely :) 14:44
masak changes? what changes? :)
pmichaud changing the way Rakudo manages scalar variables and flattening
masak oh, cool. 14:45
jnthn pmichaud: OK, wfm. 14:46
Tomorrow may/should be better.
Wednesday onwards everythings all clear again. :-)
14:46 kidd` joined
pmichaud make 14:46
ww
I'm just now trying the part where we eliminate copying values :-) 14:47
expect massive fireworks/failz
jnthn
.oO( damm, shoulda typed a compile error before Pm noticed ww :-) )
masak :)
pmichaud ...wtf? it passed "make test"? 14:48
14:48 cjk101010 left
pmichaud hmmmmmmmmmm 14:49
jnthn pmichaud: It is possible that you did it right. :-)
pmichaud I truly expected massive fail. So far fail only on nested_array.t
moritz_ pmichaud: I predict infinite recursion for 'make spectest' :-)
jnthn
.oO( plz to not breaks S1[24]-*
14:50
)
:-)
14:50 clausi left
pmichaud infinite recursion, yes. 14:51
14:57 cjk101010 joined 15:04 ignacio_ joined
pmichaud jnthn: would you prefer a 'scalar' property or a Perl6Scalar type? I think I can make it work either way. 15:13
15:13 cognominal left
jnthn pmichaud: hm 15:13
pmichaud: Well...
masak rakudo: class A { method Str { "OH HAI" } }; say ~A.new; say ~A
p6eval rakudo 70667a: OUTPUT«OH HAI␤A()␤»
jnthn pmichaud: I prefer the type I think. 15:14
pmichaud: Actually, question.
masak how come the user's Str method doesn't override stringification of the type object?
jnthn masak: It shouldn't.
masak jnthn: I know. how come it doesn't? :)
pmichaud masak: for that, I think one has to have method Str(self:U :) { ... } or something like that
jnthn pmichaud: Are we going to have a prophash on them anyway?
15:15 PacoLinux joined
pmichaud jnthn: well, we still have to have somewhere to hold the type information (more) 15:15
masak pmichaud: ah, that explains it. thanks.
jnthn masak: The current answer is "because the low-level role we mix in to make something a type object rather than just an ordinary instance overrides it"
masak: The answer pmichaud gave is the right one. :-)
pmichaud but that could conceivably become an attribute of container objects (i.e., attribute of Perl6Scalar) 15:16
jnthn Well, I was wondering if we could eliminate the prophash for e.g. untyped, but I guess they all still need rw...
pmichaud in short, we could start moving towards eliminating the use of the prophash
jnthn I don't hate the prophash per se, I'm just aware it's one more gc-able.
pmichaud I think we can eliminate the rw, also.
jnthn What do we set rw on? 15:17
15:17 lichtkind left
jnthn Only ever an ObjectRef? 15:17
pmichaud well, I was thinking that we know something is rw because it's a Perl6Scalar, but now I'm not so sure.
jnthn If so, there's 7 PMC flag bits...
We could take one for scalar, one for rw... 15:18
pmichaud and by "it's a Perl6Scalar", I mean only the PMC itself, not anything it references
jnthn Part of me thinks (that you won't like this idea but I'll say it anyway...) that we should factor out the "is it a scalar" and "is it rw" checks to dynops.
Not for performance.
But so we can more easily change/optimize the way we handle this in the future.
pmichaud I was just thinking "isscalar" as a dynop, yes.
jnthn Oh, I thought you'd hate the idea. :-) 15:19
pmichaud well, the important thing about using Perl6Scalar as-a-type is that it's not a normal "isa" check.
jnthn You can just compare ->vtable->base_type
pmichaud i.e., right now if we do "isa ...", we end up checking the type-ness of the value as well as the containers
jnthn == poitner comparsisson to see if it's a scalar
pmichaud that's fine for "isa" checks, but I need something that just checks the container and not what it references. so I was thinking dynop might be the way to do that easily. 15:20
your point about putting all of this behind abstraction opcodes makes a lot of sense also.
15:21 cognominal joined
pmichaud well, "is it a scalar" and "is it rw" have to be orthogonal, so they can't both be attached to the pmc type 15:23
jnthn The other reason I like it behind such a thing, is that it'll be easier to hide however @other-vm do it behind the same thing.
pmichaud so there has to be a flag somewhere
jnthn Can they be attached to any PMC?
Or just ObjectRef?
pmichaud in general, only containers end up with properties 15:24
jnthn hmm
We can't really go using PMC flag bits on any old PMC.
pmichaud at the moment that would be ObjectRef, Perl6Scalar, Seq, and Hash
no, we wouldn't be putting flags on foreign PMCs 15:25
only on our own container types
jnthn Seq and Hash are high level objects, so it's what the Object PMC that matters.
I wonder if it uses flag bits...
We can always use the prophash of course.
pmichaud and our container types are strictly containers -- they never hold values directly in the new model but always hold a reference to a value
jnthn but saving a gc-able for many of our untyped containers would be nice.
pmichaud so values never have properties on them 15:26
even if we don't use PMC flags, we can use standard PMC attributes
and that doesn't create another gcable 15:27
15:28 nihiliad joined
jnthn "attributes"? 15:28
Oh, hmm, maybe. 15:29
pmichaud yeah, the GETATTR stuff, not the object attributes
jnthn Ah, I see.
OK, well...I think we agree we want a dynop abstraction interface.
If the first cut is done with properties because it's easy/familiar, that's OK. 15:30
pmichaud well, I'd also like to find a good way to eliminate the setprops we do now.
but not necessarily with separate opcodes. in some ways, I'd like to say "give me a Scalar" and have it already initialized with the standard scalar flags.
s/give me a Scalar/create a Scalar 15:31
jnthn new_scalar
oh, not with seperate opcodes...
hm
pmichaud or perhaps put it all in one opcode 15:32
15:32 payload joined
jnthn I was thinking new_scalar would do the new 15:32
pmichaud new_p6opaque <scalar>, <rw>, <init_ref>
jnthn and also set the props
well, that kinda thing, yeah
pmichaud okay, I'll work on the assignment/binding ops a bit more 15:34
that should provide some clues as to what we really want
jnthn Not 100% sure if I like having p6opaque in the name...may work.
pmichaud doesn't have to be that.. I agree it's not precisely correct
15:37 Psyche^ joined
pmichaud okay, I'll take a walk and think a bit more on things. thanks! 15:37
jnthn np :-) 15:38
15:40 Patterner left, Psyche^ is now known as Patterner
masak research.swtch.com/2010/01/generati...rrors.html 15:56
15:59 uniejo left 16:03 justatheory joined 16:11 jackyf joined
masak rakudo: role A { method x {} }; role B { method x {} }; class C does A does B {} 16:16
p6eval rakudo 70667a: OUTPUT«Null PMC access in elements()␤current instr.: 'perl6;SeqIter;get' pc 13390 (src/builtins/Routine.pir:92)␤»
masak submits rakudobug
jnthn *sigh* 16:18
I'd thought we were running tests for that. :-/
masak hugme: hug jnthn
hugme hugs jnthn and blushes
diakopter BUSHELS
jnthn It certainly used to work. Guess the array changes busted it.
masak diakopter: do you think you could help me add an 'alpha' target to p6eval? I have a case of nostalgia. 16:19
16:19 payload left
masak jnthn: that's what I'm here for. it's my Nelson function in #perl6. 16:20
ha ha!
masak tries sledgehammer on a few other things
frettled :)
New spectest: masak.t 16:21
colomon frettled: but that test file will never pass!
pmurias ch to a Perl 6 grammar
masak: seem a good approach to getting good error messages in an LR parser the tricky part would be converting the appro
ch to a Perl 6 grammar
masak pmurias: yes. thinking the same thing. 16:22
pmichaud okay, walk helped
jnthn: here's what I think I've figured out
jnthn 1) Put the dog on a lead.
;-)
pmichaud we have more than (flatten|non-flatten) (rw|ro) 16:23
masak rakudo: class A {}; supersede class A {}
p6eval rakudo 70667a: OUTPUT«Illegal redeclaration of symbol 'A'␤current instr.: 'perl6;Perl6;Grammar;_block111' pc 31921 (src/gen/perl6-grammar.pir:174)␤»
masak ENOSUPERSEDE
pmichaud in fact, what we have mirrors S06 fairly closely
masak I guess I don't need to submit a TODO for that one.
jnthn That's...not the error I expected...
pmichaud a container can suppress flattening by having a $ sigil. That's orthogonal to the other items
masak jnthn: it thinks &supersede is a sub. 16:24
pmichaud a container can be readonly, in which case assignment is forbidden
oops, let me rephrase
a container can be a readonly reference to another container, in which case assignment is forbidden
a container can be a rw reference to another container, in which case assignment is delegated to the other container
a container can be rw in its own right, in which case it handles assignment itself 16:25
jnthn masak: oh!
pmichaud do we implement supercede yet? 16:26
masak Seems not.
jnthn pmichaud: Not really, but add_name knows what to do with it.
pmichaud then just add a declarator for 'supercede' that says "not yet implemented" :)
jnthn I expected it to whine that supercede wasn't done yet a bit further on.
add_name knows not to complain about re-decl though.
Grammar.pm:86
diakopter masak: dunno. mostly it's a server-admin kind-of-thing 16:28
pmichaud jnthn: anyway, so the things we have to manage are equivalent to "is readonly", "is rw", and "is copy"
jnthn pmichaud: Hmm.
If ou look at it sidewaysish, I guess that works :-)
pmichaud so what I'm guessing is that type-based isn't the way we want to go 16:29
jnthn (We're not doing any copying)
pmichaud "is copy" is basically the same thing as assignment
i.e., normal assignment
jnthn Hm
masak diakopter: yes. moritz_ gave me access, but I didn't add anything myself, mainly because I chickened out. don't want to break p6eval with no-one to help fix it.
pmichaud if I have
jnthn It's not implemented like that at the moment. :-)
pmichaud sub foo($x is copy) { ... }
jnthn It calls .clone :-)
pmichaud I'm not sure calling .clone will be correct, now. 16:30
it may be.
pmurias mildew: say 1
p6eval mildew: OUTPUT«Can't open perl script "mildew": No such file or directory␤»
diakopter masak: it's not ultra fragile (it's easily fixable); go ahead and experiment
pmichaud but the point is that $x ends up acting like a standalone variable, not bound to the argument in any way
in the same way that
my $a = 4; my $b = $a;
$b is a copy of $a, not bound to the $a container at all
diakopter masak: just do everything as the p6eval user in the chroot
masak aye. 16:31
diakopter see its crontab
masak aye.
diakopter: rakudo master (previously known as ng) uses a p/p1/p2 system. should the alpha branch also do something like that?
jnthn pmichaud: I could see it that way too.
pmichaud did we get rid of "is ref" ? 16:32
jnthn Yeah
well
yes
pmichaud what is it now?
jnthn But we gained \
"is parcel"
But you write a \ before, not "is parcel"
is rw implies is parcel
is parcel on its own implies "don't apply any context"
diakopter masak: actually the old master used p/p1/p2 system
and so does the new master. the old ng didn't use p/p1/p2 16:33
I think
hence the "missing ./perl6" msgs
masak ok.
oh, aha!
diakopter so if you want to clone it, sure
just... decrease the frequency of rebuilding alpha... it doesn't need to run every half hour
jnthn pmichaud: Well, s/implies/means/ on the last one. :-)
masak well, the need isn't as great, since alpha will be mostly static anyway. the crontab can... yes.
diakopter also, disable the make test upon rebuild if you would, plz 16:34
on both
masak oki
masak is a little scared, but will try
pmichaud okay, but the point of "is parcel" is that our symbol is bound directly to the argument, no reference, yes?
16:34 payload joined
masak nice change from breaking things, trying to make things work :) 16:34
jnthn pmichaud: That's pretty much what happens.
pmichaud okay 16:35
jnthn pmichaud: In fact, I think it's very literally exactly what happens. :-)
pmichaud whereas "is rw" creates an objectref ?
jnthn um
Not sure without looking at the impl.
pmichaud well, it pretty much has to be an objectref, yes?
jnthn ah, waiting on a build, can check it... 16:36
pmichaud sub foo(Int $a is rw) { ... }
jnthn we're not doing tht at the moment.
if (sig_info->flags & SIG_ELEM_IS_RW) {
/* XXX TODO Check if rw flag is set. */
if (sig_info->variable_name)
VTABLE_set_pmc_keyed_str(interp, lexpad, sig_info->variable_name, value);
}
But yes, probably should. 16:37
pmichaud well, $a has to have its own type information
jnthn Right.
pmichaud so it has to be an ObjectRef of some sort
jnthn Well, er.
pmichaud and assigning to $a performs the check but delegates to the referenced container
jnthn my Int $x; sub foo(Numeric $y is rw) { $y = 1/2; } foo($x); # gotta fail 16:38
masak diakopter: is the directory rakudo_old-master something I can use?
16:38 payload left
pmichaud right, no problem. 16:38
16:38 payload joined
jnthn I guess the delegation handls that for us. 16:38
pmichaud $y has to be smart enough to enforce its type as well as the type of the thing it references
jnthn ?
pmichaud or delegation handles it
but yes, $y can check and if okay, pass the assignment to the thing it references 16:39
jnthn What about multi fact(Int $n) { $n * fact($n - 1) } ?
recursion?
We don't want to wrap more and more of the same checks.
I guess that argues smart rather than delegation. :-)
pmichaud right, the checks can be smart
but in your example, there's also no assignment. and $n is ro :-) 16:40
we only have to be smart in the case of 'is rw'
jnthn Right.
Bad example, I shoulda just said "recursion" :-) 16:41
pmichaud right, I get the reference :)
16:41 cjk101010 left
pmichaud anyway, ObjectRef (or ObjectRef + Perl6Scalar) needs to be able to handle the cases I mentioned 16:42
read-only reference
reference with delegation (is rw)
standalone container
16:42 payload left
jnthn *nod* 16:42
I think we're arguing for a flag of some kind for sure, then. 16:43
pmichaud and I wonder if, instead of having a separate property, if it's sufficient to simply check to see if what the ObjectRef references is itself another ObjectRef
jnthn hm
Could work too maybe.
And cheap.
pmichaud if so, we have to delegate the assignment, otherwise we do the assignment ourself 16:44
where "assignment" now means "reference a value object"
jnthn I like the analog with signatures here though.
pmichaud yes
oh, and ooh! This cleans up array and list assignment a ton! 16:45
jnthn Makes me feel a bit more comfortable that it's along the right lines.
pmichaud it also fits a lot better with some of the things TimToady has been saying about binding/assignment
jnthn *nod*
pmichaud because instead of having to copy containers, I can just dereference them to get to the immutable values 16:46
big Win
jnthn Yeah 16:47
jnthn hopes this one flies :-)
pmichaud I think it will fly nicely.
need some nom, then I'll write it up
jnthn OK
I'm here for ~1.5 hours more
pmichaud okay
jnthn Then out for dinner and piva. 16:48
pmichaud so, what we end up with is:
(1) 'scalar' property suppresses flattening
(2) 'rw' property determines rw-ness
(3) ObjectRef to another ObjectRef delegates assignment (after possibly imposing more typechecks) 16:49
-end-
jnthn 3 simple rules.
lisppaste3 pausenclown pasted "error" at paste.lisp.org/display/94991
pausenclown WTF? paste.lisp.org/display/94991 16:50
masak pausenclown: you'll at least need a semicolon before 'XML::Parser::Actions.new();' 16:51
pmichaud maybe need a semi.... what masak++ said
but that still doesn't entirely explain it
masak pausenclown: the rule in Perl 6 is that a semicolon OR a newline is always needed after a closing brace.
pmichaud afk, nom
pausenclown there is a newline 16:52
copz and paste error
masak pausenclown: it works if I remove the 'grammar' line.
16:52 cdarroch joined, cdarroch left, cdarroch joined
moritz_ looks like a weird rakudobug 16:53
pausenclown well. that doesnt help much
jnthn Is this master now, or alpha from before?
16:53 uniejo joined
pausenclown i tend to attrract those as it seems 16:53
masak pausenclown: still in debug mode. hold on.
pmichaud: new master. 16:54
jnthn masak: Oh. I didn't think we'd implemented grammars yet.
That may be why.
masak it works if I remove the TOP token. 16:55
jnthn None of S05-grammar/* runs, afaik.
"works" :)
dalek kudo/master: c65c28b | (Martin Berends)++ | docs/compiler_overview.pod:
[docs/compiler_overview.pod] over 80% updated for new master (former ng)
masak rakudo: class S {}; grammar A { token x { . } }; S.new(); 16:56
p6eval rakudo 70667a: OUTPUT«Symbol '$ss_SS_S_S__S_S_s' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (compilers/pct/src/PCT/HLLCompiler.pir:101)␤»
masak o.O
there's that variable again.
jnthn ...where'd that come from?! 16:58
masak hopes it wasn't something he did on the p6eval server :/
I don't think it was, but still...
colomon I thought that variable was coming from the inline version of use Safe; or something like that? 17:00
masak it was indeed. 17:01
maybe its presence shadows the error I get locally for some reason.
pausenclown so any workaround suggestions? 17:04
masak pausenclown: seems grammars are not implemented yet.
pausenclown: workaround would be to use the January release :)
or the alpha branch. 17:05
pugs_svn r29736 | masak++ | [evalbot] added alpha target for Rakudo nostalgia
jnthn master is more rough than ready atm.
If you just want to play with Perl 6. 17:06
imo
17:06 Schwern joined
masak alpha: say q[guess this doesn't work just yet...] 17:06
hm, moritz_ usually does some manual restarting...
evalbot control restart 17:07
17:07 p6eval left, p6eval joined
masak alpha: say "How about now?" 17:07
:(
moritz_ did you svn up before restarting?
masak huh. :)
masak does that 17:08
moritz_: (of course I did, uh... what do you take me for, some kind of maroon?)
:P
evalbot control restart
17:08 p6eval left, p6eval joined
masak alpha: say "Perhaps now?" 17:09
:(
p6eval alpha 30e0ed: OUTPUT«Perhaps now?␤»
masak \o/
alpha: grammar X { token top { . } }; say "Are you the Rakudo branch I know and love?"
p6eval alpha 30e0ed: OUTPUT«Are you the Rakudo branch I know and love?␤»
masak \o/
colomon \o/
masak alpha: class S {}; grammar A { token x { . } }; S.new(); 17:10
p6eval alpha 30e0ed: ( no output )
masak swimming & 17:11
17:11 masak left
moritz_ masak++ # tuning evalbot to his needs 17:12
pausenclown alpha: class XML::Parser::Actions {}; grammar XML::Parser::Grammar { token TOP { \< \? xml } }; say XML::Parser::Grammar.parse('<?xml', :action( XML::Parser::Actions.new() )); 17:18
p6eval alpha 30e0ed: ( no output )
pausenclown where do i get the alpha branch? 17:19
jnthn If you already have a clone, just git checkout alpha 17:21
then re-configure and re-build.
pausenclown root:/home/pc/perl6/rakudo# git checkout alpha >> error: pathspec 'alpha' did not match any file(s) known to git. 17:24
im not used to git, so pls forgive mz ignorance 17:25
jnthn oh, sorry 17:27
try git checkout origin/alpha
I think that'll work
jnthn doesn't have much git fu either.
moritz_ git checkout --track -b alpha origin/alpha 17:29
jnthn ah, I guess in the event alpha gets any changes, it's worth tracking... 17:30
17:31 synth left
moritz_ -> offline 17:32
cognominal that makes it : $ git clone git://github.com/rakudo/rakudo.git rakudo-alpha 17:34
$ cd rakudo-alpha/
$ git checkout --track -b alpha origin/alpha
Branch alpha set up to track remote branch refs/remotes/origin/alpha.
Switched to a new branch "alpha"
17:44 colomon left 17:45 jferrero left
jnthn afk for a while 17:50
17:53 cognominal left 17:55 ShaneC joined
pmichaud my suggestion is for people to grab the alpha tarball rather than checkout from git 17:56
i.e., grab the latest release tarball 17:57
17:58 cognominal joined 17:59 krychu joined 18:07 Chillance joined, stephenlb joined 18:08 rv2733 joined
jnthn pmichaud: Got a few minutes before I head out for the evening; any last things? 18:08
pmichaud not off top of my head
jnthn Also, looks like I will have Rakudo hacking time tomorrow.
pmichaud sounds good
I'll keep working on assignment semantics now 18:09
then I'll look at sort
and then grammars
jnthn Not all day, but should be at least a few hours.
OK, good plan.
I'm going to wrap up some signature bits.
Will you pop binding in along the way?
Or leave that for now?
pmichaud maybe
it's not so high on my priority list 18:10
might do it while it's fresh in my head though
jnthn OK, if not, I may do it for the sig case.
Need to re-read TimToady++'s commits on that area.
It didn't really sink in the first time, but I was tired.
After that, probably I'll take on meta-model/class/role things. 18:11
Try and sort out the sits of S1[24] that we're still weak on.
*bits
pmichaud afk for a bit 18:12
18:12 Schwern left 18:13 zibri joined 18:16 pmurias left 18:18 stephenlb left 18:19 stephenlb joined
pausenclown how do i create a string when i have a unicode codepoint? 18:21
pmichaud rakudo: say "\x[ab]"; 18:28
p6eval rakudo c65c28: OUTPUT««␤»
pmichaud rakudo: say "\c[171]"; 18:29
p6eval rakudo c65c28: OUTPUT«␤»
pmichaud hmmmm
looks like \x works, not sure about \c
cognominal rakudo: say Nil.WHAT 18:35
p6eval rakudo c65c28: OUTPUT«␤»
cognominal rakudo: say "hi"
p6eval rakudo c65c28: OUTPUT«hi␤»
cognominal rakudo: say Nil
p6eval rakudo c65c28: OUTPUT«␤»
cognominal rakudo: my $a = (1, (2, (3, 4))); say $a[1]; 18:36
p6eval rakudo c65c28: OUTPUT«2␤»
18:37 rv2733 left
cognominal rakudo: my $a = (1, (2, (3, 4))); say $a[2]; 18:37
p6eval rakudo c65c28: OUTPUT«3␤»
pausenclown ok, thanks. but what if i have the number in a variable? 18:42
18:43 pausenclown left
pmichaud rakudo: say chr(171); 18:44
p6eval rakudo c65c28: OUTPUT«\xAB␤»
pmichaud uhhhhhhhh 18:45
*that's* bizarre.
oh. 18:46
looks like the I/O streams are utf8 defaulted
mberends it would really be nice to have a binary stream option as well 18:49
pmichaud *aren't 18:50
18:52 payload joined, lichtkind joined
pugs_svn r29737 | lwall++ | [pm.txt] more Pm-19 blatherations 18:53
lichtkind mberends: added to www.perlfoundation.org/perl6/index....supporters 18:54
18:55 |Jedai| joined
mberends lichtkind: oh hai. unfortunately on the wiki editing, I didn't yet get a round tuit :( 18:57
18:58 athenot left 18:59 athenot joined, athenot left 19:00 athenot joined
pugs_svn r29738 | lwall++ | [pm.txt] don't want to imply that .invoke is redispatched via method dispatch, 19:01
r29738 | so make it look more like a macro.
TimToady jnthn: ^^ the Pm-19 revisions I promised a day or so ago. 19:03
19:03 athenot left
TimToady the new section is labeled 'Update:' 19:04
pmichaud: it's okay if you look at it too. :) 19:05
19:05 uniejo left 19:07 uniejo joined 19:13 wolf2k_ubuntu left 19:15 wolf2k_ubuntu joined
lue hello all! 19:16
rakudo: say ord(0x40); 19:21
p6eval rakudo c65c28: OUTPUT«5452␤»
lue rakudo: say ord(64);
p6eval rakudo c65c28: OUTPUT«5452␤»
lue ah, I see where I went wrong
rakudo: say chr(0x40);
p6eval rakudo c65c28: OUTPUT«@␤»
19:22 MaLiLL0 joined 19:24 MaL0_ left 19:25 payload left
lue feels the breeze of people not in the room... *shiver* 19:25
PerlJam how do you feel their breeze exactly? 19:26
lue If people are in the room, they block the draft. :) 19:27
TimToady not if they're draft dodgers 19:29
19:30 athenot joined
lue Well then, how come I've never felt a breeze when people were here? 19:32
(oh wait, maybe there never was a draft ...)
TimToady insensitive to hot air?
19:33 payload joined
TimToady personally, I usually find the backlog large enough to be a pretty good windbreak 19:34
lue I'm thinking of a while ago. The switch to ng fixed the leak.
TimToady I think I have an entire cabin constructed of backlogs.
lue I think we have more backlogs than scientists have digits of pi. :D
TimToady We could maybe get ahead a little, if only someone would invent frontlogs. 19:35
lue good idea. Just tell me where to "log in" :) 19:36
TimToady go over to the log table over there... 19:37
19:37 colomon joined, MaLiLL0 left
PerlJam apparently masak has been busy 19:38
masak++
lue We make decent lumberjacks. Hey... any of you go shopping Wednesdays and have buttered scones for tea?
19:41 cdarroch left 19:43 cdarroch joined, cdarroch left, cdarroch joined
lue goodbye hello goodbye hello! *huff huff* 19:44
19:46 ignacio_ left 19:47 TimToady sets mode: +vvvv buubot dalek hugme iblechbot, TimToady sets mode: +vv ilogger2 IRSeekBot, TimToady sets mode: +vvv lisppaste3 p6eval phenny, TimToady sets mode: +v pugs_svn
lue AAAAAAAAAAAAAAAAAAAAAAH! 19:47
That came all at once!! 19:48
frettled wut?
lue all the *** TimToady stuff
TimToady just voiced 3 missing bots with a macro
lue oh. I'm fine *hyperventilation* don't worry about me.
frettled lue: May I recommend irssi? It bundles them up nicely.
PerlJam lue: do you pronounce your nick like "loo" or "loo-e" ?
lue doesn't matter. It's an acronym, actually.
PerlJam lue: for what? 19:49
TimToady 42
19:49 ash__ joined
lue Life Universe Everything 19:49
TimToady: how did you guess?
frettled TimToady: got it in 42
TimToady a good hypthalamus
PerlJam lue: TimToady is exceptionally observant :)
TimToady *hypo
PerlJam lue: he's also well-read 19:50
TimToady pity about the rest though
lue ANFSCD... can you guess that one?
Juerd That's a common acronym. 19:51
And actually that question is more of the same :)
TimToady sorry, I don't do Python.
PerlJam even I could guess that one :)
Juerd :)
lue LASER (guess that one!) :D 19:52
TimToady the S is for Shark 19:53
lue (darn it!) okay... guess this one: UNIT
Juerd It's not guessing if you know. 19:54
TimToady obviously it's the opposite of IT 19:55
lue then what *does* UNIT stand for?
TimToady dunno, I'm only good at IT
lue (Doctor Who Fans'll know) UNIT stands for...
lichtkind TORCHWOOD is better 19:56
TimToady is not a Doctor Who Fan, having a real life
lue ... UNified Intelligence Taskforce
lichtkind neither, just my brother is 19:57
PerlJam TimToady *is* Doctor Who ;)
lue NO! Say it ain't so!
TimToady but I could ask if you know what UNCLE is...
lichtkind i know a band called UNCLE
PerlJam TimToady: no, but I think that David McCallum is an integral part of what makes NCIS work
TimToady PerlJam: no, I won't be Doctor Who until 2023
well, Ilya would know what UNCLE stands for 19:58
lue UNCLE means... Undying Needs Contain Luminous Eels (?)
TimToady I think lue must be a member of THRUSH 19:59
frettled yeah
TimToady or maybe KAOS
frettled I think I have Solo's number.
TimToady all the kiddies are gonna think you mean Han 20:00
frettled Ilya was a favourite of mine, until he mysteriously disappeared, and was rarely seen again.
TimToady We've had several...interesting...Ilya's... 20:01
PerlJam I haven't heard anything about Ilya Z. since I stopped paying attention to p5p.
20:02 ignacio_ joined
lue I'm a board member of the FWAI (ask me what it means) 20:02
TimToady Fat Wookies Are Inspiring?
lue no 20:03
PerlJam I'm the founder of IMUTAS
lue FWAI stands for Fun With Acronyms International
ash__ i am the president of my local chapter of ACM...
PerlJam (I Made Up This Acronym Society)
ash__ doh, wait, thats a real group
frettled ash__: heh
TimToady a group of machinery...
ash__ but it can compute things 20:04
lue FWAI has invented the BO-AT (Buoyancy Operated Aquatic Transport)
TimToady sure, but when I google for it, I get a lot of unwanted boat references mixed in.
PerlJam lue: Phineas & Ferb?
lue yes (can't believe anyone here knew that!) 20:05
I can't remember what MOAT stood for...
PerlJam lue: I have kids that are of the appropriate ages.
lue Remember FEH?
PerlJam lue: MOAT == Metropolitan Oval Aquatic Trench 20:06
google++
frettled acronymfinder.com?
PerlJam lue: I even remember the episode. 20:07
lue ah, that's what MOAT was.
*FWAI is monitoring this channel intensely*
TimToady now wonders what a frontronym is...
PerlJam TimToady: you should know ... you invented it! 20:08
lue I think this IRC channel has encountered PINOP.
Perl Is Not Our Priority 20:09
PerlJam lue: you are mistaken.
lue: Perl is all about fun.
or is it "pun"?
one of those 20:10
lue I'm sorry, PINOFRN (Perl Is Not Our Focus Right Now)
ANFSCD... I think the core.pm > core.pir takes way to long on my poor old G3... someone should change it :) 20:16
20:18 cognominal left
PerlJam lue: patches welcome! 20:18
20:19 cognominal joined
TimToady ANFSC Diffident 20:19
lue What it does now is put all these .pm files in core.pm, and puts it in core.pir.
It should turn all those .pm files into .pir files first, then create core.pir by melding all the other .pir files. 20:20
At least then I can see some progress :) 20:21
20:28 hercynium joined 20:35 stephenlb left 20:43 cl58 joined
cl58 moritz_: ping 20:43
20:47 lue left 20:53 stephenlb joined, payload left 20:54 ezgranny420 joined 21:00 lue joined 21:01 uniejo left
lue Bleh, compiling takes a long time. 21:03
21:04 ezgranny420 left 21:05 ezgranny420 joined 21:07 ezgranny420 left 21:08 lue left 21:15 payload joined 21:16 am0c joined 21:21 lue joined, ignacio_ left
ash__ ng: my $f = 5; say $f(); # shouldn't that say Int? 21:22
hmm 21:23
rakudo: my $f = 5; say $f(); # try again?
p6eval rakudo c65c28: OUTPUT«invoke() not implemented in class 'Integer'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
ash__ there we go
$f.WHAT is Int(), so why does trying to invoke on the object say Integer doesn't have invoke? 21:24
21:26 krychu left, am0c left 21:30 nwc10 joined
nwc10 What was that yesterday about the masakbot :-) 21:30
21:31 mssm left 21:33 Psyche^ joined 21:36 Patterner left, Psyche^ is now known as Patterner 21:44 pmurias joined 21:46 jackyf left 21:48 mssm joined, gbacon joined 21:55 Su-Shee left 21:58 bluescreen left 22:04 jferrero joined 22:06 patspam joined 22:07 wknight8111 joined 22:10 shillo joined, shillo left 22:14 shillo joined, cl58 left 22:18 shillo left, Chillance left 22:20 athenot_ joined, athenot left, athenot_ is now known as athenot
colomon rakudo 22:24
rakudo: if " fdfs " ~~ /\s*(\S.*\S)\s*/ { say "that worked?"; say $0 } 22:26
p6eval rakudo c65c28: OUTPUT«that worked?␤fdfs␤»
colomon rakudo: if " fdfs " ~~ /^\s*(\S.*\S)\s*$/ { say "that worked?"; say $0 }
p6eval rakudo c65c28: OUTPUT«that worked?␤fdfs␤»
22:27 nwc10 left
Tene colomon: what surprises you about that? 22:27
colomon trim has a similar regex which fails. 22:28
I was thinking the problem was that bits of the regex grammar hadn't been implemented in master. 22:29
22:29 snarkyboojum joined
colomon now I think I just borked the regex I was using. 22:29
the one above appears to work fine.
Tene the one above will fail for " a " 22:30
colomon you're quite right!
apparently trim.t doesn't have nearly enough tests yet. :) 22:31
Tene Occasionally. :)
22:31 ash__ left
colomon Tene++ 22:31
22:33 athenot_ joined 22:34 supernovus joined
supernovus Just a small question, I notice blizkost hasn't been touched in a few months, how much is left to do in it before we can do: 22:37
22:37 athenot left, athenot_ is now known as athenot
pmichaud /^\s*(.*?)\s*$/ should work :-) 22:37
/^\s*(.*?)\s*$/ should work :-)
colomon pmichaud: Duh. Don't know why I didn't think of that. 22:38
Actually, I was just reimplementing it in terms of the proposed trim_start and trim_end.
pmichaud slightly more efficient might be /^\s*:(.*?)\s*:$/
aesop dear god
do i even want to read that
Tene aesop: eh? read what?
pmichaud / ^ \s*: (.*?) \s*: $ / 22:39
aesop there thats easier
TimToady just put :r on it
.*? overrides ratchet
colomon What is \s*: ?
pmichaud TimToady: yes, but there's still an assumed cut after the subcapture, I think
aesop any number of spaces at the beginning followed by ?
supernovus use YAML::XS:from<perl5>; # last time I tried blizkost, it certainly did not like XS modules. 22:40
pmichaud \s*: is greedy whitespace, no backtracking
TimToady use <( and )> instead?
pmichaud rakudo/pge/nqp don't have <( and )> yet, although those might help :-)
colomon pmichaud: oooooo. but won't that screw up the second one?
pmichaud colomon: shouldn't 22:41
colomon Anyway, I've reimplemented trim in terms of the proposed trim_start and trim_end. 22:43
I hate those names, anyone have a suggestion of something better?
before I push...
pmurias colomon: trim_front? 22:44
colomon trim-beginning?
Tene pre-trim and post-trim? 22:45
trim and mirt?
pmurias trim-leading
trim-trailing 22:46
Tene trim-except-not-the-end and trim-except-not-the-start?
colomon oooo, I like leading and trailing.
Is there a pref for dashes over underscores in the spec? 22:48
Tene I strongly prefer dashes. 22:49
I hate typing underscores. :(
pmurias colomon: an ack search seems to imply that 22:51
Tene: that's not really a valid reason ;) 22:52
s/reason/argument/
Tene pmurias: invalid argument for what, exactly? All I was supporting there was my preference. 22:53
and "I hate typing underscores" is certainly a valid reason to prefer typing dashes over underscores, given that I don't hate typing dashes.
PerlJam hates underscores too
dashes++ :)
Tene I'm also comfortable trying to subvert the spec for my own benefit, fwiw. 22:54
TimToady well, I'd probably just do btrim and etrim
pmurias :(
supernovus crosses fingers, about to build the new 'master'...
pmurias TimToady: that was a joke? 22:55
TimToady not at all
PerlJam didn't some flavor of BASIC have left(), right(), and mid() or were those just substr() variants?
Tene is that abbreviated back-trim and entrance-trim?
PerlJam for some reason the "trim" neuron twiddles that partial memory 22:56
pmurias a Perl 6 ack would be really great 22:57
pugs_svn r29739 | colomon++ | [t/spec] Add tests with just a single non-space character, change trim_start to trim-leading and trim_end to trim-trailing, and unfudge those tests for Rakudo. 22:58
colomon Just realized I never ran spectest on my last commit there, but I don't see how fixing trim and adding two new functions could break anything.... 22:59
dalek kudo/master: 8564837 | (Solomon Foster)++ | src/core/Any-str.pm:
Add trim-leading and trim-trailing, and reimplement trim in terms of them.
kudo/master: 4246be2 | (Solomon Foster)++ | t/spectest.data:
Turn on trim.t.
PerlJam colomon: that's why you run spectest ... so that you can see how those things could break something :)
colomon :) 23:00
pmichaud better is /^\s*:(.*)$/
but not a huge difference :-) 23:01
23:01 payload left
colomon And the same for trim-trailing, or no? 23:01
23:01 payload joined
colomon Ah, no, obviously can't get rid of the \S in that one. 23:01
spectest was fine, BTW. 23:02
pmichaud as it exists now, trim-trailing will fail on a string of all whitespace
colomon pmichaud: ooo, good, more tests needed.
pmichaud same for trim-leading as exists now
pmurias a trim($foo) modifies $foo? 23:04
PerlJam no.
dalek kudo/master: cfe8cb3 | chromatic++ | (7 files):
Merge branch 'master' of [email@hidden.address]
23:05
kudo/master: 1c51479 | chromatic++ | build/Makefile.in:
[build] Fixed PMC include path when building bind.c.
kudo/master: e5f4b23 | chromatic++ | src/binder/bind.c:
[binder] Fixed compiler warnings.
kudo/master: 448a825 | chromatic++ | src/pmc/perl6multisub.pmc:
[PMC] Fixed compiler warnings.
kudo/master: ee1e518 | chromatic++ | (2 files):
Merge branch 'master' of [email@hidden.address]
pmurias PerlJam: thanks,
23:06 dolmen joined
supernovus Oh dear... so far, PSpec + rakudo new master = EPIC FAIL! 23:07
23:07 jferrero left
cognominal PSpec? 23:07
23:07 athenot left, chromatic joined
chromatic Hm, I don't know if cfe8cb3 should have gone to master; feel free to revert as necessary. 23:08
phenny chromatic: 01 Jan 17:02Z <diakopter> tell chromatic I'll have you know I'm *again* switching back to JavaScript :/ sigh. .words.eat Compiling to JS now, though, now that I know how to write an emitter builder.
supernovus cognominal: a fun little project, a semi-serious/semi-humourous port of RSpec and Cucumber to Perl 6.
chromatic Likewise ee1e518.
23:10 cotto_work joined
colomon chromatic: what do you think the problem with them is? 23:10
chromatic I don't know; I don't know where they came from or if they overwrote other changes. 23:11
pmichaud were you perhaps building from the old master?
lue Wow. I left this thing alone for about 2 hours and it STILL didn't turn core.pm into core.pir !
23:11 payload left 23:12 payload joined
chromatic pmichaud, that may have been it. 23:12
pmichaud checking spectest now 23:13
chromatic The only interesting changes are the warnings cleanups.
My most recent interesting pull before that was for the December release.
pmichaud yes, we switch branches yesterday
*switched
so I'm thinking perhaps your push has folded in stuff from the old master 23:14
chromatic Sorry about that.
pmichaud we'll know shortly :)
so far everything seems to be building okay, which is a very good sign :) 23:15
chromatic Mostly it looked like doc changes and spectest changes.
lue Let me know what a finished build looks like. I'll never know. :/
chromatic lue, I have a couple of patches on a Parrot branch that speed up building.
No huge changes, but a little bit helps.
23:16 old_gray_bear joined
supernovus bah, and apparently, I can't build the 'alpha' branch even with the version of parrot it recommends... /opt/perl6/bin/parrot -o perl6_s1.pbc perl6.pir make: *** [perl6_s1.pbc] Segmentation fault 23:16
lue so, how would I get those patches? 23:18
pmichaud looks like lots of spectest failures :-|
chromatic I'll check them in after the Parrot release tomorrow.
pmichaud I'm guessing the Makefile.in patch is the culprit 23:19
pmurias chromatic: i looked at the modern perl book, one thought about the "how do we know that any random CPAN distribution is useable and usefull" is that not all CPAN distributions are usefull
23:20 jferrero joined
chromatic I can't see how the Makefile patch would hurt. 23:20
pmichaud not the Makefile patch itself, but the fact that the branch merges pulled in the old makefile from master
chromatic Oh. Yes, that would suck.
pmichaud so now ng is building using the wrong makefile.
crud. 23:21
chromatic I don't see that in the diffs. 23:22
pmichaud well, I'm looking at the Makefile now, and it's definitely pulling in the wrong version of spectests
23:22 athenot joined
lue chromatic: how would I get those parrot speedup patches? Would running Configure.pl get them? 23:23
23:23 payload left
pmichaud I agree it's not evident from the diffs. 23:23
chromatic How about reverting ee1e518 and cfe8cb3? Does that do it? 23:24
pmichaud fatal: Commit ee1e518df5f981621e287cd08f3d1d153a6723ad is a merge but no -m option was given. 23:25
I'm not sure how to do that revert.
23:25 cotto_work left 23:27 explorer__ joined
colomon has a patch to fix trim-leading and trim-trailing, but doesn't want to touch github until this stuff is straightened out... 23:27
23:27 jferrero left 23:28 iblechbot left
chromatic nopaste? 23:28
lue is wanting to know how to get chromatic's compilation speed-up patches 23:29
chromatic one moment, lue
lue, see nopaste.snit.ch/19628 -- apply that patch to Parrot. 23:30
lue allrighty
supernovus rakudo: augment class Int { method times (&code) { for ^self { code() } } }; 2.times: { say "hello" }
p6eval rakudo 4246be: OUTPUT«Method 'times' not found for invocant of class 'Integer'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
chromatic www.kernel.org/pub/software/scm/git...-merge.txt 23:31
lue notes he has never had to apply a patch. He also notes he is a hopless beginner :D 23:33
supernovus PSpec is going to need some reworking, as it currently is using "class Blah is also" in a few places. But I find that error to be interesting. The new master see's 2 as an Integer not an Int, and yet:
rakudo: say 2.WHAT
p6eval rakudo 4246be: OUTPUT«Int()␤» 23:34
23:34 nihiliad left
colomon lue: hopless? you have no beer? 23:34
supernovus: it lies 23:35
rakudo: say PARROT(2)
p6eval rakudo ee1e51: OUTPUT«Integer␤»
lue colomon: ha ha.
oops hopeless
supernovus Hmm, on the old master, this worked: class Int is also { method times (&code) { for ^self { code() } } }; 2.times: { say "hello" } 23:36
Tene supernovus: "is also" is deprecated. 23:37
23:37 cotto_work joined
supernovus Tene: I know, but as shown above, if you use augment class Int { ... above code here ... }; 2.times: { say "hello" } it bails out claiming that the Integer class (not Int) has no method called "times". 23:38
Tene ew ew I've always hated that stuff in ruby. ><
(yes, I know, not helpful) 23:39
lue wishes to know how to apply chromatic's patch (he is a HOPELESS beginner)
supernovus I'm thinking something fairly major has changed in the way augmenting existing classes works. 23:40
rakudo: augment class Int { method times (&code) { for ^self { code() } } }; 2.Int.times: { say "hello" }
p6eval rakudo ee1e51: OUTPUT«Method 'times' not found for invocant of class 'Integer'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
TimToady rakudo: say ^Int.WHAT 23:42
p6eval rakudo ee1e51: OUTPUT«Use of type object as value␤current instr.: 'perl6;Perl6Exception;throw' pc 13865 (src/builtins/Seq.pir:28)␤»
Tene ^Int? 23:43
std: say ^Int.WHAT
p6eval std 29739: OUTPUT«ok 00:01 108m␤»
supernovus rakudo: augment class Str { method woot { say "woot" } }; "hello".woot;
p6eval rakudo ee1e51: OUTPUT«Method 'woot' not found for invocant of class 'Perl6Str'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
colomon lue: you want the patch program. err... you're on linux, right? 23:44
Tene supernovus: please try it with custom classes not related to native types to verify whether the problem is with 'augment' or with the native type mapping.
supernovus Tene: okay, will do. 23:45
lue colomon, I am.
23:45 dondalin joined
Tene rakudo: class A { method foo { say "foo" } }; my A $a .= new(); augment class A { method bar { say "bar" } }; $a.bar(); 23:45
p6eval rakudo ee1e51: OUTPUT«bar␤»
Tene see? works fine.
rakudo: class A { method foo { say "foo" } }; my A $a .= new(); { augment class A { method bar { say "bar" } }; } $a.bar(); 23:46
colomon lue: grab the text from the patch, put it in a file named chromatic.patch (or something like that), then cd parrot and say
p6eval rakudo ee1e51: OUTPUT«Confused at line 11, near "{ augment "␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
colomon lue: patch -p0 <chromatic.patch
Tene rakudo: class A { method foo { say "foo" } }; my A $a .= new(); if 1 { augment class A { method bar { say "bar" } }; } $a.bar();
supernovus yeah, I tried augmenting a custom class and it works fine.
p6eval rakudo ee1e51: OUTPUT«Confused at line 11, near "if 1 { aug"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
lue colomon, will do.
Tene rakudo: class A { method foo { say "foo" } }; my A $a .= new(); if 1 { augment class A { method bar { say "bar" } }; }; $a.bar();
p6eval rakudo ee1e51: OUTPUT«bar␤»
Tene So it's not properly lexically scoped yet, then.
TimToady what's lexical scoped about augment? 23:47
it modifies something that already exists
Tene TimToady: Is augment not lexically scoped?
TimToady nope
it's for monkey patching 23:48
Tene Is there a lexically-scoped version?
TimToady my class Foo is OUTER::Foo {...}
Tene Okay. Thanks.
23:49 dondalin left
lue patch applied, fingers crossed. 23:53
23:54 payload joined
colomon lue: did patch say that the patch worked? 23:57
23:59 hudnix joined