»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:02 alvis` left, yarp left 00:06 lichtkind left 00:11 larks left 00:14 cggoebel left
pmichaud Rakudo star released. 00:19
00:19 cggoebel joined
sorear Sat Sep 1 00:19:37 UTC 2012 :D 00:19
pmichaud++
colomon pmichaud++ 00:20
00:27 larks joined 00:34 cggoebel left 00:40 cggoebel joined 00:47 wooden left
pmichaud I actually had the release done before 00:00; just didn't mention it here until 00:19 00:49
I was busy testing the .msi
00:50 mucker joined, MikeFair joined
MikeFair Hello #perl6 00:51
00:51 havenn joined
TimToady o/ 00:51
00:52 PacoAir left
sorear Hello MikeFair 00:53
MikeFair So I think I discovered something for my self today 00:54
It's something pretty basic to most of you I'm sure, but I think I discovered that the named matches from Grammar.pm become function calls not only in Actions.pm when a match is made, but also in Grammar.pm to be evaluated 00:55
sorear yes. 00:56
MikeFair So I was wondering, are the "rule" and "token" lines the same things as functions? I mean could I put any kind of code in there that results in the right return response? 00:57
sorear Yes.
MikeFair So is the response an array or a hash of strings? 00:58
sorear n: grammar G { method foo { return self.cursor(3); } ; token TOP { <.foo> abc } }; say G.parse('123abc')
p6eval niecza v21-1-ga8aa70b: OUTPUT«#<match from(0) to(6) text(123abc) pos([].list) named({}.hash)>␤»
sorear n: grammar G { method foo { return self.cursor(3); } ; token TOP { <.foo> abc } }; say G.parse('1234abc')
p6eval niecza v21-1-ga8aa70b: OUTPUT«Match()␤»
sorear MikeFair: in Niecza the expected response is a single Cursor/Match object or a (possibly lazy) list thereof 00:59
MikeFair stares at self.cursor(3) and tries to interpret it. 01:00
sorear Cursors are a little bit lighter but are only useful with non-capturing forms
self.cursor(3) creates a clone of the current Cursor object and sets its position to 3
the API of cursor objects is not defined by the spec, Rakudo and Niecza do things differently 01:01
MikeFair So what did it match? The third position of the cursor clone?
01:02 havenn left
sorear It didn't "match" anything, it caused <TOP> to skip to character #3 01:02
MikeFair So "self" contains a cursor that was automagically passed to method "foo", what's in $_? 01:03
or @_ more specifically --- 01:04
MikeFair goes to his own command line. :) 01:05
bbiaw 01:09
flussence has run() changed in rakudo the last few months? I'm trying to get some old code working and every run returns exit code 255... 01:11
oh, it has. Duh. 01:13
01:13 spider-mario left 01:14 MikeFair left, MikeFair joined
flussence now I'm stuck. MAIN(*@slurpy) doesn't seem to work... 01:31
01:32 thou left
japhb flussence, can you gist a golfed version of the problem? 01:34
flussence no need, it'll fit here 01:35
sub MAIN(Bool :$switch, *@slurpy) {}; # perl6 test.p6 --something
outputs the default built in help
changing it to *% doesn't work either :(
01:52 FROGGS_ joined 01:56 FROGGS left 02:22 Circlepuller joined
japhb flussence, sorry that I got pulled away right after my last message; looking now 02:22
flussence, switches need to be before positionals on the command line 02:23
And of course the name of the switch and the named argument need to match. :-)
02:24 orafu left, Circlepuller_ left, orafu joined
flussence how do I get `perl6 test.p6 --switch --something` to work? 02:25
japhb What are you expecting to show up in the slurpy if you only give it options? 02:26
(named options and slurpy args will be handled separately)
Now, with the MAIN you showed above, I'd expect 02:27
`perl6 test.p6 --switch something some-other-thing stuff` to work
flussence let me rephrase - how do I get cmdline params that aren't hardcoded in the signature to show up in a *%/*@ variable?
japhb It sounds like you want both *% and *@ -- or to just process the @*ARGS yourself 02:28
FWIW, the parser is in src/core/Main.pm
02:28 Circlepuller_ joined 02:29 Circlepuller left
japhb flussence, look for 'sub process-cmd-args' in that file 02:30
flussence looks like it should work with a *%var, but it isn't... ends up at line 145 02:34
japhb hmmm 02:35
Oh now that's interesting 02:36
Ah. It appears that at some point someone added the has-unexpected-named-arguments filter, and that function doesn't notice slurpy args 02:39
OK, give me a few minutes to make the change and rebuild, and see if it fixes it.
02:40 immortal joined, immortal left, immortal joined 02:41 erkan left
japhb Man I want a faster build box. :-/ 02:44
02:48 _jaldhar joined 02:55 cggoebel left 03:00 erkan joined, erkan left, erkan joined, immortal left, cggoebel joined
sorear MikeFair: there are no other arguments besides 'self'. 03:00
dalek kudo/nom: b8c0683 | (Geoffrey Broadwell)++ | src/core/Main.pm:
Fix has-unexpected-named-arguments() to notice that named arguments cannot be unexpected if there is a slurpy named parameter
03:04
japhb flussence, try that ^^
03:04 _jaldhar is now known as jaldhar
flussence compiles 03:04
03:05 Circlepuller joined 03:07 Circlepuller_ left 03:08 jaldhar left, jaldhar joined 03:14 Circlepuller_ joined, Circlepuller left
flussence it works \o/ 03:16
japhb++
03:17 jrockway joined
japhb excellent! 03:18
japhb wonders why has-unexpected-named-arguments was added in the first place. Perhaps trying to work around a limitation in the candidates-matching API? 03:19
03:19 cggoebel left
flussence it looks like without it the code would spit out a missing multi candidate error instead of &USAGE 03:21
03:22 jaldhar left 03:24 cggoebel joined 03:25 jaldhar joined 03:29 cggoebel left 03:31 mucker left 03:32 tokuhiro_ joined
japhb flussence: Hmmm. I know that it worked without it when I initially wrote that code. :-) 03:44
04:00 kaare_ joined 04:06 replore joined 04:12 tokuhiro_ left 04:18 replore left 04:19 xinming_ joined 04:22 xinming left 04:23 replore joined 04:51 replore left 04:57 crab2313 joined 05:08 BlueT_ left, BlueT_ joined 05:21 skids left
MikeFair sorear: Thanks for the "self is the only argument" comment 05:24
So in a grammar when calling a function to make a match, can I backtrack to find a match?
Take this: I want to match a block by the word "end" with optional tags 05:26
like this: [someword] stuffgoeshere end [someword]?
the first someword is option too 05:27
stuffgoeshere <statementList> 05:28
05:28 crab2313 left
MikeFair So my initial thoughts are that my Grammar would be rule findBlock { end <someword> } 05:31
method <someword> <---- Backtrack to see if I can find the matching occurence of someword 05:32
Otherwise it's an anonymous block
05:36 replore_ joined 05:42 stopbit joined
moritz \o 05:45
sorear MikeFair: I don't completely understand you 05:49
but I will say: token element { '<' (\w+) '>' <element>* '</' $0 '>' }
MikeFair Right, the <> are to call the "keywords" function 05:51
or if not an exiting keyword to add it to the existing set of keywords 05:52
existing not exiting
if something then
statements
end if
<if>
sorear still not quite following 05:53
MikeFair Well if .... end if is a block
repeat ... end repeat is the same
anyword ... end anyword creates a new kind of block called "anyword" that will be added by the end user at runtime 05:54
The end user will publish a function called "anyword" that will get called then 05:55
sorear role userblock { <ident> <block> 'end' $<ident> }
couldn't be simpler
s/role/rule/ 05:56
MikeFair Do I need to distinguish userblock from <block>
is it ok to be recursive
So that does the match, but how do I turn "<ident>" into a function call with the value of <ident> 05:57
I assume it's { <bock_id> <block> 'end $<block_id> } token block_id { <ident> } <--- Do something else if this matches? 05:59
And technically <ident> is optional, but if present must be evenly paired ( I know theres a rule that makes this easy I just haven't mastered regexes beyond relatively simple pattern testing ) 06:01
MikeFair just stares in awe and wonder for a moment at just how amazing that little but of text is. 06:05
06:12 replore_ left 06:17 marmay joined 06:22 tokuhiro_ joined 06:35 xinming_ left 06:39 wamba joined
MikeFair Is the Perl6 HOW concept a difficult things to implement? It's EXACTLY how I'd like types in safire to work 06:41
How much of that is Rakudo specific code versus Parrot's PMC concept 06:42
moritz it doesn't use PMCs much at all 06:46
basically only as the interface to the garbage collector
src/Perl6/Metamodel/ has most of the interesting bits 06:47
MikeFair I'm almost of the mind that I want to write my compiler/interpretter in Perl6 and not Parrot.... 06:49
My language has almsot all the exact same semantics, just a different syntax for it 06:50
sorear MikeFair: if you target parrot it will only run on the parrot VM, if you target perl 6 it will be more flexible 06:54
MikeFair nods. 06:55
Honestly it seems I'm going to be redoing a lot of the same work perl6 has already worked out, like the HOW concept -- it's what I wouldn't I just didn't exactly know how to describe it yet 06:56
s/wouldn't/wanted
While I haven't examined them at all yet, the name Role could imply a couple of the other concepts I was wanting to try and create 06:57
07:01 fgomez left
MikeFair Will this match what I think it will: 07:03
rule import { <start_import> <block_id> <block> [. \n <stop_import> $<block_id> ]? }
sorear i'm curious what you intend the . to match there 07:05
MikeFair look for <start_import> match followed by a <block_id> match followed by a block, followed by an optional at least one newline with a <stop_using> and corresponding $<block_id>, but do not consume the stop using line
07:05 fgomez joined
MikeFair The . is supposed to be the "don't consume the stuff matched in this part" 07:05
sorear ...no. 07:06
moritz no
it means "don't record the match in $/"
sorear the . means "match and discard any single character"
MikeFair Does . always mean that but (.) means record?
or is record and save as an array element different things 07:07
moritz oh, /me ws in the wrong context 07:08
sorear MikeFair: /<.foo>/ /./ 1.0 $foo.bar $.quux 2 .. 5 the . means many different things in Perl 6 07:10
07:11 Entonian joined, Entonian left
MikeFair hehe -- point taken 07:11
MikeFair reads through "perlreintro" again. :)
sorear you're confusing the <.foo> period
MikeFair nods. 07:12
sorear which means "don't create $<foo>"
MikeFair yep sure was
OHHHH!!
sorear if you don't inspect the resulting Match object, <foo> and <.foo> have identical behavior
MikeFair nods.
yep I can see that
sorear we use <.ws> because $<ws> values are an extravagant waste of memory
there are a billion of them and we don't need them
07:13 GlitchMr joined
MikeFair AND it looks like [^^ <stop_import> $<block_id> ]? is a cleaner way to say what I meant anyway 07:13
sorear I think what you meant was <?before ^^ <stop_import> $<block_id> > 07:14
MikeFair Well except for the "do not consume" part
sorear <?before STUFF> means "check that STUFF matches, but don't consume it
"
MikeFair ahh
sorear note that <?before [STUFF]? > is useless. can you guess why?
MikeFair Well it's an empty match 07:15
before nothing is always true
sorear close... can you tell me what [STUFF]? means?
MikeFair Well in perl5 it was S | T | U | F | F, but the [] I think now means match this whole block of 'STUFF' but as the ? indicates, optionally 07:17
whole block = the following specific characters in the order they appear
at least in this case, but could really be any regex 07:18
07:19 marmay left
MikeFair invents reading <?before as "the following regex comes before this regex" 07:19
GlitchMr perl6: print so 'abc' ~~ /:iabc/ 07:21
p6eval niecza v21-1-ga8aa70b: OUTPUT«===SORRY!===␤␤Unrecognized regex modifier :iabc at /tmp/9xP9ojlhnt line 1:␤------> print so 'abc' ~~ /:iabc⏏/␤␤Action method mod_internal:oops not yet implemented at /tmp/9xP9ojlhnt line 1:␤------> print so 'abc' ~~…
..rakudo b8c068: OUTPUT«True»
GlitchMr Is it another Rakudo bug?
sorear yes
MikeFair: yes
MikeFair: so [foo]? isn't necessarily an empty match
it first tries foo, and if that doesn't match, it matches nothing 07:22
07:22 awfabian joined
sorear perl 6 regular expressions are very operational (except when they aren't) 07:22
MikeFair sorear: So my question then is would <?before <stop_import $<block_id> | $ > be more what I want?
sorear: hehe
sorear MikeFair: more what you want yeah I think 07:23
MikeFair sorear: (with the ^^ in the ?before clause )
sorear MikeFair: why do you have the $ case ?
MikeFair end of file / "string"
sorear MikeFair: also consider the case of begin foo ... end foobar
MikeFair Well this case is a bit different 07:24
sorear well, I guess since you're using a rule it's really $<block_id><.ws>
MikeFair <stop_import> is an optional enclosing line
sorear and there's no ws after foo in foobar
MikeFair So I want to match <start_import> to EOF, unless there's a <stop_import> then stop there, but don't capture it so I can use the <stop_import> Action function to close the block 07:25
sorear the word you want is "consume" 07:26
MikeFair so right
sorear "capture" refers to creating the $<stop_import> variable
MikeFair nods
thanks for keeping me honest! :)
sorear occasionally useful is that <?before captures without consuming 07:27
<?before <foo> > # $<foo> is now valid, even though it's not part of the matched text
MikeFair Yeah, I can see there's a few places I might need that behavior
07:27 tokuhiro_ left 07:28 tokuhiro_ joined
MikeFair What does the # do? or # a literal 07:28
GlitchMr # is comment
MikeFair So that will capture foo without consuming the matched <foo>, I see it, though it seems more like an exploited side effect than a by design feature 07:30
GlitchMr But it sort of makes sense 07:31
MikeFair So if I wanted the consumption to stop at <stop_import> $<block_id> or consume to the end, what would I use?
OR, will it call everything in order..... 07:32
So on a successful match, it will first call <start_import> then call everything that happens in <block> then call <stop_import> 07:33
so I can go ahead and consume it right now and everything will be fine
moritz phenny: tell jnthn all spectests pass on rakudo/nqpqast 07:34
phenny moritz: I'll pass that on when jnthn is around.
07:35 SamuraiJack joined 07:36 am0c left
GlitchMr perl6: say $*EXECUTABLE_NAME 07:37
p6eval niecza v21-1-ga8aa70b: OUTPUT«/home/p6eval/niecza/run/Niecza.exe␤»
..rakudo b8c068: OUTPUT«./nom-inst/bin/perl6␤»
GlitchMr ok
MikeFair ok and should I replace my token ws override method with <.ws>?
GlitchMr So, Niecza is in this directory
MikeFair hmm, that won't work 07:38
MikeFair wonders if there's a way to redefine the "rule" to use <.ws> instead of <ws> 07:39
sorear huh? 07:40
GlitchMr So probably I can do something like alias niecza='env PATH=/home/p6eval/niecza/run /home/p6eval/niecza/run/Niecza.exe'
sorear "rule" always uses <.ws>
GlitchMr: you don't evn need the PATH setting, alias niecza=/path/to/Niecza.exe will be enough 07:41
(if you have binfmt_misc, anyway)
MikeFair sorear: ok thanks, then why did my whitespace usage seem to raise a red flag? 07:42
sorear what red flag?
GlitchMr oh nice
It seems to work. I find it weird that it didn't worked on my PC 07:43
sorear Not all Linux systems can just run "/path/to/Niecza.exe myfile.p6" 07:44
GlitchMr What is binfmt_misc anyways?
Kernel module?
sorear it depends on the availability of the "binfmt_misc" kernel module which recognizes CLR executables and redirects them to Mono
GlitchMr Well, I can do ./Niecza.exe 07:45
sorear also you need to have binfmt_misc configured
ok, then you have that set up
GlitchMr oh, it works
glitchmr@strawberry ~> git/niecza/run/Niecza.exe
niecza>
It's probably a good thing
sorear so, what doesn't work and how does it fail?
sleep& 08:01
08:04 birdwindupbird joined 08:19 Psyche^ joined 08:23 Patterner left, Psyche^ is now known as Patterner 08:26 awfabian left 08:38 drbean left 08:41 replore joined 08:45 replore left
GlitchMr sorear: it wasn't working before... but it seems that newest Niecza works 08:52
It made error messages 08:54
jnthn morning o/ 09:02
phenny jnthn: 07:34Z <moritz> tell jnthn all spectests pass on rakudo/nqpqast
jnthn moritz: Great, thanks. 09:05
A modules test run would be awesome, whenever somebody can get to it :)
09:18 havenn joined 09:31 havenn left 09:35 wamba left 09:54 PacoAir joined 10:15 wamba joined, wamba left 10:20 snearch joined 10:30 spider-mario joined, wamba joined 10:31 snearch left, wamba left
dalek p/toqast: 8b9e991 | jnthn++ | src/ (4 files):
Optimize away control exception handlers in while/unit/repeat loops that don't need them.
10:33
p/toqast: 794021e | jnthn++ | src/ (3 files):
Optimize away unrequired control exception handlers in for loops.
jnthn er, *until
spider-mario hi 10:34
10:35 wamba joined
spider-mario I’m reading the R* 2012.08 announcement and I think there is a <…> that has not been properly escaped 10:35
“Leading whitespace in rules and under :sigspace will no longer be converted to <.ws> . For existing regexes that expect this conversion, add a in front of leading whitespace to make it meta again.”
“add a in front”
the HTML code of the page contains <?> 10:36
10:36 MayDaniel joined
spider-mario it should probably have been &lt;?&gt; 10:36
10:44 snearch joined
GlitchMr niecza> use Threads 10:45
Potential difficulties:
Unsupported use of \ with sigil; nowadays please use \ without sigil at /home/p6eval/niecza/lib/Threads.pm6 line 161:
------> sub infix:« <== »(\$output⏏, @input) is Niecza::absprec<f=> is expo
I'm not sure, but importing module which is part of Niecza shouldn't make warnings?
10:56 immortal joined, erkan left, immortal left, immortal joined
dalek p: a6b22f6 | (Elizabeth Mattijsen)++ | / (3 files):
Eradicate pir::chopn__Ssi from source, replace by nqp::substring/nqp::chars
11:01
p: 77c5c40 | (Elizabeth Mattijsen)++ | / (2 files):
Eradicated pir::push__vPi from source, replaced by nqp::push_i
11:11
p: 8086f7f | (Elizabeth Mattijsen)++ | / (2 files):
Eradciated pir::setattribute__vppsp, replaced by nqp::bindattr
11:16
colomon Is that Liz? 11:24
lizmat yes 11:25
this is some of the grunt work jnthn and pm though I could do to get started
colomon lizmat++
jnthn yay :) 11:28
lizmat please note that last 2 commits were for commented out code already 11:30
but I thought I do them nonetheless for consistency / future uncommenting
11:32 xinming joined
dalek p: 994418f | (Elizabeth Mattijsen)++ | / (2 files):
Eradicated pir::getattribute__(ppp|PPP)s, replaced by nqp::getattr
11:32
lizmat another comment only change 11:33
moritz comments also need maintenance 11:35
GlitchMr perl6: my &reval = &eval; { my $a = "a"; my $b = "b"; print eval '$a'; print reval '$b' }
p6eval niecza v21-1-ga8aa70b: OUTPUT«Potential difficulties:␤ $a is declared but not used at /tmp/f1g12_4_lR line 1:␤------> my &reval = &eval; { my ⏏$a = "a"; my $b = "b"; print eval '$a'; ␤ $b is declared but not used at /tmp/f1g12_4_lR line 1:␤------> my &reval = &…
..rakudo b8c068: OUTPUT«ab»
GlitchMr n: my &reval = &eval; { my $a = "a"; my $b = "b"; print eval '$a'; print reval '$b' } # OK not used 11:36
p6eval niecza v21-1-ga8aa70b: OUTPUT«Potential difficulties:␤ $a is declared but not used at /tmp/N9iyomeggJ line 1:␤------> my &reval = &eval; { my ⏏$a = "a"; my $b = "b"; print eval '$a'; ␤ $b is declared but not used at /tmp/N9iyomeggJ line 1:␤------> my &reval = &…
GlitchMr n: my &reval = &eval; { my $a = "a"; my $b = "b"; $a; $b; print eval '$a'; print reval '$b' } 11:37
p6eval niecza v21-1-ga8aa70b: OUTPUT«ab»
11:37 snearch left
lizmat perl6: my $a= "a"; print eval '$a' 11:37
p6eval niecza v21-1-ga8aa70b: OUTPUT«Potential difficulties:␤ $a is declared but not used at /tmp/FS5V9jsqIk line 1:␤------> my ⏏$a= "a"; print eval '$a'␤␤a»
..rakudo b8c068: OUTPUT«a»
GlitchMr declared but not used but used
lizmat eval being runtime?
buubot_backup lizmat: ERROR: Search pattern not terminated or ternary operator parsed as search pattern at (eval 20) line 1. 11:38
11:38 snearch joined
moritz rakudo simply never warns about unused variables 11:38
lizmat: correct
GlitchMr But well, when you have eval, you cannot expect anything
dalek p: 8681f37 | (Elizabeth Mattijsen)++ | / (2 files):
Eradicated pir::set_who__vPP, replaced by nqp::setwho
11:39
GlitchMr perl6: { my $val = 42; sub reval { eval '$val' } }; say reval
p6eval niecza v21-1-ga8aa70b: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'reval' used at line 1␤␤Potential difficulties:␤ $val is declared but not used at /tmp/wRZ1qk2kh2 line 1:␤------> { my ⏏$val = 42; sub reval { eval '$val' } }; ␤ &reval is declared bu…
..rakudo b8c068: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&reval' called (line 1)␤»
GlitchMr perl6: sub reval { state $val = 42; eval '$val' }; say reval 11:40
p6eval niecza v21-1-ga8aa70b: OUTPUT«Potential difficulties:␤ $val is declared but not used at /tmp/I3Xe_9p2Ox line 1:␤------> sub reval { state ⏏$val = 42; eval '$val' }; say reval␤␤42␤»
..rakudo b8c068: OUTPUT«42␤»
GlitchMr eval: use v5.010; sub reval { state $val = 42; eval '$val' }; say reval
buubot_backup GlitchMr: 42 1
GlitchMr ok
eval: use v5.010; { my $val = 42; sub reval { eval '$val' } }; say reval
buubot_backup GlitchMr: 1
GlitchMr eval: use v5.010; { my $val = 42; sub reval { $val; eval '$val' } }; say reval 11:41
buubot_backup GlitchMr: 42 1
lizmat $ perl -wE 'my $c= "c"; say eval q($c)'
c
seems not to warn in Perl 5 either
GlitchMr Lexical variables never warn in Perl 5 11:42
It's unimplemented feature as far I know
sergot hi! o/ 11:43
GlitchMr glitchmr@feather ~> perl -wE '$c = "Hello, world!\n"; print eval(q[$c])'
Name "main::c" used only once: possible typo at -e line 1.
Hello, world!
This unimplemented feature is mentioned in perltodo 11:44
Also, rt.perl.org/rt3/Public/Bug/Display.html?id=5087 11:45
lizmat jnthn: Unrecognized nqp:: opcode 'nqp::who'
should be the replacement of pir::get_who__PP , but apparently doesn't exist (yet) ? 11:46
GlitchMr Apperently there is CPAN module which implements this: search.cpan.org/dist/warnings-unuse.../unused.pm 11:47
But it's not part of core
11:47 yarp joined
lizmat according to docs/nqp-opcode.txt it should exist (or as nqp::getwho) but apparently something's amiss here 11:48
skipping pir::get_who__PP, continuing with pir::does 11:49
jnthn lizmat: That's one of the ones that needs the toqast branch merge to happen. 11:52
lizmat ack, moving it to that todo list
does the same apply to nqp::islist and nqp::ishash? 11:54
jnthn Think islist is already in place
ishash ain't
lizmat ack
jnthn Of course, you could always just do this in the branch :)
I expect it to merge soon though. 11:55
Well
If the module space tests look good
lizmat I'll keep it on the todo
don't want to add any variables to your tests
there is no rush
jnthn good point
moritz oh, modules 11:58
I could smoke those 11:59
dalek p: fd53616 | (Elizabeth Mattijsen)++ | / (5 files):
Eradicated pir::does(...,'array'), replaced by nqp::islist
12:02
lizmat this concludes the low hanging fruit for today
12:09 MayDaniel left 12:10 snearch left 12:11 snearch joined 12:19 JimmyZ joined
arnsholt Apparently Rakudo has sprouted a new warning since last I did stuff 12:40
What's the "Obsolete use of | or \ with sigil on param" warning mean?
12:40 JimmyZ left
moritz exactly what it says :-) 12:41
if you use sub f(|$c) { } you should now write that as sub f(|c) { }
arnsholt Oh, right
And same for method foo(\$arr) 12:42
moritz correct
should i update zavolaj?
arnsholt I can do it 12:43
I'm gonna do some more stuff as well
I found it from my customary pre-hacking make test =)
moritz that's a very good habit 12:44
arnsholt I try to remember to make sure I don't have any weird uncommited changes or happen to have some weird branch checked out 12:45
moritz jnthn: zavolaj fails tests on toqast because it misses nqp commit 384d3c3107 12:46
arnsholt Sometimes I just leave things in a weird intermediate state when I hit a roadblock. Which leads to weirdness when I come back two weeks later
12:50 snearch left
tadzik good morning #perl6 12:51
12:51 snearch joined
moritz \o tadzik 12:51
moritz.faui2k3.org/tmp/results.json # result of module smoke on rakudo/nqpqast 12:52
jnthn moritz: Huh...r_elems seems to be in there
jnthn merges in latest nqp/master anyway
eek, conflicts 12:53
moritz jnthn: oh, my copy of nqp was out of date
moritz looks at the test output more closely
huh, passes now 12:54
uh, wrong branch 12:55
still passes.
moritz confused 12:56
jnthn moritz: You're building nqp/toqast and rakudo/nqpqast?
moritz aye 12:57
tadzik moritz: so the results are correct? 12:59
locally, Template::Mojo didn't build
moritz tadzik: I have no idea anymore 13:00
13:01 birdwindupbird left
tadzik :) ok 13:01
I'll see if my rakudo is up to date and will rerun themk
13:02 xinming left
spider-mario I am under the impression that Rakudo Star 2012.08 requires an already installed rakudo to be built 13:02
or even a rakudo star 13:03
13:03 xinming joined
jnthn spider-mario: No, it's the same as any previous release. 13:04
spider-mario ok
jnthn (in terms of build procedure)
13:04 JimmyZ joined
jnthn Well, pmichaud++ did a bunch of improvements. But it doesn't depend on an existing Rakudo. 13:04
spider-mario it seems to use files from it
I had nqp and 2012.0 13:05
oops
I had nqp and rakudo star 2012.07,
I built and installed nqp 2012.08.1 and tried to build rakudo star 2012.08 and it failed with error messages mentionning files from the system-wide rakudo star
so, I’ve rebuilt and installed rakudo star 2012.07 against the new nqp and I am trying to build rakudo star 2012.08 13:06
and so far, it works much better
seemingly, at least
actually, before trying with * 2012.07 rebuilt against nqp 2012.08, I tried with it uninstalled 13:07
and rakudo star 2012.08 reported missing files
I hope I was just unlucky 13:08
maybe there are some weird problems with my environment variables pointing to ~/perl6 or anything 13:09
dalek p/toqast: a6b22f6 | (Elizabeth Mattijsen)++ | / (3 files):
Eradicate pir::chopn__Ssi from source, replace by nqp::substring/nqp::chars
13:11
p/toqast: 77c5c40 | (Elizabeth Mattijsen)++ | / (2 files):
Eradicated pir::push__vPi from source, replaced by nqp::push_i
p/toqast: 8086f7f | (Elizabeth Mattijsen)++ | / (2 files):
Eradciated pir::setattribute__vppsp, replaced by nqp::bindattr
p/toqast: 994418f | (Elizabeth Mattijsen)++ | / (2 files):
Eradicated pir::getattribute__(ppp|PPP)s, replaced by nqp::getattr
p/toqast: 8681f37 | (Elizabeth Mattijsen)++ | / (2 files):
Eradicated pir::set_who__vPP, replaced by nqp::setwho
p/toqast: fd53616 | (Elizabeth Mattijsen)++ | / (5 files):
Eradicated pir::does(...,'array'), replaced by nqp::islist
p/toqast: 880ec42 | jnthn++ | / (9 files):
Merge latest master into toqast.
13:15 xinming left
GlitchMr github.com/GlitchMr/perl6-Text-Abb.../Abbrev.pm 13:15
Just wondering, is there any better way of writing "loop (my $len = .chars; $len > 0; --$len) {" 13:16
I cannot use .. because range goes in wrong direction
13:17 xinming joined
jnthn ... can go in other direction 13:19
GlitchMr Hmmm, yeah 13:20
jnthn r: my $x = 'omg a kangaroo!'; for $x.chars ^... 0 { $x.substr($_, 1).say }
p6eval rakudo b8c068: OUTPUT«===SORRY!===␤Confused␤at /tmp/CoaJOB_nwq:1␤»
jnthn huh, hwat'd I get wrong... 13:21
FROGGS_ three dots?
jnthn Yeah, sequence
r: say 1 ... 10 13:22
p6eval rakudo b8c068: OUTPUT«1 2 3 4 5 6 7 8 9 10␤»
jnthn r: say 10 ... 1
p6eval rakudo b8c068: OUTPUT«10 9 8 7 6 5 4 3 2 1␤»
jnthn r: say 10 ^... 1
p6eval rakudo b8c068: OUTPUT«===SORRY!===␤Confused␤at /tmp/g8F6G0Ao6j:1␤»
jnthn r: say 10 ^.. 1
p6eval rakudo b8c068: OUTPUT«10^..1␤»
FROGGS_ whats that ^ for? 13:23
jnthn Omit endpoint
But it seems Rakudo defines ...^ but not ^...
spider-mario il worked this time
with a rakudo 2012.07 built against nqp 2012.08 already installed 13:24
GlitchMr Cannot assign a non-Perl 6 value to a Perl 6 container
Those errors are cryptic
- loop (my $len = .chars; $len > 0; --$len) {
+ for .chars ... 0 -> $len {
I'm probably doing something wrongly
It looks like it should work identically, except it doesn't 13:25
oh 13:27
I should type 1, not 0
except not 13:28
So, in github.com/GlitchMr/perl6-Text-Abb.../Abbrev.pm 'loop (my $len = .chars; $len > 0; --$len) {' works, but 'for .chars ... 1 -> $len {' doesn't making cryptic error messages 13:29
jnthn That's somewhat surprising. 13:30
GlitchMr Perhaps Perl 6 doesn't parse it the way I want 13:32
I don't know...
for reverse 1 .. .chars -> $len { makes identical error 13:33
JimmyZ it may be a rakudo bug 13:34
GlitchMr > abbrev ':)'
2
1
This is how it iteration looks with loop () 13:35
jnthn r: $_ = 'foobar'; for .chars ... 1 { .say }
p6eval rakudo b8c068: OUTPUT«6␤5␤4␤3␤2␤1␤»
GlitchMr This is... confusing
tadzik r: $_ = 'foobar'; for .chars ... 1 -> $a { $a.say }
p6eval rakudo b8c068: OUTPUT«6␤5␤4␤3␤2␤1␤»
tadzik r: $_ = 'foobar'; for .chars ... 0 -> $a { $a.say }
p6eval rakudo b8c068: OUTPUT«6␤5␤4␤3␤2␤1␤0␤»
GlitchMr for .chars ... 1 -> $len {} should work identically, except it doesn't
tadzik r: $_ = 'foobar'; for .chars ... 1 -> $len { $len.say } # just checking :) 13:36
p6eval rakudo b8c068: OUTPUT«6␤5␤4␤3␤2␤1␤»
GlitchMr I use say on $len, but all I get is number of .chars and crash...
jnthn r: $_ = 'foobar'; for .chars ... 1 -> $len { say $len }
p6eval rakudo b8c068: OUTPUT«6␤5␤4␤3␤2␤1␤»
GlitchMr The code looks like github.com/GlitchMr/perl6-Text-Abb.../Abbrev.pm
If I will replace 'loop (my $len = .chars; $len > 0; --$len) {' with 'for .chars ... 1 -> $len {' I get error... 13:37
Also, I've noticed that if I will comment out "%result{$abbrev} = $_;" it doesn't happen 13:41
Is it possible that it's connected with $_?
jnthn That'd be odd. 13:42
I guess it's possible, but if so it's an odd bug.
GlitchMr r: for 'cake' { for .chars ... 1 { $_.perl.say } }
p6eval rakudo b8c068: OUTPUT«4␤3␤2␤1␤»
GlitchMr r: for 'cake' { for .chars ... 1 -> $len { $_.perl.say } }
p6eval rakudo b8c068: OUTPUT«"cake"␤"cake"␤"cake"␤"cake"␤»
GlitchMr huh?
r: my %hash; for 'cake' { for .chars ... 1 -> $len { %hash{5} = $_ } } 13:43
p6eval rakudo b8c068: ( no output )
GlitchMr r: my %hash; for 'cake' { for .chars ... 1 -> $len { %hash{5} = $_ } }; %hash.perl.say
p6eval rakudo b8c068: OUTPUT«("5" => "cake").hash␤»
GlitchMr huh?
jnthn What's surprising?
huf the outer for's $_ is visible in the inner for
GlitchMr r: my %hash; for 'cake' { for .chars ... 1 -> $len { %hash{.substr(0, $len)} = $_ } }; %hash.perl.say
p6eval rakudo b8c068: OUTPUT«("cake" => "cake", "cak" => "cake", "ca" => "cake", "c" => "cake").hash␤»
huf since the inner for uses $len
jnthn $_ takes the value from the outer
GlitchMr what?
jnthn Unless something else gives it a value.
GlitchMr What's weirder is that it doesn't happen there
I will make a test, ok?
jnthn OK 13:44
jnthn just discovered the REPL got busted nqpqast and is working on a fix for that atm. 13:45
GlitchMr Null PMC access in find_method('perl')
huh?
13:46 yarp left, xphx joined
tadzik Parrot's leaking somewhere 13:47
GlitchMr The code looks like paste.uk.to/2bddae42
(after shortening everything)
tadzik also, Z is not lazy enuff on toqast it seems
r: gist.github.com/3573589
GlitchMr perl6: $_ = 'abc'; for .chars ... 1 -> $len { .perl.say; { .perl.say } }
p6eval rakudo b8c068: OUTPUT«(timeout)»
rakudo b8c068: OUTPUT«"abc"␤Mu␤"abc"␤Mu␤"abc"␤Mu␤»
..niecza v21-1-ga8aa70b: OUTPUT«Potential difficulties:␤ $len is declared but not used at /tmp/Sshintkvzw line 1:␤------> $_ = 'abc'; for .chars ... 1 -> ⏏$len { .perl.say; { .perl.say } }␤␤"abc"␤"abc"␤"abc"␤"abc"␤"abc"␤"abc"␤»
tadzik oh, to it's not lazy enough on nom either :) 13:48
GlitchMr perl6: $_ = 'abc'; for 1 -> $len { .perl.say; { .perl.say } }
p6eval niecza v21-1-ga8aa70b: OUTPUT«Potential difficulties:␤ $len is declared but not used at /tmp/3rhIEprUTo line 1:␤------> $_ = 'abc'; for 1 -> ⏏$len { .perl.say; { .perl.say } }␤␤"abc"␤"abc"␤»
..rakudo b8c068: OUTPUT«"abc"␤Mu␤»
tadzik n: gist.github.com/3573589
GlitchMr rakudo b8c068: OUTPUT«"abc"␤Mu␤»
p6eval niecza v21-1-ga8aa70b: OUTPUT«(timeout)»
tadzik huh
GlitchMr There is something wrong
tadzik colomon: ping
GlitchMr Block SHOULDN'T cause $_ to magically disappear
> $_ = 'abc'; for 1 -> $len { .perl.say; { .perl.say } } 13:49
colomon pong
GlitchMr "abc"
Lexical '$_' not found
what?
What?
jnthn ah.
GlitchMr: That golfs it nicely.
GlitchMr Why would $_ disappear just because I have block (if/else) in original code?
colomon is having to type around a duplo model Union Pacific Big Boy which is on his desk for some reason.
GlitchMr This is... weird 13:50
13:50 PacoAir left
colomon tadzik: pong? 13:50
jnthn GlitchMr: $_ has some special handling. Something isn't quite right with it, it seems
13:51 PacoAir joined
colomon nr: $_ = 'abc'; for 1 -> $len { .perl.say; { .perl.say } } 13:51
p6eval niecza v21-1-ga8aa70b: OUTPUT«Potential difficulties:␤ $len is declared but not used at /tmp/i9dAWOU3Of line 1:␤------> $_ = 'abc'; for 1 -> ⏏$len { .perl.say; { .perl.say } }␤␤"abc"␤"abc"␤»
..rakudo b8c068: OUTPUT«"abc"␤Mu␤»
GlitchMr Moooo!
Perhaps apt-get moo ate it or something.
tadzik colomon: List::Utils uniq_by hangs on new nom, and when I try to replicate its behaviour, it seems to hang everywhere 13:52
GlitchMr But... this shouldn't happen...
jnthn GlitchMr: Think I've found out what's going on.
colomon tadzik: grumble...
tadzik: can duplicate here 13:54
tadzik: yes, that's a rakudobug
jnthn New issue in nqpqast branch, or a general issue? 13:55
colomon tadzik: guess I can comment out the offending test.
FROGGS_ r: class A { has $.b; method new { $!b = 42 } }; my $c = A.new;
p6eval rakudo b8c068: OUTPUT«Cannot look up attributes in a type object␤ in method new at /tmp/gfZpAu6sbs:1␤ in block at /tmp/gfZpAu6sbs:1␤␤»
FROGGS_ whats wrong with that? 􏿽xF3.􏿽xF2
tadzik jnthn: seems now, I don't remember smoker hanging on it before 13:56
GlitchMr I will return this bug to Rakudobug, ok?
s/return/send/
jnthn GlitchMr: Yeah, please.
colomon tadzik: workaround pushed. it's an old rakudobug, btw, going back at least a month... 13:57
jnthn GlitchMr: I've got a potential patch for it already.
tadzik oh, interesting
GlitchMr jnthn: it's bug #114696 14:00
I accidentally put there old example with .chars, but whatever (I cannot change it now)
14:01 xphx left 14:07 tokuhiro_ left 14:08 tokuhiro_ joined 14:12 tokuhiro_ left
spider-mario building rakudo star 2012.08 without an already installed rakudo star definitely doesn’t work 14:14
I’ve had the same problem in a chroot with nothing but nqp and rakudo star 2012.07
14:15 yarp joined
jnthn tadzik: Was the List::Utils thing the only issue in the test run? 14:17
dalek p/toqast: ded87cc | jnthn++ | src/ (2 files):
Fix REPL breakage, and some other hardening.
jnthn r: for 'foo' { for 10 ... 1 -> $len { .say } } 14:19
p6eval rakudo b8c068: OUTPUT«foo␤foo␤foo␤foo␤foo␤foo␤foo␤foo␤foo␤foo␤»
tadzik jnthn: it' has jus fienished, generating diff
jnthn tadzik: ah, awesome
tadzik hm
I need a new backend for Term::ANSIcolor that'll use HTML colours
BSON now fails its tests, Exemel now fails its tests, Facter doesn't build anymore, MongoDB doesn't build anymore, Perl6-Math-Quaternion doesn't build anymore 14:20
geekosaur progress! :p 14:23
tadzik investigating other cases
jnthn: okay, nothing specific. I say it's a green light from the module system 14:25
14:25 MayDaniel joined
jnthn tadzik: Huh, you just told me about a bunch of failures? 14:26
tadzik jnthn: not toqast stuff. Thinks like "no .bytes from Str etc
jnthn tadzik: I guess you built nqpqast from Rakudo, yes? Not toqast? 14:27
tadzik oh, hold on
yes
jnthn tadzik: OK, I'm mostly concerned with regressions between current nom and current nqpqast.
tadzik hold on, I missed some stuffs
tjs.azalayah.net/new.html shows that Exemel didn't pass tests before either, so it may be difftool failing 14:28
but tjs.azalayah.net/index.html disagrees. I need to fix this mess :)
okay, Exemel seems to be a regression
jnthn: Undefined routine '&does' called (line 4) 14:30
that's nothing new though, ok
Exemel parser seems to be the only thing
jnthn tadzik: OK, I'm confused. Is there bustage or not? :) 14:35
tadzik there is :) 14:36
jnthn tadzik: In Exemel? 14:37
tadzik yes 14:38
jnthn clones it
tadzik: what am I looking for? 14:41
tadzik: I see test fails
tadzik No such method 'root' for invocant of type 'Nil'
in block at t/02-parser.t:15
yes
I assume it's Grammar/Actions not worky
jnthn right, parse fail or so 14:42
14:42 preflex left 14:44 sporous left 14:51 JimmyZ left 14:56 JimmyZ joined 15:03 mtk left 15:11 mtk joined
dalek p/toqast: ef77cff | jnthn++ | src/how/NQPClassHOW.pm:
Always re-compute MRO upon composition.
15:12
kudo/nqpqast: e8c76ce | jnthn++ | src/core/you_are_here.pm:
Ensure that Metamodel::GrammarHOW ends up being ~~ Any.
15:16 mucker joined 15:17 BlueT_ left 15:18 yarp left, am0c_ joined
dalek d: 1434468 | larry++ | STD_P5.pm6:
handle backslashes in character classes better
15:25
d: bc80c8f | larry++ | STD_P5.pm6:
improve error on range with backslash cclass
d: a025490 | larry++ | STD_P5.pm6:
debug code removal
15:28
jnthn tadzik: So, I decided to use Grammar::Tracer to figure out what's going on, then realized that it had issues due to a metaclass compatibility issue I've managed to introduce. :/ So, fixing that first.
tadzik okay
hooray, regressions found :)
cdn.memegenerator.net/instances/400...111566.jpg
15:30 BlueT_ joined
jnthn Yeah, this is a fiddly one also... 15:30
Note to self: put some darn MOP tests into spectest 15:31
tadzik (:
jnthn ah, yay, the fix helped 15:34
hm, should be more efficient too
dalek p/toqast: 539f35b | jnthn++ | src/how/NQPClassHOW.pm:
Refactor BUILDPLAN construction so that it respects the desires of different contributing metaclasses.
15:36
15:36 awfabian joined
dalek kudo/nqpqast: 54f813b | jnthn++ | src/Perl6/Metamodel/BUILDPLAN.pm:
Refactor BUILDPLAN construction so that it respects the desires of different contributing metaclasses.
15:36
15:38 birdwindupbird joined
jnthn ooh, turns out Grammar::Tracer has never handled backrefs properly either. 15:38
15:52 raiph joined
raiph gum 15:53
dalek volaj/libnames: 3f79122 | (Arne Skjærholt)++ | lib/NativeCall.pm6:
Eliminate warnings from updated Rakudo.
15:56
volaj/libnames: aa0436c | (Arne Skjærholt)++ | lib/NativeCall.pm6:
Update library name handling to NQP handling extensions.
p/dyncall-libnames: 2f6eee9 | (Arne Skjærholt)++ | src/ops/nqp_dyncall.ops:
Handle library extensions in nqp_dyncall.ops.

This should fix the issue of .bundle vs. .dylib on OS X.
arnsholt Now let's see if it works on OS X as well 15:57
15:59 awfabian left
jnthn tadzik: Turns out it fails in attribute parsing, fwiw. 15:59
Oh, it's wrong under the new sigspace rules... 16:00
But I didn't think those were implemented yet. 16:01
tadzik hm 16:03
16:03 birdwindupbird left
dalek kudo/nqpqast: cfae063 | jnthn++ | src/ (2 files):
Some extra tweaks to fix BUILDPLAN handling regressions.
16:04
jnthn r: my rule foo { b }; say "a b" ~~ /a <&foo>/;
p6eval rakudo b8c068: OUTPUT«#<failed match>␤»
jnthn star: my rule foo { b }; say "a b" ~~ /a <&foo>/; 16:05
p6eval star 2012.07: OUTPUT«q[a b]␤␤»
jnthn r is correct by current spec, afaik
tadzik hm., I wouldn't expect that 16:06
16:06 crab2313 joined
TimToady r: my rule foo { '' b }; say "a b" ~~ /a <&foo>/; 16:07
p6eval rakudo b8c068: OUTPUT«「a b」␤␤»
jnthn Right, if I add a <?> or <.ws> into the Exemel::Grammar in the expected place it parses again.
jnthn combs the git log
hm, don't spot anything 16:10
oh, I wonder... 16:11
hah! 16:12
dalek d: d54dd12 | larry++ | / (2 files):
suppress missing action package warnings
d: 4c71135 | larry++ | viv:
debug removal
d: ac6e336 | larry++ | STD_P5.pm6:
warning suppression
jnthn yeah, accident. 16:13
Nothing to do with the QAST stuff, but happened when I introduced the :P5 support
dalek d: 7484f3a | larry++ | viv:
remove dup VAST package
16:17
kudo/nqpqast: 0e6dd2e | jnthn++ | src/Perl6/Grammar.pm:
Significant non-whitespace was significant. Fixes accidental change to rule semantics when :P5 was introduced.
MikeFair Given the following rule: rule statementBlock { <statement_list> 'end' <!ww>* } 16:18
diakopter TimToady: can you clarify the new non-pragmatized ways of interacting with strings other than codepoint level
MikeFair What I intend to say is "end is the only thing on the line" (expcepr for whatever <.ws> matches)
is the <!ww>* needed? 16:19
dalek volaj/libnames: 20e96d5 | (Arne Skjærholt)++ | t/02-simple-args.t:
Add test calling a function from libc.

This isn't necessary on Linux, but OS X distinguishes between shared libraries
  (dylibs) and loadable modules (bundles), which we need to make sure works.
This closes #7.
MikeFair oh wait! nm, it's not it's in <ws>
MikeFair flip flops. 16:21
jnthn tadzik: Exemel looks good again now. It will need a change in the future, mind.
tadzik: Re-testing appreciated, when you get chance.
tadzik rebulding nom now
jnthn tadzik: nom? or nqpqast?
MikeFair I think it is needed because <!ww> will simply stop matching when it hits something else on that line, not fail to match if there is something there 16:22
arnsholt *facepalm* Test works on OS X, but not on Linux, because Linux has OTHER shared-lib naming shenanigans
tadzik jnthn: erm, nqpqast
jnthn tadzik: Great, thanks :)
tadzik jnthn: also, is there a way to get a Parrot-level sub out of an object in Perl 6?
I mean, code object
jnthn tadzik: Only by poking into the internals
tadzik how deeply? 16:23
jnthn nqp::getattr deeply
Get $!do
Why do you need to, ooc?
tadzik surprise
16:36 birdwindupbird joined 16:48 awfabian joined, birdwindupbird left 16:50 JimmyZ left
tadzik sigh 16:51
I tried using threads on the new Parrot branch, but things segfault
jnthn: okay, Exemel is clear on the module smoketest so far 16:53
16:58 FROGGS_ left 17:00 colomon left
tadzik jnthn: could you take a look at gist.github.com/3580456 ? 17:03
simple threads example working on parrot-nqp, but not on nqp
17:05 ponbiki left 17:07 ponbiki joined, ponbiki is now known as Guest2527 17:11 _jaldhar joined, MayDaniel_ joined 17:12 telex_ joined 17:17 wamba left, jaldhar left, mtk left, telex left, MayDaniel left
dalek d: 4f02273 | larry++ | STD_P5.pm6:
bogus warning suppression
17:18
17:18 am0c_ left
jnthn tadzik: Oddness. Not sure, but it seems to die while trying to throw an exception. 17:18
tadzik yeah
17:19 am0c joined
jnthn Does changing it to nqp::say(...) change anything? 17:19
17:19 FROGGS_ joined
tadzik yes, it makes it work 17:20
WOO
doesn't help the perl6 version though 17:21
jnthn OK, that's...bothersome
tadzik mayhaps the parrot code object still wants to call perl 6 code objects, and threads don't like that? 17:22
jnthn What if you my $x := 42; and then in the thread say($x) ?
e.g. is it something odd with lexical lookups?
It's a curious backtrace. It looks like it failed to find say(...) 17:23
Or died trying to find it
tadzik still segfaulting
jnthn Segfaults when you try to say $x? 17:24
In NQP?
Even with nqp::say?
tadzik gist.github.com/3580903
17:24 mtk joined
tadzik no, that's in P6 17:24
nqp works fine
gist.github.com/3580930 17:25
and it threads properly :)
jnthn Well, it doesn't work fine because it didn't find say
Try
tadzik nqp?
jnthn Yes
You changed it to nqp::say 17:26
And then it worked
tadzik oh, true
jnthn Try this
my $x := 42;
my $a := sub foo() { nqp::say($x); };
And shecudling that.
tadzik segfaults
diakopter O_O
jnthn OK, so...it fails at doing lexical lookups between threads? o.O
tadzik yes :)
diakopter looks up shecudling 17:27
jnthn That's not gonna get us far.
As in, anywhere.
tadzik yep
jnthn wonders if it's because NQP and Rakudo have custom lexpad PMCs.
17:31 immortal left, erkan joined, erkan left, erkan joined
tadzik could be 17:32
jnthn: also, when I try the lexical lookup in parrot-nqp, it just silently crashes 17:33
no error, just doesn't print anything, even stuff from outside threads
I'll poke nine when he appears on #parrot
jnthn oh
Well, but parrot-nqp didn't have custom lexpads, iirc
17:34 thou joined
tadzik jnthn: okay, green light from the modules this time :) 17:34
68 modules ok, 44 not ok (112 total)
MikeFair Hmm, question, I'm trying to do something like this: rule block { <start_phrase> <stuff> <stop_phrase> }; rule start_phrase { 'start' <ident> }; rule stop phrase {'stop' $<ident_from_start>}
tadzik that't the best result I remember :)
MikeFair I want to use <start_phrase> and <stop_phrase> because I want the method call that results from a match. but I'm not sure how to pass back the capture 17:36
jnthn tadzik: OK, will merge. Thanks!
tadzik are spectests clean now? 17:37
jnthn yes, I temporarily busted something then fixed it :)
tadzik okay, awesome :)
MikeFair Alternatively, I could do something like this: rule block { 'start' <ident> <stuff> 'stop' $<ident> { call stop_phrase, stop_phrase passing in ident if this matches } }
17:40 havenn joined 17:43 raiph left
jnthn MikeFair: If you want to keep your original factoring, you can likely do it with a contextual. 17:46
rule block { :my $*ENDER; <start_pharse> <stuff> <stop_phrase> } 17:47
rule start_phrase { 'start' <ident> { $*ENDER = ~$<ident> } }
rule stop_phrase { 'stop' $*ENDER } 17:48
Or so
17:48 havenn left 17:49 havenn joined 17:54 havenn left
dalek albot: 4253b69 | GlitchMr++ | evalbot.pl:
Fix evalbot help.

said() appears to be ran in scalar context. As the result of it, comma is really comma operator - it means everything before `': $code'` is simply ignored creating weird help message. This fixes it by using `.`
  (concatenation operator) instead of `,` (comma operator).
18:00
sergot We have modules.perl6.org generated using Perl 6! :) 18:02
feather.perl6.nl/~sergot/modules/
github.com/sergot/modules.perl6.org
tadzik \o/
sergot Take a look. :)
GlitchMr wow, test results :)
This is amazing :)
tadzik yep :)
GlitchMr But I don't like yellow color.
Perhaps if it would have outline or something
tadzik yeah, well, I designed it, don't expect too much :) 18:03
GlitchMr It's not bad
tadzik: dl.dropbox.com/u/63913412/shadow.png 18:05
But this probably is even more ugly
tadzik hm, not bad
GlitchMr I'm testing stuff 18:06
sergot Only (?) real1m2.862s
:)
takes generating it
tadzik that might be faster than the perl 5 version 18:07
dalek Heuristic branch merge: pushed 174 commits to nqp by jnthn
GlitchMr dl.dropbox.com/u/63913412/outline.png
tadzik because it uses the github API and has to wait so github doesn't get super angry
GlitchMr Or this, even uglier option
dalek Heuristic branch merge: pushed 27 commits to rakudo/nom by jnthn
jnthn OK, 'tis merged.
GlitchMr I like this view source thing in Opera. 18:08
tadzik I'm glad you like it :)
jnthn++ # future, NOW! 18:09
GlitchMr It allows me to modify documents directly
dalek kudo/nom: d776f08 | jnthn++ | docs/ROADMAP:
Remove a ROADMAP item.
GlitchMr Outline was "text-shadow: 1px 1px 1px #000, 1px -1px 1px #000, -1px 1px 1px #000, -1px -1px 1px #000" 18:10
Shadow was "text-shadow: 3px 3px 5px #888"
jnthn phenny: tell lizmat le NQP branch merge is done, which unblocks your ops work :) 18:11
phenny jnthn: I'll pass that on when lizmat is around.
GlitchMr I should make pointless IRC bot in Perl 6 18:16
tadzik :)
GlitchMr I guess that Rakudo has sockets? 18:17
tadzik it does
there are already perl6-based bots running here
jnthn Sure. And a module for making IRC bots. :)
tadzik p6rd: next
p6rd, where are you?
jnthn ENOTRUNNING :P
tadzik cjbot, where are you?
/o\
GlitchMr: forget I said anything :) 18:18
GlitchMr has $.nick = "Rakudobot"; 18:19
has @.altnicks = $!nick X~ ("_","__",^10);
$!nick?
But... isn't it $.nick?
Would this even work?
Just wondering, is panda installed on feather or I've to install it myself? 18:20
glitchmr@strawberry ~/g/panda> ./bootstrap.pl 18:24
==> Bootstrapping Panda
===SORRY!===
error:imcc:The opcode 'perl6_type_check_return_value_p' (perl6_type_check_return_value<1>) was not found. Check the type and number of the arguments
in file '/home/glitchmr/.perl6/lib/Shell/Command.pir' line 584
ok...
18:26 havenn joined
tadzik hm 18:26
run rebootstrap.pl
I should probably note that in the README
18:27 crab2313 left
GlitchMr ==> Reinstalling Acme::Addslashes Config::INI Text::Abbrev Acme::Meow Digest::MD5 18:31
nice
jnthn walk & 18:33
GlitchMr Elegant. Simple. Probably compiles.
lol 18:34
tadzik :) 18:36
18:38 havenn left
sorear good * #perl6 18:48
diakopter o/ 18:49
GlitchMr * is whatever?
tadzik yes
GlitchMr gist.github.com/3583210 18:54
That could be fun
What's so hard about 004 IRC code?
tadzik I've no eye deer 18:55
GlitchMr github.com/TiMBuS/Net--IRC/blob/ma.../Parser.pm
Gramar for IRC!
tadzik sure, Grammars are awesome 18:56
GlitchMr :moorcock.freenode.net 004 SixtySixBot moorcock.freenode.net ircd-seven-1.1.3 DOQRSZaghilopswz CFILMPQbcefgijklmnopqrstvz bkloveqjfI
Now I wonder why it didn't matched 18:57
tadzik use Grammar::Debugger :)
18:58 am0c left
GlitchMr ===SORRY!=== 19:00
Nominal type check failed for parameter '$got'; expected Any but got TracedGrammarHOW instead
This is Debugger::Tracer 19:01
I meant, Grammer::Tracer
And Grammar::Debugger shows TOP and doesn't react on anything
tadzik hm
jnthn: ?
GlitchMr I type "h". Nothing
I've feeling it should show "> " prompt, except it doesn't 19:02
Or rather, after I press CTRL+D error appears and "> " prompt
It looks like this: gist.github.com/ab67295375366ea9ae91 19:04
But tests pass... oh wait... what tests? 19:06
jnthn I fixed Grammar::Tracer earlier this evening
GlitchMr Those were tests for Term::AnsiColor
And Grammar::Tracer doesn't work for me 19:07
jnthn The re-parenting stuff I put in a while ago musta somehow messed it up. It's odd 'cus I remember checking it...
GlitchMr oh...
glitchmr@strawberry ~> perl6 -v
This is perl6 version 2012.08-27-gf3d2b53 built on parrot 4.7.0 revision RELEASE_4_7_0-165-g29796c6
jnthn Oh, hm
GlitchMr I've old Rakudo 19:08
jnthn I removed the "is Mu" from it, which should not have been needed, found it broken, fixed the reason it broke without the "is Mu" in Rakudo, and committed the fix.
So yeah, it'll only work on latest. Sorry 'bout that.
GlitchMr Anyways, bye
19:08 GlitchMr left 19:23 aindilis joined 19:30 immortal joined, immortal left, immortal joined 19:31 erkan left
moritz jnthn++ # QAST 19:37
FROGGS_ arnsholt: if I have to pass a pointer to a struct to a c function, and this struct is made within perl, how do I pass its pointer? 19:38
jnthn FROGGS_: If there's no a direct way, a workaround is to create a 1-element CArray 19:40
FROGGS_ jnthn: what do I have to do with the CArray then? 19:42
jnthn my $ptrish = CArray[YourStructType].new(); 19:43
19:43 snearch left
jnthn $ptrish[0] = $your_struct; 19:43
moritz (the first = should probably be :=)
I have no idea how robust zavolaj is when it comes to additional containers
jnthn I think it copes. 19:44
If you want to use the @ sigil you certainly need :=
For $ then I think assignment is OK.
FROGGS_ jnthn: and then I have the pointer in $ptrish[0] ? 19:45
moritz no, pass $ptrish in the place where a pointer is expected
FROGGS_ ahh, got it
of course, it points to its first element
jnthn Pointers and arrays in C are very related :) 19:46
moritz jnthn: I want to fix constant name = 'foo'; sub ::(name) { } 19:49
jnthn: but I'm having trouble figuring out what the correct fix is
::() stuff is parsed by token morename 19:50
jnthn moritz: Probably involves something in class LongName inside of Perl6::World.
moritz but morename doesn't even its own action method
moritz has to wade through the whole thing
and <longname> doesn't have one either :( 19:51
19:52 havenn joined
moritz jnthn: I don't think it goes through class LongName 19:52
'cause the sub declaration parses the name as <deflongname>? 19:53
jnthn Oh, the sub case...
moritz and that one simply does a 'make ~$<name>' if it's not an operator or anything special
which is probably wrong :-)
jnthn The class case works through longname, and should be handled by the logic in disect_longname
Of note, the elsif $_<EXPR> { bit 19:54
moritz ok, if I do that case first
I guess class LongName needs an evaluate_now method or so 19:55
jnthn Then type_name_parts is meant to Do The Right Thing if there's constant bits in there
I wonder if
if nqp::can($_, 'isa') && $_.isa(QAST::Node) {
replace that line with
nqp::istype($_, QAST::Node)
moritz tries 19:56
jnthn The code looks to be there to handle it, but then it's not quite working.
moritz oh, which reminds me of a discussion I wanted to have for some time now
we have several checks of the type if $something.has_compile_time_value { ... } else { die "OH NOEZ" } 19:57
should we simply evaluate the stuff at compile time? or should we continue to complain?
currently we don't constant-fold anything in those cases, so even pretty simple stuff dies 19:58
jnthn I think it wants to be done by some constant folding mechanism
moritz so evaluating stuff at compile time would help
jnthn But the boundaries are...fuzzy
moritz OTOH evaluating stuff might surprise the user, especially if variables are involved
jnthn Right 19:59
And I don't think we should just try and evaluate anything.
moritz that's exactly what we do for 'constant' declarators, no? 20:00
20:00 havenn left, havenn joined
jnthn True 20:01
moritz $ >./perl6 -e 'constant name = "A"; class ::(name) { }; say A'
QAST::WVal<-8315598784843782714>()
so it creates the type, but it gives it the wrong name :-) 20:02
jnthn ...but installs it under the correct name?
Oops. :)
sorear niecza treats a lot of this as BEGIN block
moritz jnthn: yes
jnthn moritz: See package_def. Then smack me the appropriate amount for whatever silliness I committed :)
(in Grammar.pm) 20:03
20:05 havenn left
moritz jnthn: I kinda suspect it's LongName.name that is being stupid 20:05
jnthn: because it works with @!components, not self.type_name_parts
jnthn moritz: ah 20:06
Well, even better then, since that's a more general fix. :)
moritz otoh scarier, because it affects more code 20:11
jnthn We have a test suite ;) 20:13
20:14 ingyfoo_ left
moritz without the test suite I wouldn't dare to push 90% of my (non-doc) patches 20:15
20:17 awfabian left
dalek kudo/smoke-me/indirect-class-name: 957a680 | moritz++ | src/Perl6/World.pm:
fix type declaration with indirect type name

for example constant name = "A"; class ::(name) { }
  jnthn++ for steering me in the right direction
20:17
FROGGS_ jnthn: CArray.WHAT tells me it is a CArray+{TypedCArray}(), how should my nativecall sub params look like? It complains when I use CArray, und vars like $a without a type 20:18
jnthn Did you try CArray[YourStructType]
moritz (pushed to branch because I don't want to run roast on my laptop, when I have a server that can do it much quicker and without burning my lap :-)
FROGGS_ jnthn: I tried now, but I still get: CStruct Can't perform boxed get on flattened attributes yet 20:21
jnthn That...seems to be more an issue with the CStruct than yoru array warpping of it 20:22
*wrapping
FROGGS_ k
moritz jnthn: for the sub ::(name) { }, I have the evil idea of passing $<deflongname> to $*W.dissect_longname, since it has the same capature structure as longname 20:24
jnthn moritz: That's evil :) 20:25
But yes, it'd work :)
moritz well, the alternative is to refactor LongName, or duplicate lots of its code :-) 20:26
jnthn Or add a disect_deflongname that just delegates to dissect_longname with a "it looks the same" comment. :)
moritz that sounds less evil, yes
jnthn Wait a moment...
oh, grr, deflongname doesn't just delegate to longname 20:27
moritz the only way that longname and deflongname differ is by some look-aheads, afaict
jnthn oh, because categoricals.
Anyway, what I suggested is probably do-able and means if they diverge in the future it's easy to cope somehow :)
moritz tries 20:29
20:29 zby_home_ joined
moritz dies while compiling the setting 20:31
do <foo>* and [ <.bar> <foo>]* produce the same capture structure? 20:32
hm, might be an easy fix 20:33
it died with
get_iter() not implemented in class 'NQPMu'
which I guess comes from the for $name<morename> { } 20:34
pmichaud good afternon, #perl6
20:34 awfabian joined
moritz good morning pmichaud :-) 20:34
jnthn o/ pmichaud 20:35
20:35 MayDaniel_ left
jnthn pmichaud: QAST stuffs merged! :) 20:35
pmichaud jnthn: yes, I was looking at the commit log :)
moritz I've guarded the loop with if $name<morename> { } 20:36
now I get
get_iter() not implemented in class 'NQPMatch'
for the same for-loop
20:36 kaare_ left
jnthn That means you got a single match somewhere you expected something quantified I guess... 20:37
moritz token name { [ | <identifier> <morename>* | <morename>+ ] }
I can't see how $name<morename> can ever be a single Match
jnthn Hm. That should be quantified.
Right.
dalek kudo/nom: 957a680 | moritz++ | src/Perl6/World.pm:
fix type declaration with indirect type name

for example constant name = "A"; class ::(name) { }
  jnthn++ for steering me in the right direction
20:38
arnsholt FROGGS_: The Zavolaj test suite has an example of a function that takes an array of structs as an argument. t/05-arrays.{t,c} TakeAStructArray 20:40
20:40 benabik left, benabik joined
moritz something is quite fishy with the deflongname dissecting here :( 20:41
OH MY
because I pass $<deflongname> to it
which is an array
erm, RPA
jnthn oh! 20:42
FROGGS_ arnholt: I got it right now! 20:43
jnthn That'd do it.
FROGGS_ jnthn++
moritz because it's quantified with a ?
jnthn Yeah
moritz wants that fixed :-)
jnthn We didn't adopt the updated updated updated spec on that yet :P
pmichaud I didn't want to work on that too heavily while the toqast branch was in progress.
arnsholt The ? quantifier doesn't wrap things in arrays anymore?
jnthn arnsholt: It does now, but the spec has gone back to wanting it not to. 20:44
Which means you now have to remember that the ? quantifier is the odd-one-out.
moritz and put Nil in if it matched zero times
jnthn Right. 20:45
I guess in NQP that has to be an NQPMu.
jnthn can't remember the reasoning for ? being different.
arnsholt Right. I remember thinking it was weird and then realizing it wasn't all that weird anyways
pmichaud jnthn: think of ? as being "matched/didn't match" and it makes more sense. 20:46
jnthn pmichaud: Yeah, I'd got used to quantifier imples array, though. :)
*implies
pmichaud jnthn: yeah, I understand. :)
moritz more like [ <thing> | <?> ]
jnthn Anyway, I'll cope :)
pmichaud I get a rakudo build failure when trying to build with parrot master. 20:47
moritz aaarg
jnthn Oh?
moritz my new thing now reads
$block.name($*W.disect_deflongname($<deflongname>[0]).name);
and that dies while compiling the setting
:<[ ]> cannot be resolved at compile time
for sub circumfix:<[ ]>
pmichaud gist.github.com/3586825
jnthn This is Parrot version 4.7.0-devel built for amd64-win32
That's the one I've been bulding aginast. 20:48
pmichaud: urgh
pmichaud pmichaud@kiwi:~/p6/rakudo$ install/bin/parrot_config git_describe 20:49
RELEASE_4_7_0-183-g9eab02c
I'll try just a plain '--gen-parrot' and see what happens.
jnthn OK 20:50
I think that's what I did
pmichaud what version of parrot do you have? (git describe?)
jnthn RELEASE_4_7_0-165-g29796c6 20:51
pmichaud okay 20:52
so, not too much to bisect if it's a recent parrot change causing the issue
jnthn Aye
pmichaud yeah, -165 is the one I'm building now.
moritz postpones the routine case of ::(name) to tomorrow and goes to sleep 20:54
~o~
jnthn 'night, moritz
pmichaud: Yeah, looking at that error makes me want a bisect.
No hurry though. 20:55
pmichaud I've been seeing lots of commits on the parrot side that make me a little uneasy, so we might not want to wait too long :) 20:56
if it goes too long, the bisecting might become harder :)
it looks as though -165 will build on my box 20:57
(i.e, I got farther than previously)
yeah, passing 'make test' 20:58
trying again with --gen-parrot=master
21:02 awfabian left
jnthn omg, that get_pointer patch made it in 21:04
21:04 zby_home_ left
pmichaud huh, looks like gen-parrot=master is going to build also 21:05
jnthn oh?
pmichaud so... not sure what happened earlier.
jnthn Huh.
pmichaud I'll try once more from clean checkouts 21:06
MikeFair jnthn: BTW, thanks for the advice reagarding 'use a contextual' earlier
These seem to do the trick: 21:07
47 rule start_using { ['start' 'using' <identifier> ] <!ww>? { $*ENDER := $<identifier> } }
48 rule stop_using { [ 'stop' 'using' <identifier> ]? <!ww>? { $*ENDER eq $<identifier> } }
21:13 replore joined 21:14 sftp left, SamuraiJack left
pmichaud yeah, it built this time. not sure why I had the fail earlier. 21:14
oh, wait, I didn't build that part yet. checking
okay, it looks like it'll build. 21:15
jnthn mebbe some old files left around.
21:17 sftp joined, MayDaniel joined 21:22 awfabian joined 21:23 awfabian left 21:30 bruges left 21:32 awfabian joined, awfabian left, bruges joined 21:42 Moukeddar joined 21:43 Moukeddar left
masak morning, #perl6 22:01
dalek d: 1748dc5 | larry++ | STD.pm6:
check lexical before package name

our $i; { my $i; { $i }} incorrectly did not mark usage of lexical $i, resulting in spurious warning.
22:02
d: b178d5b | larry++ | / (2 files):
suppress rest of "unused" warnings in viv

Some of the warnings were bugs, and others were correct.
22:03 fgomez left, tokuhiro_ joined
sorear o/ masak 22:04
22:07 tokuhiro_ left, tokuhiro_ joined 22:09 fgomez joined 22:11 jeffreykegler joined 22:15 xinming left, awfabian joined 22:17 xinming joined, MayDaniel left
MikeFair parse 22:23
22:25 fgomez left 22:36 awfabian left 22:39 replore left, fgomez joined 22:44 replore joined 22:50 Targen_ joined, Targen left 23:00 fgomez left 23:01 yarp joined, immortal left
masak MikeFair: CHECK FAILED: Undefined routine '&parse' called (line 1) 23:03
MikeFair masak: heh! :)
That was a result of PASTEFAIL 23:04
:)
23:05 erkan joined, erkan left, erkan joined, replore left
cognominal r: class A { has $!a; submethod BUILD($a) {} }; A.new(1) 23:07
p6eval rakudo 957a68: OUTPUT«Default constructor only takes named arguments␤ in method new at src/gen/CORE.setting:618␤ in block at /tmp/dy5Ts3sevU:1␤␤»
cognominal what if I want to use positional arguments in the constructor?
23:09 fgomez joined 23:10 replore joined, telex_ left 23:12 telex joined 23:13 fgomez left
cognominal S12:791 "You may write your own C<new> to override the default". Apparently here is the answer 23:14
masak aye.
you can give .new positional parameters, and some of the core classes do. 23:15
it's a bit of a coin with two sides.
23:15 fgomez joined
cognominal in the test, new.t has examples 23:15
masak you get a custom interface. that can be both useful and confusing. 23:16
cognominal I want to mimic existing interfaces
method new($a, $b) { self.Mu::new(:x($a), :y($b)); } # sounds like what I want 23:18
23:20 fgomez left 23:21 popl joined
masak no need to delegate to Mu::new (which isn't an 'our' method anyway, so you can't do it with that syntax) 23:25
just call self.bless directly from your .new method
23:26 replore left, yarp left 23:27 Circlepuller joined, yarp joined 23:29 Circlepuller_ left
yarp r: 1 .. 5 23:29
p6eval rakudo 957a68: ( no output )
yarp r: say 1 .. 5
p6eval rakudo 957a68: OUTPUT«1..5␤»
masak r: say (1..5).list 23:30
p6eval rakudo 957a68: OUTPUT«1 2 3 4 5␤»
yarp I am beginer. 23:33
masak welcome, beginner. 23:35
we are friendly. we happily answer your questions. 23:36
r: .say for 1..5
p6eval rakudo 957a68: OUTPUT«1␤2␤3␤4␤5␤»
masak r: .say for reverse 1..5
p6eval rakudo 957a68: OUTPUT«5␤4␤3␤2␤1␤»
masak r: .say for 1..5 Z (10,20 ... 50)
p6eval rakudo 957a68: OUTPUT«1␤10␤2␤20␤3␤30␤4␤40␤5␤50␤»
23:37 jeffreykegler left
yarp Thanks 23:38
masak r: for 'a'..'b' X 1..5 -> $l, $d { say "$l$d" } 23:39
p6eval rakudo 957a68: OUTPUT«a1␤a2␤a3␤a4␤a5␤b1␤b2␤b3␤b4␤b5␤»
masak r: .say for 0, 0.1 ... 1.0 23:40
p6eval rakudo 957a68: OUTPUT«0␤0.1␤0.2␤0.3␤0.4␤0.5␤0.6␤0.7␤0.8␤0.9␤1␤»
masak r: .say for "bbc".."bbw"
p6eval rakudo 957a68: OUTPUT«bbc␤bbd␤bbe␤bbf␤bbg␤bbh␤bbi␤bbj␤bbk␤bbl␤bbm␤bbn␤bbo␤bbp␤bbq␤bbr␤bbs␤bbt␤bbu␤bbv␤bbw␤»
23:46 _jaldhar left, colomon joined
masak 'night, #perl6 23:53
colomon \o 23:54
23:56 _jaldhar joined