Camelia, the Perl 6 bug

IRC log for #moarvm, 2013-09-17

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

All times shown according to UTC.

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

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