Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-04-07

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

All times shown according to UTC.

Time Nick Message
01:52 ilbot3 joined #moarvm
01:52 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
04:04 FROGGS_ joined #moarvm
06:43 FROGGS joined #moarvm
06:52 Ven joined #moarvm
07:32 dalek MoarVM: 8379b7c | (Matt Oates)++ | src/core/nativecall.c:
07:32 dalek MoarVM: Fix parens warning on OSX
07:32 dalek MoarVM:
07:32 dalek MoarVM: Get a warning on OSX the == will be evaluated before the &
07:32 dalek MoarVM:
07:32 dalek MoarVM: src/core/nativecall.c:112:17: warning: & has lower precedence than ==; == will be evaluated first [-Wparentheses]
07:32 dalek MoarVM:     if (type_id & MVM_NATIVECALL_ARG_RW_MASK == MVM_NATIVECALL_ARG_RW)
07:32 dalek MoarVM:                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
07:32 dalek MoarVM: src/core/nativecall.c:112:17: note: place parentheses around the '==' expression to silence this warning
07:32 dalek MoarVM:     if (type_id & MVM_NATIVECALL_ARG_RW_MASK == MVM_NATIVECALL_ARG_RW)
07:32 dalek MoarVM:                 ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
07:32 dalek MoarVM: src/core/nativecall.c:112:17: note: place parentheses around the & expression to evaluate it first
07:34 brrt joined #moarvm
07:37 FROGGS .tell abraxxa 'is rw' native int/num params are now supported, though unsinged ints are cames back as signed and therefore mangle their value
07:38 FROGGS ww
07:40 lizmat joined #moarvm
07:42 nwc10 jnthn: I am made of some fail - in those commit messages the numbers stated for "Called N times" are at the Tiobe end of the scale. However, the important bit, the total CPU count drops are accurate.
07:43 jnthn ah :)
07:43 jnthn the numbers are CPU counts, no?
07:43 nwc10 I think I found another one, that's about 0.25%
07:43 nwc10 yes, I screwed up, and misread CPU counts as call counts
07:43 rurban_ joined #moarvm
07:43 nwc10 but what's strange is that even under callgrind / cachegrind, the numbers fluctuate.
07:44 jnthn If you'd found/submitted these in the opposite order, they'd have each sounded more impressive... :P
07:44 nwc10 What varies? Is there an event loop that can decide to trigger more times in some cases?
07:51 brrt libuv probably has something like that?
07:51 jnthn Yeah, it does...but we only do so much I/O
07:52 brrt hmm
07:52 brrt i'm wondering at other sources of variability we have
07:54 nwc10 I was confused because I thought it crazy that -e 1 would ever be anything other than CPU bound (at least at the event-loop level) hence would never yield and give the event loop different amounts of time
07:59 brrt well, i'm not saying you're wrong. but clearly there are more sources of runtime variability than we'd gues
07:59 nwc10 um, me wrong - I said I'm confused. :-)
08:00 brrt confusion reigns
08:00 brrt :-)
08:07 Ven joined #moarvm
08:13 nwc10 good *, Ven
08:13 Ven \o, nwc10
08:14 dalek joined #moarvm
08:15 kjs_ joined #moarvm
08:25 brrt good * too :-)
09:07 dalek MoarVM: dd87968 | FROGGS++ | src/core/nativecall.c:
09:07 dalek MoarVM: guard for the case that a foreign call NULLs an rw argument
09:07 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/dd87968290
09:08 FROGGS I hope this is not a brain-o
09:11 dalek MoarVM: ef8293e | jnthn++ | / (6 files):
09:11 dalek MoarVM: Stub new codepoint/normalization related ops.
09:11 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/ef8293ec21
09:24 dalek MoarVM: 36d56f7 | FROGGS++ | src/core/nativecall.c:
09:24 dalek MoarVM: access correct read/writable argument
09:24 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/36d56f7eb9
09:26 rurban_ left #moarvm
09:34 brrt what, NFG is getting progress? many wow :-)
09:34 tadzik what a time to be alive :)
09:35 jnthn :)
09:47 FROGGS jnthn: I can bump revisions now safely to get my latest fix in?
09:48 jnthn FROGGS: Yes
09:48 jnthn FROGGS: I'm going to be doing Rakudo stuff in a branch.
09:49 arnsholt No hilarity from afl-fuzz yet
09:49 arnsholt It reports a couple of hangs, but I guess those are most likely infinite loops in the bytecode
09:50 arnsholt And it's kind of slow, as I started with simple ("1;" and "nqp::say(1)") NQP programs compiled to MBC
09:58 jnthn hah...so I was like "OK, let's generate NFC, NFD etc. spectests from the Unicode databases NormalizationTests.txt test suite"
10:00 jnthn And wrote a script to do it
10:00 jnthn Which is awesome, except
10:00 jnthn plan 18581;
10:00 jnthn :)
10:01 jnthn And then multiply by 4 :)
10:01 FROGGS O.o
10:01 FROGGS jnthn: put it in S05-mass :o)
10:02 jnthn Well, S15-normalization more like :)
10:02 jnthn But I may mark them #stress :)
10:07 nwc10 jnthn: is it possible to put the test suite in one file, and then have 4 or 8 (or whatever) wrapper scripts that do a relevant quarter (or eighth etC)
10:07 nwc10 so that parallel tests are for the win?
10:07 jnthn nwc10: Well, I'm already putting NFC/NFD/NFKC/NFKD in a file each
10:07 jnthn nwc10: Which will get us 4-way :)
10:08 nwc10 that's enough to be useful, I hope
10:08 jnthn Well, since I'm generating them from the Unicode data set, it's not going to be too hard to refactor later if we find it's not good enough.
10:09 nwc10 is your generator script suitably dogfood?
10:09 brrt lunch &
10:10 jnthn nwc10: As in "written in Perl 6"? :)
10:10 nwc10 yes, that question
10:10 nwc10 "acceptable" answers are "yes" or "patches welcome"
10:10 jnthn yes, it's written in Perl 6
10:10 nwc10 \o/
10:10 nwc10 jnthn++
10:11 jnthn Just 40 lines of it even :)
10:43 Ven joined #moarvm
10:45 jnthn Hm, we end up with 1.5MB .t files. I think I'll just get the generator to break 'em up into 2000s or so
10:46 nwc10 is there an easy way to split them logically?
10:47 nwc10 or is "2000, 4000, 6000, ..." the most sensible?
10:47 nwc10 and, even if you split them logically, will Unicode updates touch all the files at the same time?
10:49 jnthn Logically there are sections but two are tiny and the other two are huge so it's not that much use.
10:49 lizmat jnthn: would you be able to generate the .t files at install time ?
10:49 jnthn lizmat: Oh, I'll commit them.
10:49 jnthn lizmat: We only need to update them if we get new Unicode versions.
10:50 jnthn Will include the script to help with that scenario.
10:50 lizmat I don't have a problem with 1.5MB .t files: it is dogfooding of the best order
10:50 jnthn We can re-combine them later, I just think it's going to make my life a bit easier to work with them in chunks while I implement stuff.
10:51 lizmat otoh, the core setting is now just under 900K, and that takes about half a minute to parse
10:53 jnthn Yeah, I'm considering making these # stress
10:53 jnthn So we only run them all in a stresstest
10:53 jnthn And finding some way to "sample" 1000 or so into a quick test to run normally
10:55 nwc10 if you're going to sample, and it's "Random", I'd strongly suggest generating an "actual" "random" seed, then seeding the PRNG with it, and making the seed visible in the test results somehow, so that it can be re-run on failure
10:55 nwc10 on the other hand
10:55 nwc10 if it's just a sample
10:55 nwc10 that's not needed, because the debugging step is "run all of them"
10:55 jnthn *nod*
10:55 lizmat yes, you need re-runnability
10:55 nwc10 fingers faster than brain
10:55 lizmat nwc10: even "run all of them" *could* give a different result
10:55 nwc10 or still insufficient cofree
10:55 jnthn Well, you'll have stability in so far as we will only re-generate the file containing the sampled ones when we update to a new unicode version :)
10:56 nwc10 aha.
10:56 nwc10 that's the sample.
10:56 nwc10 gotcha
10:56 jnthn But I may well take the easy way and take every 10th test or something
10:57 * lizmat would prefer repeatable randomness to flush any problems out
10:57 lizmat please note, the seed should be visible in the "make spectest" or  "make stresstest" output as well
10:58 lizmat I'm not sure how to do that at present
10:58 jnthn lizmat: I won't do it in a away that you can't reproduce trivially.
10:58 lizmat ++jnthn
10:58 jnthn lizmat: The randomness - if we even have any - will be in the thing that generates the .t file, and the generated things will be checked in.
10:59 lizmat ah, ok, gotcha :-)
10:59 jnthn lizmat: Otherwise we have to ship a big file from the Unicode database. :)
10:59 lizmat fwiw, I think that compresses very well, so I don't really see that as a problem
11:19 ggoebel joined #moarvm
12:19 arnsholt jnthn: What do you think would be a good way to generate very simple bytecode examples to use with afl-fuzz?
12:19 arnsholt I've got two simple NQP snippets running ATM, but that depends on the whole compiled NQP stuff on top, which makes it iterate quite a bit slower than it could
12:49 jnthn arnsholt: It's possible to generate MAST directly
12:51 jnthn arnsholt: Giving an .moarvm file
12:56 nwc10 maybe that we need is an assembly language to make it easier to write bytecode. We could call, say, PIR, for Pwns Infinite Resources, as a rough estimate of the future cost/benefit ratio :-)
12:56 FROGGS :P
12:56 FROGGS MIR would also be a nice name :o)
12:57 tadzik we need Moar Intermediate Representations
12:57 nwc10 what happens when progress crashes into MIR?
12:57 nwc10 is it a good thing? :-)
13:00 Ven joined #moarvm
13:06 nwc10 do I win the space cadet award for a non-obvious and therefore non-funny joke?
13:07 nwc10 or is the problem simply that everyone is asleep?
13:07 nwc10 or gainfully employed
13:07 brrt joined #moarvm
13:09 FROGGS $work :o(
13:10 jnthn Or trying to implenet Unicode normalization :P
13:10 jnthn .oO( MIR would at lesat bring world peace... )
13:11 JimmyZ MIT
13:11 * nwc10 visualises that as some sort of device combining a piano roll to drive a row of big hammers
13:11 nwc10 to flatten things into the right patterns
13:14 zakharyas joined #moarvm
13:15 brrt we'll have Moar Intermedia Nearly Machine Level Representation :-P
13:15 brrt Moar Very Low Level Representation
13:16 brrt Moar Machine Like Representation
13:21 [Coke] (update if new unicode verisons) do we have a story yet on what versions of unicode a particular version of p6 supports?
13:22 jnthn [Coke]: No, though I suspect "r-m for The Release will do Unicode 7" may be enough to kick that can down the road a little way at least.
13:23 nwc10 http://unicode.org/versions/beta-8.0.0.html -- The next version of the Unicode Standard will be Version 8.0.0, planned for release in June, 2015.
13:24 nwc10 the relevant discussion in Perl 5 land is that we're not even there yet on getting all the fiddly bits of *one* version done
13:24 [Coke] *curses*
13:24 nwc10 So it's very wishful thinking to be considered offering more than one
13:25 nwc10 but, that's potentally a side effect/pain point of retrofitting Unicode
13:25 nwc10 IIRC the Unicode consortium has some sort of backcompat guarantee that things won't change. Only well defined spaces will get things added to them
13:25 jnthn Bah, fine, then given it's curently "easy" maybe we'll bump to 8. :)
13:25 nwc10 but they *are* human
13:26 jnthn My main point was we can pick one thing for r-m for the point we need to start caring more deeply about backcompat.
13:26 [Coke] nwc10: oh, *there's* your problem
13:27 nwc10 jnthn: the best wording is probably something more like "we intend to support whatever is the current Unicode release at the time of the beta. We think it likely that this will be 8.0.0"
13:28 jnthn nwc10: That works :)
13:29 nwc10 I don't (offhand) know if the Unicode folks do minor bumps, hence whether it will be 8.0.small
14:04 arnsholt jnthn: Yes, of course. Creating MAST and compiling that is pretty obviously the best approach, I think
14:56 dalek MoarVM: b75ad46 | jnthn++ | / (6 files):
14:56 dalek MoarVM: Add basic normalization infastructure.
14:56 dalek MoarVM:
14:56 dalek MoarVM: We don't actually perform any normalization yet, this just gets the
14:56 dalek MoarVM: various bits of framework in place for us to do so, plus provides the
14:56 dalek MoarVM: normalizecodes op so we can run the normalization tests.
14:56 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/b75ad46143
15:07 dalek MoarVM: 6d6150a | jnthn++ | tools/ucd2c.p6:
15:07 dalek MoarVM: Remove unused script.
15:07 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/6d6150aea4
15:47 dalek MoarVM: 2bcdf64 | jnthn++ | src/strings/normalize. (2 files):
15:47 dalek MoarVM: Normalization buffer setup.
15:47 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/2bcdf644e4
15:52 Ven joined #moarvm
16:05 dalek MoarVM: 79b6087 | jnthn++ | src/strings/normalize. (2 files):
16:05 dalek MoarVM: Implement fast "nothing to do" normalization.
16:05 dalek MoarVM:
16:05 dalek MoarVM: When two codepoints in a row are below the threshold of significance
16:05 dalek MoarVM: for the target normalization form, we can immediately the first one
16:05 dalek MoarVM: back. For now, the slow path doing the full check does exactly the
16:05 dalek MoarVM: same; that's where we'll add the interesting bits soon.
16:05 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/79b6087dbd
17:31 FROGGS joined #moarvm
17:52 FROGGS src/strings/normalize.c: In function ‘assert_codepoint_array’:
17:52 FROGGS src/strings/normalize.c:23:5: warning: format not a string literal and no format arguments [-Wformat-security]
17:52 FROGGS MVM_exception_throw_adhoc(tc, error);
17:52 FROGGS ^
18:36 arnsholt joined #moarvm
19:32 vendethiel joined #moarvm
20:00 ggoebel joined #moarvm
20:17 zakharyas joined #moarvm
20:23 camelia joined #moarvm
20:37 brrt joined #moarvm
20:41 Ven joined #moarvm
20:46 brrt \o
20:47 timotimo o/
20:47 brrt many wow, by the way: http://developerblog.redhat.com/2015/04/07/jit-compilation-using-gcc-5-2/
21:00 brrt although i'd really like it if people didn't use brainf*ck as an example all the time
21:01 brrt why not perl6-as-an-example
21:01 brrt would be awesome
21:06 timotimo hah
21:07 timotimo brainfuck is very small
21:07 timotimo quite unlike perl6; even if you only take MoarVM's set of ops
21:07 timotimo as you probably are well aware :)
21:07 timotimo but yeah, brainfuck has pretty much zero semantic requirements that the jit has to uphold
21:10 brrt for one thing :-)
21:46 brrt oh darn, it's GPL then
21:46 brrt that will never work out
21:46 brrt licenses! fuuuu
21:46 timotimo :\
21:48 brrt i'm tired and going to sleep
21:49 brrt see you :-)

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