|
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 | ||