dalek p: 778d1a1 | timotimo++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
use index_s even with ignorecase when scanning for literals
00:40
p: cedea6d | timotimo++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
literal with ignorecase now caches lc results

of both the haystack and the needle.
travis-ci NQP build failed. Timo Paulssen 'literal with ignorecase now caches lc results 00:43
travis-ci.org/perl6/nqp/builds/150799770 github.com/perl6/nqp/compare/04c4a...dea6da8d39
timotimo damn it.
dalek p: 03f2d37 | timotimo++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
fix logic error in ignoremark scan optimization
00:56
timotimo should probably be "logic mistake" not "logic error"?
hum. i wonder ... 00:59
travis-ci NQP build failed. Timo Paulssen 'fix logic error in ignoremark scan optimization'
travis-ci.org/perl6/nqp/builds/150802237 github.com/perl6/nqp/compare/cedea...f2d3756924
dalek p: 94ff637 | timotimo++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
cannot statically figure out when haystacklc needs init.

so we check haystacklc for null-ness every time we use it. if we had a prelude thing that sets up all our stuff, like suggested in another piece of the code, that setup of the haystacklc could sensibly go there, too.
01:06
travis-ci NQP build passed. Timo Paulssen 'cannot statically figure out when haystacklc needs init. 01:09
travis-ci.org/perl6/nqp/builds/150803906 github.com/perl6/nqp/compare/03f2d...ff6376295f
timotimo yay, passed
[Tux] This is Rakudo version 2016.07.1-141-gfb42520 built on MoarVM version 2016.07-16-g85b6537 07:40
test 15.429
test-t 7.338
csv-parser 16.633
dalek kudo/nom: ddcbae9 | lizmat++ | src/core/Array.pm:
Make Array.splice(offset,size) 20x to 40x faster

  - small candidates
  - rewritten using nqp ops
  - smarter conditionals set up
08:25
lizmat wonders how this will affect masak's 007
only Array.splice(offset,size,list) left to optimize now 08:28
afk& 08:34
Tux__ I want to install Text::CSV on my own machine: $ panda install Text::CSV==> Installing Text::CSV 10:27
Text::CSV:ver<0.002>:auth<github:Tux>:api<> already installed
on github it is version 0.005 10:28
nine Tux__: panda update
Tux__ Ahhhhhrg, forgot to update META :(
stmuk does panda allow different versions of the same module? I've a feeling it doesn't anyway? 11:51
lizmat I'm not sure rakudo supports this already ? nine should know 11:56
RabidGravy panda doesn't support explicitly installing different versions, but if you have different versions installed you can use a specific version iirc 12:02
nine what RabidGravy said
Note that one cannot load different versions of the same module in the same process. They would try to create the same global name. 12:05
RabidGravy I was thinking about that the other day, it would occasionally if, at least, it was possible to load two modules with the same name but a different auth 12:07
lizmat nine: that's not according to spec?
RabidGravy ^be useful
nine lizmat: what does the spec say for when I use "Test:auth<perl>; use Test:auth<nine>; Test::output;"? To which of both Test modules would Test::output refer? 12:22
lizmat depends on the scope: if they would be done in the same scope, the second use should fail 12:23
if you really want to have both in the same scope, you will have to rename one of them
S11:528 12:24
synopsebot6 Link: design.perl6.org/S11.html#line_528
nine That link only displays a "Note: these documents may be out of date" on an otherwise completely red page? 12:29
unmatched} o.o Which browser? 12:31
RabidGravy :-O
nine rekonq
unmatched} Based on the name, I'm assuming it's something they cooked up based on Konquerer? 12:32
nine No, it's a browser for KDE based on Webkit
Works better when you change html::before into body::before 12:33
unmatched} hehe, that's amusing :) At least the warning message is there :) 12:34
Should be fixed on next build 12:37
"reconq: Development status Unmaintained" 12:38
.oO( well there's your problem :) )
dalek kudo/nom: e1205c8 | lizmat++ | src/core/Iterator.pm:
Some Iterator comments corrections

Inspired by irclog.perlgeek.de/perl6/2016-08-09#i_12991096
nine I miss the time when one could use a browser that's more than half a year old.
RabidGravy lynx --version 12:46
Lynx Version 2.8.9dev.6 (06 May 2015)
there you go ;-)
unmatched} What's interesting is lynx actually gets the page position right.... Palemoon (Firefox fork) doesn't :/ 12:49
m: use Perl:ver<6.0.0> 12:51
camelia rakudo-moar e1205c: OUTPUT«===SORRY!===␤Perl is a builtin type, not an external module␤»
AlexDaniel one time in uni I had to create a rather simple website as a homework. The teacher was slightly confused when he saw a big banner saying “This website is optimized for w3m!”. 12:58
moritz what I pushed just now to the specs repo is an attempt to get the discussion about v6.d rolling a bit more :-) 13:28
unmatched} hm 13:29
m: sub f(Int:D @x) { }; 13:31
camelia ( no output )
unmatched} m: class { has Int:D @.x };
camelia ( no output )
unmatched} m: class { has Int:D $.x };
camelia rakudo-moar e1205c: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Variable definition of type Int:D requires an initializer␤at <tmp>:1␤------> class { has Int:D $.x ⏏};␤»
unmatched} I actually have something for 6.d 13:32
lol "Stakeholder" :) 13:45
unmatched} pictures a vampire hunt
jnthn After a succesful hunt, they're a steakholder?
unmatched} :)
dalek kudo/nom: 9e497cc | lizmat++ | src/core/Iterator.pm:
Fix is-lazy comment, ilmari++
13:50
unmatched} adds github.com/perl6/specs/blob/master...efinedness 14:04
lizmat afk& 14:12
Tux__ «sub foo (Str :$s, Int $:i) { ... } ; my %args = s => "a", i => 1; foo(%args)» 14:50
is obviouslu wrong. How do I pass %args as named arguments?
moritz foo(|%args)
unmatched} You also have a typo there: Int $:i -> Int :$i 14:51
Tux__ m: sub foo (Bool :$b) { say "1" }; my %x = bar => True; foo(|%x) 14:58
camelia rakudo-moar 9e497c: OUTPUT«Unexpected named parameter 'bar' passed␤ in sub foo at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
Tux__ ignore that 14:59
[Coke] RT: 1329; @LARRY: 13; CONC: 25; GLR: 6; JVM: 66; LTA: 99; NEW: 857; NYI: 82; OSX: 6; PERF: 21; POD: 17; PRECOMP: 9; RFC: 28; SEGV: 32; STAR: 4; TESTNEEDED: 15; TODO: 9; UNI: 28; UNTAGGED: 518; WEIRD: 3 15:05
r: my $value = True but False; say $value; say ?$value; 15:20
camelia rakudo-moar 9e497c: OUTPUT«False␤False␤»
..rakudo-jvm cd19db: OUTPUT«1␤True␤»
[Coke] down to 493 untagged tickets. 15:25
unmatched} \o/ 15:39
dalek ast: 25869eb | (Zoffix Znet)++ | S04-blocks-and-statements/temp.t:
Remove fudged tests for RT#128544

The behaviour tested by tests is a limitation and unlikely to get fixed. The ticket itself has been narrowed in scope to hash keys only, which aren't tested by this fudge.
15:45
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128544
unmatched} And I kinda showed wrong examples for that ticket yesterday. The actual ones were supposed to be: 15:47
m: my @a; { temp @a[10] = "foo" }; dd @a
camelia rakudo-moar 9e497c: OUTPUT«Array @a = [Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any]␤»
unmatched} m: my %h; { temp %h<not-foo> = 'meow'; }; say %h
camelia rakudo-moar 9e497c: OUTPUT«{not-foo => (Any)}␤»
Tux__ tux.nl/Talks/CSVh/hb3.html Done! 16:45
Design By Conference 16:48
unmatched} m: say 2 + 2; END my &infix:<+> = { $^a - $^b }; say 2 + 2 17:27
camelia rakudo-moar 9e497c: OUTPUT«Cannot invoke this object (REPR: Uninstantiable; Callable)␤ in block <unit> at <tmp> line 1␤␤»
unmatched} Heh. The internals course has building a subset PHP compiler as an excercise. 17:36
unmatched} feels dirty... and not in a good way 17:37
TimToady m: say 2 + 2; END constant &infix:<+> = { $^a - $^b }; say 2 + 2
camelia rakudo-moar 9e497c: OUTPUT«0␤0␤»
gfldex is there a module that produces a IO::Handle instance from a string or list of strings?
unmatched} Such a thing would be handy. Especially for testing stuff 17:38
gfldex: there seems to be IO::Blob and IO::String 17:39
gfldex unmatched}: sadly handles writing to strings/blob but not reading 17:41
jnthn unmatched}: An artistic interpretation of PHP is allowable ;) 17:42
unmatched} :D
gfldex m: "abc".fmt("%*s") 17:53
camelia rakudo-moar 9e497c: OUTPUT«This type cannot unbox to a native number: P6opaque, Failure␤␤»
gfldex m: {a=>1}.fmt("%*s => %d", "\n") 17:55
camelia rakudo-moar 9e497c: OUTPUT«This representation (Null) does not support elems (for type VMNull)␤ in any at /home/camelia/rakudo-m-inst-1/share/perl6/runtime/CORE.setting.moarvm line 1␤␤»
gfldex fmt is quite picky
dalek p: cf79448 | timotimo++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
Revert "literal with ignorecase now caches lc results"

it broke some perl5 regex spec tests.
This reverts commit cedea6da8d398870d918a3b2018a8ae9ffb058a8.
  # Conflicts:
  #src/vm/moar/QAST/QASTRegexCompilerMAST.nqp
18:02
TimToady m: say await start { 42 } 18:14
camelia rakudo-moar 9e497c: OUTPUT«42␤»
TimToady m: say await 42
camelia rakudo-moar 9e497c: OUTPUT«Must specify a Promise or Channel to await on (got a Int)␤ in block <unit> at <tmp> line 1␤␤»
TimToady is there some particular reason we don't allow awaiting a non-promise as a degenerate case of something that might or might not be a promise? 18:15
unmatched} What does Q in QAST stand for? 18:17
TimToady one more than P
perlpilot unmatched}: the letter after P
unmatched} um... what does P in PAST stand for? :) 18:18
AlexDaniel was it Parrot? :)
yea
TimToady it's for "Pining" :) 18:19
that doesn't stop a whole bunch of our code from using $past though :)
nine TimToady: do you have a specific use case in mind for something that might or might not be a Promise? 18:28
timotimo i'd be delighted if someone could help me (or straight up task-steal) find out why i had to do that revert to please the p5 regexes, and if there's a few p6 regexes that will show the same behavior with the revert reverted. 18:32
jnthn TimToady: Mostly just out of being a bit conservative because it wsan't clear what the more general interface of an awaitable thing was going to be 18:41
TimToady: As part of the await changes I've got lined up, I expect we'll be introducing some kind of Awaitable (or better name of your choice) role. At which point I think we can safely say that anything that doesn't do that role counts as just a value that's already available. 18:42
unmatched} benchable: my $i = 0; for 1..20000 { $i = $i + $_ } 18:43
benchable unmatched}: ¦«my»:Cannot find this revision
unmatched} benchable: HEAD my $i = 0; for 1..20000 { $i = $i + $_ }
benchable unmatched}: ¦«HEAD»:0.1051
unmatched} A big improvement from the 1.69s listed in this article :) eev.ee/blog/2011/06/27/perl-5-is-d...-disaster/ 18:44
TimToady jnthn: I was just thinking that making await degenerate to returning the value would allow futureproofing of code that might return a promise someday
such as the .close in question 18:45
timotimo unmatched}: well, that's really mostly just start-up time 18:48
benchable: HEAD my $i = 0; for 1..2_000_000 { $i = $i + $_ }
benchable timotimo: ¦«HEAD»:1.9624
unmatched} benchable: HEAD my $i = 0; for 1..20_000_000 { $i = $i + $_ } 18:49
timotimo m: say "a hundredth of the work takes { 10.51 / 1.9624 }% of the time"
camelia rakudo-moar 9e497c: OUTPUT«a hundredth of the work takes 5.355687% of the time␤»
timotimo so 5x overhead it seems like
benchable unmatched}: ¦«HEAD»:10.0061 18:50
timotimo after that it scales pretty well 18:51
TimToady was trying to figure out who added a HEAD phaser :) 18:52
timotimo sadly, native ints aren't as awesome at the moment as they should be
so with $i declared as int, it actually takes about 3x longer
TimToady need escape analysis and better jit
unmatched} Compared with Perl 5, the result is... pathetic really: gist.github.com/zoffixznet/39bea0d...9e080d26c7
timotimo yeah 18:54
interesting 18:55
when i use int $i as well as int $_, i get just 9.7 seconds for 20_000_000
with only int $_ or no -> for the for loop at all, it's 17.3 seconds 18:56
maybe we're just bad at adding 64bit integers into big integers?
brrt probably our pretty box, unbox dance 19:00
better jit is beiong worked upon
but better analysis is the key thing
unmatched} python 2.7 does in in 3s and ruby and python3 in ~3.7s: gist.github.com/zoffixznet/b8d01cc...d1244548f0
brrt hmmm 19:01
interesting. i wonder if that is the cost of bigint math
timotimo and pypy probably does it 10x faster than perl5 19:02
unmatched} That's compared to 30.821s for Perl 6 and 1.345s for Perl 5 on this box
timotimo in the int-and-int case we're invoking the for loop's block every time around the loop 19:03
brrt yeah, i saw that too 19:04
timotimo with a capturelex on top of it, apparently
actually, that may be wrong 19:05
brrt i wonder what makes it so hard to strength-reduce these to simple loops
timotimo i think i looked at the wrong invoke here
which also means we're not even fastinvoking that block, we're regular-invoking it ;_;
brrt unmatched}: try "time perl6 -e 'my int $i = 0; for (1..2_000_000) -> int $j { $i = $i + $j }'"
timotimo also, why are we not invoke_v-ing it? we're invoke_o-ing it ...
brrt: superstitious parens!
brrt it returns an integer
haha
timotimo urgh, the block doesn't even inline the + operation 19:06
(for some reason it finishes speshing the block before it finishes speshing the +
brrt that's... weird 19:07
maybe that is because the + is a larger routine than the $i = $i + $j
timotimo could be 19:08
brrt i'm actually kind of surprised we still 'win' from the interpreted case with those handicapss
timotimo how do you mean?
unmatched} brrt: 2.024s
brrt alright, we lose
unmatched} Well, we win over python and ruby :) 19:09
timotimo how is that even possible
unmatched} native types
brrt well, python and ruby and perl5 don't have to invoke a closure and do multi-method dispatch to do +
perl5, i think, doesn't do method dispatch on + at all
so it can just do get-and-cast, add, store, in a loop 19:10
i may be wrong there
python and ruby probably do a check/dispatch in a cycle which is why they are slower 19:11
so the fact that we win from ruby and python despite having a multi-method dispatch and closure invocation, well, that's not bad 19:15
timotimo huh. 19:20
fancy that:
time perl6 -e 'use nqp; my $i = 0; for 1..20_000_000 { $i = nqp::add_I(nqp::decont($i), nqp::decont($_), Int) }' 19:21
13.83user 0.02system 0:13.86elapsed 99%CPU (0avgtext+0avgdata 89492maxresident)k
time perl6 -e 'my $i = 0; for 1..20_000_000 { $i = $i + $_ }'
16.62user 0.67system 0:17.30elapsed 99%CPU (0avgtext+0avgdata 88828maxresident)k
the overhead from invoking the + is negligible compared to what we'd probably win from getting escape analysis 19:22
i.e. not having to re-allocate all the Int objects all the time
AFK for about an hour 19:23
unmatched} tries to see the pattern in the precedence level names... f= u= t= j= ... do they stand for anything? alphabetical? 19:44
hoelzro unmatched}: IIRC, it's just a way of ordering the levels 19:45
unmatched}: you're digging into O and EXPR, huh?
unmatched} I'm doing the Internals Course, and yeah, I'm at O and EXPR portion ATM: github.com/edumentab/rakudo-and-nq...als-course 19:47
hoelzro: but what's the order? Alphabetical?
hoelzro ahhhh
unmatched}: yes
dalek kudo/nom: 3284025 | TimToady++ | src/Perl6/Actions.nqp:
unwanted method in Want node needs explicit .sink

This fixes the sinking of the inside of:
   for ^3 { ^10 .map: *.say }
20:06
stmuk lizmat: that perl6-bench PR should be fixed ow 20:09
+n
TimToady m: sub infix:<op>($a,$b) is tighter(&[+]) { $a + 2 * $b }; say &[op].prec 20:14
camelia rakudo-moar 328402: OUTPUT«{prec => t@=}␤»
jnthn TimToady: Ah, also an interesting point :)
TimToady note that precedence is infinitely extensible
jnthn Will work on that .close thing tomorrow. Will be another flappy test down :)
Of course, meaning there's just another flappy one waiting for me...
TimToady now you're just flapping :P 20:15
jnthn :P
I *think* that I may well be onto the last couple by now. 20:16
TimToady I keep saying that about sink bugs :) 20:18
arnsholt unmatched}: The precedence levels in Rakudo/NQP are just alphabetic order 20:24
Perl6/Grammar.nqp:3731 to 3761 in my local copy
:q
Or NQP/Grammar.nqp:700 to 714 20:25
The NQP one has holes, so that the prec levels match the Perl 6 ones, IIRC
jnthn Oh, I know there's a lot more bugs awaiting me. See RT. :) 20:26
arnsholt unmatched}: Also, I recommend spending some time to figure out approximately how HLL::Grammar.EXPR works. Time well spent, IMO 20:35
TimToady incidentally, 3284025 above resolves RT #127879, though I forgot to mention it in the commit log 20:37
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127879
unmatched} arnsholt, thanks, will do. I think you already explained EXPR. It's a something something algorithm where ops go on one stack and terms on another, etc, etc 21:06
timotimo "shunting yard" iirc 21:09
unmatched} ah, right, yeah :)
brrt rather weird to reread all the perl6 negativity in 2011 21:11
although there was no sign of moarvm or of a christmas release back then 21:12
unmatched} I find it amusing that Perl 6 "first appeared" (according to wiki) right about the month when I decided that I'd be a programmer, before I even wrote my first code. 21:21
The wiki is kinda LTA... I'd change "first appeared" to "first planned" and add a "first stable release" row with 2015 Christmas date. Right now, the "16 years ago" misrepresents expected stability and performance, and makes dubious claims and about modernity and brand neweness 21:27
brrt fix the wiki :-) 21:32
unmatched} Will do.... now that I have someone to blame if someone doesn't like it :p 21:35
brrt sure, blame it all on me 21:37
:-P 21:38
[Coke] ok, trying to use panda inside a rakudo-star docker image, having issues.
it worked fine when I did everything as root. adding a "USER perl6" directive, and now panda is complaining about living inside my corporate proxy, with: Could not download module metadata: Failed to resolve host name. 21:39
my run command is RUN http_proxy=xxx https_proxy=xxx GIT_PROTOCOL=https panda install Bailador
(yup; commenting out User perl6, and now all the networking works) - if I'm going to be running the rakudo in the container as the perl6 user, does it matter if I install all the modules as root? 21:40
nine++, this may be a question for you. 21:41
AlexDaniel What is the point of this line? github.com/rakudo/rakudo/blob/8cbb...ver.pm#L10 22:00
m: say HyperWhatever.new
camelia rakudo-moar 328402: OUTPUT«sub (*@_) { #`(Sub|78339456) ... }␤»
AlexDaniel I am asking because there is the same thing for Scalar
and this looks a bit scary:
m: Scalar.new
camelia rakudo-moar 328402: OUTPUT«Cannot make a Scalar object using .new␤ in block <unit> at <tmp> line 1␤␤»
AlexDaniel ah
hm
bisect: good 2016.07 Scalar.new 22:01
bisectable AlexDaniel: No build for 'bad' revision. Right now the build process is in action, please try again later or specify some older 'bad' commit (e.g., bad=HEAD~40)
AlexDaniel bisect: good 2016.07 bad HEAD~40 Scalar.new
bisectable AlexDaniel: On both starting points (good=2016.07 bad=HEAD~40) the exit code is 1 and the output is identical as well
AlexDaniel: Output on both points: Cannot call method 'BUILDALL' on a null object␤ in block <unit> at /tmp/uWQVgDMCun line 1␤
geekosaur it's supposed to be scary. Scalar is more or less an internal detail whose existence is leaked by some things 22:02
you can only create one in nqp
AlexDaniel bisect: good 2016.07 bad HEAD~40 Scalar.new
bisectable AlexDaniel: On both starting points (good=2016.07 bad=HEAD~40) the exit code is 1 and the output is identical as well
AlexDaniel: Output on both points: Cannot call method 'BUILDALL' on a null object␤ in block <unit> at /tmp/BelPIE8neh line 1␤
AlexDaniel bisect: good 2016.07 bad Scalar.new
bisectable AlexDaniel: On both starting points (good=2016.07 bad=3284025) the exit code is 1 and the output is identical as well
AlexDaniel: Output on both points: ===SORRY!=== Error while compiling /tmp/Xur7LEf_jO␤Undeclared routine:␤ bad used at line 1. Did you mean 'bag'?␤
AlexDaniel bisect: good 2016.07 Scalar.new
geekosaur and I think the commit that added that message is too recent for HEAD~40
bisectable AlexDaniel: Exit code is 1 on both starting points (good=2016.07 bad=3284025), bisecting by using the output
AlexDaniel: bisect log: gist.github.com/2394b662a6953f20e9...d11f87e451
AlexDaniel: (2016-08-04) github.com/rakudo/rakudo/commit/552d9cb
geekosaur try HEAD~5 or something
AlexDaniel ah, I see 22:03
committable: HEAD~40 Scalar.new 22:04
committable AlexDaniel: ¦«HEAD~40»: Cannot call method 'BUILDALL' on a null object␤ in block <unit> at /tmp/cXivmE8_7u line 1␤ «exit code = 1»
AlexDaniel geekosaur: it looked scary because every time I saw a null object previously there was a segfault somewhere near to it ;)
okay then, nvm 22:05
ah no, wait 22:06
still, what is the point of X::Cannot::New being thrown in HyperWhatever.new?
m: say HyperWhatever.new # look alright? Kinda 22:07
camelia rakudo-moar 328402: OUTPUT«sub (*@_) { #`(Sub|46403216) ... }␤»
AlexDaniel s
lizmat AlexDaniel: if I remember correctly, there was a die in there before 22:09
I simply made it a typed exception
AlexDaniel lizmat: sure, but it does not look like this code is being reached? Or am I understanding it incorrectly? 22:10
lizmat hmmm... you may have a point there :-) 22:11
indeed... 22:17
not sure what is going on there 22:18
looks like it is being handled in Actions already 22:19
anyways, too tired now to really have a look at that... 22:20
good night, #perl6-dev! 22:22