01:55
ilbot3 joined
02:05
markmont joined
02:26
AlexDaniel joined
02:42
greppable6 joined
03:53
Ven`` joined
04:19
dogbert17 joined
04:20
lizmat_ joined
04:21
AlexDaniel joined
04:23
moritz joined
04:28
eater joined
07:25
domidumont joined
07:30
domidumont joined
09:17
leont joined
|
|||
nine | I won't be able to move all boxing into the HLL code. I'll have to box pointers, structs and carrays before I can give them back to HLL code and for that I'm still gonna need the return type object. | 09:50 | |
10:03
zakharyas joined
|
|||
nine | I'm slowly moving towards adding a MAST::NativeCall node type. | 10:03 | |
Native calls don't need to handle named arguments. But they do need the return type object. | 10:06 | ||
10:34
zakharyas1 joined
10:53
leont joined
10:56
Skarsnik joined
|
|||
jnthn | nine: I'd be OK with a new node type if trying to sqish it into the existing one looks ugly | 11:17 | |
MasterDuke_ | jnthn: re combining ssize and slots. can/should they be a struct? | 11:20 | |
jnthn | MasterDuke_: You're thinking a struct that contains ssize and points to slots? | 11:21 | |
e.g. an extra LoI? | |||
It may be a good way to go | |||
My first thought was "sneak the ssize ahead of the slots in the same memory blog" | |||
*blob | |||
MasterDuke_ | that's what i thought first, but then was chatting with timo and someone mentioned it maybe could be a struct | 11:22 | |
jnthn | But...then I realized we tend to grow arrays by powers of 2, and stuff in userspace will assume powers of 2 are nice for the VM too | ||
samcv | i'm gonna fix `make realclean` so it doesn't error anymore | ||
jnthn | And so we'd then try to allocate space for, say, 8 pointers + 1 for ssize | ||
samcv | figured out the issue | ||
jnthn | Which is 9, which goes in the next bucket and wastes memory | 11:23 | |
More than if we allocated 2 pointers worth for ssize/slots and separately the slots | |||
So I think maybe let's go that way | 11:24 | ||
It's an extra dereference, but it's nothing worse than dynamic arrays as they show up on, say, JVM, CLR, etc. | |||
MasterDuke_ | ok, so i'll try moving ssize and slots into a struct | ||
jnthn | Plus the FSA means that we don't have any bookkeeping data before/ahead of the 2-pointer struct | 11:25 | |
timo | huh, now that you point out to me that a struct would force another level of indirection, i'm no longer fond of that idea :| | ||
jnthn | timo: Well, I wasn't either, until I realized how allocating power of 2 + 1 was going to probably be horrible | 11:26 | |
timo | jnthn, i majorly restructured my grant application and increased the hourly rate quite a bit as a reaction to channel feedback, would you take a minute or two to look over the new version some time today? | ||
jnthn | timo: And lead to cache pollution because of the extra memory unused in the next FSA bucket size up | 11:27 | |
timo: Sure, link? | |||
MasterDuke_ | ssize should become a pointer to MVMuint64 in the new struct? | 11:28 | |
jnthn | Not a pointer, just a size | ||
MasterDuke_ | you mentioned two pointers? | 11:29 | |
jnthn | Oh | ||
Yeah, sorry. That was confusing, I was assuming 64-bit where ssize is equivalent to 1 pointer :) | |||
Didn't mean anything by that really; my point was that if we break power-of-2 boundary expectations of, well, everything, then we're probably going to have a bad time | 11:30 | ||
MasterDuke_ | ah, yeah, that makes sense | ||
timo | docs.google.com/document/d/102h_Nl...Z3yfI/edit jnthn | 11:34 | |
jnthn | timo: Are you thinking of the profiler UI gaining a server component, that uses, say, a sqlite DB? | 11:41 | |
A thing that I do miss in the heap snapshot analyzer is a snapshot diff | 11:42 | ||
oh, you have it | |||
:) | 11:43 | ||
oh, and I found the answer to my first question too :) | |||
timo | yeah, just a little server component that can run queries for the frontend | ||
i already made a "summary all" command that builds the summary for all snapshots and displays them in a table, but i couldn't run it yet because ram :D | 11:44 | ||
and my "forget-snapshot" command didn't cause the snapshots to die | |||
and running the heap snapshot profiler on the snapshot analyzer made moar crash in gc | |||
jnthn | It looks like a good grant app, and I'd really love seeing this work happen :) | 11:45 | |
timo++ | |||
timo | you think the amount requested is also sensible? | 11:46 | |
jnthn | I suspect the hourly estimate is a tad on the optimistic side | 11:47 | |
timo | i rephrased the last bit of the "using a web browser" bit to point out that the launching part can also happen from inside the browser | ||
jnthn | But I haven't spent time costing it out, and you have :) | ||
Cool | |||
timo | the estimates are rather rough, and probably too optimistic, but i'm having a hard time justifying an increased cost to myself | ||
jnthn | Estimates are always rough, that's the point :) | 11:48 | |
It's just that too much of our industry treats estimates as promises. | 11:49 | ||
Anyway, I'd say the question is, "even if it goes over a bit, will I still be happy with this amount?" | 11:50 | ||
MasterDuke_ | it compiled, but kind of scared to try and run anything... | 11:52 | |
timo | yeah, in reality i'll surely spend more than 150 hours | 11:57 | |
i should really bump up the estimate and pay amount. while i shouldn't make the claim outrageous (what my broken brain is telling me) but i shouldn't sell myself so short | |||
MasterDuke_ | this is getting a little interesting to test. a branch off a branch off a branch, and i'm not sure if i need to rebase master into each branch or just the last one... | 11:59 | |
timo | if you rebase the tip of the last branch onto master, it'll take the whole "path" between your tip and master and turn that into a new series of commits | 12:00 | |
if the other branches diverge at some point from this new path, you'll want to rebase them onto whatever commit corresponds to their old divergence point on the new series of commits | |||
(a graph on paper would really help here %) ) | |||
MasterDuke_ | hm, rakudo built. heh, did i do something right? or something so wrong? | 12:04 | |
timo | now try pushing onto an array simultaneously from 5 threads | ||
MasterDuke_ | hm, 'double free or corruption (!prev)' | 12:08 | |
m: my @a; start { @a.push: $++ for ^10 } for ^10; say +@a | 12:09 | ||
camelia | (signal ABRT)*** Error in `/home/camelia/rakudo-m-inst-1/bin/moar': double free or corruption (fasttop): 0x00007f81a0061300 *** ======= Backtrace: ========= /lib64/libc.so.6(+0x721af)[0x7f81b6e041af] /lib64/libc.so.6(+0x77706)[0x7f81b6e09706] /li… |
||
MasterDuke_ | if i had done it correctly, that shouldn't segv? | ||
jnthn | No. Should lose data but not SEGV. | 12:10 | |
jnthn gets live rock music on his street today | |||
timo | fantastic! | ||
jnthn | Opened the window to listen to it better. But now I can smell bbq sausages :) | 12:11 | |
timo | oh no, so appetizing | ||
jnthn | I wonder if this is one of those "omg we just harvested grapes and made young wine!" celebrations :) | 12:12 | |
OK, that was the most stereotypical cover band thing to do ever: play the final countdown as your final song. :P | 12:17 | ||
MasterDuke_ | nice | ||
timo | i fondly remember the last time cover bands were in the vicinity | 12:19 | |
many of those bands totally butchered some good songs | |||
it wasn't great :( | |||
12:28
Skarsnik_ joined
12:30
domidumont joined
|
|||
timo | i think i'll send in the latest (and hopefully last) version of my grant application | 12:32 | |
12:44
Ven`` joined
|
|||
MasterDuke_ | hm, the segv is in the MVM_realloc here: github.com/MoarVM/MoarVM/pull/689/...e0f3a2R368 | 13:03 | |
now to figure out why it's not taking the fsa path... | 13:04 | ||
afk for a while | |||
nine | Ok, compiler is happy again, but running is still a different topic: | 13:09 | |
Bytecode validation error at offset 90, instruction 16: | |||
expected instruction marked 'a' but got ' ' | |||
timotimo | i wonder if we have to change the resizing functions to only read the current size once, for example, so that we don't get outdated sizes at the point where we actually call the realloc | 13:18 | |
nine: that happens when instructions are in between a set of instructions that don't allow other instructions in between | |||
i.e. there's a starter and a stopper instruction for the "a" mark and there's instructions that are allowed between those two | |||
for example, prepargs, arg_*, invoke_* | 13:19 | ||
that's probably what bites you here? | |||
nine | I've got no idea how that could happen though. I'm using the same code as for other invoke ops | 13:22 | |
timotimo | right, we don't really have a dumper at that point that could tell you what exactly it sees | 13:38 | |
can you output the --target=mast when you compile your code? | |||
nine | That's it: gist.github.com/niner/888eb7874caf...c01bba970f | 14:04 | |
14:08
MasterDuke joined
|
|||
timotimo | oh, huh. perhaps it's only visible in the final mbc | 14:10 | |
MasterDuke | How can get the perl 6 name of the array in vmarray.c for debugging purposes? | ||
timotimo | the only thing we havee is the debug_name from the STABLE, but that's shared between all objects of the same type | ||
MasterDuke | Yeah, that's just giving me NPQArray or BOOTIntArray | 14:11 | |
Geth | MoarVM: 238896a50a | (Samantha McVey)++ | build/Makefile.in Fix errors when running `make realclean This was caused by it always trying to run `make distclean` in the libatomic_ops directory, even if the Makefile had already been cleaned up and removed. Only try to run `make distclean` in the libatomic_ops directory when the Makefile exists. |
14:12 | |
timotimo | i'll be AFK for a bit, but i'd appreciate more proofreads on my application: docs.google.com/document/d/102h_Nl...3yfI/edit# - thanks! | 14:13 | |
14:13
AlexDaniel joined
14:15
vendethiel- joined
14:22
KDr2__ joined
|
|||
nine | timotimo: improved debug output gives me this interesting bit: gist.github.com/niner/d80444bcad9b...1040d44605 | 14:22 | |
14:24
cognominal joined
|
|||
MasterDuke | Hm, the MVM_CF_USES_FSA flag on the array seems to be getting unset | 14:26 | |
14:27
dogbert2 joined
|
|||
dogbert2 | when running spec/stresstest the following is logged early in the process: Missing test file: t/spec/S32-str/S32-str/CollationTest_NON_IGNORABLE-0.t | 14:27 | |
MasterDuke | The GC should preserve that flag, right? | 14:31 | |
dogbert2 | .seen samcv | 14:36 | |
yoleaux | I saw samcv 11:22Z in #moarvm: <samcv> figured out the issue | ||
samcv | i was gonna go to bed | 14:37 | |
hi dogbert2 | |||
dogbert2 | hi, do you see the path error above | ||
t/spec/S32-str/S32-str/ | |||
samcv | hmm ah yes | 14:39 | |
fixing | 14:40 | ||
not sure how that happened :o | |||
dogbert2 | perhaps because it's time to sleep :) | 14:41 | |
samcv | ok fixed | 14:43 | |
good night! | |||
i'm guessing i must have hit some key before saving the file.. heh | 14:44 | ||
o/ night | |||
dogbert2 | night | ||
14:50
Skarsnik joined
14:52
MasterDuke joined
|
|||
nine | The only place where we emit an extend_i32 at all is in QASTCompilerMAST. But then it should show up in the --target=mast output, shouldn't it? | 14:52 | |
14:55
bloatable6 joined,
coverable6 joined,
nativecallable6 joined,
releasable6 joined,
quotable6 joined,
evalable6 joined,
bisectable6 joined,
committable6 joined,
greppable6 joined
14:56
unicodable6 joined,
benchable6 joined,
statisfiable6 joined,
squashable6 joined
|
|||
jnthn | nine: Note that extend_i32 is one of the earliest ops, and often getting those run spuriously turns out to be broken management of cur_op (e.g. mis-incrementing it) | 15:21 | |
(So that a regsiter number gets interpreted as as op) | |||
nine | jnthn: oh, that would make sense, given that I pass the result type object as first child of the nativecallinvokejit op, but exclude it from being treated like a normal argument. | 15:25 | |
jnthn | Turns out the thing going on on my street today is actually some yearly street party thing, though there was still nice wine. :) | 15:34 | |
Found the grilled sausages too. :) | 15:35 | ||
15:50
MasterDuke joined
|
|||
MasterDuke | Any idea why 'my int @a; @a.push(12321) for ^10; say +@a' would show that @a does not have _USING_FSA set in vmarray's push()? | 15:53 | |
Given that I'm working off of my branch that uses the FSA in vmarray of course | 15:55 | ||
16:01
zakharyas joined
|
|||
nine | jnthn: LOL it's neither. extend_i32 simply ends up in call_op. You'll never guess why :) | 16:08 | |
jnthn: unsigned char call_op = c->op == 0 ? MVM_OP_invoke_v : MVM_OP_ncinvoke_v; | |||
timotimo: ^^^ | |||
16:08
MasterDuke joined
|
|||
nine | MVM_OP_ncinvoke_v is 782 | 16:08 | |
Skarsnik | unsigned char x) | 16:10 | |
maybe have a type for this? like MVM_OPId | |||
nine | I guess back in 2012 op numbers beyond 256 were unimaginable :) | ||
timotimo | oh, whoops :) | ||
nine | 256 ops ought to be enough for anybody ;) | 16:11 | |
16:42
leont joined,
domidumont joined
17:28
Skarsnik_ joined
17:33
domidumont joined
17:47
zakharyas joined
|
|||
AlexDaniel | FWIW RT #132083 is kinda blocking, so more eyeballs welcome | 18:02 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=132083 | ||
18:05
dogbert2 joined
18:13
leont joined
18:39
leedo joined
19:06
zakharyas joined
19:10
zakharyas joined
19:34
zakharyas1 joined
19:35
zakharyas joined
20:31
leont joined
20:42
domidumont joined
|
|||
jnthn | nine: I guess "there won't be any more invoke ops than these" held up as an assumption for quite a lot of years. ;-) | 20:50 | |
nine | Well in 2012 I was still years away from joining rakudo :) | 20:52 | |
jnthn | m: my $value = -0x7FFFFFFF - 1; say $value; say -2147483648; say $value == -2147483648; | ||
camelia | -2147483648 -2147483648 False |
||
jnthn | m: my int $value = -0x7FFFFFFF - 1; say $value; say -2147483648; say $value == -2147483648; | ||
camelia | -2147483648 -2147483648 False |
||
jnthn | m: use nqp; my int $value = -0x7FFFFFFF - 1; say $value; say -2147483648; say nqp::eq_i($value, -2147483648) | 20:53 | |
camelia | ===SORRY!=== No registered operation handler for 'eq_i' |
||
jnthn | m: use nqp; my int $value = -0x7FFFFFFF - 1; say $value; say -2147483648; say nqp::iseq_i($value, -2147483648) | ||
camelia | -2147483648 -2147483648 1 |
||
jnthn | m: use nqp; my int $value = -0x7FFFFFFF - 1; say $value; say -2147483648; say nqp::iseq_I($value, -2147483648) | ||
camelia | -2147483648 This representation (NativeRef) cannot unbox to other types (for type IntLexRef) in block <unit> at <tmp> line 1 -2147483648 |
||
jnthn | m: use nqp; my $value = -0x7FFFFFFF - 1; say $value; say -2147483648; say nqp::iseq_I($value, -2147483648) | ||
camelia | -2147483648 P6opaque: get_boxed_ref could not unbox for the representation '20' of type Scalar in block <unit> at <tmp> line 1 -2147483648 |
||
jnthn | m: use nqp; my $value = -0x7FFFFFFF - 1; say $value; say -2147483648; say nqp::iseq_I(nqp::decont($value), -2147483648) | 20:54 | |
camelia | -2147483648 -2147483648 0 |
||
jnthn | m: use nqp; my $value = -0x7FFFFFFF - 1; say $value; say -2147483648; say nqp::iseq_I(nqp::decont($value), nqp::decont($value)) | ||
camelia | -2147483648 -2147483648 1 |
||
timotimo | we implement iseq_I as cmp_I and result check | 20:55 | |
jnthn | m: use nqp; say nqp::iseq_I(-2147483648, -0x7FFFFFFF - 1) | ||
camelia | 0 | ||
timotimo | might be interesting to see what ti thinks | ||
jnthn | m: use nqp; say nqp::iseq_i(-2147483648, -0x7FFFFFFF - 1) | ||
camelia | 1 | ||
jnthn | m: use nqp; say nqp::cmp_I(-2147483648, -0x7FFFFFFF - 1) | ||
camelia | 1 | ||
jnthn | m: say (-2147483648).base(16) | 20:56 | |
camelia | -80000000 | ||
jnthn | m: use nqp; say nqp::cmp_I(-0x80000000, -0x7FFFFFFF - 1) | ||
camelia | 1 | ||
jnthn | m: use nqp; say nqp::eq_I(-0x80000000, -0x7FFFFFFF - 1) | ||
camelia | ===SORRY!=== No registered operation handler for 'eq_I' |
||
jnthn | m: use nqp; say nqp::iseq_I(-0x80000000, -0x7FFFFFFF - 1) | ||
camelia | 0 | ||
jnthn | m: use nqp; say nqp::iseq_I(-0x80000000, 0x80000000) | 20:57 | |
camelia | 0 | ||
jnthn | m: use nqp; say nqp::iseq_I(-0x80000000, -0x80000000) | ||
camelia | 1 | ||
jnthn | Thing is, I'd expect that substraction to constant-fold... | ||
timotimo | it should, yeah | 20:58 | |
fwiw, i saw the deserialization read a smallbigint of value 2147483648 | |||
i don't know why it's positive rather than negative, though | |||
huh | 21:01 | ||
sign extension going berserk? | |||
-FFFFFFFF80000000 | |||
is what i get when i say its .base(16) | |||
japhb | It's wierd to display a base 16 number with the high bit set *and* a negative sign. | 21:02 | |
timotimo | this one shouldn't have any of the higher bits at all | 21:03 | |
21:19
leont joined
|
|||
timotimo | forcing the bigint to do the comparison with breaks | 21:25 | |
hm, what was the original test ... | 21:26 | ||
m: use nqp; say nqp::iseq_I(-0x80000000, -0x7FFFFFFF - 1) - i got this to give 1 | 21:27 | ||
camelia | ===SORRY!=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> eq_I(-0x80000000, -0x7FFFFFFF - 1) - i⏏ got this to give 1 expecting any of: infix infix stopper postfix s… |
||
timotimo | whoops :) | ||
found another bit | 21:29 | ||
Geth | MoarVM: 9c5fed708f | (Timo Paulssen)++ | src/math/bigintops.c store smallint value in 64bit if we negate them later as we might otherwise overflow. |
21:30 | |
21:59
Skarsnik_ joined
22:27
MasterDuke joined
|
|||
MasterDuke | what is this telling me? gist.github.com/MasterDuke17/8e42f...98f9847f10 | 22:32 | |
timotimo | i'd say while trying to allocate malloc stumbled upon an entry in the heap that doesn't make sense | 22:33 | |
i.e. something wrote garbage onto parts of its management data? | |||
MasterDuke | fwiw, that code causes that failure almost always with moar master HEAD, but takes many many tries to get the same failure with my unified + fsa branch (which now also passes a rakudo spectest) | 22:35 | |
timotimo | that's promising alreadý | 22:36 | |
MasterDuke | heh, that's a very fancy 'y' | ||
timotimo | oops? | 22:37 | |
not sure how i reached the combiner for that | |||
MasterDuke | btw, this is where my branch stands now, if you feel inspired to look it over. github.com/MasterDuke17/MoarVM/tre..._and_slots | 22:38 | |
but afk for a bit | 22:39 | ||
timotimo | i bet ubsan would have been able to figure this out | 22:41 | |
the 32bit negating thingie | |||
jnthn | timotimo++ # fixing the bug | 23:22 | |
I'm too tired to cut the release right now, alas | |||
.tell AlexDaniel if there are no remaining blockers for release, .tell me and I'll cut the release tomorrow | 23:23 | ||
yoleaux | jnthn: I'll pass your message to AlexDaniel. | ||
AlexDaniel | okay, thanks | ||
yoleaux | 23:23Z <jnthn> AlexDaniel: if there are no remaining blockers for release, .tell me and I'll cut the release tomorrow | ||
jnthn | Oh, you're still about :) | ||
AlexDaniel | I'm looking at RT #132030 right now | 23:24 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=132030 | ||
AlexDaniel | it's kinda alright, but I'm seeing some kind of weirdness here | ||
possibly in Test.pm, maybe somewhere else. Not sure yet | |||
timotimo | it's obscene how much faster python is at calculating permutations | 23:25 | |
AlexDaniel | timotimo: how much? | ||
timotimo | i wasn't patient enough to let it terminate | 23:27 | |
oh, it only takes 35 seconds | 23:28 | ||
python takes 2.5 seconds | 23:29 | ||
AlexDaniel | timotimo: what if it's a regression? What about throwing some code into benchable? | ||
timotimo | yeah, let's ask benchable | 23:30 | |
AlexDaniel | not the one which takes 35 seconds, but something smaller | ||
timotimo | of course | ||
benchable6: releases for permutations(10) { } | |||
benchable6 | timotimo, starting to benchmark the 22 given commits | ||
AlexDaniel | honestly I got very lazy with these bots | 23:31 | |
timotimo | not sure what you mean? | ||
AlexDaniel | my brain doesn't want to think before I get some results from them | ||
“is this result right or wrong?” – well who cares, let's first see if it was different in the past… | 23:32 | ||
and if it was, what commit changed it and what's the commit message there… | |||
timotimo | right | 23:33 | |
when do we get a web interface where the whateverables show what they're currently doing, exactly :) | |||
AlexDaniel | ^ see, it's crunching something | 23:35 | |
timotimo | hmpf | ||
23:35
benchable6 joined
|
|||
AlexDaniel | benchable6: I see you were smart enough to reply when you were offline | 23:35 | |
benchable6 | AlexDaniel, ¦I: «Cannot find this revision (did you mean “all”?)» | ||
AlexDaniel | benchable6: releases for permutations(8) { } | ||
benchable6 | AlexDaniel, starting to benchmark the 22 given commits | ||
AlexDaniel | benchable really needs some love | 23:36 | |
MasterDuke | jnthn: sim_stack_push is in 2nd spot on a perf record of stage parse (8.4%). any quick wins possible there? | ||
benchable6 | AlexDaniel, benchmarked the given commits, now zooming in on performance differences | 23:37 | |
timotimo | that's part of spesh | ||
since spesh is running off in its own thread, it's not as performance critical | 23:38 | ||
MasterDuke | oh right, i guess i need to find some one to just record the one thread | ||
timotimo | is benchable okay? | ||
MasterDuke | s/one/way | ||
AlexDaniel | timotimo: the first step would be self-served gists… it actually takes a few seconds to upload stuff | ||
timotimo | oh, huh. | 23:39 | |
AlexDaniel | timotimo: in fact, I think right now it's simply uploading the graph | ||
oh… maybe not | |||
benchable6 | AlexDaniel, «hit the total time limit of 240 seconds» | ||
AlexDaniel | :| | ||
benchable6: 2015.12,HEAD for permutations(8) { } | 23:40 | ||
benchable6 | AlexDaniel, starting to benchmark the 2 given commits | ||
AlexDaniel, benchmarked the given commits, now zooming in on performance differences | |||
AlexDaniel, gist.github.com/ed59308b3ee4028154...95cbde1bf1 | 23:42 | ||
AlexDaniel | hah :D | ||
timotimo | yeah, we're the fastest we've ever been | 23:43 | |
plus/minus a bit of noise | |||
AlexDaniel | \o/ yaaay | ||
;) | |||
samcv | what is it testing though? | 23:52 | |
just for permutations? | |||
timotimo | hopefully the for loop itself isn't a very big overhead | 23:53 | |
AlexDaniel | benchable6: 2015.12,HEAD for permutations(9) { } # because why not | ||
benchable6 | AlexDaniel, starting to benchmark the 2 given commits | ||
AlexDaniel, benchmarked the given commits, now zooming in on performance differences | 23:54 | ||
AlexDaniel | .seen azawawi | 23:55 | |
yoleaux | I saw azawawi 27 May 2017 12:50Z in #perl6: <azawawi> jnthn: in Graphics::PLplot im aiming on providing Raw (native) and cooked with sugar API :) | ||
benchable6 | AlexDaniel, «hit the total time limit of 240 seconds» | 23:58 | |
AlexDaniel | :( | ||
timotimo | :| | ||
c: 2015.12,HEAD my $iter = Rakudo::Iterator.Permutations(8); while $iter.pull-one !=:= IterationEnd { } | |||
committable6 | timotimo, gist.github.com/3dac4b3fc9175999bf...0c8fef4aed | ||
timotimo | ah, yes | ||
c: 2016.12,HEAD my $iter = Rakudo::Iterator.Permutations(8, 1); while $iter.pull-one !=:= IterationEnd { } | 23:59 | ||
committable6 | timotimo, ¦2016.12: «Could not find symbol '&Iterator' in block <unit> at /tmp/IA0e2t8il2 line 1Actually thrown at: in block <unit> at /tmp/IA0e2t8il2 line 1 «exit code = 1»» ¦HEAD(488ca6f): «» | ||
timotimo | i wonder when it started living in that file | ||
c: 2017.04,HEAD my $iter = Rakudo::Iterator.Permutations(8, 1); while $iter.pull-one !=:= IterationEnd { } | |||
committable6 | timotimo, ¦2017.04,HEAD(488ca6f): «» | ||
timotimo | c: 2017.02,HEAD my $iter = Rakudo::Iterator.Permutations(8, 1); while $iter.pull-one !=:= IterationEnd { } | ||
committable6 | timotimo, ¦2017.02,HEAD(488ca6f): «» | ||
timotimo | c: 2017.01,HEAD my $iter = Rakudo::Iterator.Permutations(8, 1); while $iter.pull-one !=:= IterationEnd { } | ||
committable6 | timotimo, ¦2017.01,HEAD(488ca6f): «» | ||
timotimo | benchable6: 2017.01,HEAD my $iter = Rakudo::Iterator.Permutations(8, 1); while $iter.pull-one !=:= IterationEnd { } | ||
benchable6 | timotimo, starting to benchmark the 2 given commits | ||
timotimo, benchmarked the given commits, now zooming in on performance differences | |||
timotimo, ¦2017.01: «0.2186» ¦HEAD: «0.1974» |