Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-05-01

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
02:48 colomon joined #moarvm
02:51 vendethiel joined #moarvm
03:07 TimToady joined #moarvm
05:14 vendethiel joined #moarvm
06:21 Ven joined #moarvm
06:51 vendethiel joined #moarvm
06:55 brrt joined #moarvm
06:55 brrt \o
07:47 zakharyas joined #moarvm
08:14 zakharyas joined #moarvm
08:37 Ven joined #moarvm
08:45 vendethiel joined #moarvm
08:52 rurban joined #moarvm
09:12 Ven joined #moarvm
09:18 brrt jnthn, i have a burning question
09:18 brrt it seems to me that decont/assign are not, in fact, invokish at all
09:18 brrt did this change sometime in the last year?
09:19 lizmat brrt: ETA jnthn ~ 20 mins
09:19 brrt ah
09:19 jnthn brrt: decont and assign may invoke
09:19 jnthn See Proxy
09:20 brrt but.... but...
09:20 brrt ok
09:20 brrt fair enough
09:20 jnthn and yeah, still doing errands... :)
09:20 jnthn back for real soon :)
09:20 brrt ok, don't let me distract you then
09:20 brrt :-)
09:27 brrt you are completely correct, of course
09:28 brrt how did i not see that
09:49 brrt joined #moarvm
10:28 Ven joined #moarvm
11:34 vendethiel joined #moarvm
12:03 vendethiel joined #moarvm
12:23 brrt joined #moarvm
12:30 mj41 joined #moarvm
13:03 travis-ci joined #moarvm
13:03 travis-ci MoarVM build passed. Paul Cochrane 'Destroy correct string decodestream
13:03 travis-ci http://travis-ci.org/paultcochrane/MoarVM/builds/60829756 https://github.com/paultcochrane/MoarVM/compare/f3eb892b1882^...ba700a7283f2
13:03 travis-ci left #moarvm
13:20 dalek MoarVM: 4ca886c | jnthn++ | src/strings/ops.c:
13:20 dalek MoarVM: Remove fragile assumption about buffer size.
13:20 dalek MoarVM:
13:20 dalek MoarVM: Just fwrite the \n separately rather that relying on the UTF-8 encoder
13:20 dalek MoarVM: allocating a little more than needed just for this one case.
13:20 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/4ca886cbb8
13:20 dalek MoarVM: 1f9d843 | jnthn++ | src/strings/utf8.c:
13:20 dalek MoarVM: Fix UTF-8 encoder to handle NFG.
13:20 dalek MoarVM:
13:20 dalek MoarVM: Also, now we have to resize a buffer anyway, start out with a lower
13:20 dalek MoarVM: assumption.
13:20 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/1f9d843584
13:30 rurban joined #moarvm
13:37 travis-ci joined #moarvm
13:38 travis-ci MoarVM build passed. Paul Cochrane 'Inititialise `operand_size` in MVM_bytecode_dump()
13:38 travis-ci http://travis-ci.org/paultcochrane/MoarVM/builds/60833279 https://github.com/paultcochrane/MoarVM/compare/ce890e62355d^...b6702843743d
13:38 travis-ci left #moarvm
13:41 JimmyZ jnthn: re 4ca886cbb8 , maybe 'utf8_encoded_length + 1' => utf8_encoded_length?
13:43 jnthn JimmyZ: hm, yes
14:01 dalek MoarVM: 97835d6 | jnthn++ | src/strings/ops.c:
14:01 dalek MoarVM: More robust NULL string checking.
14:01 dalek MoarVM:
14:01 dalek MoarVM: This should avoid a bunch of SEGVs arising from NULL strings getting
14:01 dalek MoarVM: passed into things not expecting them.
14:01 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/97835d6f52
14:01 dalek MoarVM: 2c9398a | jnthn++ | src/ (2 files):
14:01 dalek MoarVM: Ensure we get NULL-terminated strings if needed.
14:01 dalek MoarVM:
14:01 dalek MoarVM: We used to get them more by accident than by design, but that made us
14:01 dalek MoarVM: do an unrequired memset in the UTF-8 encoder. Call the function that
14:01 dalek MoarVM: demands a null-terminated string.
14:01 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/2c9398a4a5
14:01 dalek MoarVM: 8880d61 | jnthn++ | src/strings/ops.c:
14:01 dalek MoarVM: Fix off-by-one in recent change.
14:01 dalek MoarVM:
14:01 dalek MoarVM: Noticed by JimmyZ++.
14:01 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/8880d61cc8
16:24 Ven_ joined #moarvm
16:26 vendethiel joined #moarvm
18:02 vendethiel joined #moarvm
18:31 vendethiel joined #moarvm
20:16 jnthn m: say 39126704 / 644090520
20:16 camelia rakudo-moar 676c25: OUTPUT«0.060747213␤»
20:16 jnthn So, about 6% of instructions executed at startup are being spent on UTF-8 decoding and normalization.
20:18 lizmat I don't think that explains the increase in startup time
20:19 lizmat which is more like 50% ?
20:19 jnthn I think things going on in CORE.setting loading have become more costly too
20:20 jnthn Actually the above isn't all the cost
20:20 jnthn But that bit alone means it's worth looking into.
20:20 lizmat maybe %*PRAGMAS cloning for each scope ?
20:21 jnthn Unlikely also
20:21 lizmat no, that would only be compile time, right ?
20:21 jnthn Right
20:21 jnthn And we're looking at -e '1' or so
20:21 jnthn It's worth noting that we'll still a good bit lower in instruction count at startup than we have been in the past.
20:21 lizmat so that would also explain slowdown in spectest (slower compile)
20:22 jnthn Yeah, but...it *should* be a drop in the ocean
20:22 lizmat well, I'm no longer working on making @*INC lazy
20:22 jnthn The applicationg of use fatal in try blocks will have been much more of a cost.
20:22 jnthn *application
20:22 lizmat instead, making the creation of CompUnitRepo objects as lazy as possible
20:27 jnthn lizmat: Sounds sensible
20:28 lizmat as described in https://gist.github.com/lizmat/c7f53fa206da900c2b42
20:50 rurban joined #moarvm
20:54 jnthn Gee, typoing >> as > gets you some bugs... :)
20:57 vendethiel joined #moarvm
21:01 * masak .oO( "you can't just make shit up and expect the computer to know what you mean, retardo!" -- mjd )
21:08 colomon joined #moarvm
21:11 dalek MoarVM: 5eb670c | jnthn++ | src/ (4 files):
21:11 dalek MoarVM: Bytecode file stores Latin-1 when possible.
21:11 dalek MoarVM:
21:11 dalek MoarVM: This is not only cheaper to decode, but we also know that it's already
21:11 dalek MoarVM: normalized, so don't have to apply NFG.
21:11 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/5eb670c88d
21:19 jnthn Wow, that was wroth it
21:19 jnthn *worth
21:19 jnthn m: say 579180597 / 644090520
21:19 camelia rakudo-moar 676c25: OUTPUT«0.8992223593␤»
21:19 jnthn 10% less instructions retired at startup
21:20 lizmat :-)
21:21 tadzik less retired, so more at work? :o
21:22 lizmat jnthn: when you say latin-1, do you really mean 0..255 or 0..127 for ord() ?
21:25 jnthn 0..255
21:25 jnthn Which overlap perfectly with the first 255 Unicode codepoints.
21:26 jnthn And are already in NFC (says Unicode consortium) and contain no combinining chars, so thus in NFG for free too.
21:28 colomon joined #moarvm
21:32 lizmat hmmm.. I thought only 0..127 (aka 7-bit ASCII) matched Unicode
21:32 * lizmat learned something again
21:33 lizmat jnthn: should I lock.protect reading from a hash from several threads as well, if another thread can change it ?
21:34 lizmat or do I just need to make sure only one of them changes it at any time ?
21:35 japhb lizmat: Only 0..127 have the same encoded bytes.  But the *codepoints* are the same above that, IIUC.
21:35 japhb *encoded bytes in UTF-8
21:36 japhb Hence US-ASCII needs no translation at all to convert to UTF-8, and Latin-1 can be trivially translated.
21:40 Ven_ joined #moarvm
21:40 jnthn lizmat: Yes, you need to
21:40 jnthn lizmat: As the writer may cause a resize
21:40 jnthn (for example)
21:41 lizmat so it would make sense to encapsulate access to such a hash in a sub with Proxy, right ?
21:42 * lizmat wonders how many hashes we have in the core that are not guarded like that
21:43 colomon joined #moarvm
21:51 jnthn m: say 568004995 / 579180597
21:51 camelia rakudo-moar 676c25: OUTPUT«0.9807044607␤»
21:52 jnthn Can haz another 2% less instructions off...pretty much most code. :)
21:52 jnthn That's measruing the startup effect though. :)
21:54 japhb Improvements to startup have the advantage of happening for *every* run.
21:55 japhb In fact, the biggest impediment to my Perl 6 coding right now is r-j startup slowing my debugging iteration cycle enough that I start mentally context switching.
21:56 jnthn And your biggest impediment to using r-m is the concurrency instability?
21:56 japhb (If I could do it in r-m, I would, but we're talking 40-50 threads for my current work.)
21:56 japhb yup
21:56 jnthn That's pretty near top of my list now NFG is largely there
21:56 japhb \o/
21:57 jnthn I should push on a bit with shaped arrays too
22:01 dalek MoarVM: 03e4e38 | jnthn++ | src/ (3 files):
22:01 dalek MoarVM: Optimize temporary root handling.
22:01 dalek MoarVM:
22:01 dalek MoarVM: Only do sanity checks when we switch them on; they've caught very few
22:01 dalek MoarVM: bugs so far, so it doesn't pay to have them on all the time. This in
22:01 dalek MoarVM: turn means they are well within the size where they make sense to do
22:01 dalek MoarVM: inlining; mark with MVM_STATIC_INLINE to be sure of it.
22:01 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/03e4e38fc0
22:02 lizmat jnthn: so MVM_STATIC_INLINE=1 would activate the sanity tests ?
22:07 colomon joined #moarvm
22:09 jnthn lizmat: No, MVM_STATIC_INLINE is a way of marking something up in the C code so the compiler should always inline it.
22:09 lizmat so how would one activate the sanity checks then ?
22:09 jnthn lizmat: You'd #define MVM_TEMP_ROOT_DEBUG 1 to turn on the sanity checks
22:09 lizmat ah, it needs a recompile
22:09 lizmat ok
22:09 jnthn yeah, but it's rather rare
22:09 jnthn They've caught us little.
22:10 lizmat well, maybe a separate JARVIS run with that enabled ?
22:10 jnthn JARVIS?
22:15 lizmat Travis
22:15 lizmat oops
22:15 lizmat :-)
22:15 lizmat some butler name
22:15 japhb .oO( "Hey You" )
22:33 colomon joined #moarvm
22:49 dalek MoarVM: f701499 | jnthn++ | / (2 files):
22:49 dalek MoarVM: Cache backend config hash.
22:49 dalek MoarVM:
22:49 dalek MoarVM: We request it 7 times during Rakudo startup; only build it once.
22:49 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/f701499cbb

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary