01:47 ilbot3 joined 03:27 MadcapJake_ joined 06:18 RabidGravy joined
[Tux] test 22.632 06:43
test-t 12.666
csv-parser 25.445 06:44
RabidGravy creeping down again 06:58
[Tux] yesterday was better
test-t 12.120
08:22 |Tux| joined
dalek kudo/nom: 41abcd1 | lizmat++ | tools/build/makeMAGIC_INC_DEC.pl6:
Hopefully last work on magic string generator
kudo/nom: b808816 | lizmat++ | src/core/Rakudo/Internals.pm:
Reimplement magic increment/decrement in Internals

This serves a number of purposes:
  - abstract the magic inc/dec logic into generally accessible library methods
   this should allow us to fix the "z" .. "ab" issue
  - create a fast-path for most common increments (up to 3.5x as fast)
  - uses generated string tables, easily maintainable for future unicode features
  - abstracted the "." logic out of the magic inc/dec
9c02f65 | lizmat++ | src/core/Rakudo/Internals.pm: Make magic inc/dec match spec wrt to "."
lizmat this was: github.com/rakudo/rakudo/commit/b8...cc5d6a3995 11:44
followed by github.com/rakudo/rakudo/commit/53...9b69afb84b
timotimo oooh, 3.5x as fast 11:46
that's pretty lovely
lizmat i would posit that the magic increment "." feature should only be applicable to IO::Path, *not* to Str 11:48
jnthn lizmat: From discussion with TimToady a little back, it stays on Str too.
lizmat m: say "foo.bar".succ # feels like a WAT to me
camelia rakudo-moar ae3a79: OUTPUT«fop.bar␤»
jnthn Every DWIM can be see as a WAT :)
timotimo m: say "".succ
camelia rakudo-moar ae3a79: OUTPUT«␤»
timotimo ^- THAT is a WAT :P
but if you're using a string for an ipv4 address in the first place, you may be on the way for more trouble 11:49
lizmat $ 6 'say "".succ'
timotimo hah
lizmat seems I fixed that now ?
timotimo are you sure? :)
lizmat $ 6 'say "".succ' 11:50
timotimo well, i have no clue how the feature is described in the specs and the documentation
the behavior we have on camelia right now is what you want when you have for example a .tar.gz file
m: say "foo01.tar.gz".succ
camelia rakudo-moar ae3a79: OUTPUT«foo02.tar.gz␤»
timotimo i expect your local output would be foo01.tas.gz?
lizmat aha... yes 11:51
hmmm... and that is *not* caught by the spectest :-(
timotimo we probably want to keep the "left of the first dot" behavior
and add spec tests :)
lizmat fortunately, it's a 1 char fix 11:52
timotimo great!
lizmat hmmm... still, labster assumed in 2013 that magic increment only works on the basename 11:55
as shown in the last 2 tests in t/spec/S32-io/io-path-unix.t
jnthn TimToady++ noted that the . rule is probably in the design docs
So yeah, +1 to adding tests to cover it
timotimo Perhaps more to the point, if you happen to increment a string that ends with a decimal number, it's likely to do the right thing: 11:56
$num = "123.456";
$num++; # 124.456, not 123.457
design.perl6.org/S03.html#Autoincre...precedence 11:57
jnthn That's also cute :)
timotimo Increment of a Str (in a suitable container) works similarly to Perl 5, but is generalized slightly. A scan is made for the final alphanumeric sequence in the string that is not preceded by a '.' character.
there it says "not preceded by a . character" 11:58
|Tux| test 21.073 12:30
test-t 12.093
csv-parser 24.505
timotimo neat
some day we'll wiggle down below 12 using the power of noise 12:31
and maybe later we'll reach 10 :)
|Tux| frees the butterflies
dalek kudo/nom: 2b3d1c1 | ab5tract++ | src/Perl6/Optimizer.nqp:
Fix for WhateverCodes in void context
kudo/nom: 49a6214 | ab5tract++ | src/Perl6/Optimizer.nqp:
Fold the condition into the surrounding clause
kudo/nom: b4b7fa0 | ab5tract++ | src/Perl6/Optimizer.nqp:
Constrain the match to avoid ignoring multiplication
kudo/nom: 91858a6 | ab5tract++ | src/Perl6/Optimizer.nqp:
Use the substring of first and last indices approach
13:46 AlexDaniel joined 13:47 skids joined 13:57 [Tux] joined
dalek kudo/nom: 7d4b3a3 | coke++ | docs/release_guide.pod:
reluctantly claim the next release
[Coke] Note that the next release is going to occur the weekend of the Baltimore perl workshop. 14:12
assuming it doesn't get delayed.
jnthn Mmm...more balti... 14:15
perlpilot We need some sort of white-camel-like award so that we can give it to Coke for all of the releases he's done :) 14:16
[Coke] eh. Just pushing buttons. 14:17
perlpilot ... when no one else would push them 14:18
timotimo baltimore? 14:24
that always used to highlight me :D
lizmat commute to Amsterdam for NLPW tomorrow 14:36
the van is loaded with camels and butterflies and a lot of books and T-shirts
[Coke] safe travels! 14:37
Woodi hmm, "123.456"++ finishing as not "123.457" is pity... someone was realy thinked about devs here :) but having $ip_addr++ doing right thing would be realy mini-killer-app of Perl6, especially for IPv6... 15:12
timotimo we can't have everything at the same time 15:14
Woodi so, we have some magic-automatic here. what if there will be ways to specify what kind of Range is given and how to ++ it ?
timotimo if you're at that point, you shouldn't use .succ and .pred any more
jnthn Woodi: Just declare your own type and teach it how to succ
And then you can make ranges of it just fine 15:15
ip($a)..ip($b) or so
timotimo oh, i should have specified; at that point you shouldn't just use .succ and .pred on Str 15:17
Woodi I think such thing is AI-applied domain, just not fuzzy :) 15:20
timotimo m: say Buf[uint8].new(1, 2, 3).succ 15:28
camelia rakudo-moar 7d4b3a: OUTPUT«Method 'succ' not found for invocant of class 'Buf[uint8]'␤ in block <unit> at /tmp/cpmxLE5UvY line 1␤␤»
dalek p: ff4beee | (Pawel Murias)++ | src/vm/js/nqp-runtime/serialization.js:
[js] Fix serialization of contexts.
p: 0a8a782 | (Pawel Murias)++ | src/vm/js/Compiler.nqp:
[js] Fix bug.
p: b403469 | (Pawel Murias)++ | src/vm/js/ (3 files):
[js] Fix the way closures are handled so that nqp-js-on-js passes t/nqp/56-role.t

When capturing scopes also save the outer context. Make nqp::compunitcodes return all the compiled code refs.
Woodi jnthn: ok, got it now :) 16:29
18:43 Ven joined 19:10 Ven joined 19:39 Ven joined 21:00 skids joined 22:01 lizmat joined, AlexDaniel joined
dalek rakudo/nom: 8863aae | TimToady++ | src/Perl6/Optimizer.nqp: 22:42
rakudo/nom: Revert "Use the substring of first and last indices approach"
rakudo/nom: This reverts commit 91858a63ee7711af20b53e70ef5dac3ac373e55d.
rakudo/nom: Checking for textual * in the optimizer is too late; a better way
22:43 dalek joined
timotimo are we going to do anything at all for april fools' day? 22:44
well, it might be a bit late right now
TimToady: you made the wanted stuff; can you teach me how to make p6sink smarter when it contains an if or unless with just one branch? 22:45
my tries so far have led to a mysterious "cannot look for method sink in null object" after everything i run and i can't get --ll-exception
maybe you can try to implement that and do it in just five minutes instead of my "already spent two hours" 22:46
TimToady I dunno, I ran into trouble myself there, once upon a time
there's something mysterious down in codegenland that relies on teh current v node structure
timotimo gist.github.com/timo/d30f9fc08daf9...1ff02096f4 - my stuff so far
well, there's a problem where we only ever visit the first branch of the Want, ever. even though we already know we're in void context there 22:47
TimToady I tried once to optimize those away and failed
timotimo darn
TimToady maybe I know more, or more likely, I knew more at Christmas, and since forgot it :) 22:48
timotimo possibly
do you want to explain the WANTED stuff?
that's only about warning of "unnecessary use of blah"? or is there more to it?
TimToady it's about propagating sink/nonsink context down the tree 22:49
Useless use is just one, er, use of that
I basically inserted a top-down pass interleaved with the action methods bottom-up pass 22:50
so it's quite similar to how P5 propagates context ASP, in fact 22:51
timotimo hm, OK
does that factor into what the optimizer knows as $!void_context?
TimToady as soon as we know something is wanted/unwanted, we mark the leaves below it
there are also two variants of each: wanted() WANTED() and unwanted() UNWANTED() 22:52
the uppercase one tries harder :)
timotimo "tries"? 22:53
tries to get rid of something or tries to make sure something ends up in the result?
TimToady makes sure something is marked that might otherwise be considered too unimportant to mark
the distinction is mostly just trying to save putting annotations on all kinds of nodes that won't be checked for sinkness 22:54
timotimo mhm
TimToady if nodes used an attribute instead of annotations, the distinction would be meaningless
timotimo and those long lists of letters in the :BY?
TimToady that's just figuring out who is actually doing the wanted()/unwanted() call 22:55
timotimo i find it extremely noisy visually. though to be fair it was already quite noisy before those additions 22:56
TimToady just a debugging aid that is supposed to go away unless you set the envvar
timotimo i didn't know about the envvar yet
TimToady the stuff with $wantwant 22:57
I don't think it's even compiled in right now though 22:58
but yeah, the BY stuff could probably be simplified for normal use 22:59
it was mostly a temporary expedient to solve deep mysteries :)
22:59 sortiz joined
TimToady anyway, it shouldn't be generating a lot of string trash unless $wantwant is set 23:01
23:21 vendethiel- joined
timotimo do you think it'd be horrible and terrible if i wrote a second dump method that lives only in Node and has special knowledge of all node types? or maybe even a sub that lives after all the node types, that would make forward declaration unnecessary 23:29
er, in order to dump to json, i mean
anyway, i'm just about ready to go to bed and have some sleeps 23:30
23:43 AlexDaniel joined