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