timotimo | yay, i have a bit of output | 00:05 | |
5540083 6.7M -rw-r--r--. 1 timo timo 6.7M Mar 17 01:04 heap-1458173085.41926.json | |||
where did i put the fixed version of json_xs? :\ | 00:06 | ||
i don't *really* understand what the heap snapshot exactly contains here | 00:07 | ||
but i'm now getting output, so that's good | 00:08 | ||
i wonder if i should already turn references into the string heap into strings at json-dump-time | 00:10 | ||
i kind of fear i b0rked the to-json-ification somehow | 00:13 | ||
nope, at least the regular timing/allocation profiler is still fine | 00:16 | ||
i can probably get away with replacing ; and , with the right kind of stuff to get a more structure-y thing | 00:18 | ||
it's probably enough to change ; into "," and it'll be cooler | 00:23 | ||
splitting the string by ";" takes a very long time. i'm considering implementing a role that i can plop on the string to tell the json dumper that it's supposed to be included verbatim without escaping in the final json output and just use subst there | 00:32 | ||
nqp is making my life difficult right nw | 00:53 | ||
oh! | |||
i'm being dumb, subst always wants a regex, but i gave it a string instead | |||
00:54
colomon joined
|
|||
timotimo | this is *so* slow :| | 01:12 | |
01:13
colomon joined
|
|||
timotimo | i should probably just leave this change out and start work on a front-end | 01:16 | |
01:21
colomon joined
|
|||
dalek | kudo/repl6: 37af979 | hoelzro++ | src/core/REPL.pm: REPL6: Return full list of completions if given no input Fixes a slew of warnings, plus saves us a lot of work |
01:35 | |
timotimo | ohai hoelzro :) | 01:36 | |
hoelzro | hi timo! | 01:37 | |
still up, are you? | |||
it's got to be quite late there! | |||
timotimo | 0230 | ||
hoelzro | oh, that's not terrible | ||
timotimo | i had kind of a bad day, in the sense that i got out of bed at about 2100 or so | ||
hoelzro | ah, DST hasn't hit for you yet, has it? | 01:38 | |
timotimo | 2145 actually | ||
i don't think so | |||
hoelzro | wow, what happened? not feeling well? | ||
timotimo | yeah | ||
hoelzro | =( | ||
timotimo | well, i'm feeling better now :) | ||
hoelzro | oh, good! | ||
timotimo | just now digging into jnthn's heap profiler stuff | 01:39 | |
hoelzro | I should probably dive into the heap at sometime as well =) | ||
timotimo | hah, what? :) | 01:40 | |
hoelzro | heh, bad pun =) | ||
jnthn's work looks pretty handy | |||
timotimo | i feel quite a bit relieved that we have #p6dev now; i can get away with not backlogging all of #perl6 now | ||
hoelzro | tell me about it! | ||
timotimo | i didn't expect i'd feel so good about the split so soon already | ||
hoelzro | it's surprising | 01:41 | |
well, not entirely, I suppose | |||
it makes me feel a ton better when I push a lot of commits =) | 01:42 | ||
'caus now dalek doesn't dump them in #perl6 | |||
timotimo | ah | 01:43 | |
i didn't feel bad about making dalek output lots of stuff in the past | |||
i thought everybody appreciates a slew of commit reports by dalek | |||
y'know | |||
hoelzro pushed a bunch of commits, and there was much rejoicing | |||
hoelzro | it's nice to know that people are working, and what they're working on =) | 01:44 | |
timotimo | :) | ||
the description of the "references" part of the snapshot isn't entirely clear to me :\ | 01:52 | ||
it only makes sense to me if it only tracks how a thing gets referenced, but not by what | 01:59 | ||
so my first idea of making one graphviz image that shows all interconnections won't fly, apparently? | 02:00 | ||
oh! | |||
every collectable in the "collectables" has a pointer into the "references" list and a "length" | |||
02:25
dalek joined
|
|||
dalek | ast: d386ad8 | skids++ | S0 (2 files): Start to rehabilitate Range Iterator test file post-GLR (It will need some review before being put back in spectest.data) Also, add a couple extra immutability tests on Range |
02:29 | |
ast: 4647043 | skids++ | S0 (2 files): Merge pull request #109 from skids/master Start to rehabilitate Range Iterator test file post-GLR |
|||
timotimo | okay, i have a little perl6 script that extracts the heap profiler output into a bunch of objects that we can use for introspecting stuff | 02:38 | |
i'm not yet hooking up the Reference with its actual target object. i wonder if i should | |||
hoelzro: are you interested in that? i can upload it along with an example heap | 02:39 | ||
hoelzro | timotimo: I'm afraid I won't get around to it tonight =/ | 02:40 | |
timotimo | you could already download it and see what it's like, tell me if it's any good or something? :) | ||
i'll post it in #perl6 | 02:41 | ||
hoelzro | timotimo: I guess it wouldn't hurt to share the link ;) | 02:42 | |
timotimo | there we go :) | 02:46 | |
hoelzro | timotimo++ | ||
03:22
sortiz joined
|
|||
[Tux] | test 21.488 | 07:44 | |
test-t 14.080 | |||
csv-parser 50.807 | |||
nine | up and to the right... | 07:48 | |
07:56
nwc10 left
07:58
RabidGravy joined
|
|||
lizmat | good *, #p6dev :-) | 08:33 | |
moritz | \o | ||
moritz doesn't need to run around with drawn arms | |||
lizmat | looking at [Tux] test-t timings, I cannot help but wonder what I did yesterday that caused the slowdown :-( | ||
because none of that work had anything todo with CSV afaik | 08:34 | ||
[Tux] | 13.8 -> 14.0 isn't that much of a slowdown, is it? | ||
lizmat | except maybe make the core bigger ? | ||
it's a small increment (yet again) | |||
[Tux] | www.xs4all.nl/~hmbrand/speed.log <= the complete log | 08:35 | |
(used for the graphs) | |||
[Tux] => $work - bbl | 08:36 | ||
RabidGravy | how can I find why something is segfaulting in moar/reprs/CStruct.get_int | 08:56 | |
nine | I dare say that .2s is within the margin of error, so I wouldn't worry about it that much. I'm more concerned with the 11.828 -> 14.080 slowdown within the last 3 weeks | 09:02 | |
2.2s between March 5th and March 12th | 09:04 | ||
lizmat | $ 6 'my str @a = "a","b"; dd @a' | 09:06 | |
array[str].new("a", "b") | |||
wheeee | |||
only add to add 2 lines to native_array, and adapt the parameterize to allow str | 09:07 | ||
nine | nice one | ||
lizmat | *need | ||
however, the question is really, can we do this in 6.c? | |||
should this be 6.c.1 or 6.d ? | |||
it *is* something new (although it was always planned) | 09:08 | ||
dalek | kudo/nom: eed4ebb | lizmat++ | src/core/native_array.pm: Add support for native str arrays Turns out it was trivial to add once the role generation code was in place. Please note that this is for review only: one could consider this having to be part of 6.d, or at least a 6.c.1. |
09:14 | |
lizmat | afk for a few hours& | 09:37 | |
dalek | kudo/nom: 2a20197 | lizmat++ | src/core/native_array.pm: Add str|intarray.join, opt intarray.STORE(Range) |
12:22 | |
lizmat | .tell jnthn it looks like I can have a "multi foo" in a role in the settings without having to specify a proto (see 2a20197) | 12:28 | |
.tell jnthn it works, I'm just surprised that it can and if it points to some kind of bug lurking somewhere | 12:29 | ||
timotimo | i think that's a known limitation of the core setting | ||
oh | |||
lizmat | yes, I know you must | ||
timotimo | well, it could be that if the role is applied after the core setting is through, it's fine? | ||
lizmat | it's just that I forgot, and it didn't complain | ||
ah, perhaps that's it... I thought I'd mention it just in case :-) | 12:30 | ||
timotimo | how big is the optimization in the intarray.STORE(Range) case? | ||
i'm so used to your commit messages having those numbers in them | |||
lizmat | the intarray.STORE case was about 30% | 12:31 | |
the strarray.join was about 10x faster, the intarray.join about 5x faster | |||
timotimo | awesome :) | 12:32 | |
dalek | kudo/nom: 2627232 | lizmat++ | src/core/native_array.pm: Apparently we don't need no multi's here |
12:33 | |
lizmat | m: say Buf.new(1,2,3).WHICH | 12:34 | |
camelia | rakudo-moar 2a2019: OUTPUTĀ«Buf|57312608ā¤Ā» | ||
lizmat | m: say Blob.new(1,2,3).WHICH | ||
camelia | rakudo-moar 2a2019: OUTPUTĀ«Blob|58573488ā¤Ā» | ||
timotimo | ah, blobs could become value types, eh? | ||
lizmat | feels to me since Blob's are immutable, it should be a value type, indeed :-) | 12:35 | |
hoelzro | o/ #p6dev | 12:44 | |
timotimo: have you thought about making that code you wrote last night into a proper module? | |||
timotimo | yeah | 12:45 | |
i'm also thinking to make it not json | 12:46 | ||
because it's really not structured at all | |||
if it was just lines with a keyword in front, that'd be a lot faster to parse, and would easily allow "parallelization" | |||
moritz | timotimo: Blob is a role, and mutable objects to the Blob role | 13:02 | |
and blob happens to pun into a class as well | |||
timotimo | oh | ||
well, we can surely detect self.WHAT eqv Blob, no? | 13:03 | ||
well, i suppose Blob.^make_pun? or Blob.^pun? which one is the one i mean? | |||
moritz | or we could give Blob a WHICH method, and then override it again in Buf | 13:04 | |
which sounds cleaner than messing with make_pun | |||
timotimo | hoelzro: the module might land in moarvm/tools or so | 13:14 | |
lizmat | moritz timotimo: that was the line of thought I was going for | 13:15 | |
dalek | kudo/nom: 2494cba | lizmat++ | src/core/Buf.pm: Make Blob.join|perl 2x as fast |
13:16 | |
lizmat | jnthn: do you think a SHA1 of a Blob would be sufficiently unique for a .WHICH ? | 13:20 | |
jnthn | Hm, is Blob listed as a value type? :) | 13:23 | |
It's a...bit risky :) | |||
lizmat | jnthn: well, it *is* supposed to be immutable ? | ||
Buf.WHICH would not change | |||
from the current behaviour | |||
m: Buf.new(1,2,3).WHICH.say | |||
camelia | rakudo-moar 262723: OUTPUTĀ«Buf|54105792ā¤Ā» | ||
jnthn | lizmat: We'll break things for anyone who was putting blobs in object hashes if we change it...though that may be "not man" | 13:24 | |
lizmat: I more meant does S02 list it as a value type though | |||
lizmat | ah, lemme check | ||
timotimo | it would break things? i think i'm confused | 13:25 | |
jnthn | timotimo: If you put them in relying on reference identity, then suddenly those that had value identity started being the same key... | 13:26 | |
timotimo | ah | ||
indeed | |||
so a 6.d thing potentially | |||
with the upgrade path of using Buf where Blob was currently used for that | 13:27 | ||
lizmat | jnthn: Blob is not listed as a mutable | ||
timotimo | well, not mutable has got to be the case, but does it mention "value type" anywhere? | 13:28 | |
that'd be what tips the user off to reference vs value identity, as jnthn just explained to me | |||
perlpilot | Blob is in the list after S02:1415 | ||
"Objects with these types behave like values" | |||
timotimo | ah! fantastic | 13:29 | |
lizmat | perlpilot++ | ||
timotimo | so giving Blob the WHICH would be a fix, not a change :) | ||
lizmat | eh, yeah, that was my thought :-) | ||
jnthn | OK, then +1 | ||
I was pretty sure S02 made a call on it :) | 13:30 | ||
And I mostly prefer to delegate to TimToady's thinking there rather than doing my own ;) | |||
13:33
synopsebot6 joined
|
|||
timotimo | S02:1415 | 13:34 | |
synopsebot6 | Link: design.perl6.org/S02.html#line_1415 | ||
timotimo | that list also has Enum, EnumMap, and LoL | ||
that may want to be updated ... at some point | |||
jnthn | lol... | 13:35 | |
Yeah | |||
There is no LoL | |||
timotimo | yeah, no project euler, either | 13:36 | |
jnthn | :D | ||
dalek | kudo/nom: 5958903 | lizmat++ | src/core/Buf.pm: Give Blob a .WHICH fitting for a value type While Buf.WHICH remains the same, since that is a mutable type. Please note that it was not an option to have a .WHICH attribute frozen in a $!which, as array type REPR's don't allow attributes. |
13:55 | |
lizmat | $ 6 'Blob.new(1,2,3,4).WHICH.say' | ||
Blob|4697A8195A0E8EF4E1EE3119268337C8E0AFABFC | |||
$ 6 'Buf.new(1,2,3,4).WHICH.say' | |||
Buf|140461630105216 | |||
timotimo | we could probably implement a version of nqp::sha1 that operates on lists of integers | 13:56 | |
so there'd not be a need for a join there | |||
lizmat | timotimo: that would be excellent | 13:57 | |
perlpilot | timotimo was reading my mind | ||
lizmat | at least the Blob.join got 2x faster recently :-) | ||
timotimo | it'd have to be clever in order to be easily equal-able | 13:58 | |
it's possible that we wouldn't actually gain very much over what self.join already does | |||
lizmat | sometimes however, I think we need to get rid of .WHICH as a string | 13:59 | |
but instead have something like .ACCEPTS (.EQUIV ?) that would allow being smarter about equivalence checking | |||
jnthn | ObjAt needs to become something smarter, I guess | ||
nine | timotimo: shouldn't blobs be well blobs of memory, IOW perfectly useable as input for SHA1 already? | ||
jnthn | It being a string is very much a stop-gab | ||
*gap | 14:00 | ||
timotimo | nine: yeah, it'd be possible to run it directly on the blob | ||
we don't have to support WHICH being equal across runs of perl6, right? | |||
lizmat | m: use nqp; nqp::shaq(nqp::list_s("a","b")) | ||
camelia | rakudo-moar 2494cb: OUTPUTĀ«===SORRY!===ā¤No registered operation handler for 'shaq'ā¤Ā» | ||
timotimo | so changing the implementation shouldn't be a problem | ||
lizmat | m: use nqp; nqp::sha1(nqp::list_s("a","b")) | ||
camelia | rakudo-moar 2494cb: OUTPUTĀ«This representation (VMArray) cannot unbox to a native stringā¤ in block <unit> at /tmp/doUB7udTRH line 1ā¤ā¤Ā» | ||
lizmat | timotimo: no, only during the run | 14:01 | |
and possibly only also in a given process | |||
timotimo | m: use nqp; nqp::sha1(nqp::list_i(1, 2, 3, 4)) | 14:02 | |
camelia | rakudo-moar 2494cb: OUTPUTĀ«This representation (VMArray) cannot unbox to a native stringā¤ in block <unit> at /tmp/LJrvh7ASwQ line 1ā¤ā¤Ā» | ||
timotimo | fair enough; it could just grow a little if-else for a VMArray that doesn't try to unbox_s | ||
lizmat | commute to NRP meeting& | 14:05 | |
14:07
RabidGravy joined
|
|||
timotimo | i'm in dire need of a nap | 14:13 | |
moritz | SIGNAP | 14:35 | |
RabidGravy | Is this sort of thing known to fail ? gist.github.com/jonathanstowe/4b7d...4b374366e2 | 14:46 | |
it segfaults in get_int when printing the struct | 14:47 | ||
however if I change the native sub to take a CArray[int64] instead it gives the "correct" result | 14:48 | ||
the case of "populating an array of structs allocated by the caller" isn't tested for in the NC tests | 14:58 | ||
hoelzro | timotimo: make sense | 14:59 | |
RabidGravy | slightly warnocked on the above ^ I'll RT it as a bug with the backtrace because it's blocking me at the moment | 15:19 | |
rt.perl.org/Ticket/Display.html?id=127730 if anyone is bored | 15:44 | ||
dalek | p: 556af98 | (Pawel Murias)++ | src/vm/js/ (5 files): [js] Support compiling and running the stuff inside a role Foo {...} during compile time. Implement nqp::iscompunit, nqp::compunitmainline, nqp::compunitcodes ops needed for that. |
16:27 | |
[Coke] | (things for review should probably not go in nom, but in a branch) | 16:46 | |
sortiz | RabidGravy, Can I PM? | 18:02 | |
RabidGravy | er | 18:03 | |
sure | |||
timotimo | sortiz is prime minister? | ||
jnthn: are we supposed to throw exceptions via "await" from broken promises that show the original location the exception was thrown at? like a failure would, for example? | 18:15 | ||
because i have a situation locally where i get the location of the await, but no further information about the problem source | |||
19:06
lizmat joined
19:13
lucs joined
19:17
FROGGS joined
|
|||
jnthn | timotimo: We want the original location really | 19:24 | |
timotimo | did that work at some point? i seem to recall it did | ||
jnthn | Maybe :) | ||
[Coke] | "tests or it didn't happen" | 19:55 | |
20:06
b2gills joined
20:19
lizmat joined
|
|||
nine | Oh compilation_mode == is_precompilation_mode. I missed that connection. | 20:22 | |
Is there a way to bind an int attribute to another object's int attribute? | 20:44 | ||
japhb | [Coke]: I want that on a sign outside my office. :-) | 20:45 | |
timotimo | "int" attributes are just a tiny slot inside the object, where the int value lives | 20:46 | |
there isn't an indirection there | |||
[Coke] | japhb: :) | ||
jnthn | nine: I really think we'd be better of pulling out the stuff to share between the worlds into a separate object, rather than binding things... There's not a way to do it in NQP with binding | 20:47 | |
nine | Yep. At least I now know that the binding was causing the segfault. | 20:49 | |
And I'm understanding a lot more about the code structure now. | 20:50 | ||
jnthn | :) | ||
nine++ # digging into perhaps the scariest bit of the Rakudo codebase | |||
21:14
psch joined
|
|||
b2gills | Can someone look into PR#686 which fixes `permuations(1)` and `permutations(0).elems == 1` jnthn has already stated that it shouldn't conflict with v6.c. There is also an associated ROAST PR to test it. | 22:09 |