00:03 cognome joined 00:36 colomon joined 01:05 colomon joined 01:08 FROGGS_ joined 01:48 ilbot3 joined 02:27 colomon_ joined 08:30 Juerd joined 08:32 kjs_ joined 08:43 Juerd joined 08:52 synopsebot joined 08:53 [Coke] joined, masak joined, PerlJam joined 08:55 Util joined 08:56 leont joined 08:57 tadzik joined, pmichaud joined 08:59 sergot joined 09:02 Ven joined 09:04 Juerd joined, dalek joined 09:14 kjs_ joined 10:34 kjs_ joined 11:03 Ven joined
nine .tell brrt about that email banning guy. Why don't you agree with his reasoning? 11:06
FROGGS_ nine: it feels like the beginning of a beautiful tdwtf :o) 11:41
nine FROGGS_: the email thing? I don't know. I'd say the gist is "For some use cases specialized tools are better suited than email." And I tend to agree. Though I would probably not use the hippest cloud services for everything... 11:44
FROGGS_ well, I think it is often better to have as few systems as possible 11:51
nine Sounds like a good rule of thumb. Like the advise to only have one TODO list for work, private and everything. But email is very bad at managing TODOs so this may be a good area to use something more specialized. 12:02
12:21 FROGGS[mobile] joined 12:22 zakharyas joined 12:35 ggoebel11111114 joined 13:29 Ven joined 13:31 brrt joined
brrt \o 13:31
lizmat brrt o/ 13:33
any chance of you making it to the APW ?
brrt hi lizmat :-)
.. no, i don't think so
lizmat :-(
brrt yes :-( 13:34
nine brrt: About that email banning guy. Why don't you agree with his reasoning?
brrt it's a real shame, i really had liked to see everybody again
nine: i'm so out of context now
nine brrt: 21:19 < brrt> this dude is going broke real soon: medium.com/life-at-primeloop/putti...757946d9fe
brrt oh 13:35
nine I was afk for a couple days :)
brrt because basically, e-mail is pretty much ok as a medium
and you don't fix broken communication patterns by having them go through a california data center
nine brrt: as I told FROGGS earlier today, I tend to agree with the gist being "For some use cases specialized tools are better suited than email." Though I would probably not use the hippest cloud services for everything... 13:36
brrt but the problem is not that the tools are broken 13:38
nine For some things at least, email is really not a good tool, like managing TODOs. 13:39
brrt i've never encountered a problem where people were communicating badly and tools fixed it
with that, i'd agree
nine Though incidentally while thinking about this discussion I found ways to mitigate that mostly ;)
brrt but most communication boils down to 'i should ask $person $question'
how? :-)
todo list managment is another of these hip things that attract much more tooling than could possibly help 13:41
nine Well, what email does not allow is good priorization of tasks and sharing those tasks. But that can be done with one shared IMAP folder for each priority level (we use 5 levels for example in our RT). Done TODOs can be moved to another folder.
brrt need to know what to do by yourself? write a list
that's basically going a bit further than e-mail is
but yeah, you could do that
nine But I'd probably still prefer using korganizer's TODO list. Synchronized via IMAP cause it stores the TODOs in ical files in an IMAP folder ;) 13:42
brrt it's the same thing with all the people writing specialised data processing tools... while ordinary folks use excel
nine true
brrt fwiw, i happen to work (a bit) at a company that buys heavily into these kind of things 13:43
we used to have IRC chat, but now it has been replaced by slack 13:44
before that by hipchat
and slack will be replaced in due course
and all the while the same mistakes continue to be made
timotimo aaw, i won't be seeing brrt at apw? :( 14:03
jnthn timotimo: Will you be making apw? 14:04
jnthn needs to figure out how he wants to arrive/leave and where to stay, but will be there 14:05
timotimo i think so :)
i've booked a hotel room and liz will be picking me up in karlsruhe with her car
jnthn cool 14:06
14:49 kjs_ joined
timotimo i wonder if speshing shift would really give such a big improvement ... 15:12
shift for iterators, that is
maybe we can introduce an op that only moves the iterator ahead and emit an atpos instruction that can then be spesh'd further
the shift op for iterators has to do some decisions for boxing etc 15:13
15:49 leont joined 16:13 kjs_ joined
TimToady timotimo: it would be nice if we could eventually get to a *p++ instruction for batches of known boxhood 16:43
well, with some test so we don't run off then end of the batch 16:44
maybe with a bit of loop unrolling to amortize the test some 16:45
getting away from heavy shift is part of the GLR rethink 16:46
timotimo mhm 16:48
i shall look into that some more
ah. inside spesh, we may keep the object we're iterating over in a regular object register and store the index of the iterator in a native int slot. that'll require escape analysis on the iterator, though 16:49
otherwise we can store the index in the iterator object and go directly into the array we're iterating over via an atpos_* operation
TimToady arguably it is the purpose of iterators to not cheat so they can be fast :) 16:50
timotimo mhh 16:51
TimToady anyway, we could probably mark some subset of the iterators as well-behaved, or ill-behaved, if we choose the other default
in the absence of escape analysis
timotimo not exactly sure what you mean by that 16:52
TimToady we can sometimes declare things that we don't want the compiler to have to figure out on its own, is all
timotimo right. though i kind of think it'd be helpful to still be able to pass around iterators 16:53
if we have a completely inlined frame and no other ops use that iterator, well, that could be different
TimToady oh, that kind of escape
timotimo yes
TimToady hopefully in the general case our boxed pointers end up not much heavier than Go's slice thingies 16:54
for things that are not in batches 16:55
including most of our native arrays and such
timotimo well, if we turn the shift into a "sp_advancearriter" plus an "atpos_*" 16:58
that'll directly go to the array index of the iterator (can be jitted well, too) and then directly go at the right position in the array's storage (plus a little bounds check) 16:59
though ... i think we have sp_ ops for atpos that don't check bounds
as the advancearriter does a bounds check anyway
that doesn't save us from the user throwing out values from the array in between and us running into possibly a segfault ...
TimToady certainly we have to track uniformity on some level, and to the extent we do, we can optimize based on that 17:02
17:03 cognome joined
TimToady arrays of natives arguably may not be sparse, at least by default 17:03
we don't have to carry the complete generality of boxed types down into unboxed types, almost by definition 17:04
if someone goes to the trouble of declaring my int @array[32], then that's exactly what they get 17:05
well, modulo uncertainty over the meaning of "int" :)
timotimo right, we have atpos_o that deals with sparse arrays; i don't think our list_i, list_s and list_n can be sparse actually? 17:06
TimToady hopes, on the one hand, that they are not sparse, but on the other hand, that they are, so we can rip that out and make them faster... :) 17:08
17:08 brrt joined
brrt timotimo: atpos_i isn't all that cheap iirc 17:09
oh hadn't seen all of the discussion
timotimo oh?
do we even use nqp::iter on our rakudo-level arrays?
brrt uhm 17:10
let me see
TimToady well, as I said, we'd really like to get to the point where we don't have to do multiplcation on every access, but pointer++ most of the time for very low-level stuff
brrt nods 17:11
hmm 17:12
doesn't seem like we'e using iter for the for @a -> $x construct
anyway. atpos for mvmarray isn't quite cheap 17:13
TimToady well, when our iterators get fast, we can undo the loop opt
timotimo how so?
apparently we don't spesh atpos_* for MVMArray yet 17:14
ah, MVMArray can have a null in one of its slots and that can mean "there's a hole here 17:16
"
17:16 Ven joined
brrt hey, you can't have safety and convenience and speed at the same time 17:16
timotimo brrt: atpos is probably "not so cheap" because it has to dispatch per array type?
brrt nods
timotimo we should be able to spesh that, no? 17:17
brrt if you know about it, yes
timotimo if we have list_i, list_o, list_s, or list_n as the creator or if we have a known type, we do know about it 17:18
brrt (:-o new dynasm patch) 17:19
timotimo what's new there?
brrt added support for an instruction that we didn't use so far (but could use one day) 17:20
timotimo which one is that?
brrt shld 17:21
shift and rotate
timotimo ah, we don't have a primitive for that in our instruction set, aye?
brrt not very relevant usually :-)
don't think we do
timotimo do you think i should go ahead with speshing MVMArray's atpos_*? 17:22
and afterwards implement the sp_advancearriter op i've mentioned above? 17:24
dalek arVM: 182085e | (Bart Wiegmans)++ | 3rdparty/dynasm:
Update DynASM
17:25
brrt ... yes, i think that is a good idea 17:26
although the risk here is that we eagerly move everything into specialized structures that we might want to change 17:27
that said, i personally don't have such plans just yet
timotimo please be more verbose 17:30
"structures"?
you think the duplication of code between MVMIter's shift and sp_advancearriter would be bad? 17:33
brrt no, sp_advancearriter is ok as far as i'm concerned 17:34
hmmm 17:35
i see no problem with speshing atpos for MVMArray
timotimo great :)
brrt well.. there's one tiny tiny tiny thing
timotimo hehe.
brrt you can probably use sp_get_* to get the value from the poiner 17:36
from the object
timotimo maybe not
the array doesn't only keep a "number of elements" but also an "which index does the first element currently have" number
if we can be certain that the array will not be mutated, we can loop-hoist that 17:37
brrt hmmm 17:38
timotimo (another thing for escape analysis)
except we'd have to be certain our sub has been called with a clone of the arrary 17:39
such that no other code still has a reference to that object and could modify it, say in a different thread or callback or something
brrt the start field is not looked at from atpos, though
timotimo: don't worry about that 17:40
basically, suppose somebody was concurrently modifying it without proper locks
then they'd be screwed anyway
timotimo er, hold on 17:41
brrt (the solution to concurrency / safety issues: dumb users are dumb :-p)
timotimo atpos does look at the start value
look for body->start in MVMArray.p
.c*
brrt oh, you are correct 17:43
hmm 17:44
hmm 17:45
timotimo AFK 17:52
brrt :-) 17:54
dalek arVM/spesh-array-access: 90f4251 | (Bart Wiegmans)++ | / (6 files):
Add sp_atpos_arr opcodes

These are direct access opcodes intended to help spesh array access
18:02
18:10 kjs_ joined
brrt uhm, how do i get facts? 18:14
MVM_spesh_get_facts, duh 18:16
.. darn, that is all wrong 18:20
ok, thing is, i think we need a dumber array type
brrt afk for now 18:24
18:24 brrt left
timotimo oh 18:53
how so?
19:34 leont joined 20:29 colomon joined 21:33 Util joined 21:40 lizmat_ joined 22:19 vendethiel joined 22:22 [Coke] joined 22:23 masak joined, jlaire joined 22:24 cxreg joined 22:27 tadzik joined