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«01» | ||
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«TrueFalseTrue» | ||
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 |