github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today
Set by moderator on 1 September 2013.
00:02 jnap joined
diakopter TimToady: remember those million linear searches? 01:00
turns out they were expensive.
hrm. 01:01
*sigh* 01:02
Confused at line 2, near "\\ufeff# This fi"
*facepalm* parrot
01:02 FROGGS_ joined
diakopter *facepalm* parrot 01:03
Confused at line 2, near "\\ufeff# This fi"
oh. *facepalm* me
wait no, *facepalm* parrot
01:05 cognominal joined
diakopter had to manually remove the BOM... 01:06
well... 01:10
01:11 Guest1337 joined
diakopter heh heh. 01:23
off by a billion error
TimToady What's an order of magnitude of orders of magnitude among friends? 01:25
diakopter "yay much" in decimal 01:26
TimToady depends mightily on your font size 01:29
dalek arVM/nobank: 963608e | diakopter++ | / (11 files):
progress?
diakopter the build at least completes now.. 01:31
*shrug*
Bytecode validation error: non-existent operation op 38209
yeah, I didn't think we had that many ops yet 01:32
524, this says
not thirty eight thousand
diakopter daftly (deftly?) wonders what the bitshift operators are in nqp or rakudo 01:33
benabik Perhaps that's an op with a bank? 01:34
diakopter we're not doing it that way
benabik 0x9541... probably not
diakopter all ops are 16 bits
benabik Well, it's not reading it that way... But I was wondering if it was reading an old file or such.
diakopter "it"?
JimmyZ diakopter: github.com/MoarVM/MoarVM/commit/96...ccd#L9L582 01:35
yoleaux 3 Sep 2013 23:09Z <diakopter> JimmyZ: I'm still claiming the nobank branch... just a few more hours at the max..
benabik the VM isn't reading the bytecode with a bank, but perhaps the file still had the bank, creating a crazy op number. But given that the hex value is 0x9541 and we didn't have 0x95 banks, probably not. 01:36
JimmyZ diakopter: there are many places that does write op
diakopter oh.
diakopter goes to fix
JimmyZ: how are you awake? :)
JimmyZ diakopter: github.com/MoarVM/MoarVM/commit/48...0d7#L6R559 for a quick view that needs +=2 01:37
diakopter: it's 8 hour later ..
9 hours actually
TimToady it's 9 hours earlier, but tomorrow :) 01:38
JimmyZ I'm from tomorrow, the future :P
TimToady how is Wednesday so far?
JimmyZ rains...
TimToady we could use some of that here 01:39
dalek arVM/nobank: 6c67cec | diakopter++ | src/mast/compiler.c:
moar fixes JimmyZ++
diakopter I was wondering why the .moarvm were smaller :) 01:40
JimmyZ smaller than? 01:41
diakopter master branch
JimmyZ not sure...
because of miracle 01:42
diakopter b/c it was overwriting the 2nd byte..
dalek arVM/nobank: 55d7228 | diakopter++ | src/core/validation.c:
remove debugging output. hrm.
01:44
JimmyZ should eq actullay
diakopter well in other news the annotation off-ness seems to have fixed itself..
C:\\Users\\mwilson\\src\\MoarVM\\nqp-cc>..\\moarvm nqp.moarvm -e "say(332)"
MVMArray: atpos expected int register
but there's that.. 01:45
--dump of nqp.moarvm is only 111000 lines... !? 01:46
seems very low
but exitcode was 0
diakopter guesses there is a missing "break;" line in interp.c 01:48
01:50 cognominal joined
diakopter JimmyZ: I turn the branch back over to you.. 01:52
:)
afk a while &
back, ish 02:16
JimmyZ: I'm curious if you're working on it... if not, I'll do so.. 02:17
JimmyZ diakopter: wait a moment
diakopter ok :)
JimmyZ compiling is sooooooo slllllooooowww 02:18
diakopter it seemed faster for me
(maybe not though)
JimmyZ: you're saying that branch seems slower to compile than master? 02:20
JimmyZ diakopter: go ahead, I didn't get a working patch 02:21
diakopter did you learn/discover/uncover anything? 02:22
JimmyZ diakopter: nope, I load 3M PHP code only 1s, while NQP needs 10m
ok, lets say 1M
diakopter same with p5; it's quite fast.
JimmyZ diakopter: didn't got anything, most time was waiting 02:23
every edit, I needs waiting at least about 5m 02:24
and no debugger :(
diakopter hrm. 02:37
oh, it's b/c native arrays are only faked still, I think. 02:43
no 02:46
JimmyZ diakopter: I know why
diakopter I found it
needs atpos_i instead of []
JimmyZ yes, because you're using list_i 02:47
diakopter JimmyZ++ # simultaneous discovery 02:50
dalek arVM/nobank: 05d02a2 | diakopter++ | nqp-cc/src/QASTOperationsMAST.nqp:
nqp::atpos_i; branch now builds and ... mostly passes nqptest like before.
02:58
diakopter p6opaque must be *really* slow to create.. 02:59
that's the only difference I can think of in the new factoring
maybe it's the string creation ... 03:00
JimmyZ consider it a merge? 03:14
diakopter no, it's significantly slower 03:21
my "optimizations" aren't
.. back to the drawing board. 03:23
*sigh* eliminate all these objects and replace with arrays
for one thing, all these calculations can be constants instead *duh* 03:24
okay yeah... I know how to fix it... dramatically. 03:25
JimmyZ great 03:30
make them only 1s ?
;)
diakopter ha.
JimmyZ Ops.nqp is bigger than before, and so QASTMoar.moarvm 03:33
diakopter yes... fixing 03:34
JimmyZ 580K vs 665K
diakopter it'll be much smaller 03:35
04:02 dalek joined
dalek arVM: 6677977 | jimmy++ | src/io/procops.c:
added MVM_proc_spawn function
05:54
diakopter hi 06:46
JimmyZ: free(command); ? 06:47
JimmyZ diakopter: on working 06:51
07:01 FROGGS_ joined
diakopter on working? 07:11
dalek arVM: b63c5bc | jimmy++ | src/io/procops.c:
got a basically working MVM_proc_spawn(hopefully)
07:23
JimmyZ so, I don't know how to iter a MVMHash in C 07:26
diakopter long term the most stable way is to create an iter 07:27
nqp::iter
look in the source for where MVM_iter is used
JimmyZ used in interp.c 07:32
diakopter pseudocode: 07:43
my $iter = nqp::iter(%stuff); while $iter { my $key = nqp::iterkey_s($iter); my $val = nqp::iterval($iter); } 07:44
FROGGS morning 07:45
JimmyZ: MVM_proc_spawn is about nqp::shell() ?
JimmyZ FROGGS: yes 07:46
FROGGS JimmyZ++
:o)
diakopter: I think a nextiter or a shift is missing in your pseudocode, no? 07:47
my $iter = nqp::iterator(%stuff); while $iter { $iter := nqp::shift($iter); my $key = nqp::iterkey_s($iter); my $val = nqp::iterval($iter); } 07:51
I'd think it is more like that
dalek arVM: 4d155ff | jimmy++ | src/io/procops.c:
added env to MVM_proc_spawn
07:56
FROGGS pulls and builds 07:57
JimmyZ FROGGS: ^^ your turn
i.e: bug fix 07:58
FROGGS JimmyZ: okay, so wire it to nqp::shell now? 08:01
JimmyZ: or was that your plan? 08:02
dalek arVM: 3649d11 | jimmy++ | src/io/procops.c:
free _env after spawn
JimmyZ FROGGS: I have no plan
FROGGS *g*
JimmyZ: I mean, do you wanna do that?
JimmyZ ;)
FROGGS: I don't
FROGGS I don't want to steal your stuff
k
JimmyZ the parrot nqp::shell doesn't support unicode(also GBK in chinese) 08:03
so I worked on it, make sure it support GBK well enough 08:04
FROGGS that's cool
dalek arVM: 98c3fa5 | jimmy++ | src/io/procops.c:
added env to spawn actually
08:07
FROGGS JimmyZ: is that sane? gist.github.com/anonymous/3d8536e736289963d15f
JimmyZ Is there some warinnings? 08:08
FROGGS yeah 08:10
08:10 odc joined
FROGGS JimmyZ: added as a comment here: gist.github.com/anonymous/3d8536e736289963d15f 08:11
JimmyZ FROGGS: chagne const char **_env = malloc(size + 1); to char **_env = malloc(size + 1); 08:12
FROGGS: it will work
dalek arVM: fb480e2 | jimmy++ | src/io/procops.c:
avoids a warning
08:13
JimmyZ FROGGS: ^^ should avoid it 08:14
FROGGS JimmyZ++
diakopter your malloc needs a sizeof() something 08:16
malloc((size+1)*sizeof(char *)) 08:17
JimmyZ diakopter: you're right 08:19
FROGGS: free change to malloc((size+1) * sizeof(char *))
FROGGS later, $work got me :o( 08:20
JimmyZ e
08:21 donaldh joined
dalek arVM: df8db31 | jimmy++ | src/io/procops.c:
bug fix, diakopter++
08:23
jnthn On teh BOM, we patched Rakudo's grammar to ignore that. Could steal the patch for NQP's. :) 08:47
FROGGS github.com/rakudo/rakudo/blob/nom/...r.nqp#L913 08:48
FROGGS is also known as GrammarBot 08:49
09:14 not_gerd joined
not_gerd o/ 09:15
yoleaux 3 Sep 2013 23:10Z <diakopter> not_gerd: I'm still claiming the nobank branch... just a few more hours at the max..
dalek arVM: 5efa492 | (Gerhard R)++ | src/ (5 files):
Add MVM_platform_sleep()

The function tries to guarantee a delay of at least the requested amount of time.
The nanosecond resolution is somehwat 'optimistic', but so is the POSIX API it wraps.
JimmyZ not_gerd: tinyMT :P
jnthn Note that nqp::sleep op currently uses the wrong units compared to other backends... 09:16
not_gerd well, the MVM_platform_sleep() is nanos (same as platform_now) 09:17
NQP can use whatever it deems appropriate
JimmyZ not_gerd: AIX doesn't support nanosleep 09:18
jnthn not_gerd: Yes, I mean whatever nqp::sleep maps to.
not_gerd JimmyZ: pic.dhe.ibm.com/infocenter/aix/v7r1...osleep.htm 09:20
JimmyZ oh, they support it now 09:21
not_gerd progress \\o/
JimmyZ not_gerd: lists.libsdl.org/pipermail/sdl-libs...07804.html 09:23
not_gerd: FYI
not_gerd: and www.linuxquestions.org/questions/pr...em-269563/ 09:24
not_gerd JimmyZ: SLD2 uses nanosleep() instead of select() now 09:25
I just assumed they knew what they were doing ;)
*SDL2
JimmyZ oh 2000 years.. 09:26
but the sencod one said prefer select in realtime system :P
not_gerd JimmyZ: www.atl.lmco.com/projects/QoS/RTOS_...pared.html 09:28
also out of date, but I'd like to keep nanosleep()
in particular the last graph 09:29
JimmyZ I saw this one too :P
not_gerd with nanosleep(), you get a guaranteed minimal delay 09:30
JimmyZ not_gerd: I have a plan to re-do tinyMT?
not_gerd I htought that was the most sensible thing to shoot for
JimmyZ s/I/you/
not_gerd JimmyZ: now that we have stdint.h, no problem
JimmyZ great
not_gerd what's missing is basically generating the algorithm parameters
I... don't think usgin 0 everytwhere is the right thing to do ;) 09:31
*using
JimmyZ e
jnthn: btw, looks like MoarVM intened to separate ifeq to eq and if op? 09:33
*intended
parrot's ifeq etc... 09:34
not_gerd shouldn't NQP/JVM return something like (System.currentTimeMillis() - now)/1e3 from sleep? 09:39
ie the amount of time actually slept
moritz now - ENTER now 09:42
09:42 lizmat joined
moritz r: sub mysleep($x) { sleep $x; return now - ENTER new }; say mysleep 2 09:42
lizmat ww?
moritz yes 09:43
09:58 foo_bar_baz joined 10:45 woolfy joined
dalek arVM: fd43828 | (Gerhard R)++ | / (9 files):
Implement proper nqp::sleep() and keep current version as nqp::microsleep()
10:45
10:46 woolfy left 10:48 woolfy joined
JimmyZ Good evening 11:20
lizmat JimmyZ o/ 11:21
not_gerd so, what's your preferred number between 2..20? 11:32
JimmyZ 18
moritz 2
JimmyZ 13 11:33
not_gerd oO(but I only need a single 1)
JimmyZ gold point?
not_gerd I need to choose some parameters for tinymt 11:34
I'm lazy, so I'm going with one os these: github.com/jj1bdx/tinymtdc-longbat...048576.txt
JimmyZ I don't like nqp::sleep really
which returns now - begin now
not_gerd: that's tinyMTDC 11:36
not_gerd JimmyZ: dc is just the parameter generator 11:38
jnthn JimmyZ: Well, nqp:: ops also have if and iseq separated out, so yeah, that's just the VM following the way the stuff targetting it works.
JimmyZ: I think it's a consistent approach, at least. 11:39
JimmyZ yeah
jnthn The JVM is *horrible* at this; the way you compile if (a == b) ... differs depending on the type a and b have 11:40
(for int, a combined comp/branch instruction, for long two separate ones, for example)
I guess it was for bytecode compactness, but still... :)
JimmyZ it's good to do if(nextop == if) goto XXX; in eq/lt/gt ops 11:42
heh
11:43 crab2313 joined 11:50 jnap joined 11:57 colomon joined
not_gerd so, tinymt 12:21
should that get its own repository as well?
JimmyZ jnthn: ^^ 12:29
jnthn how tiny is it? :)
not_gerd github.com/MoarVM/MoarVM/tree/tiny...y/tinymt64
dalek arVM: b3e39d2 | jimmy++ | / (10 files):
update sleep as per discuss in #perl6
12:30
not_gerd note that there's a lot of dead code in the C file 12:32
if we don't use a separate repository, I'd remove the codepaths we don't use 12:33
12:41 benabik joined
dalek arVM: 63ec815 | jimmy++ | / (3 files):
fixed test after new sleep
13:15
nwc10 JimmyZ: that test fix being "avoid a hang in t/moar/threads.t" ? 13:16
JimmyZ nwc10: diakopter++ already fixed it 13:17
he addex an exit before hang
*added
dalek Heuristic branch merge: pushed 16 commits to MoarVM/nobank by zhuomingliang 13:32
13:51 benabik joined 13:52 sorear joined
diakopter nwc10: yeah "fixed" ;) 14:02
14:22 segomos_ left
not_gerd diakopter: what'S the status of nobank? 14:33
diakopter not_gerd: just awoke. 14:34
well... yeah.
a bit ago.
not_gerd: I'm in the middle of totally redoing the .p6 tool and Ops.nqp.. for speed 14:35
first attempt was quite poor
not_gerd: I don't understand what you're proposing in that .md 14:41
you're proposing all three of those code blocks? or those already exist?
14:44 FROGGS joined
FROGGS O7 14:45
o/
-.-
not_gerd diakopter: MVM_platform_nanosleep_retry() currently exists under a different name 14:46
thet .md shows how I'd do the factoring going from low to high-level
diakopter what's the current name of MVM_platform_nanosleep_retry 14:48
not_gerd just _sleep() 14:49
diakopter I don't understand why you want to change the nqp op api.. I thought jnthn was saying he wanted to keep it the way it is..
(if you want to change it, I haven't seen the explanation why)
not_gerd diakopter: right now, the nqp::sleep() takes a num64 and returns a num64, like p5 sleep() 14:50
diakopter right
not_gerd on JVM, we always return the requested time and not the actually used time
on MoarVM, we used a microsecond integer argument and returned nothing 14:51
diakopter that was purely experimental
JimmyZ not_gerd: not always
diakopter throwaway
junk
trsah
trash
play
junk code
meaningless
arbitrary
simply for testing purposes
not_gerd what I was getting at that the moarvm op is less insane than the existing one 14:52
JimmyZ on JVM return only in non-sink context
diakopter I had absolutely no regard for what nqp wanted
not_gerd basically, we need t different sleep primitives
diakopter when I made it take microseconds
JimmyZ not_gerd: and now ,MOarvm does the same
diakopter I wasn't trying to make the nqp op
not_gerd one that is interruptible, one that it not
* is
diakopter I was just trying to make a sleep I could test stuff with
so don't use it at all when considering what to do
not_gerd I'm trying to make a sleep that's sane - more so than the existing one 14:53
diakopter "less insane" is just name calling without an explanation why
FROGGS are there already guesses why 56-role is failing?
diakopter I haven't seen that
FROGGS diakopter^^ ?
JimmyZ not_gerd: MoarVM does the same as JVM now. returns on non-sink context
diakopter JimmyZ: don't use what MoarVM does right now at all 14:54
delete the op
in fact, I'll delete it
JimmyZ diakopter: why?
diakopter why are you guys not getting this.... it was totally temporary
not_gerd diakopter: taking float arguments when all low-level apis as well as many users want integers is questionable
diakopter: sure, but imo it was better
JimmyZ diakopter: I already update the sleep same as JVM 14:55
not_gerd parrot just did what p5 does
JimmyZ why you delete it?
is p5 wrong?
not_gerd and everything else went with that
diakopter not_gerd is saying p5 is wrong
not_gerd it's an ok high-level interface
that's why my proposal reproduces it
there are 3 levels: platform abstarction, NQP ops, user-facing API 14:56
what makes sense for one doesn't necessarily do so for the other 2
JimmyZ diakopter: don't delete it until you got go-head from jnthn
diakopter jnthn's already made it very clear what he wants....
JimmyZ wants to delete it? 14:57
diakopter can you just do it the way he wants (like rakudo/parrot) and then propose changing it?
not_gerd diakopter: that is waht I'm doing right now? oO
at the moment, everything matches 14:58
(mostly)
diakopter okay, I thought jnthn was saying above that the moarvm op takes integers
(still)
does the moarvm op not still take integers? 14:59
FROGGS tries to debug 56-role now
JimmyZ diakopter: nope
FROGGS if somebody has suggestion, please please tell
suggestions even
JimmyZ diakopter: I updated it
diakopter: and it can return 0 args in non-slink context 15:00
diakopter ok 15:01
I misread the irclog, mostly.
and I still don't know which commit you meant by "the new sleep commit" 15:02
at irclog.perlgeek.de/perl6/2013-09-04#i_7540834
JimmyZ it takes float args now
diakopter: I meant github.com/MoarVM/MoarVM/commit/fd...ab97f27dfa 15:03
diakopter: and I updated to github.com/MoarVM/MoarVM/commit/b3...a12a0ec50b 15:04
not_gerd diakopter: I renamed the existing sleep to microsleep and implemented p5 semantics
diakopter ok
JimmyZ QAST::MASTOperations.add_core_moarop_mapping('sleep', 'sleep', 0);
not_gerd JimmyZ then removed microsleep and made sleep not return anything
JimmyZ 0 for especially
diakopter ok, somehow I missed all of that
JimmyZ not_gerd: it returns 15:05
diakopter omg.
+ op(@ins, 'const_n64', $r1, nval(1000000));
+ op(@ins, 'sleep', $r1);
JimmyZ not_gerd: QAST::MASTOperations.add_core_moarop_mapping('sleep', 'sleep', 0); here
diakopter why is the test sleeping 2 years? 15:06
not_gerd JimmyZ: github.com/MoarVM/MoarVM/commit/b3...0b#L4R1240
TimToady p5 sleep semantics are just integer seconds, afaik
JimmyZ not_gerd: it return the 0 args when it needs
not_gerd JimmyZ: my code returned the time actually slept
now, it does not
diakopter nwc10: *facepalm* remember that hang in the threads test?
JimmyZ not_gerd: now it returns the args
not_gerd JimmyZ: that's useless 15:07
JimmyZ not_gerd: that's JVM does, and jnthn said should be
not_gerd see irclog.perlgeek.de/moarvm/2013-09-04#i_7540373
JimmyZ: doesn't make it not uselees
JimmyZ not_gerd: irclog.perlgeek.de/perl6/2013-09-04#i_7540865 15:09
diakopter why is the test now sleeping 0.001 seconds??
should be 1,2 seconds, etc
not_gerd sure, we can make all existing backends equally bad 15:10
I want to discuss a better interface and make all backends equally good
JimmyZ not_gerd: great
not_gerd: but we are missing jnthn now
not_gerd I was thinking about 2 use cases: 15:11
1. sleep x microseconds, don't care it we're interrupted
(mostly used for testing, in loops etc)
JimmyZ not_gerd: I'm +1 to your .md gist 15:12
not_gerd 2. simulations: try to sleep x (floating-point) seconds and tell me how long you actually took so I can adjust my state
JimmyZ but needs an +1 from jnthn ...
not_gerd: but -1 to your second one 15:13
the sleep should return how much time it sleeps 15:14
shouldn't
the use can get it themself 15:15
*user
15:16 JimmyZ_ joined
diakopter JimmyZ_: how?? 15:17
JimmyZ_ not_gerd: but the trysleep and sleep are OK
diakopter: my $i = now; sleep(xxx); say now - $i
diakopter JimmyZ_: I agree with not_gerd; it's much better for it to return how long it slept 15:18
not_gerd JimmyZ_: it you want to wait a minimal amout of time, you'll need to wrap that in a loop 15:19
that translates to lots ot ops that need to be dispatched, destroying any accuracy
the problem we're dealing with here is than windows might return early, and posix can be interrupted 15:20
sometimes we don't care about that or actually want that behaviour 15:21
if we do care and need to write NQP code to fix it, we can say goodbye to accuracy until theJIT arrives ;) 15:22
nwc10 diakopter: well, remember that it did hang, and then I updated and rebuilt, and it does not now 15:26
diakopter oh; yes, I just skipped the test
now it crashes :)
(when not skipped)
dalek arVM: 1bd00d5 | diakopter++ | nqp-cc/t/moar/threads.t:
put test sleep timings back the way they were intended
15:36
ingy morning 15:44
diakopter o/ 15:59
JimmyZ_ good night 16:00
16:03 crab2313_ joined
ingy sorry… *moarning* 16:09
:)
diakopter mwahaha 16:22
bah. 16:25
Serialization Error: Unimplemented case of read_ref
dalek arVM/nobank: 613eb95 | diakopter++ | / (8 files):
better, I think
16:33
diakopter would someone do me a favor and time the cross-compiler build from scratch on master branch versus the nobank branch? plz? :) 16:45
16:58 eternaleye joined 17:04 eternaleye joined
diakopter nobank nmake nqpcc time: 193.250 s 17:11
jnthn And master?
diakopter trying
I have a feeling I will be crying soon. 17:12
TimToady lemme guess, something's O(n**m) in the switch parser... 17:14
diakopter heh exponential 17:15
jnthn: master branch: 236.493 s 17:16
\\o/
TimToady maybe m is less than 1 :)
jnthn yay it got le faster!
diakopter++
diakopter: Is our startup time better too?
(in selfhost)
diakopter can't tell, b/c the arr_int deserialization isn't implemented yet
jnthn Oh.
I should prolly eat something, but can do that if you're not sure how 17:17
TimToady well, we're waiting <tap> <tap> <tap>
diakopter but those compile times are *including* all that stuff compiling to .pir and .pbc, which this didn't affect
jnthn But you can prolly steal it from the Parrot deserialization code.
It's a BOOTIntArray that you'll want to be creating.
diakopter figured
lib\\MAST\\Ops.nqp is.... interesting, now. jnthn: I recommend not looking at it until you've had a few 17:18
nwc10 On master, this:
time sh -c 'perl Configure.pl && make && cd nqp-cc && perl Configure.pl --gen-nqp --gen-parrot && make; echo $?'
jnthn diakopter: A few...what? :)
nwc10 real 9m9.763s
user 8m8.884s
sys 0m55.238s
diakopter nwc10: oh. I didn't quite mean "from that granular a scratch" 17:19
just nmake clean
jnthn Maybe nwc10 just did it on a reall slow box :D 17:20
diakopter haha. granular scratch. I kill me.
jnthn: bee-uhs 17:21
nwc10 well, it would be less slow if I used more of the cores
but moarvm itself builds pretty damn fast 17:22
it's the other stuff...
diakopter my pto balance at $work is not benefitting from me being so sick..
nwc10: hey, 3 min, now :)
just a few more days.... "all that other stuff" won't exist.... 17:23
nwc10 there may be a delay on the other answer as I have been volunteered for taxi duty
diakopter (few == 5-30)
jnthn Better than tax duty... 17:24
jnthn goes to acquire nom
bbiab
diakopter goes to a non-Great Physician
nwc10 jnthn: yeah, but then, "should five percent seem too small, be thankful I don't take it all" etc 17:25
17:28 not_gerd joined
nwc10 same command from clean on origin/nobank gives: 17:28
real 8m29.083s
user 7m28.108s
sys 0m55.424s
8% less user time. If I got my maths right 17:30
a.k.a. "Win!"
not_gerd we could probably speed up the moarvm build if our approach to header inclusion was less holistic 17:35
not everyone has these fancy SSD machines ;)
diakopter super star destroyer? 17:36
not_gerd diakopter: of course not 17:40
obviously, I was talking about the 80s rock band from Boston
tadzik Supersonic Drums 17:47
diakopter not_gerd: do you have msvc? 17:50
not_gerd diakopter: I'm using the Windows SDK 17:53
so yes to the compiler, no to the IDE
FROGGS ../moarvm nqp.moarvm t/nqp/56-role.t 18:15
Cannot locate an outer frame for the call
at nqp-src/NQP.nqp:251 (nqp.moarvm:ļæ½l8Y:137)
from nqp-src/nqp-mo.pm:569 (./nqp-mo.moarvm:specialize:29)
what I dont understand, how can the filename be okay when the frame name is garbage?
filename is: cur_frame->static_info->body.cu->body.filename
and frame name is: cur_frame->static_info->body.name
if the cur_frame->static_info->body was moved by a gc run, then both should be crap, right? 18:16
not_gerd FROGGS: actually, both should be ok, I'd guess 18:17
the pointers don't care where they are moved to
FROGGS err, yes 18:19
TimToady fyi, I've just refactored P6's sleep function into three functions 18:22
to better convey programmer intent 18:24
not_gerd wonders how to get the time we overslept in the new factoring 18:25
and if it's actually as useful as I imagined it to be 18:26
TimToady sleep-till returns the actual current time, not the target time
if you're working in absolutes 18:27
sleep-timer could conceivably return a negative Duration, I suppose, except the system calls tend not to support that
anyway, people worried about oversleeping should probably be doing all calculations on an absolute Instant scale 18:29
not_gerd I was thinking that sleep-till could return the time we overslept instead of the current time - but as we had to pass in the start time, we already know it
arnsholt People worrying about oversleeping are going to have lots of problems in general, I think 18:30
IIRC even sleep(3) has limited guarantees on the how long you end up sleeping
TimToady yeah, sleep(3) ends up not being able to guarantee much of anything really 18:31
might wake up earlier, might wake up later... 18:32
not_gerd it's easy for us to guarantee the lower bound (just go back to sleep if we wake early)
arnsholt I guess there's stuff in (2) that can give you better guarantees, but that feels like overkill for a core HLL setting
not_gerd at the upper bound, we can just make it easy to tell the user how off we are 18:33
TimToady but the relative time left is (relatively) useless, really
which is why you should use an absolute target time in that case
FROGGS not_gerd: the pointer for body.name is just bogus as it seems 18:34
diakopter hrm.
TimToady if you rely on the time remaining, and sleep repeatedly, you can suffer drift
drift might not matter for, say, a game, so we do provide the sleep-timer for relative timing
jnthn ooh, the sleep discussion made it up to langauge design level :) 18:35
TimToady but it's not really appropriate when you really want to do something at a particular time
jnthn was gonna try to kick it there :P
FROGGS for the second name 'specialize', I see a pointer addr that I see too in bytecode.c/get_heap_string(), but the messed up body.name has a pointer addr which does not get set in this function
so I am still thinking that the original addr was moved by the gc, the the backtrace printing function still has an old addr 18:36
diakopter FROGGS: make sure to verify there actually was a valid name there at one point
FROGGS diakopter: I trying to do that currently, dunno how atm 18:37
because I dont see a movement of the body or something else in the gc's debug output
s/something else/something else related/ 18:38
lizmat TimToady: to counter drift, I've specced and implemented "interval"
diakopter you might make the gc debugger more verbose.. have it output whether it's moving [a pointer to] an s-table, an mvmobject (and which repr if so), etc 18:39
FROGGS if body.name should be 'create_code' IMO, but bytecode.c/get_heap_string() hit two, so I dont know which maybe is it 18:40
s/^if //
diakopter "hit two"? 18:41
TimToady lizmat: interval looks overly complicated to me
lizmat in implementation or in usage ? 18:42
TimToady implicit knowledge of the last time you called it seems bogus
FROGGS diakopter: I print the string which it fetches including its pointer, and it fetches 'create_code' twice
jnthn FROGGS: What are you debugging, ooc? 18:43
FROGGS jnthn: 56-role
lizmat TimToady: but that is the whole point ?
jnthn FROGGS: ah
TimToady lizmat: much better to encourage the user to use an absolute timescale, I think, in those cases 18:44
jnthn FROGGS: I think there may be some incompletenesses in copy_to of MVMStaticCode
FROGGS "Cannot locate an outer frame for the call" and the body.name is bogus
FROGGS looks
lizmat TimToady: by forcing the user to specify an epoch ?
FROGGS jnthn: do you mean MVMStatiFrame by any chance? 18:45
gah, my 'c'-key is crap :o(
jnthn FROGGS: yes
FROGGS: How did it get so rap?
FROGGS kids plus me having coffee in my left hand while sitting on the couch hacking :/ 18:46
and I need 'c' pretty often
TimToady lizmat: I don't mean "absolute" in any kind of civic sense; I merely mean that any now can serve as a base time for an absolute calculation of Duration 18:49
it could just as easily be the first 'now' called by the program, or the last time we did something with 'now' 18:50
but it's up to the user to remember that 'epoch', not the function
alternately, the can attach it to civic time (translated to an Instant) if they want to 18:51
*they
lizmat I'm not sure I understand the "problem" 18:52
my idea about "interval", is, is that you can specify when the next call to "interval" will "fall through" 18:53
relative to the *previous* time interval was called
TimToady I think that's a smelly design 18:54
too much one purpose
lizmat on a timeline: make sure that calls to "interval" finish at equidistant moments
TimToady and the implicit knowledge would be better explicit
diakopter javascript's setinterval skips the run if the thread is busy
just sayin' 18:55
lizmat fwiw, it has helped me with animations in the past
but maybe it is too much MS-DOS thinking in the modern age :-)
diakopter TimToady: s/sleep-till/sleep-til/ ? 18:56
TimToady there is no word til in English
diakopter TimToady: s/sleep-till/sleep-'til/ ?
:)
"there is no word ____ [oh wait, now there is..] 18:57
"
(I kid, I kid) 18:58
TimToady how 'bout sleep-till returns true if the time is futurey, but false if you're trying to sleep till the past
then you can easily skip a past-due action
next unless sleep-till($nexttime)
lizmat but interval returns false if it didn't wait, so you can already do that 18:59
TimToady so it'll be pretty easy to turn interval into sleep-till, if you just make the timing absolute 19:00
PerlJam Is the sleep-till where you put all of your sleep?
diakopter :) 19:01
lizmat sorry, but I'm still not following the absolute time part
but basically, you want sleep-till to just retiurn Bool ? 19:02
*return
diakopter so sleep-till is simply a timer for the current callstack 19:03
lizmat current thread 19:04
diakopter oh hm nm
lizmat: yeah, but the spec doesn't specify the whole OS thread actually sleeps
the green thread could sleep
lizmat should that matter in the spec ? 19:05
diakopter not imho
lizmat fwiw, interval / sleep-till uses nqp:sleep, so whatever it does, is what happens :-) 19:06
diakopter I just mean the spec doesn't specify whether to use the OS's scheduler for the switching or its own multiplexer if it has one
ingy do-every?
lizmat diakopter: that feels like artistic license for the implementer to me 19:07
ingy lizmat: 1.0 or 2.0 ?
nwc10 it's known that origin/nobank can't run selftest?
ingy ;)
diakopter lizmat: I know.. I'm just defending my use of 'callstack' where you corrected 'thread' 19:08
FROGGS nwc10: I think so... last message I heard was "it compiles now"
diakopter nwc10: yep; it needs vm_int_arr deserialization; I'm doing it now
FROGGS Arr!!
diakopter [copying from parrot] 19:09
jnthn: I'm pushing this #define PARROT_INTERP MVMThreadContext *tc 19:11
*cackle*
TimToady sleep just talks to a different scheduler in a green thread than in an OS thread 19:14
I think that's how Go does it, anyway
green threads have to know how not to block accidentally
diakopter interruptible 19:15
FROGGS jnthn: I don't think it is MVMStaticFrame->copy_to, it gets called six times for nqp.moarvm/frame_name_66
ohh, hmmm 19:16
jnthn: nvm
19:16 foo_bar_baz joined
diakopter wat. 19:18
nmake selftest runs in under 21s 19:19
19:20 jnap joined
dalek arVM/nobank: 732d7e8 | diakopter++ | src/6model/serialization.c:
read_array_int and read_array_str
19:20
jnthn diakopter: What was it before?
It was 24s on my box before... :)
diakopter switches branches and measures 19:21
oh heh. my laptop's on power-saving since it's on battery 19:24
jnthn: 27s 19:26
hooray for deserialized integer arrays
dalek Heuristic branch merge: pushed 24 commits to MoarVM by diakopter 19:28
diakopter merged nobank to master
not_gerd++ JimmyZ++ # lots of wins possible with nobank 19:29
merged master to serialize 19:31
dalek Heuristic branch merge: pushed 73 commits to MoarVM/serialize by diakopter
19:32 cognominal joined
FROGGS before: 0m30.781s now: 0m24.494s 19:33
I like it 19:34
19:44 diakopter joined
diakopter O_O 19:44
19:44 TimToady joined
diakopter jnthn: with --optimize, selftest runs in... 12 seconds. 19:46
FROGGS jnthn: I dont see the incompleteness in MVMStaticFrame... ->name gets REF_ASSIGN-ed for example
in copy_to 19:47
diakopter: and nqp@parrot? 19:48
sure, it runs 4 tests that nqp@moarvm fails but ...
0m13.300s optimized nqp@parrot needs 0m20.311s 19:54
jnthn woo
moar faster
FROGGS and I guess that rakudo should much much faster on moarvm than on parrot then
jnthn Well, maybe... :) 19:55
lizmat can't wait! :-)
FROGGS because of the 6model implementation
jnthn We've not really scratched the surface of what we can do in Moar yet.
FROGGS jnthn: true
nwc10 is MoarVM going to get panda before the JVM? :-)
nwc10 ducks
FROGGS but first it must work (damn you failing tests!)
nwc10: dont think so :o)
jnthn At some point I should hide for a week with loads of beer and design/implement the REPR specialization stuffs... 19:56
Alas, autumn tends to be the time of year where good chunks of time are hard to come by...
FROGGS jnthn: do you thought of the name 'BeerVM' once?
:/
jnthn Didn't consider that one. :) 19:57
.oO( Best Ever Evaluator for Rakudo VM )
FROGGS *g*
FROGGS orders the official BeerVM t-shirt 19:58
ahh, and t
meh
it wouldn't be 6model but 6pack based
jnthn Not sure if I mentioned this before, but the other name I was pondering at one point was Broom (Build Runtime Out Of MOP) :) 19:59
The code woulda been very clean
And of course, potential for puns on mark-and-sweep GC :)
FROGGS hehe 20:00
and a Mopp is a Broom in germany
jnthn oh wow!
FROGGS Wischmopp
20:01 tgt joined
jnthn Wisch I'd know that... :) 20:01
*known
diakopter :P
lizmat just goes to show that GC is not just wischful thinking 20:02
jnthn No, but rooting sometimes is... :)
jnthn hopes we've got most of those issues ironed out now... :)
TimToady gets board and wanders off... 20:03
nwc10 if pressed, I'm sure we can find more puns 20:10
TimToady that one was kinda flat
jnthn I'm sure we can iron out the pun quality 20:11
TimToady wrinkles his nose
nwc10 the punning will continue until morale in-crease-s 20:12
TimToady is now steamed 20:13
lizmat I think it's time to fold
nwc10 :-)
PerlJam
.oO( ... and now the puns switch to poker themed ;)
20:16
jnthn I wouldn't bet on it... 20:17
FROGGS I'm all-in for this 20:20
even if the odds are against it
jnthn
.oO( If you trip while carrying french fries in a casino, the chips are truly down... )
20:21
lizmat refrains from mentioning garbage collection 20:23
FROGGS hehe
lizmat: you'd say that a guy comes and does a GC run? 20:24
lizmat I wisch
PerlJam lizmat++ 20:26
not_gerd good night o/ 21:59
dalek arVM/serialize: 1d46d67 | diakopter++ | src/ (4 files):
progress. nice commit message.
23:41
arVM/serialize: c955075 | diakopter++ | src/ (8 files):
emphasize the dual of frame_inc_ref by assigning null from dec_ref's return
23:52