»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! | feather will shut down permanently on 2015-03-31
Set by jnthn on 28 February 2015.
dalek q: 3579bc7 | moritz++ | answers.md:
Fix typo/thinko/whatever-o
05:32
dalek c: 88dd3a4 | paultcochrane++ | lib/Type/IO.pod:
Fix minor typo, formatting and wording issues
06:14
[Tux] Ulti, it didn't really gain speed since 9 Mar 06:29
if you look at README, csv.pl and test.pl both reflect the speed of the core: nothing changed during the span of README 06:30
*I* am only working in test-t.pl
-rw-rw-r-- 1 merijn users 40940 Mar 20 15:01 test-t.pl 06:31
-rw-rw-r-- 1 merijn users 6711 Jan 14 18:18 test.pl
to show the amount of changes since test.pl :) 06:32
isBEKaml p6: my @arr = <a b c d>; @arr.>> .say; #whitespace sensitive? 06:42
camelia rakudo-moar 0e5632: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Confused␤at /tmp/tmpfile:1␤------> 3my @arr = <a b c d>; @arr.>>7⏏5 .say; #whitespace sensitive?␤»
isBEKaml p6: my @arr = <a b c d>; @arr.>>.say; #works
camelia rakudo-moar 0e5632: OUTPUT«d␤b␤c␤a␤»
DrForr Good morning. 06:48
p6: grammar G { rule program { <term> } } 06:49
camelia ( no output )
DrForr I take it a grammar with an unspecified subrule is still valid at compile time? 06:50
TimToady same as any method 06:51
DrForr Fair enough.
[Tux] tips on how to fix travis-ci.org/Tux/CSV/builds/55348795 would be appreciated <= panda not found in travis 07:05
moritz m: proto a(Int, Int) is cached {*}; multi a(Int \n, 0) { n + 1 }; multi (0, Int \m) { a m-1, 1 }; multi (\n, \m) { a m - 1, a m, n - 1 }; say a 3, 1 08:02
camelia rakudo-moar 0e5632: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ReGswbEqUu␤ scoped variables not yet implemented. Sorry. ␤at /tmp/ReGswbEqUu:1␤------> 3(Int \n, 0) { n + 1 }; multi (0, Int \m)7⏏5 { a m-1, 1 }; multi (\n, \m) { a m - 1,␤»
moritz that error message is LTA 08:03
m: proto a(Int, Int) is cached {*}; multi a(Int \n, 0) { n + 1 }; multi a(0, Int \m) { a m-1, 1 }; multi (\n, \m) { a m - 1, a m, n - 1 }; say a 3, 1
camelia rakudo-moar 0e5632: OUTPUT«5===SORRY!5=== Error while compiling /tmp/QVtv49TRAs␤ scoped variables not yet implemented. Sorry. ␤at /tmp/QVtv49TRAs:1␤------> 3(0, Int \m) { a m-1, 1 }; multi (\n, \m)7⏏5 { a m - 1, a m, n - 1 }; say a 3, 1␤»
moritz m: proto a(Int, Int) is cached {*}; multi a(Int \n, 0) { n + 1 }; multi a(0, Int \m) { a m-1, 1 }; multi a(\n, \m) { a m - 1, a m, n - 1 }; say a 3, 1
camelia rakudo-moar 0e5632: OUTPUT«(timeout)» 08:04
moritz the "is cached" doesn't seem to work here 08:06
and I messed up the definition, of course 08:11
moritz and I'm able to compute ack(4, 1) in <2min on rakudo-moar 08:15
moritz prof-m: proto a(Int, Int) is cached {*}; multi a(0, Int \n) { n + 1 }; multi a(Int \m, 0) { a m -1 , 1 }; multi a(Int \m, Int \n) { a m - 1, a m, n - 1 }; say a 3, 4 08:16
camelia prof-m 0e5632: OUTPUT«125␤»
.. Prof: p.p6c.org/69fa6b
moritz j: say 'still here?' 08:24
camelia rakudo-jvm 0e5632: OUTPUT«still here?␤»
moritz \o/
both prof-m and j still work
that's better than I dared to hope for :-)
masak good morning, #perl6 08:25
moritz \o masak 08:26
DrForr Sorry for my rambling on #124141 but it looks like a gaping hole in docs to me :) 09:47
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=124141
masak DrForr++ # bug report 10:00
also, I completely agree that the error message shouldn't be that. 10:01
and that it should probably hint "(did you forget to import Bug::Role?)"
m: class A does R {} 10:02
camelia rakudo-moar 0e5632: OUTPUT«5===SORRY!5=== Error while compiling /tmp/uq0_hApDkc␤Invalid typename␤at /tmp/uq0_hApDkc:1␤------> 3class A does7⏏5 R {}␤»
DrForr Cool. Yeah, I figured it was easy to replicate on command line :)
I figured that the official error message could be left intact, and if the RHS were a package name then the error message could be annotated. 10:05
It's also odd that 'use' doesn't appear to be documented yet. I know about it, and most perl6 hackers are old perl5 hands that do this as a matter of course, but eventually we're going to get *complete* perl newbies and the documentation needs to be patched. 10:06
I'm kind of busy with other stuff but I might make a pull request once I find the right place to patch the docs. 10:07
FROGGS morning 10:11
masak marnin', FROGGS 10:12
DrForr m: role X { has $!y; }; role Z does X { method z { $!y++; } } 10:30
camelia rakudo-moar 0e5632: OUTPUT«===SORRY!===␤Error while compiling, type X::Attribute::Undeclared␤ symbol: $!y␤ package-kind: role␤ package-name: Z␤ what: attribute␤ at line 2, near "++; } }"␤Error while constructing error object:Could not locate compile-time value for …»
masak yeah. no.
use an accessor to get at the attribute from another class/role.
DrForr So they don't compose that way. Cool, good to know. 10:32
masak m: role R { has $!foo = "OH HAI" }; class C does R { method bar { say $!foo } }; C.new.bar 10:38
camelia rakudo-moar 0e5632: OUTPUT«OH HAI␤»
masak DrForr: ^ this works, though
DrForr Yeah, just changed my code a little it.
masak between a role and a class
I'm not quite sure why.
masak I think the idea is something like, a role flattens into a class, so it's already privvy to private details. or sump'n. 10:39
(also, don't name your roles "X" in production. X:: is the exceptions namespace.)
DrForr Right, and roles don't flatten into other roles so yada yada.
masak right.
DrForr I know, I was using it as a short example. 10:40
masak *nod*
suspected as much. still bears pointing out. :)
DrForr I also don't really think that this particular role should really exist as it only provides data rather than methods, but as it's still legal syntax I thought I'd roll with it for the time being. 10:41
Also, a philosophy question on grammars - Is it okay to use the grammar actions to essentially ignore building the parse tree, or will I run into problems later on if I have to backtrack and I can't unwind the action stack 10:46
s/$/?
eli-se hi 10:48
DrForr Or come to think of it, will an action even fire on a non-{token,rule} in a grammar... 10:49
FROGGS it can only fire on tokens/rules 10:52
hi eli-se
masak hi eli-se 10:53
DrForr Okay. The grammar I'm playing with is recursive-descent at the moment, but further iterations might not be. Probably puts it out of range of a perl6 grammar then anyway, and I'd have to just rely on tokenization anyway.
Good gravy, a perl6 backend to ANTLR. ISA...miniscule...N. 10:55
dalek p: 818a382 | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/tools/EvalServer.java:
Capture the Java process STDOUT/-ERR.

This correctly redirects output to STDOUT/-ERR made via JavaInterop to the eval-client, instead of printing on the terminal where the eval-server is executed.
11:17
psch \o 11:18
jnthn afternoon, #perl6 11:18
dalek kudo/nom: 20ffd3c | lizmat++ | src/core/natives.pm:
Goodbye nibble, we hardly ever knew ya
11:21
jnthn Reminds me of en.wikipedia.org/wiki/Nibbles_%28video_game%29 :) 11:23
eli-se Writing VMs is fun. 11:24
FROGGS jnthn: that was the very first thing I hacked on :o)
jnthn FROGGS: Wasn't the first, but I remember studying the QBasic nibbles source pretty early on :)
FROGGS (created more levels on my old i286 PC)
DrForr Heh, reminds me of the magazine of the same name. ('Nibble' that is, Apple ][ enthusiast mag)
jnthn iirc, it used loops for timing too :) 11:25
So faster computer = harder game :)
psch en.wikipedia.org/wiki/Gorillas_(video_game) was my preference, for playing and hacking 11:26
lizmat a glimpse of the future? toons.gotblah.com/archive/9chickwee...2-0701.jpg :-)
jnthn psch: Yes, I probably played that one more :) 11:27
jnthn DrForr: On your actions question earlier: the idea is that you use "make" to attach the AST node you made for a certain grammar rule to Match object, and the action methods higher up retrieve it with .made. That way, if a path turns out to be a dead end and a Match is thrown away, the AST node just goes away with it, nicely handling the backtracking case. 11:36
lizmat playing with CurtisOvidPoe's blogpost: blogs.perl.org/users/ovid/2015/03/t...erl-6.html
m: 42.say.for(^6) # shouldn't this just work ?
camelia rakudo-moar 0e5632: OUTPUT«42␤Unhandled exception: Method 'count' not found for invocant of class 'Range'␤ at <unknown>:1 (/home/camelia/rakudo-inst-2/share/nqp/lib/Perl6/BOOTSTRAP.moarvm::4294967295)␤ from src/gen/m-CORE.setting:9545 (/home/camelia/rakudo-inst-2/share/per…»
FROGGS DrForr: so instead of running code that has side effects in a branch that gets thrown away, you could return a piece of code to run it later 11:37
jnthn lizmat: I don't especially see how...you pass an invokable to .for 11:38
masak when I hear "running code that has side effects in a branch that gets thrown away", I think about `temp` and (especially) `let`.
to be honest, I haven't seen a convincing use case of `let`, or much of a use case at all.
jnthn lizmat: (^6).for({42.say}) would be a working example 11:39
lizmat: Though I'd probably always write "say 42 for ^6" :)
masak it seems a wonderfully useful construct for anything hypothetical/simulation-y. it's not clear to me why we're not promoting/using it more in code.
lizmat jnthn: ok, guess I wasn't awake yet 11:40
jnthn: although the error is LTA, can we agree on that ?
DrForr Indeed. I was more thinking along the lines of a more traditional yacc-based parser. I'm going to separate it out into two levels, but I thought I'd experiment with just the one for the time being. The grammar itself practically generates the TAC I'm looking at.
jnthn lizmat: Probably .map should expect a Callable.
I don't *think* it works on anything else.
And putting the & into the method sig would mean it does there, rather than at the point it tries to call .count 11:41
uh, it *dies* there
DrForr Also, what I'm working on has several different small grammars in it, and I thought it'd be nice to teach multiple approaches to the parsing problem. I was thinking like the traditional "calc" example you do in yacc, then later refinements add on a second layer. 11:42
lizmat afk again
DrForr It might also be instructive to have the grammar's make() method return closures that the backtracking process won't directly invoke, then at the top layer the made() method is left with a stack of closures to invoke. Just another alternative parsing strategy. 11:44
DrForr But as right now my top-level 'method TOP{}' isn't getting invoked, I'll have to explore *that* first. 11:46
psch the action method TOP needs a positional for the Match object 11:47
DrForr Right, it's got one, I just didn't specify $/ on-channel because I'm a lazy bastard :) 11:48
method TOP($/) { warn "Invoked" } # like so.
psch fwiw, naming it $/ is a convention with potentially surprising side effects 11:49
(that doesn't directly help your debugging efforts though :) )
jnthn It's generally a fine convention in so far as if you hit the surprise you're re-parsing, which is probably already a smell :)
m: grammar G { token TOP { <?> } }; class A { method TOP($/) { say here' } }; G.parse('', actions => A) 11:50
camelia rakudo-moar 0e5632: OUTPUT«5===SORRY!5=== Error while compiling /tmp/nbbMlpJoCq␤Two terms in a row␤at /tmp/nbbMlpJoCq:1␤------> 3} }; class A { method TOP($/) { say here7⏏5' } }; G.parse('', actions => A)␤ expecting any of:␤ infix stopper␤ infi…»
jnthn m: grammar G { token TOP { <?> } }; class A { method TOP($/) { say 'here' } }; G.parse('', actions => A) 11:51
camelia rakudo-moar 0e5632: OUTPUT«here␤»
jnthn DrForr: You're likely missing one of the ingredients in ^^ if your TOP ain't being called.
DrForr I was using :$actions as per the documentation. That seems to work for me, I'll debug further once I get back. 11:52
psch yeah, the convention is sensible. i suppose nagging about regexen inside an action method could be a linter thing
DrForr The doco in grammars.pod doesn't mention surprising behavior for using $/ as an argument name, maybe there's something to be added. 11:53
psch DrForr: well, it's a general "this is how signatures and lexicals behave"-thing 11:54
m: sub f($a) { $a = 1 }; f 0
camelia rakudo-moar 20ffd3: OUTPUT«Cannot assign to an immutable value␤ in block <unit> at /tmp/jBYUkURMNc:1␤␤»
DrForr It just says that it makes $<foo> nicer than $/<foo> is all.
psch m: sub f($/) { "a" ~~ /a/ }; f 1
camelia rakudo-moar 20ffd3: OUTPUT«Cannot assign to a readonly variable or a value␤ in method ACCEPTS at src/gen/m-CORE.setting:16292␤ in sub f at /tmp/yZFqlWRoAU:1␤ in block <unit> at /tmp/yZFqlWRoAU:1␤␤»
psch DrForr: $/ as bare parameter isn't rw or copy, and ~~ tries to assign to it 11:55
DrForr Ah, because Match is an immutable object. Which of course is why there's a parallel '.make' method.
That error should be clear enough, I suppose. 11:56
Okay, food then back to hacking a VM onto a VM :)
eli-se .tell vendethiel hello world works! 12:02
yoleaux eli-se: I'll pass your message to vendethiel.
DrForr eli-se: What VM are you experimenting with, incidentally? (if you don't mind, of course) 12:05
eli-se custom
DrForr Righto, just curious. THe grammar I'm working on is a frontend to a VM as well, so similar paths &c. 12:06
Okay, food.
Ulti .tell japhb let me know if there is anything I can do to make this worthy of perl-bench github.com/japhb/perl6-bench/pull/23 12:07
yoleaux Ulti: I'll pass your message to japhb.
dalek Heuristic branch merge: pushed 90 commits to rakudo/union by FROGGS 12:12
moritz m: sub f(int, int) is cached { 42 }; say f(1, 2)
camelia rakudo-moar 20ffd3: OUTPUT«42␤»
moritz m: sub f(int $ where 0) { 42 }; say f 0 12:14
camelia rakudo-moar 20ffd3: OUTPUT«42␤»
FROGGS jnthn: I really need inlineable CStructs... I am binding a C++ lib right now and have to duplicate attributes which sucks... 12:15
eli-se My compiler is written in Perl 5, but GitHub thinks it's Perl 6. 12:15
That must be really good Perl 5 code!
FROGGS eli-se: do you use Moose or something? 12:16
eli-se not at all
FROGGS hmmm
I'd guessed it spots some P6ish keywords
marisa__ Github always think I am writing C code although I only wrote C++ code with lambda, auto, move and decltype... Try modifying .gitattribute 12:20
eli-se Name your files .cpp and .hpp instead of .c and .h 12:22
and stop using malloc and free :p
psch m: say 1i 12:27
camelia rakudo-moar 20ffd3: OUTPUT«0+1i␤»
psch j: say 1i
camelia rakudo-jvm 20ffd3: OUTPUT«P6opaque representation can not unbox to a native num␤ in submethod BUILD at gen/jvm/CORE.setting:12902␤ in method new at gen/jvm/CORE.setting:12897␤ in block <unit> at /tmp/XxiXLiBaVo:1␤␤»
marisa__ I never use malloc and free. I don't even use new and delete :p I'd only used std::make_shared and std::make_unique my whole life. The truth is github language detection suck. 12:28
eli-se I use automatic storage duration.
marisa__ Yeah, me too. 12:29
eli-se I use new in a few places that have to do with my GC, since the values managed by the GC have to be trivially copyable since the GC will be compacting ASAP 12:29
but that's fine since the GC will call the finalizers 12:30
nine_ jnthn: a bit of a shame. In Perl 6 the most annoying syntax difference between map BLOCK and map EXPR finally goes away, but still we can only use map BLOCK (even though we can hide the fact, that we're passing a block). A use case for simpler string map is e.g. creating DBI queries: $dbh.do("insert into foo values ( { @values.map('?').join(', ') } )", Any, |@values); 12:35
timotimo o/ 12:39
geekosaur nine_, as an ex-database type, I shudder at expanding placeholders inline like that 12:40
nine_ geekosaur: why exactly? 12:40
geekosaur are you absolutely certain that the values you're putting in are safe to stringify? 12:41
nine_ geekosaur: do they have to be?
geekosaur frankly, if you have placeholders, use them, don't stringify yourself. not only do you have "little bobby tables" but you are stringifying non-strings so that SQL can parse them again, why?
timotimo nine_: may i suggest ('?' xx @values).join(', ') instead of mapping? 12:42
geekosaur also fun things like if one of them is a date and/or time, stringifying likes to introduce chances for something to switch timezones or date formats on you etc. 12:43
nine_ geekosaur: no, I'm not. I'm only dynamically creating the values (?, ?, ?, ?, ?) part of the query string. I'm passing the actual values to $dbh.do, so it can properly pass them to the database driver
timotimo: that's indeed much prettier
geekosaur oh, I misundersgood what you were trying to say witht hat map
timotimo not being able to '?, ' xx @values is annoying 12:44
we already have % in regexes ...
geekosaur (and as a haskeller I think map('?') meaning map(\_ -> '?') is bad too :p )
timotimo i don't get it, geekosaur 12:46
vendethiel o/ eli-se
yoleaux 12:02Z <eli-se> vendethiel: hello world works!
vendethiel nice
geekosaur hm? they used map(literal) meaning ignore the passed-in value. in haskell I'd be saying "const" there to indicate I'm consuming something (the passed-in value). not sure how you'd express that in perl6 but you're screwing type handling by quietly having the map expression be either a value or a function from one value to another 12:48
vendethiel m: sub const($val) { -> |c { $val } }; say map(const('hey'), <a b c d>); 12:50
camelia rakudo-moar 20ffd3: OUTPUT«hey hey hey hey␤»
eli-se what is |c? 12:51
moritz caputre all the arguments 12:52
psch j: sub f(Num() $a) { say $a.WHAT }; sub g(Num() \a) { say a.WHAT }; f 1; g 1 12:55
camelia rakudo-jvm 20ffd3: OUTPUT«(Num)␤(Int)␤»
psch ^^^ that's behind a few dozend spectest failures on jvm 12:56
m: sub f(Num() $a) { say $a.WHAT }; sub g(Num() \a) { say a.WHAT }; f 1; g 1
camelia rakudo-moar 20ffd3: OUTPUT«(Num)␤(Num)␤»
DrForr m: grammar G { token TOP { <?> } }; class A { metod TOP($/) { say 'here' } }; my $v-foo = A.new; G.parse('',:$v-foo) 13:00
camelia rakudo-moar 20ffd3: OUTPUT«5===SORRY!5=== Error while compiling /tmp/cDHlmiA6wA␤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?)␤at /tmp/cDHlmiA6wA:1␤------> 3n TOP { <?> } }; class A { metod TOP($/)7⏏5 { say 'here' } }…»
DrForr m: grammar G { token TOP { <?> } }; class A { method TOP($/) { say 'here' } }; my $v-foo = A.new; G.parse('',:$v-foo)
camelia ( no output )
psch DrForr: :$actions is shorthand for actions => $actions
DrForr I understand that from reading the docs. But the shorthand notation there should still accept hyphenated variable names? 13:02
m: grammar G { token TOP { <?> } }; class A { method TOP($/) { say 'here' } }; my $v-foo = A.new; G.parse('',actions => $v-foo)
camelia rakudo-moar 20ffd3: OUTPUT«here␤»
psch DrForr: yeah, it does. but you're passing a named parameter v-foo, which .parse doesn't do anything with 13:03
DrForr m: grammar G { token TOP { <?> } }; class A { method TOP($/) { say 'here' } }; my $foo = A.new; G.parse('',:$foo)
camelia ( no output )
psch m: sub f(*%_) { %_.perl.say }; my $a = "a"; say f :$a
camelia rakudo-moar 20ffd3: OUTPUT«("a" => "a").hash␤True␤»
psch m: sub f(*%_) { %_.perl.say }; my $b = "a"; say f :$b
camelia rakudo-moar 20ffd3: OUTPUT«("b" => "a").hash␤True␤»
psch DrForr: methods have an implicit slurpy hash for named arguments, to provide interface consistency design.perl6.org/S12.html#Interface_Consistency 13:04
DrForr grammars.pod uses the ':$actions' notation that I was following. 13:05
psch m: my $actions = "foo"; my $v-foo = "bar"; say :$actions.perl; say :$v-foo.perl
camelia rakudo-moar 20ffd3: OUTPUT«"actions" => "foo"␤"v-foo" => "bar"␤»
psch DrForr: doc.perl6.org/type/Pair
DrForr It's also not failing on the version the channel 'bot is on. Hrming. 13:06
psch m: class A { method foo(:$actions, *%_) { say $actions; say "but: " ~ %_ }; my $actions = "action!"; A.new.foo(:$actions); my $v-foo = "uh, what?"; A.new.foo(:$v-foo) 13:07
camelia rakudo-moar 20ffd3: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Gl6ZAbNVB6␤Unable to parse expression in block; couldn't find final '}' ␤at /tmp/Gl6ZAbNVB6:1␤------> 3$v-foo = "uh, what?"; A.new.foo(:$v-foo)7⏏5<EOL>␤ expecting any of:␤ statement en…»
psch m: class A { method foo(:$actions, *%_) { say $actions; say "but: " ~ %_ } }; my $actions = "action!"; A.new.foo(:$actions); my $v-foo = "uh, what?"; A.new.foo(:$v-foo)
camelia rakudo-moar 20ffd3: OUTPUT«action!␤but: ␤(Any)␤but: v-foo uh, what?␤»
psch isn't sure if that's actually helping 13:08
DrForr It is, but I think that's rather more fundamental than what I was looking at.
psch well, that's what it comes down to. colonpair-for-named-args works, when your argument variables are called the same as the named parameter you want to bind them to 13:09
that is, the shortest colonpair notation — :actions($v-foo) still works of course 13:10
DrForr Oh, good grief, I see what you're geting at. It's *not* a coincidence that 'actions' in ':$actions' matches the named parameter, I was thinking it was a positional argument. 13:11
Right. Back to work then. 13:12
I'm just used to reading a leading colon as a keyword in Lisp. 13:14
jnthn nine_: Would @values.map('?') just map every element to a '?'? If so, ('?' xx @values) will do just as well
timotimo jnthn: i told him the same thing :D 13:15
jnthn Oh
I'm still catching up :)
timotimo is just proud of himself for catching that
jnthn airport, flight, etc. & 13:54
timotimo bon voyage
masak hello, #perl6... 14:01
...FROM A TRAIN \o/
atroxaper hello, #perl6 ! 14:02
masak: o/
masak atroxaper: \o
atroxaper how can I make regex for sequens of any characters but not some of them? Or pare of them? For example any characters but not '*/' 14:04
vendethiel o/
timotimo that'd be <-[*/]>
you're looking for a "negated character class"
atroxaper '/*' <-[*/]>* '*/' is not work for /* * */ 14:05
atroxaper timotimo: i want to negated sequens of two characters. 14:07
timotimo oh
skids atroxaper: you can use <!before> but there may be a better way.
timotimo so more like a negative lookahead?
yeah, <!before ...> would do it
atroxaper Hm. Let's try... 14:08
atroxaper Does before get only one previous pointer or all which precede him? 14:18
Oh.... Forget it))
skids m: '/*aaa*/' ~~ m/ '/*' ~ '*/' (a*) /; $/.gist.say
camelia rakudo-moar 20ffd3: OUTPUT«「/*aaa*/」␤ 0 => 「aaa」␤»
psch m: say '/* * */' ~~ m/ '/*' ~ '*/' ./; 14:19
camelia rakudo-moar 20ffd3: OUTPUT«Unable to parse expression in ; couldn't find final '*/' ␤ in method match at src/gen/m-CORE.setting:7499␤ in block <unit> at /tmp/dEDHvQNbYo:1␤␤»
psch i really dislike that about regex ~
atroxaper skids: What is '~' ? 14:20
skids It should be sugar for nested parens.
But -- it seems to have a coupld issues right now. 14:21
masak agreed.
psch: so, it backtracked, and then the whole match threw an exception?
that's maybe the best reason I've heard so far for ~ not to throw an exception. it should fail the match, *like everything else* in the regex language. 14:22
psch masak: my example is flawed, i think. needs a quantifier behind . 14:24
m: say '/* * */' ~~ m/ '/*' ~ '*/' .+/;
camelia rakudo-moar 20ffd3: OUTPUT«Unable to parse expression in ; couldn't find final '*/' ␤ in method match at src/gen/m-CORE.setting:7499␤ in block <unit> at /tmp/RliZfg4wqI:1␤␤»
masak it fails regardless, so I don't see why you'd need to add the '+'
psch but that probably should work, but doesn't. i'd guess that it doesn't backtrack when it should?
masak the problem is that the '.' causes the '~' to backtrack.
skids m: '/* * */' ~~ m/:dba('foo') '/*' ~ '*/' .+/;
masak and then the '~' fails, not by failing the match, but by throwing.
camelia ( no output )
psch yeah, throwing happens in FAILGOAL iirc 14:25
atroxaper I still don't know how parse C style comment like /**/ /* */ /* bb */ /* bb b */ /***/ 14:27
Can you help me?
flussence m: say '/* * */' ~~ m/ '/*' ~ '*/' [.+]/; 14:28
camelia rakudo-moar 20ffd3: OUTPUT«Unable to parse expression in ; couldn't find final '*/' ␤ in method match at src/gen/m-CORE.setting:7499␤ in block <unit> at /tmp/_qYBssWryd:1␤␤»
psch m: say '/* * */' ~~ m/ '/*' <!before '*/'> . '*/' / 14:29
camelia rakudo-moar 20ffd3: OUTPUT«False␤»
masak m: $_ ~~ /'/*' ([<!before '*/> .]*) '*/' / and say ~$0 for '/**/', '/* */', '/* bb */', '/* bb b */', '/***/'
camelia rakudo-moar 20ffd3: OUTPUT«5===SORRY!5=== Error while compiling /tmp/xfjH0Q7VmF␤Unable to parse expression in metachar:sym<assert>; couldn't find final '>' ␤at /tmp/xfjH0Q7VmF:1␤------> 3$_ ~~ /'/*' ([<!before '*/> .]*) '*7⏏5/' / and say ~$0 for '/**/', '/* */', '/…»
psch m: say '/* * */' ~~ m/ '/*' <!before '*/'> .+ '*/' /
camelia rakudo-moar 20ffd3: OUTPUT«「/* * */」␤»
masak m: $_ ~~ /'/*' ([<!before '*/'> .]*) '*/' / and say ~$0 for '/**/', '/* */', '/* bb */', '/* bb b */', '/***/'
camelia rakudo-moar 20ffd3: OUTPUT«␤ ␤ bb ␤ bb b ␤*␤»
masak atroxaper: ^^
atroxaper masak: WOW! I have to parse your regex :) 14:30
Thank you all!
masak it uses negative lookahead.
which means "make sure we're not at a '*/'"
m: /'/*' ([<!before '*/'> .]*) '*/' / and say ~$0 for '/**/', '/* */', '/* bb */', '/* bb b */', '/***/' 14:31
camelia rakudo-moar 20ffd3: OUTPUT«␤ ␤ bb ␤ bb b ␤*␤»
masak shorter :)
flussence (how hard would it be to programmatically get an AST of of a regex?)
masak flussence: check out jnthn's Grammar::Generative 14:32
flussence ooh, will do
grondilu ~ should work though, why doesn't it?
('/*' ~ '*/' .*) I mean
skids wonders why :dba keeps the exception from happening above
flussence ISTR something a few weeks ago where declarative regexes were misbehaving but making them procedural made them work fine... 14:33
atroxaper masak: Why we need . it the regex? 14:34
psch m: say '/* */' ~~ m/ '/*' ~ '*/' ./
camelia rakudo-moar 20ffd3: OUTPUT«「/* */」␤»
masak atroxaper: because <!before ...> is a zero-width match and you need to progress the match somehow.
atroxaper: the '.' means "grab one more character"
psch masak: i think that means that my unquantified example failed because it didn't find '*/' after one char but the quantified one fails because it doesn't backtrack
masak ok 14:35
skids Oh the :dba must just be making it fail always.
masak psch: I must be tired or something, because I've read what you just said twice now, and I'm not sure I get it.
psch m: say '/* */' ~~ m/ '/*' ~ '*/' ...?/
camelia rakudo-moar 20ffd3: OUTPUT«Unable to parse expression in ; couldn't find final '*/' ␤ in method match at src/gen/m-CORE.setting:7499␤ in block <unit> at /tmp/TWRLh0Va7H:1␤␤»
masak psch: but, submit rakudobugs at will, I guess ;) 14:36
atroxaper masak: oh. I see :)
flussence also, I have a hunch that fixing that would fix github.com/jnthn/grammar-debugger/issues/13
psch masak: RT #68854 looks quite comprehensive, at a glance 14:37
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=68854
psch oh, but it's resolved
hm
m: say '/* */' ~~ rule { '/*' ~ '*/' ...? } 14:38
camelia rakudo-moar 20ffd3: OUTPUT«Unable to parse expression in ; couldn't find final '*/' ␤ in regex at /tmp/bjRF3jjCoe:1␤ in method ACCEPTS at src/gen/m-CORE.setting:16292␤ in block <unit> at /tmp/bjRF3jjCoe:1␤␤»
psch shrugs
i have jvm binder to fix :s
*a
masak yeah, that seems related. 14:44
timotimo ~ expects you to parse the stuff between the begin and end precisely 14:46
psch that was understanding, anyway. that ~ doesn't allow backtracking into the expression afterwards
which makes it a bit less useful than i personally would like it to be 14:47
timotimo m: say '/* */' ~~ rule { '/*' ~ '*/' .+? }
camelia rakudo-moar 20ffd3: OUTPUT«Unable to parse expression in ; couldn't find final '*/' ␤ in regex at /tmp/dm2BkjDH1s:1␤ in method ACCEPTS at src/gen/m-CORE.setting:16292␤ in block <unit> at /tmp/dm2BkjDH1s:1␤␤»
timotimo also, i believe you need to put parens around "...?"
m: say '/* */' ~~ rule { '/*' ~ '*/' [...?] }
camelia rakudo-moar 20ffd3: OUTPUT«Unable to parse expression in ; couldn't find final '*/' ␤ in regex at /tmp/6sXcqdhuFW:1␤ in method ACCEPTS at src/gen/m-CORE.setting:16292␤ in block <unit> at /tmp/6sXcqdhuFW:1␤␤»
timotimo m: say '/* */' ~~ rule { '/*' ~ '*/' [..] }
camelia rakudo-moar 20ffd3: OUTPUT«Unable to parse expression in ; couldn't find final '*/' ␤ in regex at /tmp/X7WDFspEbk:1␤ in method ACCEPTS at src/gen/m-CORE.setting:16292␤ in block <unit> at /tmp/X7WDFspEbk:1␤␤»
timotimo oh?
psch huh?
timotimo m: say '/* */' ~~ regex { '/*' ~ '*/' [..] }
camelia rakudo-moar 20ffd3: OUTPUT«「/* */」␤»
timotimo sigspace 14:48
psch ah right
psch m: say '/* */' ~~ regex { '/*' ~ '*/' [..?] } 14:48
camelia rakudo-moar 20ffd3: OUTPUT«Unable to parse expression in ; couldn't find final '*/' ␤ in regex at /tmp/mEmK_mdiY3:1␤ in method ACCEPTS at src/gen/m-CORE.setting:16292␤ in block <unit> at /tmp/mEmK_mdiY3:1␤␤»
masak timotimo: I think that's a good point. '~' is really a tool for token/rule that have backtracking turned off. because it really doesn't work well with backtracking.
psch yeah, but the .? doesn't get unmatched
timotimo aye
bbkr moar: use Test; sub foo { my @a; return @a;}; is foo, Nil 15:06
r: use Test; sub foo { my @a; return @a;}; is foo, Nil
camelia rakudo-moar 20ffd3: OUTPUT«not ok 1 - ␤␤# Failed test at /tmp/tmpfile line 1␤# expected: (Nil)␤# got: ''␤»
dalek kudo-star-daily: 5a9f7da | coke++ | log/ (9 files):
today (automated commit)
rl6-roast-data: bf55012 | coke++ | / (9 files):
today (automated commit)
timotimo bbkr: "is" uses string comparison 15:08
bbkr i see that it changed between 2015.02 and 2015.03, on 2015.02 this test passes 15:09
timotimo oh 15:11
jnthn Note that a ~ b c is *not* defined as syntax sugar for a c b 15:12
If that's all it did, it'd not really be worth it.
bbkr looks like empty array is not implicitly "flattened" to Nil now. however I don't see any changelog entry about it. explicit flattening works: 15:13
r: use Test; sub foo { my @a; return |@a;}; is foo, Nil
camelia rakudo-moar 20ffd3: OUTPUT«ok 1 - ␤»
jnthn bbkr: I think "is" got stricter around type object-y things 15:14
bbkr: It used to just stringify them to empty
So an empty array would probably have matched any type object, not just Nil, before
timotimo aye 15:15
jnthn: are you just on the airport or have wifi on the plane?
jnthn Airport
No plane wifi, usually...if there is it's extortionately priced and slow and given the flight is sub-hour usually and you can't use it for the first and last 10 minutes, it's really not worth it. 15:16
timotimo ah, OK
jnthn for those who *really* want a ~ b c to backtrack, it should be possible to define a token FAILGOAL(|) { <!> } 15:18
timotimo m: say "used to be 2359603, now is 2395358, that's a reduction to { 2359603 / 2395358 }% for nqp"
camelia rakudo-moar 20ffd3: OUTPUT«used to be 2359603, now is 2395358, that's a reduction to 0.98507321% for nqp␤»
jnthn I guess the other option would be to define FAILGOAL like that in Cursor, define it to throw in Grammar, and then use in /.../ would backtrack and in grammars would throw.
But maybe that's just differently unhelpful :) 15:19
timotimo m: say "used to be 47547366, now is 46871722, that's a reduction to { 46871722 / 47547366 }% for rakudo"
camelia rakudo-moar 20ffd3: OUTPUT«used to be 47547366, now is 46871722, that's a reduction to 0.985790086% for rakudo␤»
jnthn timotimo: What's the measurement for? :) 15:19
timotimo not such a gigantic win
turning "mov TMP6, TC; mov ARG1, TMP6" into just "mov ARG1, TC" 15:20
if the first argument to a c function with TC as first arg into just that
jnthn It's > 1% in both cases
timotimo yeah
jnthn That is quite big for saving instructions :)
timotimo that's bytes 15:21
[Coke] anyone know what happened to hack this time?
jnthn timotimo: oh, not time...
timotimo nope
very much not so :)
jnthn Still, worth saving the memory and it will have to make things a little faster 15:22
callgrind gives exact instruction counts.
timotimo fair enough
jnthn Suspect it's another thing that the exprcomp thingy brrt++ will hopefully work on this summer will make easier. 15:24
dalek kudo/nom: 1f7f691 | peschwa++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java:
Correct an error in the Binder.

Previously «sub f(Num() \a) { a.WHAT.say }; f 5» would print «(Int)», because the R-J Binder didn't pass the coerced value but the original value to the CallFrame. With this patch we correctly print «(Num)».
15:27
jnthn psch++
timotimo yes, the exprcomp will pretty much make this special case optimization superfluous 15:28
psch Mouq++ # for the opt that brought the Binder bug to the surface
timotimo with my limited ability to come up with super cool optimizations, i'm turning to smaller and smaller straws :P 15:29
jnthn bawdin thyme... & 15:37
timotimo Stage parse : 903.469 15:40
wowza
psch heh 15:45
m: say uniname -1
camelia rakudo-moar 20ffd3: OUTPUT«should eventually be unreachable␤ in sub uniname at src/gen/m-CORE.setting:8670␤ in block <unit> at /tmp/B_LbZ96Xk_:1␤␤»
psch eventually... :) 15:46
timotimo hehe.
jdv79 do the JSON::Jansson tests fail for anyone else on current 15:48
timotimo 137,308,341,032 instructions for stage parse 15:51
masak psch: that's an LTA error message. please submit rakudobug 15:55
psch masak: i'm not sure it's not a moar issue 15:57
MVM_unicode_get_name doesn't expect an adhoc throw, but MVM_codepoint_to_row_index throws one
the nqp or rakudo layers don't really seem involved, from my POV 15:58
but i don't know how to fix it offhand, and it probably shouldn't get lost... 15:59
itz is libm math like "pow" done in nqp or MoarVM? or both? 16:00
timotimo in MoarVM for nqp-moar or in parrot for nqp-parrot
not exactly sure if we use java's built-in multi-prec math? 16:01
masak psch: I'd say it's a rakudobug even if it turns out to be a moar issue. 16:03
psch #124144 16:05
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=124144
masak psch++
flussence m: my bit $a = 2; 16:12
camelia rakudo-moar 1f7f69: OUTPUT«===SORRY!===␤Invalid int size for local/lexical␤»
flussence m: my bit $a = 1;
camelia rakudo-moar 1f7f69: OUTPUT«===SORRY!===␤Invalid int size for local/lexical␤»
flussence oh, lemme guess...
flussence m: my bit @a = [0,1].pick xx 8; 16:12
camelia rakudo-moar 1f7f69: OUTPUT«===SORRY!===␤MVMArray: Unsupported uint size␤»
psch m: my bit $x 16:13
camelia rakudo-moar 1f7f69: OUTPUT«===SORRY!===␤Invalid int size for local/lexical␤»
flussence shrugs
psch m: my int1 $x
camelia rakudo-moar 1f7f69: OUTPUT«===SORRY!===␤Invalid int size for local/lexical␤»
timotimo m: say "the instruction count went down to { 137308341032 / 137495380335 }%" 16:19
camelia rakudo-moar 1f7f69: OUTPUT«the instruction count went down to 0.9986396684562%␤»
timotimo er, not % of course 16:20
m: say 0.9986396684562 * 100
camelia rakudo-moar 1f7f69: OUTPUT«99.86396684562␤»
timotimo m: say 100 - 0.9986396684562 * 100
camelia rakudo-moar 1f7f69: OUTPUT«0.13603315438␤»
timotimo less than 1% instruction count change
flussence small things like that can compound on each other though :) 16:21
timotimo well ... only if i do more improvement like that
azawawi hi 16:25
timotimo heyo azawawi! 16:26
long time no sea :)
azawawi im back :) 16:28
masak azawawi! \o/
azawawi is now testing farabi6 on win32 and linux :) 16:29
masak .oO( 好久不海了 ) :P
azawawi is there something like __FILE__ in Perl 6? 16:31
flussence $?FILE ?
azawawi takes a look
flussence same pattern goes for $?LINE, $?CLASS and &?ROUTINE 16:32
m: say $?FILE, $?LINE, $?CLASS, &?ROUTINE
camelia rakudo-moar 1f7f69: OUTPUT«5===SORRY!5=== Error while compiling /tmp/DJdv6iMtAJ␤Variable '$?CLASS' is not declared␤at /tmp/DJdv6iMtAJ:1␤------> 3say $?FILE, $?LINE, $?CLASS7⏏5, &?ROUTINE␤ expecting any of:␤ postfix␤»
flussence m: say $?FILE, $?LINE, &?ROUTINE
camelia rakudo-moar 1f7f69: OUTPUT«5===SORRY!5=== Error while compiling /tmp/STXMoOcQMD␤Undeclared routine:␤ &?ROUTINE used at line 1␤␤»
flussence m: say $?FILE, $?LINE
camelia rakudo-moar 1f7f69: OUTPUT«/tmp/aoAJJIWMJr1␤»
flussence m: sub r { say &?ROUTINE }; r 16:33
camelia rakudo-moar 1f7f69: OUTPUT«sub r () { #`(Sub|52752312) ... }␤»
azawawi flussence: thx :) 16:35
flussence++
nice bug under win32... $*SPEC.catdir($*SPEC.splitdir("C:\\rakudo")) -> C:rakudo # lol 16:36
m: $*SPEC.catdir($*SPEC.splitdir("C:\\rakudo")) 16:37
camelia ( no output )
azawawi m: say $*SPEC.catdir($*SPEC.splitdir("C:\\rakudo"))
camelia rakudo-moar 1f7f69: OUTPUT«C:\rakudo␤»
timotimo azawawi: the thing is, $*SPEC is IO::Spec::UNIX on the bot :) 16:49
or not?
i'm not sure
psch m: say $*SPEC.WHAT
camelia rakudo-moar 1f7f69: OUTPUT«(IO::Spec::Unix)␤»
psch doesn't $*SPEC go away eventually? 16:50
azawawi timotimo: i noticed 16:51
FROGGS psch: lizmat said that, aye
err, lizmat++
raiph j: say grammar g { rule t { '(' ~ ')' <TOP> }; rule TOP { [<t> | [<!before ')'> .]]* }}.parse('(foo(bar1))') 17:03
camelia rakudo-jvm 1f7f69: OUTPUT«Unable to parse expression in t; couldn't find final ')' ␤ in regex t at /tmp/gq7DgWcUJC:1␤ in regex TOP at /tmp/gq7DgWcUJC:1␤ in method parse at gen/jvm/CORE.setting:15713␤ in block <unit> at /tmp/gq7DgWcUJC:1␤␤»
psch m: say uniprop("⅚", "Width") 17:09
camelia rakudo-moar 1f7f69: OUTPUT«0␤»
psch m: say uniprop("⅚", "Script") 17:10
camelia rakudo-moar 1f7f69: OUTPUT«Common␤»
psch m: say uniprop("⅚", "Block") 17:11
camelia rakudo-moar 1f7f69: OUTPUT«Number Forms␤»
psch well, porting uniname to r-j was easy, but uniprop looks like a few giant switch/case statements 17:12
oh, but it's giant switch/case statements in moar too, so that's apparently a good way to implement it 17:13
[Coke] May 02, there's a hackathon in NYC. I'm close enough to head down if there's interest in a Perl 6 track. 17:18
www.meetup.com/The-New-York-Perl-Me...221319780/
dalek kudo/union: bf6b7e8 | FROGGS++ | lib/NativeCall.pm:
allow to pass CUnions as arguments
17:20
kudo/union: bc3cd64 | FROGGS++ | t/04-nativecall/13-union. (2 files):
make CUnion tests endian-unaware
timotimo psch: at least make sure you generate the switch/case statements :3 17:23
psch m: say uniprop("A", "Block") 17:27
camelia rakudo-moar 1f7f69: OUTPUT«Basic Latin␤»
psch that bit is gonna be fun
apparently a Java UnicodeBlock doesn't know its name, they're just stored as constants named after an approximation of the official block name
which means that'll be another huge switch/case statements :/ 17:28
ugh
but it can't be a switch/case cause they don't work on object identity iirc
so it's «UnicodeBlock blk = UnicodeBlock.of(codePoint); if( blk == UncodeBlock.BASIC_LATIN ) { return "Basic Latin" } ...» or somesuch 17:29
psch timotimo: i think i first need to understand this whole unicode business a bit better 17:38
timotimo: but yeah, writing a few hundred lines of switch/case is probably not the best use of my time :) 17:39
timotimo :)
azawawi how can an installed Perl 6 module know whether it is installed under site/lib or lib? 17:47
avar Isn't there a __FILE__ (IIRC it's $*FILE) that gives you the full path like in perl 5? 17:52
raiph azawawi: does design.perl6.org/S22.html#%25%3FRESOURCE look like the right design doc? 17:54
azawawi raiph: hmmm looks good
raiph m: say %?RESOURCE
camelia rakudo-moar 1f7f69: OUTPUT«5===SORRY!5=== Error while compiling /tmp/n991bd2IX8␤Variable '%?RESOURCE' is not declared␤at /tmp/n991bd2IX8:1␤------> 3say %?RESOURCE7⏏5<EOL>␤ expecting any of:␤ postfix␤»
itz m: say $?FILE 17:55
camelia rakudo-moar 1f7f69: OUTPUT«/tmp/FEv31Oazbc␤»
itz m: say $?CLASS
camelia rakudo-moar 1f7f69: OUTPUT«5===SORRY!5=== Error while compiling /tmp/86lhXnaCb9␤Variable '$?CLASS' is not declared␤at /tmp/86lhXnaCb9:1␤------> 3say $?CLASS7⏏5<EOL>␤ expecting any of:␤ postfix␤»
itz m: say $?PACKAGE 17:55
camelia rakudo-moar 1f7f69: OUTPUT«(GLOBAL)␤»
azawawi raiph: i could loop on @*INC to find my modules assets but then again what about dual-life modules... 17:58
psch $?FILE is a compiletime constant, so it should be correct inside of the file, no?
azawawi psch: nope
raiph azawawi: see also irclog.perlgeek.de/perl6/2015-03-03#i_10213360 17:59
azawawi psch: returns lib/MyModule.pm when run from the command line
raiph: thx for sharing that discussion 18:00
psch eww 18:03
precomp behavior of $?FILE seems rather weird
gist.github.com/peschwa/19dd88befeeeca0300a0 18:04
i.e. precomped $?FILE has the relative path from where the precomp process was invoked
but without precomp it's an absolute path 18:05
(at least that's assuming my data is sufficient, which it might not be)
dalek href="https://perl6.org:">perl6.org: d893300 | moritz++ | source/compilers/index.html:
Remove Parrot fossil
psch (for one, i'm running on -j) 18:06
azawawi timotimo: ping 18:12
timotimo pong
azawawi timotimo: please check whether the last patch fixes the bug or not on your OSX (aka github.com/azawawi/farabi6/issues/49) 18:13
timotimo under callgrind, the setting compilation valgrind gets segfaulted :(
azawawi no perl6 under OSX? 18:14
timotimo i don't have osx at all
azawawi lol 18:15
but you have it installed under ~/perl6 right?
pecastro azawawi: I think I can confirm exactly the same thing. Panda started installing things under share/ and now ... 18:16
[pecastro@brutalix rakudo3]$ farabi6
timotimo yes, ~/perl6/install
pecastro Switching to panda-installed farabi6
farabi.js is not found in /home/pecastro/perl6/rakudo3/install/languages/perl6/site/lib/Farabi6/files/assets
Friday farabi install via panda worked fine ... 18:17
azawawi pecastro: i see
dalek p: a7acff6 | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
Remove tabs, fix indentation.
p: e45d8de | peschwa++ | src/vm/jvm/ (2 files):
Implement nqp::getuniname for the JVM backend.
azawawi pecastro: where is farabi.js in your machine btw ?
dalek kudo/nom: 49f1dd0 | peschwa++ | tools/build/NQP_REVISION:
Bump NQP_REVISION
kudo/nom: 5e6ba8d | peschwa++ | src/core/Str.pm:
Use nqp::getuniname on JVM
kudo/nom: 5778e86 | peschwa++ | t/spectest.data:
Enable S15-unicode-information/uniname.t for JVM.
timotimo azawawi: currently shoveling around in the guts of moar, won't have a working rakudo for a few more minutes as i'm measuring stuff with callgrind right now 18:18
dalek ast: 71a4a94 | peschwa++ | S06-signature/errors.t:
Fudge a test for R-J that relies on &unival.
ast: 4ecfcdd | peschwa++ | S02-types/native.t:
Unfudge now passing tests.
ast: 5106aa1 | peschwa++ | S15-unicode-information/uniname.t:
Fudge for rakudo in general, not just rakudo.moar.
azawawi timotimo: take your time :)
timotimo i'll take my timo :P
pecastro azawawi: /home/pecastro/perl6/rakudo3/install/share/perl6/site/lib/Farabi6/files/assets/farabi.js 18:19
azawawi pecastro: true the same here on my lubuntu vm
pecastro I'm on linux.
azawawi pecastro: did you 'panda install Farabi6' now? 18:20
pecastro: since i just fixed it
timotimo i guess i'll run setting compilation under valgrind's memory checker
to see what i'm doing stupid
azawawi pecastro: s/since/because/ 18:21
timotimo d'oh 18:23
Stage parse : --26561-- VALGRIND INTERNAL ERROR: Valgrind received a signal 11 (SIGSEGV) - exiting
azawawi pecastro: ? 18:25
psch # expected: 'alpha:a|ident:a' 18:27
# got: 'ident:a|alpha:a'
grrml
psch m: say ("a" ~~ m/<alpha> && <ident>/).caps 18:35
camelia rakudo-moar 1f7f69: OUTPUT«alpha => 「a」 ident => 「a」␤»
psch j: say ("a" ~~ m/<alpha> && <ident>/).caps
camelia rakudo-jvm 1f7f69: OUTPUT«ident => 「a」 alpha => 「a」␤»
psch j: say ("a" ~~ m/<alpha> && <ident>/)>>.from
camelia rakudo-jvm 1f7f69: OUTPUT«0␤»
psch m: say ("a" ~~ m/<alpha> && <ident>/){*}>>.from 18:36
camelia rakudo-moar 1f7f69: OUTPUT«0 0␤»
arnsholt psch: That definitely sounds like a bug in the testing module, rather than the tested code
psch arnsholt: no, .caps is underspecified 18:38
raydiak j: say $*VM.config<dll>
psch design.perl6.org/S05.html#line_3143
camelia rakudo-jvm 1f7f69: OUTPUT«(Any)␤»
raydiak j: say $*VM.config
camelia rakudo-jvm 1f7f69: OUTPUT«nativecall.cc => cc, nativecall.ccdlflags => -fPIC -Wl,-E, nativecall.ccflags => -fwrapv -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64, nativecall.ld => cc, nativecall.lddlflags => -shared -O2 -…»
psch it sorts by .from, but doesn't specify what else if .from is equal
arnsholt: that's not to say that the test could catch it, but it shouldn't have to, because .caps returns Positional
*not say the test could*n't* 18:39
raydiak j: say $*VM.keys
camelia rakudo-jvm 1f7f69: OUTPUT«0␤»
psch (also s/underspecified/underspeculated/)
dalek ast: 8ae0b90 | usev6++ | S03-operators/arith.t:
Refer to RT #85750 for failing test on NetBSD

also fudge test as 'todo' and add some references
18:42
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=85750
raydiak j: say $*VM.config.keys
camelia rakudo-jvm 1f7f69: OUTPUT«runtime.jars nativecall.lddlflags nativecall.libs nativecall.ccdlflags nativecall.o runtime.classpath nativecall.ccflags nativecall.so runtime.bootclasspath prefix nativecall.ldflags nativecall.perllibs nativecall.ldout nativecall.ld nativecall.cc␤»
azawawi any idea how to get the canonical path of any filesystem path in Perl 6? 18:43
timotimo meh. asan doesn't spot anything :( 18:44
what is "&&"? i only know & (inside regex) 18:45
psch timotimo: i think && is to & as || is to | 18:46
timotimo i didn't know & did any sort of STM-like thing ?!
psch arnsholt: i mean, i agree that the test is operating on bad assumptions, but it shows an issue that actually matters 18:47
arnsholt: .caps builds an array from all named and positional captures, and sorts them only by .from, which with named ones can have different results on any execution 18:48
arnsholt: because the order before sorting can be different, because named captures are stored in a hash by key
timotimo: design.perl6.org/S05.html#line_828 18:50
azawawi m: IO::Path.new($*SPEC.catdir('C:\\rakudo\\languages', '..', '..')).absolute
camelia rakudo-moar 1f7f69: OUTPUT«IO::Path is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:1␤ in method new at src/RESTRICTED.setting:32␤ in block <unit> at /tmp/ZpqEQtELl6:1␤␤»
azawawi $*SPEC.catdir('C:\\rakudo\\languages', '..', '..').path 18:51
m: $*SPEC.catdir('C:\\rakudo\\languages', '..', '..').path
camelia rakudo-moar 1f7f69: OUTPUT«Saw 1 call to deprecated code during execution.␤================================================================================␤Method path (from Str) called at:␤ /tmp/ZwCk4IXKGL, line 1␤Deprecated since v2014.11, will be removed with release v20…»
azawawi m: $*SPEC.catdir('C:\\rakudo\\languages', '..', '..').path.absolute
camelia rakudo-moar 5778e8: OUTPUT«Saw 1 call to deprecated code during execution.␤================================================================================␤Method path (from Str) called at:␤ /tmp/gyGQpTvonV, line 1␤Deprecated since v2014.11, will be removed with release v20…»
azawawi m: say $*SPEC.catdir('C:\\rakudo\\languages', '..', '..').path.absolute
camelia rakudo-moar 5778e8: OUTPUT«/home/camelia/C:\rakudo\languages/../..␤Saw 1 call to deprecated code during execution.␤================================================================================␤Method path (from Str) called at:␤ /tmp/lOIOOkPqdq, line 1␤Deprecated since …»
FROGGS azawawi: can you do that in privmsg to camelia? 18:52
azawawi FROGGS: sorry about the noise
FROGGS np
timotimo ah, interesting. thank you ,ps
, psch
FROGGS I also did not know that && is a thing 18:53
dalek kudo/union: 6ce6405 | FROGGS++ | t/04-nativecall/13-union.t:
test the sizeof of CUnions
18:54
psch .oO( and now to show that maybe it's even moar that's wrong! ) 18:59
m: say ("a" ~~ m/<alpha> && <ident>/).caps; say ("a" ~~ m/<ident> && <alpha>/).caps
camelia rakudo-moar 5778e8: OUTPUT«alpha => 「a」 ident => 「a」␤ident => 「a」 alpha => 「a」␤»
psch j: say ("a" ~~ m/<alpha> && <ident>/).caps; say ("a" ~~ m/<ident> && <alpha>/).caps
camelia rakudo-jvm 5778e8: OUTPUT«ident => 「a」 alpha => 「a」␤ident => 「a」 alpha => 「a」␤»
dalek ast: 6b4f3e3 | (Steve Mynott)++ | S03-operators/arith.t:
update RT#
19:04
itz hmmm RT really is a bit rubbish compared with github comments 19:27
jnthn evening o/ 19:29
FROGGS hi jnthn 19:30
jnthn: what are your feelings about passing and returning structs and unions would always mean struct* and union*? 19:33
jnthn: so that that only attributes would be different, and would default to inline
jnthn FROGGS: I'm not even sure if "default to inline" is correct 19:36
FROGGS jnthn: then we'd need a trait to say so 19:37
jnthn Indeed.
FROGGS though, defaulting to inlining is easier to implement
jnthn That or we find a way to make scope decls extensible so NativeCall can export another one :P 19:38
FROGGS hmmm
jnthn Yes, easier to implement at the cost of having to put Pointer[...] all over the place in code :)
FROGGS I'm not sure about that scope idea :o)
true
jnthn Me either; has already puns on things :)
jnthn Thing is, S09 alludes to compactness (e.g. being able to make a compact array of something) being a property of a type rather than its usage. 19:39
as I remember it, anyways 19:40
FROGGS I... don't get the connection
ahh, maybe I do
but that would mean that I have to create my union/struct twice, one for inlining and the other as argument/param and return type 19:41
moritz I need to pause the www.p6c.org for a while (so perl6.org will be unavailable for a short while) 19:42
FROGGS what also bugs me is that 'is rw' in signatures to produce an int* cannot be just be the same in attribute declarations
k
psch m: say ("a" ~~ /(.) | ./); say ("a" ~~ /(.) & ./) 19:43
camelia rakudo-moar 5778e8: OUTPUT«「a」␤ 0 => 「a」␤「a」␤ => 「a」␤»
psch the mysterious case of the disappearing 0
FROGGS O.o
Mouq m: say ("a" ~~ /. & (.)/) 19:44
yoleaux 21 Mar 2015 09:53Z <lizmat> Mouq: t/spec/S32-num/real-bridge.t hangs for me on ok $zero == $zero.Complex, "0 == 0.Complex"
21 Mar 2015 10:04Z <lizmat> Mouq: these are the hanging tests: github.com/perl6/roast/commit/50d2fcb659
camelia rakudo-moar 5778e8: OUTPUT«「a」␤ => 「a」␤»
psch nothing up my sleeve!
FROGGS m: say ("a" ~~ /(.) | ./); $/ := Nil; say ("a" ~~ /(.) & ./)
camelia rakudo-moar 5778e8: OUTPUT«「a」␤ 0 => 「a」␤Cannot assign to an immutable value␤ in method ACCEPTS at src/gen/m-CORE.setting:16293␤ in block <unit> at /tmp/8whqFAKjvR:1␤␤»
Mouq lizmat++, Mouq--
FROGGS m: say ("a" ~~ /(.) | ./); $/ = Nil; say ("a" ~~ /(.) & ./)
camelia rakudo-moar 5778e8: OUTPUT«「a」␤ 0 => 「a」␤「a」␤ => 「a」␤»
dalek kudo/nom: f5efb7d | TimToady++ | src/ (3 files):
improve errors on anon multi/proto
psch that kind of threw a wrench in my attempt to make .caps more reliable 19:45
m: say (" a" ~~ /(.) | ./); say (" a" ~~ /(.) & ./)
camelia rakudo-moar 5778e8: OUTPUT«「 」␤ 0 => 「 」␤「 」␤ => 「 」␤»
jnthn psch: At a guess, the code generated for the & stuff could be mis-managing the cstack
I forget how on earth & is compiled, but it does involve some trickery with the marks.
psch (i wanted \w there...)
m: say (" a" ~~ /(\w) | \w/); say (" a" ~~ /(\w) & \w/)
moritz www running again
camelia rakudo-moar 5778e8: OUTPUT«「a」␤ 0 => 「a」␤「a」␤ => 「a」␤» 19:46
pecastro azawawi Works fine again! ;)
psch jnthn: okay. the regex match code isn't for me, though. i'll RT it
FROGGS moritz++
psch m: say ("a" ~~ /(.) && ./) 19:47
camelia rakudo-moar 5778e8: OUTPUT«「a」␤ => 「a」␤»
psch oh hmm 19:48
i forgot to tag the uniname bug with [BUG]
jnthn There's a uniname bug? 19:51
psch m: say uniname -1
camelia rakudo-moar 5778e8: OUTPUT«should eventually be unreachable␤ in sub uniname at src/gen/m-CORE.setting:8671␤ in block <unit> at /tmp/xP7o6yewuo:1␤␤»
jnthn Ah 19:51
That's probably alluding to "should implement NFG eventually" :) 19:52
psch jnthn: MVM_codepoint_to_row_index throws on codepoint < 0
jnthn: other functions return -1, which is what MVM_unicode_get_name expects 19:53
jnthn Ah
masak moritz: your submitting a rakudobug with the Ackermann function made me read up on the Ackermann function. I feel I finally understand it, and it doesn't look weird anymore. moritz++
(also, I read about a nice connection between the Ackermann function and category theory) 19:54
jnthn Sounds odd, though feeding negatives in to MVM_codepoint_to_row_index is almost certainly a no-no.
Anyway, will look at it while working on NFG.
psch oh 19:58
.caps isn't actually spec'd to work with overlapping captures
psch hm, not sure i understand this properly 19:59
moritz PSA: I'm now setting up a new host, irc.p6c.org 20:01
for IRC usage only 20:02
so that people don't lose their precious IRC sessions when hack goes down
(and this is meant to be a temporary hack, until the stability issues have been addressed
)
psch j: say uniname -1 20:03
camelia rakudo-jvm 5778e8: OUTPUT«<illegal>␤»
psch j: say uniname 0x30000 20:04
camelia rakudo-jvm 5778e8: OUTPUT«<unassigned>␤»
psch m: say uniname 0x30000
camelia rakudo-moar 5778e8: OUTPUT«<unassigned>␤»
moritz m: say uniname 0x999999999999
camelia rakudo-moar 5778e8: OUTPUT«should eventually be unreachable␤ in block <unit> at /tmp/6L2som3tZ3:1␤␤»
moritz m: say uniname 0x9999999999
camelia rakudo-moar 5778e8: OUTPUT«should eventually be unreachable␤ in block <unit> at /tmp/sSO86h5aoH:1␤␤»
moritz m: say uniname 0x99999999
camelia rakudo-moar 5778e8: OUTPUT«should eventually be unreachable␤ in block <unit> at /tmp/M1WrByZCtm:1␤␤»
moritz m: say uniname 0x999999
camelia rakudo-moar 5778e8: OUTPUT«<illegal>␤»
psch j: say uniname 0x999999999999 20:05
camelia rakudo-jvm 5778e8: OUTPUT«<illegal>␤»
FROGGS would be nice to return Str instead of '<illegal>' me thinks 20:06
or Nil
Nil for <illegal> and Str for <unassigned> 20:07
:o)
psch FROGGS: the nqp ops return str currently 20:09
masak agree about Nil 20:10
not so sure about Str
psch although i don't think that uniname is hot enough to care about the boxing/create() 20:10
masak wonders what #perl6 will make of #124148 20:19
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=124148
masak synopsebot: wow, you're fast!
moritz ok, irc.p6c.org is now up and running 20:21
if you want an account, just tell me
it's meant for IRC sessions only, no Perl 6 hacking there
FROGGS yeah, that makes sense 20:22
moritz and only until the hack freezes stop
jnthn masak: If .perl is to consistenty order them then it should do a .sort on the keys 20:23
masak: Backends are free to do whatever they please on this issue. 20:24
(e.g. iteration order cannot be relied upon)
I'm fine with .perl doing a sort, in that it's intended as a debugging aid.
masak me too. 20:25
moritz +1 20:27
FROGGS then .gist should sort also 20:30
dalek kudo/nom: 31d6106 | Mouq++ | src/core/Complex.pm:
Let's get Real about this (fix Bridging to Complex). lizmat++

alternatively: "Not Cool, Mouq"
20:38
kudo/nom: c60565d | Mouq++ | src/ (3 files):
Merge branch 'nom' of github.com/rakudo/rakudo into nom
ast: 59876b1 | Mouq++ | S32-num/real-bridge.t:
Revert "Fudge hanging tests"

This reverts commit 50d2fcb6595d0540efae2737c52b4a6bd1db8c54.
masak m: my @board = ['.' xx 15] xx 15; 20:39
camelia ( no output )
masak used to be that one did the wrong thing. but then infix:<xx> got awesome \o/ 20:40
one reason I love Perl 6 :>
FROGGS jnthn: I guess 'is inlined' might be ambiguous? or would that be okay? 20:48
FROGGS I am trying that now in the union branch, we can rename later if necessary 20:50
jnthn FROGGS: Well, can try it that way first... 20:51
jnthn FROGGS: I think we'll need to look a little more carefully at this in the context of S09 also. 20:51
FROGGS jnthn: I've read parts of S09 right now... but I did not spot anything that might be connected to inlined 20:53
inlining*
psch & 20:56
FROGGS o/ psch
timotimo o/
masak o/ 20:57
FROGGS hmmm, I'm not sure this is doable with a trait :o( 21:04
FROGGS the representation containing the (not)inlined thing needs to know 21:06
hmmm 21:07
jnthn FROGGS: Yes, that's the "tied to the type" thing I was mentioning earlier... 21:15
FROGGS and now Pointer[thing] looks nice again :P 21:16
FROGGS .oO( Inlined[thing] ) 21:17
timotimo i wouldn't mind having to write that 21:28
what will sized CArrays look like inside a CStruct?
(or union)
FROGGS has array $.thing[32] 21:29
timotimo mhh
k
TimToady m: proto a(Int, Int) is cached {*}; multi a(Int \n, 0) { n + 1 }; multi (0, Int \m) { a m-1, 1 }; multi (\n, \m) { a m - 1, a m, n - 1 }; say a 3, 1 21:35
camelia rakudo-moar c60565: OUTPUT«5===SORRY!5=== Error while compiling /tmp/o2S9mo6vYc␤An anonymous routine may not take a multi declarator␤at /tmp/o2S9mo6vYc:1␤------> 3{*}; multi a(Int \n, 0) { n + 1 }; multi7⏏5 (0, Int \m) { a m-1, 1 }; multi (\n, \m␤»
FROGGS m: proto a(Int, Int) is cached {*}; multi a(Int \n, 0) { n + 1 }; multi a(0, Int \m) { a m-1, 1 }; multi a(\n, \m) { a m - 1, a m, n - 1 }; say a 3, 1 21:39
timotimo Farabi6 is serving files from lib/Farabi6/files at :3030
camelia rakudo-moar c60565: OUTPUT«(timeout)» 21:40
timotimo oh lord
farabi6's static file serving is SUPER slow now
eli-se Use Nginx or a CDN. 21:42
FROGGS Inlined[thing] is very wrong me thinks
timotimo eli-se: hosting stuff from localhost ... i don't think a CDN would do any better :D 21:43
hoelzro jnthn, FROGGS[mobile]: ok, I reduced it down to a Moar/NQP/Rakudo commit triple: 21:45
Rakudo: a593932 NQP: 6d19df1 MoarVM: c6e8df8 21:46
although those Rakudo and NQP commits should probably be one *before* each of them, because each of them bump the {NQP,MOAR}_REVISION files 21:47
I'm a bit sad that it's not an NQP change, but maybe it will lead to a fix for the JVM
dalek kudo/nom: 561abb2 | raydiak++ | src/Perl6/ (2 files):
Support angle-quoted Rat literals e.g. <1/2>
21:48
kudo/nom: 9ed9dcc | raydiak++ | src/core/PairMap.pm:
Merge branch 'nom' into rat
kudo/nom: 854d4b4 | raydiak++ | / (8 files):
Merge branch 'nom' into rat
kudo/nom: af68137 | raydiak++ | src/Perl6/Actions.nqp:
Rat literal ast optimization Mouq++
kudo/nom: af6bd02 | Mouq++ | src/Perl6/ (2 files):
Merge pull request #392 from raydiak/rat

Angle-quoted Rat literals
hoelzro btw, I updated my R* docker image for the 2015.03 release: registry.hub.docker.com/u/hoelzro/rakudo-star/ 21:49
masak m: sub foo(@x) { @x.=grep(* %% 2) }; my @a = 1..10; foo(@a); say @a 21:50
camelia rakudo-moar c60565: OUTPUT«2 4 6 8 10␤»
jnthn hoelzro: Thing is, I did (afaik) port those changes to JVM too 21:52
hoelzro: Feel free to compare the two for anything I missed
hoelzro ah ha
hoelzro I can give it a shot, but I updated the ticket with the information I just posted here in case someone else feels like taking a crack at it 21:53
jnthn hoelzro: cbef59357 is the nqp-j commit in question
nsharrok Does anyone know how to install Perl6 on windows IIS 8.5? 22:06
masak nsharrok: have you tried the ordinary Windows installation instructions? 22:24
masak knows nothing about IIS 22:24
timotimo we do have a .msi file for last month's rakudo star already built and uploaded to rakudo.org 22:28
virtualsue groups.perlists.pm/sympa/arc/londo...00013.html # that itz guy again 22:34
Mouq should probably at least sign up for the ABE.pm mailing list 22:42
masak 'night, #perl6 23:03
Mouq 'night masak :) 23:05
timotimo virtualsue: "getting to see a part of the solar eclipse" is the whole reason you'd even bother, isn't it? :) 23:22
nsharrok Does anyone know how to get a handler mapping for rukudo star in IIS 8.5 working? 23:23
eli-se FROGGS[mobile]: I'm also playing with some C++ ABI fun now: coliru.stacked-crooked.com/a/e6ea838549029857 :p 23:30