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