Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-02-07

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

All times shown according to UTC.

Time Nick Message
00:06 jnthn Rest time for me also &
00:20 lizmat joined #moarvm
01:37 cognominal joined #moarvm
02:03 FROGGS_ joined #moarvm
05:09 lue joined #moarvm
07:25 FROGGS_ joined #moarvm
08:32 odc joined #moarvm
08:37 timotimo aaw. i don't really feel well rested
08:37 jnthn timotimo: Aww. :( Sorry to hear that.
08:40 timotimo at least most of my headache seems to be gon
08:40 timotimo gone
08:41 timotimo jnthn: should i remuse work on the jnthn_bigint_opt branch or do you still have something you're about to commit?
09:55 jnthn timotimo: I've nothing to commit
09:56 timotimo got a hint what i should tackle first?
09:56 timotimo i suppose i should try tackling the tests in the order they fail in
09:56 timotimo i'm guessing a fail would cause the whole test to abort?
09:56 jnthn Right
09:57 jnthn I'd just work through 60-bigint.t
09:57 jnthn That's what I did so far.
09:57 jnthn And once that is happy, see what Rakudo thinks.
10:01 timotimo hehe.
10:48 crab2313 joined #moarvm
10:53 timotimo jnthn: i'm mildly sad that you decided to ditch the "little big int" name
10:53 timotimo because it has a very nice ring to it
10:54 hoelzro morning Moar folk
10:54 masak moarning, hoelzro
10:54 timotimo hob roelz!
10:55 jnthn timotimo: "You think it's cute today" :P
10:56 hoelzro heh
10:56 hoelzro FROGGS_: for the openpipe stuff, what's left to do?
10:58 FROGGS_ hoelzro: a proper design for IO::Pipe
10:58 hoelzro ah ha
10:58 FROGGS_ but qx{} does already work on linux and windows
10:58 hoelzro thanks for stepping in and completing things
11:02 jnthn Also I guess when we have said proper design it needs doing over all backends too
11:03 timotimo that is probably going to be less hard once it actually exists
11:03 jnthn aye
11:03 jnthn It's probably coming towards the time when I will give IO its needed refactoring too
11:04 timotimo jnthn: should i be expecting fails in t/nqp/60-bigint.t?
11:04 timotimo ah, yes
11:04 timotimo i forgot to "make install" in moarvm
11:04 timotimo that's certainly clever :P
11:06 hoelzro jnthn, FROGGS_: that being the case, could it hurt to merge it into master?
11:06 jnthn timotimo: Yes, on the branch first 8 pass then it erupts
11:09 timotimo yup.
11:10 timotimo after confirming that a bigint is big, should i directly access its ->u.bigint?
11:11 jnthn Yes.
11:12 timotimo good
11:12 jnthn The answer will never change.
11:12 * timotimo is hackety-hacking on div
11:12 jnthn In this model, everything is immutable.
11:12 jnthn Which is how it needs to be.
11:23 timotimo the division test passes
11:24 timotimo now for some bit shifting
11:26 FROGGS_ hoelzro: I'd like to get a review before merging it
11:26 hoelzro FROGGS_: alright
11:26 hoelzro I just added a commit on my repo (https://github.com/hoelzro/MoarVM) for the wip-openpipe branch
11:27 hoelzro and I filed a PR for nqp for an openpipe test for Moar
11:27 timotimo jnthn: what's your suggestion for implementing a "where is the most significant bit" operation?
11:27 timotimo or maybe i should ask the question that caused this question to arise:
11:28 timotimo i'd like to see for the left shift if the resulting number will still be in range or if it will overflow
11:28 timotimo ideally before doing the computation
11:29 jnthn timotimo: Oh... Well, if you're shifting left >= 31 bits, it obviously will
11:29 jnthn timotimo: Otherwise, do it in a 64-bit integer and then call store_int64_result to have it do the right thing.
11:29 timotimo oh!
11:30 timotimo that seems easy :)
11:30 jnthn Yeah, I think many of the cases you can now build out of the building blocks I added. :)
11:30 timotimo you're most helpful! :)
11:31 FROGGS_ hoelzro: there is no PR
11:31 hoelzro FROGGS_: https://github.com/perl6/nqp/pull/156
11:31 FROGGS_ nqp?
11:32 hoelzro yeah
11:32 hoelzro I added a Moar test for NQP
11:32 FROGGS_ ahh
11:32 hoelzro I'll point you to the moar commit I made
11:32 timotimo 2 more passing tests with my shift implementation
11:32 FROGGS_ https://github.com/MoarVM/MoarVM/pull/75
11:32 timotimo shr will be a bit easier :)
11:32 hoelzro https://github.com/hoelzro/MoarVM/commit/a9c803215613150a925f9fd66e9fac10aeeefd7c
11:32 dalek MoarVM/wip-openpipe: a9c8032 | (Rob Hoelz)++ | src/io/fileops.c:
11:32 dalek MoarVM/wip-openpipe: Don't freak out if we close a pipe twice
11:32 dalek MoarVM/wip-openpipe:
11:32 dalek MoarVM/wip-openpipe: This may or may not be a good idea; I'm just following
11:32 dalek MoarVM/wip-openpipe: the standard set by the JVM implementation
11:32 dalek MoarVM/wip-openpipe: review: https://github.com/MoarVM/MoarVM/commit/a9c8032156
11:32 dalek MoarVM/wip-openpipe: 6483a7a | (Tobias Leich)++ | src/io/fileops.c:
11:32 dalek MoarVM/wip-openpipe: Merge pull request #75 from hoelzro/wip-openpipe
11:32 dalek MoarVM/wip-openpipe:
11:32 dalek MoarVM/wip-openpipe: Don't freak out if we close a pipe twice
11:32 dalek MoarVM/wip-openpipe: review: https://github.com/MoarVM/MoarVM/commit/6483a7a857
11:33 hoelzro thanks
11:33 timotimo are moarvm commit bits also covered by the need for a perl cla?
11:33 FROGGS_ hoelzro: I won't apply the nqp PR yet, but after the wip-openpipe landed, alright?
11:33 jnthn No
11:34 hoelzro FROGGS_: sounds good
11:34 FROGGS_ timotimo: you need to send a beer to jnthn in order to get a commit bit :o)
11:34 timotimo heh heh :)
11:34 hoelzro FROGGS_: is that the secret? =P
11:34 hoelzro does MoarVM have the same CLA policy that rakudo does?
11:34 FROGGS_ no, no CLA
11:35 jnthn No CLA, just as NQP
11:35 jnthn Moar commit bits are given out to people I'm comfortable giving them to :)
11:35 FROGGS_ *g*
11:35 FROGGS_ puuh
11:35 FROGGS_ good that I got mine :o)
11:35 jnthn hoelzro: Do you not have a Moar commit bit?
11:36 hoelzro jnthn: no
11:36 hoelzro but I've just started looking at it
11:36 hoelzro I intend to work on it tomorrow at the Perl hackathon in AMS
11:36 hoelzro well, the focus is Perl 6
11:36 hoelzro but if it involves Moar, that's cool with me =)
11:38 FROGGS_ Moar's focus is Perl 6, that is its slogan :o)
11:38 timotimo jnthn: what's the reasoning behind using malloc + mp_init for the result object in the BINARY_OP_SIMPLE?
11:38 FROGGS_ brb
11:39 timotimo rather than using force_bigint which can do the allocation for us, too?
11:39 timotimo or rather, the result object is likely to already be allocated for us from the interp.c code
11:41 jnthn timotimo: force_bigint is for use on *existing* values, not on the result one we're constructing.
11:41 jnthn timotimo: if it does have to force, it creates a temporary
11:41 jnthn timotimo: Which we clean up later
11:41 jnthn timotimo: But we don't want to clean it up if it's going to form the result in some cases.
11:41 timotimo oh
11:42 timotimo yeah, that does make sense
11:42 * timotimo revises his code
11:42 jnthn Feel free to improve the comments I left on those functions.
11:49 hoelzro if I were to install a Perl 6 module into a MoarVM rakudo tree, what would it install?  A .moarvm file?
11:49 * hoelzro is trying to figure out the analogue to .pir
11:50 jnthn .moarvm
11:51 hoelzro alright
11:51 timotimo it seems like we have two implementations of bitwise negation
11:51 hoelzro and what if a rakudo install has multiple backends?  Should a module installer (like ufo) install a .pir, .jar, and .moarvm file?
11:51 timotimo one based on the MVM_BIGINT_UNARY_OP macro, one plainly called MVM_bigint_not
11:52 timotimo but since the code of the latter is, in comparison, incredibly tight, i'm just going to remove the former
11:54 jnthn Do they do the same thing?
11:54 jnthn We hve a not_i and a bitnot_i iirc
11:55 timotimo oh, so the neg one is supposed to be -foo rather than ~foo?
11:55 timotimo that makes sense.
11:55 timotimo 20 passing tests
11:55 jnthn oh...neg is negativ,e I think.
11:57 timotimo yes, it is
11:57 timotimo now pow_I
11:58 timotimo i think i'll just go with "force bigints for all parameters" for now
11:58 jnthn aye, if you use store_bigint_result it'll downgrade the result if it can.
11:59 timotimo i saw that :D
12:00 jnthn Cool. Seems you're successfully figuring out my I-was-tired code :)
12:01 nwc10 Why does Rakudo end up creating a lot of P6BigInts? (which I assume is the reason why all this work is a win)
12:02 timotimo every Int is a bigint
12:03 timotimo only int is non-bigint
12:03 timotimo but we end up using Int every time the user writes a number in the code and we can't say for sure that a native int would be fine as well
12:05 timotimo next up is expmod
12:08 jnthn Right. Perl 6's default integer type has big integer semantics by default
12:08 jnthn So the easy implementation was to just use mp_int for all of them.
12:08 timotimo up to 34 passing tests already
12:08 jnthn Now we're more at the phase of wanting to worry about performance over get stuff in...
12:09 timotimo i shall push, so that you can tell me if i've forked up somewhere :)
12:09 jnthn ...it's worth tackling this.
12:09 dalek MoarVM/jnthn_bigint_opt: 1baad4f | (Timo Paulssen)++ | src/math/bigintops.c:
12:09 dalek MoarVM/jnthn_bigint_opt: teach bigint_div about smallint.
12:09 dalek MoarVM/jnthn_bigint_opt: review: https://github.com/MoarVM/MoarVM/commit/1baad4f98c
12:09 dalek MoarVM/jnthn_bigint_opt: e128df2 | (Timo Paulssen)++ | src/math/bigintops.c:
12:09 dalek MoarVM/jnthn_bigint_opt: implement smallint support for left-shift
12:09 timotimo there we go :)
12:10 timotimo sorry, dalek :(
12:10 dalek joined #moarvm
12:11 dalek MoarVM/jnthn_bigint_opt: 75af3e7 | (Timo Paulssen)++ | src/math/bigintops.c:
12:11 dalek MoarVM/jnthn_bigint_opt: remove some stray backslashes
12:11 dalek MoarVM/jnthn_bigint_opt: review: https://github.com/MoarVM/MoarVM/commit/75af3e7b9b
12:16 timotimo jnthn: any specific random number generator i should be using for rand_I?
12:20 dalek MoarVM/jnthn_bigint_opt: d041af9 | (Timo Paulssen)++ | src/math/bigintops.c:
12:20 dalek MoarVM/jnthn_bigint_opt: div_num can handle two smallint values now.
12:20 dalek MoarVM/jnthn_bigint_opt:
12:20 dalek MoarVM/jnthn_bigint_opt: may be worth it to specialize for "only a is big" and
12:20 dalek MoarVM/jnthn_bigint_opt: "only b is big" later on?
12:20 dalek MoarVM/jnthn_bigint_opt: review: https://github.com/MoarVM/MoarVM/commit/d041af905b
12:20 dalek MoarVM/jnthn_bigint_opt: 9e74f8b | (Timo Paulssen)++ | src/math/bigintops.c:
12:20 dalek MoarVM/jnthn_bigint_opt: bigint_rand without smallint support
12:20 dalek MoarVM/jnthn_bigint_opt: review: https://github.com/MoarVM/MoarVM/commit/9e74f8bb4f
12:21 timotimo er ... why do we pass an integer argument to the primality test?
12:21 timotimo is that for giving it more or less accuracy?
12:25 timotimo only gcd, lcm and bool_I left
12:25 dalek MoarVM/jnthn_bigint_opt: ced68ba | (Timo Paulssen)++ | src/math/bigintops.c:
12:25 dalek MoarVM/jnthn_bigint_opt: bigint_is_prime should at one point work with smallint, too.
12:25 dalek MoarVM/jnthn_bigint_opt:
12:25 dalek MoarVM/jnthn_bigint_opt: but for now, we just want to pass.
12:25 dalek MoarVM/jnthn_bigint_opt: review: https://github.com/MoarVM/MoarVM/commit/ced68ba946
12:27 timotimo passes all bigint tests
12:28 dalek MoarVM/jnthn_bigint_opt: c62e15e | (Timo Paulssen)++ | src/math/bigintops.c:
12:28 dalek MoarVM/jnthn_bigint_opt: gcd and lcm should really get proper smallint impls.
12:28 dalek MoarVM/jnthn_bigint_opt:
12:28 dalek MoarVM/jnthn_bigint_opt: they are used very heavily every time we have Rat objects.
12:28 dalek MoarVM/jnthn_bigint_opt: review: https://github.com/MoarVM/MoarVM/commit/c62e15e5fd
12:28 * timotimo tries to compile a rakudo
12:29 timotimo Incomplete smallint handling!
12:29 timotimo something not covered by the test cases!
12:29 timotimo radix_I apparently. huh.
12:30 timotimo well, that'll be easy enough.
12:33 timotimo tonum_I seems to be missing tests in bigint.t, too
12:35 dalek MoarVM/jnthn_bigint_opt: 541f51a | (Timo Paulssen)++ | src/math/bigintops.c:
12:35 timotimo we get to the optimizer now
12:35 dalek MoarVM/jnthn_bigint_opt: teach radix about smallint/bigint bodies.
12:35 dalek MoarVM/jnthn_bigint_opt: review: https://github.com/MoarVM/MoarVM/commit/541f51ae3d
12:35 dalek MoarVM/jnthn_bigint_opt: dd9b245 | (Timo Paulssen)++ | src/math/bigintops.c:
12:35 dalek MoarVM/jnthn_bigint_opt: implement a smallint path for bigint_to_num
12:35 dalek MoarVM/jnthn_bigint_opt: review: https://github.com/MoarVM/MoarVM/commit/dd9b245efd
12:42 timotimo rakudo compiled completely \o/
12:42 dalek MoarVM/jnthn_bigint_opt: 08398c9 | (Timo Paulssen)++ | src/math/bigintops.c:
12:42 dalek MoarVM/jnthn_bigint_opt: bigint_mod with smallint support
12:42 dalek MoarVM/jnthn_bigint_opt: review: https://github.com/MoarVM/MoarVM/commit/08398c94fe
12:42 dalek MoarVM/jnthn_bigint_opt: 2079191 | (Timo Paulssen)++ | src/math/bigintops.c:
12:42 dalek MoarVM/jnthn_bigint_opt: bigint_is_big with smallint support
12:42 dalek MoarVM/jnthn_bigint_opt: review: https://github.com/MoarVM/MoarVM/commit/2079191df9
12:46 timotimo jnthn: how do you feel about serializing smallbigints as 32bit integers?
12:47 timotimo 220 wallclock secs - pretty decent for 4 parallel test jobs
12:53 timotimo hm. the smallbigint run seems to have taken significantly longer (though i was listening to music during the smallbigint run, but not the master run)
12:53 timotimo and there are some more failing tests
12:54 jnthn timotimo: When we're done, we should have no calls left to get_bigint.
12:54 jnthn timotimo: +1 on the serializing thing. Store a flag saying what's coming, and then the thing
12:56 timotimo are we currently doing unnecessary extra work if we call one of the bigint_ ops from interp.c and pass an object to the result slot?
12:56 nwc10 does this mean that on the JVM, everything Rakudo creates is a JVM bigint, and a similar win would be possible?
12:57 timotimo 0.21user 0.01system 0:00.23elapsed 98%CPU (0avgtext+0avgdata 92892maxresident)k
12:58 timotimo that's master
12:58 timotimo 0.21user 0.00system 0:00.22elapsed 98%CPU (0avgtext+0avgdata 92540maxresident)k
12:58 timotimo that's our smallbigint branch
12:58 timotimo i wonder if this difference is actually meaningful and caused by our smallbigints?
12:58 timotimo (that's for -e "say 1"
12:58 timotimo so not a very valuable benchmark by any stretch of the imagination)
13:00 jnthn Yeah. Doing a my @a = ^10000; is probably more informative.
13:00 timotimo heh. will try.
13:01 jnthn No, we need to allocate a result object, still. Int is still boxed.
13:01 jnthn But note I changed initialize to never allocate an mp_int any more.
13:01 timotimo does the creation cause an mp_init?
13:01 timotimo ah, perfect!
13:02 timotimo =time ./perl6-m -e 'my @a = (^50_000).list'
13:02 timotimo 0.28user 0.03system 0:00.32elapsed 99%CPU (0avgtext+0avgdata 104196maxresident)k
13:02 timotimo =time ./perl6-m -e 'my @a = (^50_000).list'
13:02 timotimo 0.31user 0.05system 0:00.36elapsed 99%CPU (0avgtext+0avgdata 122288maxresident)k
13:02 timotimo feel free to guess which one is which
13:03 jnthn I'm rather hoping the second one is with master :)
13:03 timotimo *ding* *ding* *ding*
13:03 timotimo you are correct!
13:03 timotimo one hundred million kilodollars!
13:03 timotimo \o/
13:03 * timotimo throws confetti
13:03 jnthn That's a small performance win, but a big memory one.
13:04 timotimo 18 megabytes difference, that's pretty decent
13:04 jnthn Yes. Hope this will have some good consequences out in real world code.
13:04 timotimo me, too
13:06 timotimo with 200_000 numbers it goes to 201544maxresident -> 139164maxresident
13:06 timotimo and 0:00.78elapsed -> 0:00.60elapsed
13:07 timotimo the additional spectest failures are not as nice, though
13:09 timotimo maybe sprintf needs to learn about smallbigint, too, for example
13:10 jnthn Well, do you hvae anywhere that get_bigint is still called?
13:10 timotimo oh hold on
13:11 timotimo it's partially just re-ordering inside the results m)
13:11 timotimo -t/spec/S03-operators/arith.t                                (Wstat: 0 Tests: 145 Failed: 5)
13:11 timotimo -  Failed tests:  6-7, 14-15, 145
13:11 timotimo +t/spec/S03-operators/arith.t                                (Wstat: 0 Tests: 145 Failed: 7)
13:11 timotimo +  Failed tests:  2-3, 6-7, 14-15, 145
13:11 timotimo Parse errors: Bad plan.  You planned 144 tests but ran 145.
13:11 timotimo +t/spec/S03-operators/numeric-shift.t                        (Wstat: 0 Tests: 36 Failed: 12)
13:11 timotimo +  Failed tests:  4, 6, 10, 12, 16, 18, 22, 24, 28, 30, 34
13:11 timotimo +                36
13:11 timotimo +t/spec/S03-operators/overflow.t                             (Wstat: 0 Tests: 98 Failed: 1)
13:11 timotimo +  Failed test:  46
13:11 timotimo er, the overflow is not legit
13:12 timotimo +t/spec/integration/lazy-bentley-generator.t                 (Wstat: 0 Tests: 1 Failed: 1)
13:12 timotimo +  Failed test:  1
13:12 timotimo this one is legit
13:12 jnthn Thie numeric-shitf onel ooks legit too
13:12 jnthn wow, great typing!
13:13 timotimo %)
13:14 timotimo not ok 22 - got expected value for shl -15 by -3
13:14 timotimo #      got: '2305843009213693952'
13:14 timotimo # expected: '-2'
13:14 timotimo that seems pretty far off the value we wanted
13:14 jnthn yes :)
13:14 jnthn Probably some fail with handling shifting signs
13:15 timotimo https://github.com/MoarVM/MoarVM/blob/jnthn_bigint_opt/src/math/bigintops.c#L509 - you probably know more about C and shifting than me
13:16 timotimo oh
13:16 timotimo shift left by negative numbers
13:16 timotimo of course
13:16 timotimo i don't handle that properly at all
13:18 timotimo er ... i think i need a force_bigint there
13:19 timotimo and an mp_init
13:19 FROGGS joined #moarvm
13:20 timotimo but that doesn't fix the test failures
13:21 dalek MoarVM/jnthn_bigint_opt: ad0b98e | (Timo Paulssen)++ | src/math/bigintops.c:
13:21 dalek MoarVM/jnthn_bigint_opt: fix some mess-ups in bigint_shl
13:21 dalek MoarVM/jnthn_bigint_opt: review: https://github.com/MoarVM/MoarVM/commit/ad0b98ee95
13:22 jnthn The spectests to triage aside, this has gotten us quite a long way with the small big ints stuff... :)
13:22 timotimo yes, i'm glad you got me started with some high quality code
13:31 * timotimo has an implementation for flagged (and backwards-compatible) bigint/smallint serialization/deserialization
13:33 jnthn yay
13:36 timotimo and i could build a rakudo with it
13:36 timotimo of course i neglected to measure the sizes of the serialized files
13:36 timotimo and i'm guessing there's hardly any P6bigint in the nqp bootstrap
13:38 jnthn No, there's none in NQP
13:38 timotimo probably not too many in the core setting .moarvm file?
13:39 timotimo 9187399 ← that's the size with smallerized serialization
13:39 jnthn Some, though.
13:39 jnthn I mean, the setting has its share of Int constants.
13:39 jnthn But in the grand scheme of things I suspect it's fairly few
13:39 jnthn Especially as it is smart enough to re-use constants.
13:41 timotimo i wonder if we should keep one level of serialization *writing* backwards compatibility?
13:42 timotimo so that we can easily switch back and forth between versions while developing
13:42 timotimo and not having to rebuild nqp and rakudo
13:42 jnthn timotimo: I generally prefer to
13:45 timotimo 9189363 ← without smallerized bigints
13:45 timotimo so ... 2 kilobytes?
13:45 jnthn Yeah...
13:45 timotimo ah well. it'll kick in if we have an array constant of, say, the first 1000 prime numbers
13:45 jnthn Small win is small.
13:45 jnthn right.
13:46 dalek MoarVM/jnthn_bigint_opt: 7949341 | (Timo Paulssen)++ | src/6model/ (2 files):
13:46 dalek MoarVM/jnthn_bigint_opt: serialize smallints smaller, put a flag in front
13:46 dalek MoarVM/jnthn_bigint_opt: review: https://github.com/MoarVM/MoarVM/commit/794934179e
13:48 timotimo i think you misread my point about writing backwards compatibility
13:48 timotimo i know we have multiple levels of reading backwards compatibility
13:48 timotimo but i see no way to tell the serializer to write the format of an older version
13:50 jnthn Oh
13:50 jnthn No, there's no way to do that.
13:50 jnthn And I don't think we need one.
13:50 jnthn Not at the moment, anyway.
13:50 timotimo fair enough.
13:53 timotimo sigh, i feel myself unmotivated to go fix the test fallout right now
13:53 timotimo i suppose it's time to take a nice walk in the only somewhat nice weather outside
13:59 jnthn Here the weather mings.
13:59 timotimo i don't know what that means :\
14:03 jnthn timotimo: "it's disgusting"
14:03 timotimo aaw
14:03 timotimo it's very windy outside, it seems
14:04 jnthn wind and rain here
14:09 timotimo i shall use the time i'm away from the computer to run some benchmarks
14:09 timotimo sadly, perl6-bench has no way for me to tell it to "build this rakudo with moarvm=master and this rakudo with moarvm=jnthn_bigint_opt" :(
14:10 timotimo japhb_, japhb__: ^
14:34 jnap joined #moarvm
14:49 ggoebel1115 joined #moarvm
15:06 benabik joined #moarvm
16:37 japhb__ *cough* Implementation welcome! *cough*
16:37 * japhb__ is about 5 levels deep in Perl 6 yak shaving and is trying to avoid further distraction.
16:38 japhb__ I will say that I'm *really* wanting A) working sockets everywhere, and B) a solid binding for a security library (e.g. openssl)
16:39 jnthn japhb__: They already work on JVM, afaik? It's Moar that's missing 'em?
16:39 japhb__ About the only way to do anything not strictly local here is to shell out to something else that has the proper capabilities, because you can't sneeze without encryption.
16:40 japhb__ jnthn: Yeah, so all my work is JVM-specific right now, which makes for eye-rolling startup time.  :-/
16:41 jnthn japhb__: Well, there's Parrot :P
16:41 * japhb__ ruminates for a bit on the concept of encrypted sneezes.
16:41 jnthn I suspect Moar will have sockets by the Feb compiler release, anyways.
16:41 jnthn But you still need the concurrent stuff I guess
16:42 japhb__ jnthn: Yeah, right now I use r-m for one-liners and no-network scripts, r-p for REPL, and r-j for net or concurrent scripts.
16:42 jnthn japhb__: Not r-m for REPL 'cus not proper readline yet?
16:42 japhb__ jnthn: Yup.
16:42 jnthn k
16:42 jnthn Need to figure out readline spewing...
16:42 japhb__ I tend to need readline to get into flow thinking.
16:43 jnthn It did work on Windows.
16:43 jnthn I wonder if you managed to link it against normal readline rathr than linenoise it works out.
16:43 * japhb__ has access to MacOS and Linux right now.
16:44 japhb__ (And doesn't know didly about MacOS builds -- I just use the Mac as a nice piece of hardware for SSH'ing to a Linux box)
16:46 * japhb__ chuckles ... the person in front of me on the bus is reading a romance novel on her phone.  In really big print.
16:47 japhb__ timotimo: EMESSAGEDOESNTMATCHCOMMIT: http://irclog.perlgeek.de/moarvm/2014-02-07#i_8246872
16:48 japhb__ Not that it's worth trying to fix that now ....
16:49 jnthn japhb__: I hope it's not 50 shades of grey... :P
16:52 japhb__ Whatever it is, the writing is AWFUL.  I glance forward when I'm thinking and my brain captures half a sentence and wants to run away screaming.
16:53 timotimo japhb__: it *does* match the commit, but only indirectly
16:54 timotimo gcd and lcm are the only users of that particular macro
16:54 timotimo MVM_BIGINT_BINARY_OP(gcd)
16:54 timotimo MVM_BIGINT_BINARY_OP(lcm)
16:54 timotimo japhb__: do you have an idea how multi-versioned targets should be handled? like, just a few pointers?
16:56 japhb__ timotimo: Hmmm, lemme think
16:57 * japhb__ checks something
16:57 timotimo maybe the compilers file should have a section "parameters": {"moarvm": "master", "nqp": "master"} or something
16:58 timotimo and if you specify the empty string, it won't pass a --gen-moar (for example) and the configure script will use NQP_REVISION and/or MOAR_REVISION
16:59 japhb__ Hmmm, that's not a bad idea
16:59 timotimo i'm not 100% sure if we can --gen-moar=foo --gen-nqp=bar from rakudo's own Configure.pl
16:59 timotimo if we could, that should work
17:00 timotimo it would then have a name like "rakudo-moar/master//7fpebcak" for example
17:00 timotimo or *maybe* it should fill out these slots by looking at the actual *_REVISIOON used
17:02 timotimo i think that makes more sense, but would have to be a bit magical; maybe there should be a list of "theis subdirectory is the checkout for this part, this other subdirectory is the checkout for that part"
17:02 timotimo and it would grab the names from those
17:02 japhb__ So we need to be able to pass things through to the build steps, and I don't want to special-case how configure works
17:02 japhb__ dang, early boss stop, bbiab
17:02 timotimo heh.
17:04 timotimo i have an idea for that
17:08 japhb__ Corned beef hash FTW
17:08 timotimo japhb__: https://gist.github.com/timo/301073744c9555c79064
17:09 japhb__ Interesting, where are you getting those variable values?
17:10 * japhb__ wonders if it isn't easier to have a 'configure_flags' key in compilers.pl (or passed through from the command line)
17:11 japhb__ (command line of 'bench build' I mean)
17:12 japhb__ Actually no, because compilers.pl is ... Perl 5.
17:12 japhb__ .oO( use v5)
17:12 timotimo also because compilers.pl isn't responsible for building the components
17:13 japhb__ I'm not sure what this pancake flavor is, but it's not coconut.
17:13 timotimo i would think the variable values would be "positional" and it would split the part after the first / either at a , or at another / and get the values that way
17:14 timotimo so if you have parameters: <nqp mvm> and you ask perl6-bench to extract&build rakudo-moarvm/f00b42, you'd get a rakudo-moarvm with an nqp at f00b42
17:14 japhb__ component/rev:var1=val1,var2=val2?
17:14 timotimo nah, i don't like that
17:14 timotimo but / is also not such a good idea
17:15 timotimo it should map to subfolders of the component without more depth, IMO
17:15 timotimo but using something that can be part of a git branch/tag name would be problematic, too
17:15 japhb__ What punctuation can be used in a branch/tag name?  I know . and /, what else?
17:15 timotimo - and _
17:15 timotimo you can use / in branch names!?
17:15 jnthn yes :)
17:16 japhb__ I don't even think of - and _ as punctuation these days, heh
17:16 timotimo :)
17:16 timotimo clearly we should use …
17:16 timotimo since the commits are usually abbreviated anyway
17:17 timotimo well, brackets might be an option
17:17 japhb__ Curlies?  Already used for brace expansion.  I tend to say things like rakudo/2014.{01,02}
17:17 japhb__ Don't want visual confusion.
17:17 japhb__ Why is : not useful?
17:18 timotimo git-check-ref-format is enlightening
17:18 timotimo not curlies
17:19 japhb__ Hah, Rule 4: I was right.  ;-)
17:19 timotimo :)
17:19 japhb__ Square braces might work, though.
17:19 timotimo : would be acceptable, but i'd really rather not have the variable name in there along with the value
17:19 japhb__ If you really think : fails the visual distinctiveness test.
17:19 japhb__ timotimo: What if you only want to override one?
17:19 timotimo use ::
17:20 japhb__ What if we start building a lot of flexibility into the build procedures, and most of the time, you want most of the defaults?
17:20 timotimo the default ought to be the empty string. using :: is the natural consequence, at least to me
17:20 timotimo i don't think we should have that many parameters
17:20 japhb__ Which reminds me, the defaults need to be stored in components.json.
17:20 * japhb__ is thinking farther down the road, not just the immediate problem.
17:20 timotimo the defaults would always be the empty string; the build steps list would be in charge of figuring out the rest
17:21 japhb__ (If I'm going to play designer instead of coder, I have to.)
17:21 timotimo :)
17:21 timotimo also, if we think about things like versions mostly, the "default" would be specified by what's in our check-out
17:21 japhb__ I think empty string is a default default, not a default.
17:21 timotimo which is problematic, because we'd like to name our directory after the version and parameters
17:22 japhb__ Do you really want to code the ability to parse NQP_VERSION as part of components.json?
17:22 timotimo and if we only figure out what the NQP_REVISION was after we made our clone, we have to go out, mv, go back in
17:22 timotimo not parse NQP_REVISION
17:22 japhb__ Damn, I need to run for a meeting.
17:22 japhb__ I'll backlog.
17:22 timotimo it'd be something like "defaults": {"nqp": [ "cat tools/build/NQP_REVISION" ] }
17:31 timotimo i'd love to see statistics about collective start-up time for each backend ... "the jvm wasted 40 minutes of this benchmark run just for starting up"
17:31 jnthn Beer time, at last &
19:17 japhb_ timotimo, Well, we do measure startup and compile times ...
19:18 japhb_ .oO( Beer time?  Why yes, I believe it is! )
19:40 FROGGS k, I have P6 tuits now... but what to do?
19:40 nwc10 1) review your qx{} change?
19:41 nwc10 2) get Panda working on MoarVM
19:41 nwc10 3) profit!
19:41 nwc10 or
19:41 nwc10 0) give up for the evening and drink beer
19:41 FROGGS 1) I think somebody else should do it, because I won't see my thinkos
19:41 FROGGS 2) yeah, good point
19:41 FROGGS 0) no, I don't even have beer :o)
19:42 FROGGS ohh
19:42 FROGGS 4) NDEBUG?
19:42 nwc10 I thought that jnthn had doen NDEBUG
19:42 FROGGS ahh, k
19:42 FROGGS had no time to backlog :/
19:44 nwc10 just read the commits :-)
19:44 FROGGS yeah
19:46 dalek Heuristic branch merge: pushed 19 commits to MoarVM/wip-openpipe by FROGGS
19:49 jnap joined #moarvm
19:57 timotimo FROGGS: there's LHF tests for bigint operations in t/nqp/60-bigint.t if you like something very easy
19:57 FROGGS timotimo: yeah, perhaps
19:57 timotimo and shift left/right misbehaves a lot in the same branch
19:57 timotimo (jnthn_bigint_opt)
20:03 FROGGS http://video.fosdem.org/2014/K3201/Saturday/
20:09 timotimo oooh awesome!
20:09 timotimo thank you very much :)
20:10 FROGGS now I know what I will do when $kids are sleeping :o)
20:10 dalek joined #moarvm
20:14 timotimo wowza
20:14 timotimo no post-processing on the sound of the video whatsoever :(
20:15 FROGGS :o(
20:15 timotimo at 2:50 minutes in, the buzzing starts to subside
20:16 timotimo here's the buzzing again ;_;
20:20 timotimo it seems like quite a bit more than half of the time the sound is okayd
20:47 timotimo i wonder why nqp-moarvm is a tiny bit slower than parrot at the while_array_set benchmark
20:47 timotimo microbenchmark*
20:48 timotimo it amuses me greatly, that moarvm is not only much faster than parrot at "loop_empty_native", but the jvm only catches up at the very, very end of the benchmark run
20:49 timotimo oh dang!
20:49 timotimo i didn't even build the code gen for locallifetime yet!
20:51 FROGGS :o)
20:51 timotimo FROGGS: if you want to, you can try it yourself ;)
20:52 FROGGS bah
20:52 FROGGS :P
20:52 lee__ timotimo: are your benchmarks online somewhere?
20:52 * lee__ is curious
20:52 FROGGS I don't think that this would work out when I am not even able to port the labels ops :o)
20:54 FROGGS lee__: maybe this? http://feather.perl6.nl/~raiph/25jan2014-benchmark-p5-nqps-rakudos.html
20:54 timotimo lee__: one second.
20:55 timotimo huh, where did i put my benchmarks the other times ...
20:55 timotimo ah
20:56 lee__ FROGGS' link looks interesting, and pretty recent
20:56 colomon joined #moarvm
20:56 timotimo http://t.h8.lv/p6bench/2014-02-07-regular.html
20:58 lee__ awesome
20:58 lee__ thanks
20:58 timotimo yw
21:02 timotimo there is way more non-buzzed audio than buzzed audio in the talk
21:02 timotimo i'm happy about that
21:05 timotimo the buzzing has returned! :(
21:06 timotimo somebody invited the microphone over to a pillow fight or something
21:07 timotimo the pillows are furious
21:19 dalek MoarVM/wip-openpipe: 3cdc2a0 | (Tobias Leich)++ | src/io/procops.c:
21:19 dalek MoarVM/wip-openpipe: initialize and set exit codes
21:19 dalek MoarVM/wip-openpipe: review: https://github.com/MoarVM/MoarVM/commit/3cdc2a0c68
21:28 jnap joined #moarvm
22:13 FROGGS that is pretty much the first thing panda does:
22:13 FROGGS panda$ PERL6LIB=ext/File__Find/lib:ext/Shell__Command/lib:ext/JSON__Tiny/lib:lib perl6-m bin/panda install File::Find /home/froggs/dev/panda
22:13 FROGGS Could not download module metadata: Could not find symbol '&INET'
22:13 FROGGS so, we'd need that now
22:13 timotimo yeah ... not going to happen that soon :(
22:15 FROGGS hmmm, why?
22:15 timotimo we don't have any sockets and i don't think i feel up to it
22:15 FROGGS are we supposed to do that after IO refactor?
22:21 timotimo jnthn would have to say
22:21 timotimo i *think* it'd make sense, but what do i know :)
22:22 FROGGS on the other hand he would have patterns for things that somehow do their job...
22:22 FROGGS we'll see :o)
22:23 timotimo hm, i guess
22:27 benabik joined #moarvm
22:50 benabik joined #moarvm
23:40 jnthn evening o/
23:40 timotimo evening jnthn
23:40 timotimo i think i'm going to bed now, though
23:42 jnthn :)
23:42 * jnthn had a long decommute
23:42 jnthn An IPA, a curry, a lambic and an imperial stout. Hard life. :)
23:43 jnthn ooh, a new perl6-bench set... :)
23:46 timotimo i got sidetracked into yak shaving after doing that set
23:46 timotimo i want to do a comparison against a rakudo-moar with the smallint changes
23:46 timotimo that'd either require a hack or parameterised builds for perl6-bench's components ...
23:47 timotimo (and it would also require the smallint operations to all work :P)
23:52 jnthn Also that :)
23:52 dalek MoarVM/jnthn_bigint_opt: 90256a9 | (Timo Paulssen)++ | src/math/bigintops.c:
23:52 dalek MoarVM/jnthn_bigint_opt: negative right-shift could be trouble for smallint.
23:52 dalek MoarVM/jnthn_bigint_opt: review: https://github.com/MoarVM/MoarVM/commit/90256a9cde
23:52 timotimo (this commit also doesn't fix it at all)
23:52 timotimo gnite o/
23:53 jnthn 'night

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