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 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 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 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 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 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 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 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