|
github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today Set by moderator on 8 September 2013. |
|||
|
00:08
Mouq joined
00:39
jnap joined
01:16
FROGGS_ joined
|
|||
| JimmyZ | . | 01:51 | |
| yoleaux | 16 Sep 2013 17:31Z <not_gerd> JimmyZ: after I made REPRs static, the only thing missing from static-repr is a way to register new REPRs at runtime | ||
| 16 Sep 2013 17:32Z <not_gerd> JimmyZ: s/static/const/ | |||
| JimmyZ | .tell not_gerd how about 'const MVMREPROps_Attribute *attr_funcs;' => 'MVMREPROps_Attribute attr_funcs;' etc in struct MVMREPROps? | 02:32 | |
| yoleaux | JimmyZ: I'll pass your message to not_gerd. | ||
| JimmyZ | .tell jnthn how about 'const MVMREPROps_Attribute *attr_funcs;' => 'MVMREPROps_Attribute attr_funcs;' etc in struct MVMREPROps? | ||
| yoleaux | JimmyZ: I'll pass your message to jnthn. | ||
|
03:06
benabik joined
|
|||
| diakopter | . | 03:08 | |
| yoleaux | 16 Sep 2013 20:43Z <FROGGS> diakopter: Are the made-up NFG codepoints predictable or just allocated in usage-order? because if they are predictable, this could become the industry standard of handling of graphemes | ||
| diakopter | home, ish | ||
| JimmyZ | \\o/ | 03:11 | |
| diakopter | FROGGS_: i dunno. timo**2 has it right | 03:30 | |
|
04:43
tba joined
05:37
foo_bar_baz joined
05:41
larks joined
06:03
gshank_ joined
06:15
tokuhirom_ joined,
rblackwe_ joined
06:29
_ilbot joined
|
|||
| moderator | github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today | ||
| JimmyZ | It's bad that 'static const S s = { 'a', 'b' }; static const T t = { 1, 2, 3, s };' doesn't work in C :( | 06:45 | |
| error: initializer element is not constant | 06:46 | ||
|
06:53
lizmat joined
06:59
dag_ joined
|
|||
| dag_ | JimmyZ: True, but at least you can write static const T t = { 1, 2, 3, { 'a', 'b' } }; | 07:01 | |
| arnsholt | If you want both to share a definition, you can always use a macro | 07:17 | |
| JimmyZ | well, I want to use an extern S s | 07:18 | |
| which contains static function pointers | 07:19 | ||
| jnthn | JimmyZ: Yes, we can flatten the table, just need to remember to update the code that shoves in defaults. | 07:24 | |
| JimmyZ: To check per function, not per section. Which is probably a good thing anyway... | 07:25 | ||
|
07:30
not_gerd joined
|
|||
| not_gerd | o/ | 07:30 | |
| yoleaux | 02:32Z <JimmyZ> not_gerd: how about 'const MVMREPROps_Attribute *attr_funcs;' => 'MVMREPROps_Attribute attr_funcs;' etc in struct MVMREPROps? | ||
| not_gerd | jnthn: note that defaults are now manually added on definition since I made the REPROps structures const | 07:31 | |
| JimmyZ | per section? | ||
| not_gerd | it wasn't really necessary, but has the benefit of ensuring thread safety and you'll get nice segfaults if you tried to corrupt it | 07:32 | |
| JimmyZ: I'd flatten the sub-vtables around but put them into the ops table by value as you wanted to do | 07:33 | ||
| JimmyZ | I want to do this because it save a mov op, 'mov %rax,0x10(%rbx); movb $0x62,(%rax);' => 'movb $0x62,0xc(%rax)' | ||
| not_gerd | then make the default implementations for the functions public and provide a macro to intialize the sub-vtables in a single step | 07:34 | |
| I'd *keep* the sub-vtables around | |||
| JimmyZ | not_gerd: yes, I just do 'MVMREPROps_Boxing *box_funcs' => 'MVMREPROps_Boxing box_funcs' | 07:35 | |
| I'd flatten the sub-vtables around but put them into the ops table by value as | 07:36 | ||
| you wanted to do | |||
| not_gerd | good | ||
| JimmyZ | ^^ not_gerd, I can't get it | ||
| not_gerd | ? | ||
| JimmyZ: basically, I just agreed with what you want to do | 07:37 | ||
| JimmyZ | not_gerd: ok, I have some problem to follow you, due to my poor english | ||
| :P | |||
| not_gerd | you'll then have to convert default_bind_pos() in reprs.c to MVM_REPR_DEFAULT_BIND_POS() so you can initialize the structues | 07:38 | |
| JimmyZ | not_gerd: Yes | ||
| I wanted to use extenr const, but got 'error: initializer element is not constant' | |||
| not_gerd | JimmyZ: they need to be constant expressions (function names, literals, enums) | 07:39 | |
| marking something const in C doesn't make it a 'real' constant | 07:40 | ||
| JimmyZ | aye, I know it works on C++ | ||
|
07:41
odc joined
|
|||
| not_gerd | well, C != C++ (except if C in nan or inf ;)) | 07:42 | |
| JimmyZ | hehe | ||
| not_gerd | actually, nan != nan, so I guess that leaves inf | ||
| JimmyZ | not_gerd: you have plans to add a way to register new REPRs at runtime? | 07:46 | |
| I will do the flattten ;) | |||
| not_gerd | JimmyZ: I can do it | 07:50 | |
| probably not today, though | |||
| JimmyZ | great | 07:51 | |
| flatten will be a big big patch | 07:52 | ||
|
08:18
dolmen joined
|
|||
| dalek | arVM/static-repr: a39359a | jimmy++ | src/ (37 files): flatten struct MVMREPROps |
08:51 | |
| arVM/static-repr: 10d4d3b | jimmy++ | src/moarvm.c: Fix GCC build |
08:58 | ||
| arVM/static-repr: da54993 | (Gerhard R)++ | src/6model/reprs.c: Simplify repr_registry allocation |
09:14 | ||
| JimmyZ | oh, I was mising 'provide a macro to intialize the sub-vtables in a single step' part .. | 09:43 | |
|
09:44
foo_bar_baz joined
|
|||
| JimmyZ will do it later | 09:47 | ||
| not_gerd | JimmyZ: it would have saved some boilerplate | 09:50 | |
| now that you've already done the work, no pressure ;) | 09:51 | ||
| JimmyZ | not_gerd: making it macro will make dyn repr easiler | 09:52 | |
| :P | |||
| and for compatibility | 09:53 | ||
| dalek | arVM/static-repr2: 835c63b | jimmy++ | src/ (36 files): flatten struct MVMREPROps |
11:40 | |
| arVM/static-repr2: 3c59926 | (Gerhard R)++ | src/6model/reprs.c: Simplify repr_registry allocation |
|||
| JimmyZ | .tell not_gerd I switched to static-repr2 branch, and removed static-repr branch | 11:43 | |
| yoleaux | JimmyZ: I'll pass your message to not_gerd. | ||
|
12:32
benabik joined
12:35
grondilu joined
|
|||
| diakopter | jnthn: ping | 12:57 | |
| in-person non-impromptu meetings, the bane of productivity, ESPECIALLY recurring ones | 12:58 | ||
| name for a software company: Bad Pointer | 13:01 | ||
| name for a software company: Dirty Reader | 13:02 | ||
| name for a software company: Stale Cache | |||
| name for a software company: Proven to Halt | 13:03 | ||
| name for a software company: Runaway Contention | 13:04 | ||
| name for a software company: Concurrent Read | |||
| name for a software company: Cache Miss | |||
| name for a software company: Factorial Complexity | 13:05 | ||
| dalek | arVM/static-repr2: 0ff303a | jimmy++ | src/6model/reprs/ (7 files): Remove needless comma |
||
| diakopter | name for a software company: Merge Conflict | 13:06 | |
| name for a software company: BitRot13 Encoding | |||
| FROGGS | diakopter: what do you think of some sort of hackathon this week to get moarvm into nqp? | 13:07 | |
| diakopter | name for a software company: Unending Page Faults | ||
| FROGGS | diakopter: I'd stay awake a night here to support you if you have time... | ||
| diakopter | busy $work week | 13:08 | |
| FROGGS | ohh, okay :o( | ||
| diakopter | plus, it's not blocked on me really | ||
| JimmyZ | Cheerleaders | ||
| diakopter | name for a software company: Code Bloat | ||
| FROGGS | diakopter: true, but since you offered to do it I thought it is still your wish to do it :o) | 13:09 | |
| diakopter | name for a software company: Featuritis | ||
| I did?? | |||
| weird | |||
| FROGGS | on sunday, no? | ||
| diakopter | name for a software company: Design Smell | ||
| JimmyZ | diakopter: you want to create a company? | 13:10 | |
| diakopter | name for a software company: Detached Screen | ||
| name for a software company: Nonterminating Halt | 13:11 | ||
| name for a software company: Single Character Variables | 13:12 | ||
| name for a software company: Daily Releases | |||
| name for a software company: Single Committer | 13:13 | ||
| name for a software company: Thousands of Branches | 13:14 | ||
| FROGGS | diakopter: did you meant something else by the term 'selfhosting' ? | ||
| diakopter | name for a software company: Single Customer | ||
| FROGGS | diakopter: can you stop that please? | 13:15 | |
| diakopter | k | ||
| JimmyZ: I don't know | |||
| FROGGS: I don't remember that conversation | |||
| FROGGS | this one: irclog.perlgeek.de/perl6/2013-09-15#i_7588196 | ||
|
13:16
jnap joined
|
|||
| FROGGS | I remember because I was kinda exited :o) | 13:16 | |
| excited* | |||
| diakopter | oh heh... I thought it was obvious I was joking :( | ||
| FROGGS | :/ | ||
| JimmyZ | FROGGS: irclog.perlgeek.de/perl6/2013-09-15#i_7588212 | ||
| diakopter | "oh heh, yeah, joking" | ||
| FROGGS | I thought this one was about timotimo's comments | 13:17 | |
| well, w/e | |||
| diakopter | no; I was serious about that; self-hosting doesn;t depend on those two things | ||
| sorry for the ambiguity | |||
| I'm not capable of the next few steps really | 13:20 | ||
| 1. test and debug serialization | |||
| FROGGS | me neither | ||
| diakopter | er | ||
| actually that's wrong; I forgot that serialization doesn't help self-hosting complete, technically | 13:21 | ||
| jnthn mentioned the remaining things; I forget them | |||
| I'm still focused on my backlog | |||
| dalek | arVM/gcorch: e85eaba | diakopter++ | src/ (9 files): wip7 |
13:22 | |
| arVM/gcorch: b1f216f | diakopter++ | src/gc/orchestrate. (2 files): wip8 |
|||
|
13:44
benabik joined
|
|||
| diakopter | masak: honestillusion.com/blog/2013/09/12/...r-for-NET/ | 13:54 | |
|
13:58
FROGGS joined
|
|||
| diakopter | yay, the gcorch branch now actually makes it to global destruction phase... every time I've tried it since the last changes... | 14:01 | |
| tadzik | \\o/ | 14:02 | |
| diakopter | .ask not_gerd I thought previously msvc was statically linking to its microsoft .dll/.lib dependencies...? could you fix it (also if it wasn't previously, could you make it do it by default, but optional?) | 14:05 | |
| yoleaux | diakopter: I'll pass your message to not_gerd. | ||
| diakopter | --no-static-link or something? | ||
| that should remove 30-40ms of startup time... I think | |||
| .tell jnthn 100 gc runs in total run time 280ms, including 4 threads allocating 1e6 each | 14:06 | ||
| yoleaux | diakopter: I'll pass your message to jnthn. | ||
| diakopter tries 8 threads | 14:07 | ||
| .tell jnthn that's, like, far less than 1ms per gc run | 14:08 | ||
| yoleaux | diakopter: I'll pass your message to jnthn. | ||
| diakopter | ('course, very small alive heap...) | ||
| tadzik: of course, it's dying in global destruction.. | 14:10 | ||
| tadzik | oh | ||
| diakopter | but on the other hand, it's a major improvement of the mess before | 14:11 | |
| tadzik | oh, ok, I get it now | ||
| diakopter | really commute & | ||
| masak | diakopter: I've seen Shakespeare before. it's a cute language, but of course extremely unwieldy. | 14:13 | |
| diakopter: it would be fun to have a Shakespeare compiler on Moar, I guess. :) | |||
| tadzik | Moar Shakespeare | 14:14 | |
|
14:16
jnap joined
|
|||
| jnthn | I'm taking a long weekend vacation this upcoming weekend (so expect to be mostly afk, unless something untoward happens like constant awful weather). But should be able to give some decent tuits to getting the Moar backend into the NQP repo after that. | 14:18 | |
| FROGGS | yay :o) | 14:19 | |
| jnthn | My late-September teaching load is currently non-existent. I do have $dayjob tasks, but not so tuit-conversion-ability-draining as teaching :) | 14:20 | |
| diakopter | anyone notice my quicksort_maker in the 2nd-to-last commit? | 14:33 | |
|
14:34
Mouq joined
|
|||
| diakopter | erm, it would help if I had done it right.. | 14:34 | |
| ergh. | 14:36 | ||
| major fail | 14:37 | ||
| "No, I'm an Admiral" | |||
| yeah, there are, like, several major problems there | 14:39 | ||
| doh. | |||
| jnthn | Commander in Chief Fail P | 14:41 | |
| *:P | |||
|
14:42
woolfy1 left
|
|||
| JimmyZ | diakopter: make selftest works well in your branch? | 14:58 | |
| diakopter | haha | 15:02 | |
| surely you jest | |||
| JimmyZ | :-) | 15:03 | |
|
15:16
TimToady joined
15:30
cognominal joined
|
|||
| dalek | arVM/gcorch: 7c54918 | diakopter++ | src/gc/run.c: Actually do the generic quicksort macro correctly.... O_O |
15:30 | |
| diakopter giggles maniacally at 6guts.wordpress.com/2013/09/08/a-mo...mment-1082 | 15:42 | ||
| thanking a bot for repartee... lolololol | 15:43 | ||
| TimToady | but who's this Tim Toady personage? | 15:44 | |
| JimmyZ | yolaux ? | 15:46 | |
| benabik | typo of yoleaux, probably. Tab-completion of IRC nicks rarely works in web pages. | 15:47 | |
| diakopter | jnthn: the global destrution phase is a great comprehensive test of the whole gc system..... :/ | ||
| jnthn | :) | 15:48 | |
| benabik | yoleaux: Why don't you give me any witty repartee? | ||
| jnthn | .tell yoleaux to be wittier | 15:49 | |
| yoleaux | jnthn: Thanks for the message. | ||
| JimmyZ | .tell yoleaux you have a message | 15:50 | |
| yoleaux | JimmyZ: Thanks for the message. | ||
| TimToady | .tell yoleaux This cannot be construed as a message. | 15:52 | |
| yoleaux | TimToady: Thanks for the message. | ||
|
16:30
benabik joined
16:36
colomon joined
16:40
lizmat joined
16:58
tba joined
16:59
dolmen left
17:13
rurban joined
|
|||
| rurban | diakopter: rsms.me/2012/05/14/hue A performant immutable & persistent vector implementation | 17:14 | |
| lockfree array access, via refcounted trie | 17:16 | ||
| jnthn | Does it support push/pop/shift/unshift/splice? | ||
| rurban | only changing the tail, not the head. but adding this should be simple, since it's a trie. | 17:18 | |
| github.com/rsms/hue/blob/master/sr...e/Vector.h | 17:19 | ||
| jnthn | yeah, was just looking through that... | ||
| rurban | and this is the original from clojure: github.com/clojure/clojure/blob/ma...ector.java | 17:22 | |
| hashes are similar | 17:23 | ||
| he explains it here: www.youtube.com/watch?v=sp2Zv7KFQQ0 | 17:26 | ||
| like: immutable vectors and hashes, but copies share the same parts | |||
| so subtree parts are refcounted | 17:27 | ||
|
17:43
woolfy joined
|
|||
| dalek | arVM: c9e0d3b | jnthn++ | src/6model/serialization.c: sc_elems comes from root_objects. |
18:01 | |
|
18:10
Mouq joined
19:19
rurban joined
19:26
lizmat joined
|
|||
| diakopter | uh, github fail? | 19:26 | |
| did I break github? | 19:27 | ||
| lizmat | status.github.com | 19:28 | |
| jnthn | First 2 tests of t/serialization/01-basic.t pass with the above patch, btw :) | 20:03 | |
| diakopter | wat. | ||
| jnthn gets to work on the next ones | |||
| diakopter goes to look at the tests | 20:04 | ||
| oh heh. | |||
| empty. | |||
| jnthn: yeah, you're gonna find it's, um, pretty naively ported | 20:05 | ||
| jnthn | diakopter: that's OK, this is still better for me than having to do it from scratch :) | 20:06 | |
| diakopter | jnthn: what do you think about that non-compact-storage trie vector | ||
| jnthn | diakopter: Didn't have chance to look too deeply yet | 20:07 | |
| Just quickly scanned the code | |||
| Doesn't help I'm not fluent in C++ :) | |||
| diakopter | since those 32-slot arrays are refcounted, they can actually probably fit in 33 words each | ||
| using a custom allocator | 20:08 | ||
| so not too huge overhead | |||
| jnthn: a thought on the jit... we don't need to follow C calling conventions, right? so theoretically we could make generic ready-to-inline routines that know how to rearrange their registers from the previous context so code doesn't need duplicated for plain old inlining.. | 20:11 | ||
|
20:19
rurban joined
|
|||
| jnthn | say(nqp::chars($serialized)); | 20:20 | |
| 11258999068426240 | |||
| um. :) | |||
| diakopter: (JIT) sounds reasonable. I suspect we could "start simple" and just populate the args buffer in the first cut, though. | |||
| Try walking before we try to sprint, etc. | 20:21 | ||
| diakopter | ..but you could permanently accustom your legs too much to walking.. | 20:22 | |
| try flying first | |||
| then sprinting | |||
| 11258999068426240 | 20:28 | ||
| how much memory do you have?!??!?! | 20:29 | ||
| jnthn | :D | ||
| I like big RAM and I cannot lie... | |||
| diakopter | well my employer has 100PB or so... but that's disk mostly | ||
| but 11PB of ram would be expensive | 20:30 | ||
| dalek | arVM: 474fd77 | jnthn++ | / (5 files): nqp::deserialize needn't have a result reg. |
||
| arVM: 575255c | jnthn++ | src/6model/serialization.c: Make sure serialize doesn't run into GC issues. We now pass the first 3 tests in serialization/01-basic.t. |
|||
| FROGGS | \\o/ | 20:31 | |
| jnthn++ | |||
| jnthn | And the next thing is "Missing serialize REPR function" | ||
| diakopter | oh yeah. didn't do any of those. | ||
| jnthn | :) | 20:32 | |
| FROGGS | jnthn: what do we need in order to self-host nqp? | ||
| err, I mean what is left todo | |||
| jnthn | FROGGS: We already self-host, just about. | ||
| FROGGS | :o) | ||
| jnthn | FROGGS: Bootstrap is next :) | ||
| FROGGS | right | ||
| jnthn | FROGGS: That is, getting self-hosting NQP to build itself. | ||
| We certainly need the serialization stuff. | |||
| Beyond that, we need to fix bugs. :) | |||
| Like the roles one :) | |||
| FROGGS | k | ||
| so no larger pieces missing? | 20:33 | ||
| jnthn | Not afaik | ||
| diakopter | I found a TON of bugs that I've fixed in the gcorch branch.... but no idea if I introduced any others yet | ||
| FROGGS | awesome | ||
| jnthn | Oh, write bytecode to disk... | ||
| But that's not a large piece, that's 30 minutes or so of work. | |||
| To make --target=mbc work | |||
| Feel free to grab that task | |||
| FROGGS | hmmm, that sounds almost doable | 20:34 | |
| jnthn | It is, just find the undone stuff in src/mast/driver.c | ||
| FROGGS | I know I will need days to get it done, but I'll try to do that... (starting tmw, since my brain is already in bed) | 20:35 | |
| diakopter | better go scoop it up | 20:36 | |
| jnthn | boom segv! | 20:38 | |
| diakopter | better than formatting your hard disk | ||
| FROGGS | shouldn't take too long on an ssd | 20:39 | |
|
20:40
colomon joined
|
|||
| dalek | arVM: d21c69f | jnthn++ | src/6model/reprs/P6 (3 files): Implement serialize for a few basic REPRs. |
20:44 | |
| FROGGS | gnight pals! | 20:45 | |
| diakopter | o/ | 20:46 | |
| jnthn | o/ FROGGS | ||
| lizmat | gnight FROGGS | ||
|
20:49
woolfy left
21:10
FROGGS joined
|
|||
| dalek | arVM: bccf53e | jnthn++ | src/6model/bootstrap.c: Add some BOOT* into the core SC. |
21:26 | |
| arVM: 99b27e4 | jnthn++ | src/core/interp.c: nqp::scsetobj should push STable if unowned. |
|||
| arVM: bc996d1 | jnthn++ | src/6model/reprconv. (2 files): Add shift repr convenience funcs. |
|||
| arVM: 3426400 | jnthn++ | src/6model/serialization.c: Fix BOOTHash serialization. |
|||
| jnthn | Well, gets things a bit closer... :) | 21:32 | |
| timotimo | moarvm is finished now, right? | 21:38 | |
|
21:46
rurban joined
|
|||
| jnthn | P | 21:48 | |
| :P | |||
| timotimo | ::P | 21:52 | |
| are we making emoticon based unary numbers? | 21:53 | ||
|
22:02
japhb joined
22:03
rurban joined
|
|||
| masak | I've always had a mild dislike of the term "unary numbers". it's the only numbers base I know that doesn't follow the same rules as the other numbers bases. | 22:16 | |
| there are some strange numbers bases out there, like base-2i numbers. they all follow the same rules. | 22:17 | ||
| base-1 numbers don't make sense, and "unary numbers" are something else, something that the human mind feels makes enough sense to put in that spot. | |||
| instead, it should be called "making a set of scratches with the same cardinality as something else". :) | 22:18 | ||
| </rant> | 22:19 | ||
| jnthn | +00000 | ||
| :P | |||
| timotimo | %) | 22:22 | |
| masak | the fact that unary requires two symbols is a big tell, IMO. | 22:23 | |
|
23:20
cognominal joined
23:35
Mouq joined
|
|||
| [Coke] | So, _I's should not be documented as taking Ints. better shorthand: Any? | 23:38 | |
| where is nqp::ln defined for the jvm? | 23:43 | ||
| oh. that's where. (it's NYI!) | 23:44 | ||
| [Coke] opens a ticket for it, in case someone wants that before he loops back. | 23:46 | ||
|
23:47
Mouq joined
|
|||
| [Coke] | ... hey, this is the wrong window. | 23:48 | |