jdv79 nite 00:55
[Tux] This is Rakudo version 2016.05-38-g069b789 built on MoarVM version 2016.05-18-g1339332 06:11
test 19.671
test-t 12.496
csv-parser 34.660
nine tomboy64: I posted live commentary up to an hour before you asked :) The short version is: this may take a while. 06:29
dalek p: 29fbe83 | (Pawel Murias)++ | src/vm/js/RegexCompiler.nqp:
[js] Fix rxtype literal with a zerowidth subtype.
11:47
p: ce971dd | (Pawel Murias)++ | src/vm/js/nqp-runtime/ (2 files):
[js] Move to serialization format version 20.
12:00
p: 70a863d | (Pawel Murias)++ | t/nqp/067-container.t:
Test decontainerizing a nqp::null.
12:01
p: ac38b5f | (Pawel Murias)++ | t/serialization/02-types.t:
Test serializing the hll role.
p/return-without-lexotic: 7a9f8e5 | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
Map new payload-based exception throwing ops.
12:17
p/return-without-lexotic: ed3aa83 | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
Implement handlepayload.

Will be used to implement new control-exception-based return in an efficient (allocation-free) way.
p/return-without-lexotic: 3ab1e48 | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
Add const for return exception type.
12:18
p/return-without-lexotic: e0aae8a | jnthn++ | src/NQP/Actions.nqp:
Switch NQP away from using lexotic handlers.
jnthn pmurias: Hope ^^ will not be too bad from the JS perspective; if anything it's simpler/more unified than the lexotic mechanism it replaces. 12:20
pmurias jnthn: will look into that, I had planned to look into the nqp-js lexotic soon to fix some things anyway 12:21
jnthn pmurias: Another bit of good news is that it will also kill off one of the Rakudo extops :) 12:22
nine Die extops die! 12:36
jnthn aww, it makes it through all the NQP tests, only to blow up in Rakudo build...
.oO( The extops the! )
ilmari reminds me of www.joe.co.uk/news/this-german-maga...ling/51330 12:40
jnthn hehe, didn't know about the magazine :P 12:52
The Simpsons reference was what I had in mind :)
dalek p/return-without-lexotic: 0b83810 | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
Fix a register alloc fail in while compilation.

We ended up clobbering the result register in the non-void case.
12:55
jnthn A tad surprised we didn't uncover that one before now.
dalek p/return-without-lexotic: 0dde699 | jnthn++ | src/vm/moar/QAST/QASTCompilerMAST.nqp:
Make nqp::const work as a MAST constant.
13:37
kudo/return-without-lexotic: 8b6fd14 | jnthn++ | src/ (5 files):
Switch Rakudo away from using lexotic for return.
13:47
ZoffixW To comment on my promise to fix is-approx in two days (irclog.perlgeek.de/perl6-dev/2016-0...581122)... I won't :P 14:02
There seems to be many opinions on what the default tolerance type and values should be, and since I know nothing about the problem domain where is-approx is used and have no use for it myself, I don't want to pick the default myself. 14:03
perlpilot ZoffixW: awww :( 14:05
ZoffixW A radical thought is it should be removed altogether. The basic approx can be done with cmp-ok $got, '≅', $expected; And more complex Python library on which is_approx is based on should be implemented as a separate module in the ecosystem. 14:06
perlpilot I think is-approx should stay and the default tolerance should be 1e-6 ... but that's just me 14:10
ZoffixW Absolute or relative tolerance?
perlpilot Absolute. It's easier to understand. 14:11
ZoffixW That was my idea too, but Sam S. says Relative is more useful (rt.perl.org/Ticket/Display.html?id=128303). I searched the logs and some people say to use ≅ under the hood, and it has relative tolerance, but with 1e-15 as the value. is-approx does relative with 1e-6. is_approx (which by irc logs and commits I garner is meant to be the "new and improved" is-approx), does absolute of 1e-5 for any values smaller than 1e-6 and does relative 14:17
of 1e-6 for anything else. And that behaviour links to a 13-page description of a Python library I didn't even want to read.
And that's not even all: there are multiple ways to do relative tolerance: en.wikipedia.org/wiki/Relative_cha...efinitions 14:18
The current implementation chooses |x - y| / max(|x|, |y|) sometimes and others uses $expected*$rel-tol
pyrimidine ZoffixW: sounds like a topic for a good blog post, but with the inherent danger of additional bikeshedding :)
ZoffixW So yeah... all that put me off from using my time to make a PR guranteed to create a lot of bikeshedding.
pyrimidine, but I know nothing about the problem domain. When people use is-approx, what are they looking for? I've no idea. 14:19
perlpilot ZoffixW: FWIW, I was going to revamp is-approx a few months ago. You've discovered why I didn't do it :-)
ZoffixW lol
perlpilot relative *is* more useful, but that doesn't mean it should be the default. I think most people think of absolute tolerance when they think of 2 values being approximately equal to each other. 14:21
(unless they are a mathematician ;)
ZoffixW :)
perlpilot Also, I'd probably express relative tolerance differently. Rather than saying "relative tolerance of 1e-5", I would say something like "are these values within X% of each other" 14:23
ZoffixW % of what? :) 14:24
perlpilot "each other" ;)
ZoffixW heh
ugexe jnthn: commit 7250543 is giving me a new '===SORRY!=== Cannot assign to an immutable value'. I'm unable to golf it down unfortunately gist.github.com/ugexe/e48d7d63b193...eb6ecc1fef 16:35
it seems to print out the contents fine if I add debugging statements, so i suspect the --ll-exception trace might be pointing at the wrong thing 16:41
jnthn ugexe: Bisected to exactly that commit? If you revert it, it works again? 17:04
(or if you run on the commit exactly 1 before it...)
ugexe the commit right before it (the rev bump) works ok 17:06
jnthn o.O
ugexe: The example in the gist seems incomplete though? there's no class Bar... 17:08
Or is that just showing the method where things fail? 17:10
ugexe yeah, i started to write an example but couldnt golf it down. class Bar is Distribution { }, where method hash it from rakudos own Distribution, so like method hash { %(a => 1, b => 2) }
to demonstrate the 'callsame.append' thing
it dies on the %hash<identity> = $.identity; line 17:11
jnthn Very odd :S 17:13
Dinner now; I'll see if I can make any sense of it afterwards
I just need to clone zef and run the command in the gist description?
ugexe yes
dalek kudo/nom: 4b1aed3 | lizmat++ | src/core/List.pm:
Streamline List.reify-at-least a bito

  - use a postfix unless for a few % improvement
Oddly enough, removing the binding to iter, and instead mention current.iterator twice, causes massive spectest failure. I wish I understood why. Feels like it shouldn't make a difference, but it does :-(
20:29
lizmat m: my Str $a; $a++; say $a # shouldn't this just say "a" ? 20:32
camelia rakudo-moar 069b78: OUTPUT«Type check failed in assignment to $a; expected Str but got Int (1)␤ in block <unit> at /tmp/Rj4bf8pqs_ line 1␤␤»
psch m: say Str.succ 20:33
camelia rakudo-moar 069b78: OUTPUT«Invocant requires an instance of type Str, but a type object was passed. Did you forget a .new?␤ in block <unit> at /tmp/oPnIg4I0yW line 1␤␤»
psch lizmat: i'd guess it falls back to the Any candidate
lizmat yah
.oO( been watching too much Fargo lately )
psch well, or Cool maybe... 20:34
m: say Any.succ
camelia rakudo-moar 069b78: OUTPUT«Method 'succ' not found for invocant of class 'Any'␤ in block <unit> at /tmp/3WySyafNrJ line 1␤␤»
lizmat I guess one could also argue it should be "A"
psch m: say Cool.succ
camelia rakudo-moar 069b78: OUTPUT«Method 'succ' not found for invocant of class 'Cool'␤ in block <unit> at /tmp/yUkb6peXTq line 1␤␤»
psch okay now i'm confused
masak I guess one could also argue that there isn't a strong use case here... :)
psch rakudo/rakudo/src/core/Numeric.pm:28: method succ() { self + 1 } 20:35
masak Str isn't Numeric, though
psch ...but yeah
rakudo/rakudo/src/core/Any.pm:440:multi postfix:<++>(Mu:D $a is rw) { my $b = $a; $a = $a.succ; $b }
lizmat the reason was because I fixed this bug: 20:36
m: my @a = ^5; @a[2]:delete; $_++ for @a; dd @a
camelia rakudo-moar 069b78: OUTPUT«Array @a = [1, 2, 1, 4, 5]␤»
psch ...which postfix:<++> is actually called?
ohh 20:37
lizmat this used to break on the null in the array
psch the one right below the one i pasted of course >_>
Any.pm:441:multi postfix:<++>(Mu:U $a is rw) { $a = 1; 0 }
and, yes, that is clearly bogus
masak it is?
psch well, the error message at least
lizmat m: my $a; $a++; say $a # that's why we have that 20:38
camelia rakudo-moar 069b78: OUTPUT«1␤»
lizmat m: my $a; say $a++; say $a
camelia rakudo-moar 069b78: OUTPUT«0␤1␤»
masak 'night, #perl6-dev
psch 'night masak
lizmat gnight masak
psch i see the reason for having a postfix and prefix ++ candidate that intifies 20:39
but the failed assignment is LTA, and i doubt that declaring narrower ++ candidates for all the non-intifying types is a good idea 20:40
m: my Junction $x; $x++
camelia rakudo-moar 069b78: OUTPUT«Type check failed in assignment to $x; expected Junction but got Int (1)␤ in block <unit> at /tmp/3iXpNZJk7q line 1␤␤»
lizmat m: my Rat $a; $a++ 20:41
camelia rakudo-moar 069b78: OUTPUT«Type check failed in assignment to $a; expected Rat but got Int (1)␤ in block <unit> at /tmp/7l5tOu0AZD line 1␤␤»
psch well, same old there, of course vOv
m: my Bool $x; $x++
camelia ( no output )
psch that's cause Bool.succ doesn't type smiley
lizmat I think that's actually intentional 20:42
psch yeah, Bool is fine like that
m: my $x = True; say $x--; say $x; say ++$x
camelia rakudo-moar 069b78: OUTPUT«True␤False␤True␤»
psch fwiw, i don't like 'not a strong usecase' and would prefer "at least it's consistent, in case someone needs it" 20:43
but i guess for that we'd need some way of finding the "succ identity" for the given type 20:44
just like ($ = Int)++ returns 0, ($ = Str)++ should return "" 20:45
timotimo lizmat: maybe some things have .iterator as a coercer rather than an accessor? 20:46
lizmat hmmm.... interesting thought
.tell pmurias this could be of interest ? zeit.co/blog/async-and-await 20:52
grrr 20:53
[Coke] evening, sixers. 20:54
lizmat [Coke] o/ 20:55
timotimo so ... 20:59
nativecall-ing into this function, and the breakpoint at the start of that function doesn't get hit
why? :(
maybe should ask about this in #perl6 instead 21:00
dalek kudo/nom: d080d37 | lizmat++ | src/core/List.pm:
Don't create a future if there is none

This means we can check for number of elements in the future one time less for each iteration of List.reify-at-least.
21:25
timotimo there is no future ;( 21:49
dalek kudo/nom: 6bb23a5 | lizmat++ | src/core/List.pm:
Don't todo or reify if there is no future

Make iterating over an empty slurpy array about 15% faster, and have 30% fewer allocations. Basically, this allows the EmptyIterator to do its work quickly.
22:09
timotimo nice! 22:13
lizmat and with that, I wish perl6-dev a good night! 22:16
ugexe jnthn: It has something to do with returning like `sub foo() { $ = something() }`. If I do s/$ =// it'll run again (although some of those were needed on windows at one time for unknown reasons, havent retested there yet). I still cant golf it down, so something else is needed for it to manifest (being buried in a lazy loop or in a state var?) 23:57