|
github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today Set by moderator on 8 September 2013. |
|||
|
01:33
woosley joined
05:36
Woodi joined
|
|||
| diakopter | ... | 06:05 | |
| JimmyZ | how many hours left to push nfg? | 06:10 | |
|
06:44
FROGGS joined
|
|||
| diakopter | ack | 06:46 | |
| still embroiled in gc. | |||
| sorear | there's a deadline? | ||
| diakopter | well, self-imposed | ||
| FROGGS | morning o/ | 07:00 | |
| diakopter | hi | 07:01 | |
| JimmyZ | how many hours left to push nfg? | 07:02 | |
| jnthn | will nfg be pushed soon? | 07:05 | |
| yoleaux | 8 Sep 2013 22:28Z <FROGGS> jnthn: I think I got something, it does not resume though :/, it dies as if it does not find the handler in the second run: gist.github.com/FROGGS/d006980f3c95b53364ca | ||
| jnthn | ;) | ||
| morning, #moarvm :) | |||
| diakopter | sigh. | 07:06 | |
| FROGGS | someone should really push nfg :P | 07:07 | |
| ohh, what a magical number of users here... | |||
| diakopter | how many? | ||
| JimmyZ | Is it really really hard to type `git push orgin nfg:nfg`? | ||
| diakopter | yes | ||
| JimmyZ | how about copy my one | 07:08 | |
| :P | |||
| diakopter | enough teasing please. | ||
| if the code isn't in a state that's usable by someone else, all the work will have been wasted. | 07:09 | ||
| FROGGS | diakopter: 42 | 07:10 | |
| diakopter | because it's so far diverged from a commit many many months ago | ||
| the best person to re-merge it is I | |||
| the worst that could happen is someone wastes their own time making non-progress trying to understand it enough to integrate it | 07:11 | ||
| FROGGS | true I guess | ||
| JimmyZ | FROGGS: Did you get how to use msvc debugger? | 07:12 | |
| diakopter | and frustration and annoyance could result, and going down wrong paths of fixing | ||
| arnsholt goes to vote | |||
| Then more JVM native call! | |||
| FROGGS | JimmyZ: I have still the express version installed, and this one does not have devenv | ||
| JimmyZ | FROGGS: just open a project, and select moarvm.exe | 07:13 | |
| diakopter | *headdesk* | ||
| FROGGS | JimmyZ: and, I think bisecting might be a better choice for this issue because even gdb does not produce a useful backtrace | ||
| diakopter | JimmyZ: he can't "open a project" without the program to open it with | ||
| wait. | 07:14 | ||
| FROGGS | diakopter: the VS express has a GUI | ||
| diakopter | oh. | ||
| that's devenv.exe | |||
| what else could it be named? | |||
| you said you didn't have a devenv.exe | |||
| JimmyZ | I always open the project and select moarvm.exe, and I can use msvc debuuger | 07:15 | |
| FROGGS | I'll install VS no-express after $work | ||
| JimmyZ | FROGGS: I'm using express too | ||
| I still don't know what your problem | |||
| FROGGS | diakopter: the gui is called VCExpress.exe | 07:16 | |
| err, VS... | |||
| diakopter | ah. | ||
| FROGGS | The program "[1076] moarvm.exe: system own" exited with Code 1 (0x1). | 07:19 | |
| FROGGS changes the working dir and adds args | |||
| ohh, nice | 07:20 | ||
| exception in MVMuint64 MVM_repr_elems(MVMThreadContext *tc, MVMObject *obj) { | |||
| return REPR(obj)->elems(tc, STABLE(obj), obj, OBJECT_BODY(obj)); | |||
| } | |||
| JimmyZ | FROGGS: Do you use it by open a project and select moarvm.exe? | 07:21 | |
| FROGGS | JimmyZ: I openend moarvm.exe as a project | ||
| JimmyZ | FROGGS: yes, I did this way too | ||
| FROGGS: you got this, and look the bt, you will find intstruction are all zero | 07:22 | ||
| FROGGS | +\t\tobj\t0x00000000 {header={...} st=??? pad=??? }\tMVMObject * | 07:23 | |
| +\t\ttc\t0x00382b30 {nursery_alloc=0x00d3c12c nursery_alloc_limit=0x00db0020 gc_status=0 ...}\tMVMThreadContext * | |||
| damn it, I'd like to change the language to english... it hard to understand german in this context | 07:25 | ||
| JimmyZ | ... | ||
| JimmyZ is using chinese version.. | |||
| timotimo | LC_ALL=C | 07:26 | |
| FROGGS | hehe | ||
| timotimo | oh wait, windows ... :( | ||
| i guess you'll have to get a computer from the UK then | |||
| FROGGS | if you see the word "Stapelrahmen" you have to translate it to english to know what it means | ||
| timotimo | hahahaha | ||
| one of our profs calls has this word "kellerabzug". please indulge me and guess what it could mean. | 07:27 | ||
| FROGGS | timotimo: no, you sort of can switch the language, you can even download language packs for polski for example, but I dont find the option to switch | ||
| timotimo | you switch by installing a different windows? | ||
| FROGGS | nah | ||
| kellerabzug... hmmm | |||
| diakopter | collaborator? | 07:28 | |
| timotimo | there's kind of a twisted logic to it | ||
| FROGGS | like base trigger or something? | ||
| timotimo | not at all | ||
| diakopter | heh. | ||
| FROGGS | timotimo: do tell, please | 07:29 | |
| timotimo | stack trace. | ||
| FROGGS | bah | 07:30 | |
| yeah, but I understand now | |||
| >.< | |||
| timotimo | because a stack is a "kellerspeicher" and a print-out is sometimes called "abzug" | ||
| although the first time i heard that word the "abzug" part reminded me more of these emergency smoke removal thingies you find in buildings | |||
|
07:31
odc joined
|
|||
| FROGGS | ARGLBARGL | 07:32 | |
| the language selector shows: <german>, <like windows> | |||
| timotimo | %) | ||
| dalek | arVM/gcorch: f17b31c | diakopter++ | / (13 files): wip3 |
07:38 | |
| JimmyZ | FROGGS: I think the introductions is zero because nqp pass frames with zero instruction. but debuging nqp is hard to me | 07:39 | |
| FROGGS | hmmm | 07:40 | |
| JimmyZ | the hard part to me is waiting for compiling :( | 07:41 | |
|
07:43
not_gerd joined
|
|||
| not_gerd | o/ | 07:43 | |
| FROGGS | hi not_gerd | 07:44 | |
| not_gerd | I played around with C11 this weekend | 07:46 | |
| you can do some nifty things with _Generic | |||
| eg a type-safe printf, or automatically matching C types with dynamically-types runtime types | |||
| also wrote gist.github.com/gerdr/7bf984dbc8b365d13330 because I finally got annoyed enough with ALT-Tab | 07:51 | ||
| not much on the moarvm front, though | |||
| diakopter: what would be most useful for me to do - build system (shared/static), bc validation, nativecall, something else? | 07:52 | ||
| JimmyZ | seflhost! | 07:53 | |
| *self | |||
| kidding :) | 07:54 | ||
| diakopter | not_gerd: I'd guess .. hmm. | 08:04 | |
| *thinks a bit* | 08:05 | ||
| actually if you want to start diving into debugging the serialization tests.... | |||
| that would save jnthn the most time | |||
|
08:06
not_gerd_ joined
|
|||
| diakopter | not_gerd_: you missed my reply maybe | 08:07 | |
| not_gerd_ | diakopter: saw the logs | ||
| diakopter | .tell raiph www.reddit.com/r/perl/comments/1lum...ed/cc3swfq | ||
| yoleaux | diakopter: I'll pass your message to raiph. | ||
| not_gerd_ | I can look into the serialization tests later today | 08:08 | |
| FROGGS | I think it dies on winxp 32 when compiling op no_op | 08:12 | |
| not_gerd | who needs that op anyway - just get rid op it ;) | 08:13 | |
| *of | |||
| FROGGS | *g* | ||
| diakopter | heh. | ||
| JimmyZ | I thought parrot's noop was used by rakudo/nqp | 08:17 | |
| dalek | arVM: f6d1e4d | (Tobias Leich)++ | src/core/interp.c: declaration before code |
08:20 | |
| FROGGS | -.- | 08:21 | |
| FROGGS-- | |||
| timotimo | hm. is that just convention or is there something important about it? | ||
| not_gerd | timotimo: MSVC only supports bits and pieces of C99 | 08:22 | |
| declaration after code is not (yet?) one of them | 08:23 | ||
| the reply to C coders from Microsoft has been 'just use C++' | |||
| timotimo | >_< | ||
| i know! write moarvm in c++, so you have a super sophisticated object system to use for perl6! | 08:25 | ||
| FROGGS | \\o/ let's do it now! | 08:26 | |
| JimmyZ | Creating a C project is not as easy as Creating a C++ project in MSVC ... | ||
| diakopter | *wham* *wham* *wham* | 08:33 | |
| jnthn | wow, I go to teach and when I come back you're talking about C++ :P | ||
| timotimo | diakopter: wake me up before you go go? | ||
| diakopter | gogo? | ||
| jnthn | We could go Go... :) | 08:34 | |
| timotimo | go-go, apparently | ||
| FROGGS | in src\\mast\\compiler.c line 560 o->operands is NULL | ||
| jnthn: we will convert everthing to C++ when you are not looking ò.ó | 08:35 | ||
| MUHAHHAHAAHA | |||
| timotimo | just replace every puts with cout <<; that's all, right? | 08:36 | |
| JimmyZ | replace all struct to class XXX { } | 08:37 | |
| timotimo | ah, that too, yes | ||
| oh, and replace ".h>" with ">" in includes | |||
| oh, actually | |||
| <(.*).h> with <c\\1> | |||
| probably have to wrap it between #try and #except file-not-found | 08:38 | ||
| not_gerd | timotimo: using *.h is fine - it is just guaranteed to place the symbols in the top namespace | ||
| jnthn really does not know C++ :) | |||
| not_gerd | c* may or may not do so | ||
| JimmyZ | well, I know nothing about C++ :P | ||
| jnthn | I drink with the C++ teacher at $dayjob enough to know lots of crazy things about it... :) | 08:39 | |
| timotimo | don't you mean c\\\\\\? | ||
| not_gerd | ie if you #include <cstdio>, you *should* use std::puts() | ||
| jnthn | timotimo: Is that a programming language you can't escape from? :P | ||
| arnsholt | jnthn: Have you read the C++ FQA? | ||
| jnthn | arnsholt: A while back :) | 08:40 | |
| timotimo | tee hee | ||
| JimmyZ | I haved read part of C FQA | ||
| jnthn | not_gerd: You could do the serialization stuff in so far as there are tests for it, so it's "just" makign them pass...but it may not be the most -Ofun thing to do :) | ||
| bc validation is important from an error detection / security standpoint :) | 08:41 | ||
| arnsholt++ has written some tests, iiuc, that should make nativecall stuff easier to check is working too...it's certainly not critical path, but we'll need it before Rakudo on Moar is useful for a bunch of stuff that depends on it. | 08:42 | ||
| timotimo | jnthn++ #moarvm blog post the other day | 08:43 | |
|
09:21
BinGOs joined,
dalek joined
|
|||
| JimmyZ | FROGGS: I think add 'if(!op) DIE(vm, "XXXX", op);' to compile_instruction after 'unsigned short op = o->op;' will help you get a nqp backtrace | 09:51 | |
| which may be useful | |||
| FROGGS | JimmyZ: awesome, will try | 09:52 | |
| JimmyZ | or set a brakepoint condition if op == 0 | ||
| well, breakpoint is not that useful since you can it in the segfault backstrace 2~3 level | 09:53 | ||
| the o->op will be something like 26634692934, after unsigned short op = o->op, you got a op = 0 | 09:55 | ||
| s/can it/can see it/ | |||
| dalek | arVM/validation: a9d954c | diakopter++ | build/Makefile.in: more consistent build output |
09:57 | |
| arVM/validation: f50dfa1 | (Tobias Leich)++ | / (9 files): added nqp::rethrow, t/nqp/44 only misses resume |
|||
| arVM/validation: d345e38 | (Gerhard R)++ | / (10 files): Merge branch 'master' into validation |
|||
| arVM/validation: e089933 | (Tobias Leich)++ | src/core/interp.c: declaration before code |
|||
| FROGGS | JimmyZ: gist.github.com/FROGGS/43f4ae11d579518d3948 | 09:58 | |
| arnsholt | not_gerd: If you decide to work on the native call stuff, I'm working on the JVM side in nqp/nativecall-jvm | ||
| The general approach there should work for Moar as well | 09:59 | ||
| JimmyZ | FROGGS: I think you could use .DUMP for debug | 10:00 | |
| NQP one | |||
| FROGGS | JimmyZ: where should I call that? | ||
| not_gerd | arnsholt: so it doesn't make sense to try to recycle the parrot version? | 10:01 | |
| JimmyZ | FROGGS: NQPHLL.nqp:914 | ||
| I thind, dump the mast | |||
| *think | |||
| dalek | arVM/validation: 8bd9665 | (Gerhard R)++ | src/core/validation.c: Remove TODO and debug code |
||
| arnsholt | not_gerd: Yeah, there's probably lots of code you can reuse there too | 10:02 | |
| JimmyZ decommute | |||
| not_gerd | arnsholt: I've started with a naive import of the parrot code in a branch | 10:03 | |
| the idea was to get that to (mostly) compile by doing a stupid Parrot -> MoarVM translation and start from there | 10:05 | ||
| if the JVM stuff is superior that might not be a good idea | |||
| how close is the JVM factoring to Parrot? | 10:06 | ||
| arnsholt | Looking pretty close, so far | ||
| Of course there's going to be some differences since I'm using JNA to call into C, but I'm keeping the general gist of it | |||
| Also trying to clean it up a bit as I go along | 10:07 | ||
| The Parrot -> Moar approach is probably going to work out pretty well | 10:08 | ||
| FROGGS | JimmyZ: it doesnt not dump the op: gist.github.com/FROGGS/43f4ae11d579518d3948 | 10:11 | |
| not_gerd | arnsholt: is there any logic in place to actually inline structures instead of just referencing them by pointer? | 10:13 | |
| I did not see anything like that in the Parrot code | 10:14 | ||
| FROGGS | ahh, QASTMoar.nqp line 3414 | ||
| okay, fixed that I think | 10:16 | ||
| dalek | arVM: 8e0e8a7 | (Tobias Leich)++ | lib/MAST/Nodes.nqp: properly DUMP op names |
10:23 | |
| arnsholt | not_gerd: Nope. We have to implement it at some point, though | ||
| But I'm still not sure how the Perl 6 side of things is going to look, which makes implementing the plumbing a bit pointless (and a bit tricky) | 10:24 | ||
| FROGGS | JimmyZ: including opnames: gist.github.com/FROGGS/43f4ae11d579518d3948 | 10:27 | |
| jnthn | not_gerd: P6bigint is an example of a REPR that can inline something more complex, but in reality int/num/str are all examples of it too | 10:36 | |
| not_gerd | class Bar is repr('CStruct') { ... }; class Foo is repr('CStruct') { has Bar $.bar is inline } | 10:37 | |
| or something similar | |||
| arnsholt | Yeah, that's what I'm hoping for | ||
| FROGGS | hmmm, it gets op 42968 | 10:39 | |
| (when we only have 492) | |||
| diakopter | well that can't be right :) | 10:45 | |
| jnthn: vs2012 has a really pretty dark theme built in | 10:46 | ||
|
10:49
foo_bar_baz joined
|
|||
| arnsholt | not_gerd: Oh, one more thing: I'm planning on killing off the CStr REPR and related functionality (NativeCall.explicitly-manage(), most notably) once I get the JVM stuff working | 10:49 | |
| So no need to put too much work into that =) | |||
| diakopter | arnsholt: dupe of buf or something? | 10:52 | |
| er carray? | |||
| not_gerd | diakopter: the validation branch is ready for review, btw | 11:01 | |
| arnsholt | Yeah, decode string into buf and copy that into a CArray | ||
| not_gerd | still some TODOs, but we pass selftest and do strcitly more checks than master | ||
| arnsholt | And then we can control whether the memory backing the array should be freed or not separately | 11:02 | |
| dalek | Heuristic branch merge: pushed 58 commits to MoarVM/nativecall by gerdr | 11:06 | |
| not_gerd | just got the branch up to date | ||
| diakopter | arnsholt: I like that plan | 11:09 | |
| arnsholt: will the one on jvm use sun.misc.Unsafe so the pointers can *actually* be passed to C libraries? | 11:10 | ||
| diakopter looks at validation branch (again) | 11:11 | ||
| arnsholt | diakopter: I'm using JNA to interact with foreign stuff, since that lets me avoid writing C altogether | 11:20 | |
| Dunno if JNA uses that stuff internally, though I suspect not | 11:25 | ||
| From looking at the API, I think it stores C pointers as Java longs and does most of the heavy lifting as part of the JNI bits | |||
| not_gerd | arnsholt: any comments on gist.github.com/gerdr/96b7fa74fc99c44b10a1 | 11:40 | |
| jnthn | diakopter: Yeah...it's prettier than the 50 shades of grey theme at least... | 11:55 | |
| arnsholt: The way I factored the decode/encode ops, they can potentially work against a CArray directly too without the copying :) | 11:56 | ||
| arnsholt: Where potentially means "if they dont' already work we can make them do so" | |||
| arnsholt | Oh, that's briliant! | 12:35 | |
| Something like that was on my list to do eventually, but for the first version I was just going to do the stupid version | 12:36 | ||
| not_gerd: CUnion is good, we probably should do that eventually | 12:37 | ||
| Not sure I like the pointer changes | |||
| I would like to do something like a deref-able pointer type eventually, but that should be separate from CArray | 12:38 | ||
| I think being explicit about whether a C pointer is an array or a pointer to a single element is a good distinction to have | 12:39 | ||
| not_gerd | comceptionally, how many pointer types do we want - VoidPointer, ObjectPointer, ArrayPointer, CheckedPointer | 12:45 | |
| s/com/con/ | 12:46 | ||
| no, that's nor right | |||
| if we have an ArrayPointer, no need for CheckedPointer | |||
| but UncheckedPointer perhaps | 12:47 | ||
| arnsholt | At the Perl 6 level, I think we want two: OpaquePointer and TransparentPointer | ||
| I don't think NativeCall should start dabbling with bounds checking | |||
| not_gerd | VoidPointer, ObjectPointer, CheckedPointer, UncheckedPointer would make sence, imo | 12:49 | |
| the latter three know their types and CheckdPointer its bounds | 12:50 | ||
| you can do arithmetics with the last 2 | |||
| arnsholt | But do we really want to support pointer arithmetic at the HLL level_ | ||
| not_gerd | well, I do ;) | 12:51 | |
| how else are you going to write operating systems in Perl6 ;) | 12:53 | ||
|
12:55
jnap joined
|
|||
| FROGGS | we sould totally write a Winux(tm) in Perl 6 that fit everyone's needs | 12:56 | |
| tadzik | sounds easy. Let's just combine all the best parts of everything | 12:58 | |
|
12:59
jnap joined
|
|||
| FROGGS | and I already now some awesome killer features I'm going to implement first! | 13:00 | |
| brb # cake | |||
| not_gerd | arnsholt: gist.github.com/gerdr/0d176de4732660a7b2fd | 13:17 | |
| that would be what I'd like to aim for | |||
|
13:19
LWA joined
|
|||
| arnsholt | Still not too keen on pointer arithmetic | 13:19 | |
| And we can probably back both Transparent and Opaque pointers by a unified CPointer REPR | 13:20 | ||
|
13:20
dalek joined
|
|||
| arnsholt | Just throw an exception if the REPR hasn't been specified to be of a certain type | 13:21 | |
| not_gerd | I don't know what's the convention here - are NULLs ok for xxREPRData members? | 13:24 | |
| or just allocate the REPRData even if it's ignored? | 13:25 | ||
| semantically, VoidPointer and TypedPointer REPRs are distinct, imo | |||
| arnsholt | Well, just let the REPR data be the type object for the type we're pointing to | 13:37 | |
| Then it'll be null if we don't know what we're pointing to and non-null otherwise | |||
| not_gerd | Parrot's CArrayREPRData also has an elem_kind member | 13:41 | |
| I haven't looked into how that's used and if it's really necessary for TransparentPointer | |||
| but first guess would be yes, we want to have it | 13:42 | ||
| arnsholt | We use elem_kind for NULL elements, IIRC | ||
| Since those return the type object | 13:43 | ||
| diakopter | arnsholt: but does jna have a call to malloc in C or using Unsafe? | ||
| diakopter imagines Unsafe | 13:44 | ||
| arnsholt | diakopter: I have no idea. It lets you malloc/free, but I don't know if that's via Unsafe or done directly in C | ||
| It uses libffi internally, so it might be in C | 13:45 | ||
| not_gerd | bye, #moarvm | 13:52 | |
|
13:52
not_gerd left
14:33
dalek joined
14:36
Guest1337 joined
14:54
benabik joined
15:06
Guest1337 joined
15:35
FROGGS[mobile] joined
|
|||
| FROGGS[mobile] | jnthn: if I cant fix the 32bit windows problem, do you think we can look at that together this weekend? | 15:37 | |
| diakopter | nooo :P | 15:38 | |
| it was obviously introduced by my gc fixes; I'll fix it asap | |||
| FROGGS[mobile] | I'm not so sure about that | 15:39 | |
|
15:42
Guest1337 joined
|
|||
| jnthn | FROGGS[mobile]: Yeah, or I may get chance sooner...I recreated it on my laptop last night, but was too hosed to do anything about it. | 15:43 | |
| FROGGS[mobile] | awesome | 15:44 | |
| damn, I whish it was friday already | |||
| diakopter wonders how in the world jnthn will have to time to prepare a 2-week class in 1 week, and then to fit it in 2 days | |||
| FROGGS[mobile] | hehe | 15:45 | |
| jnthn | diakopter: By having it 95%+ prepared already. :) | ||
| lizmat | I'm more worried about the state of mind of the workshoppees on Sunday night | ||
| FROGGS[mobile] | lizmat: because of all these bad puns there? | 15:47 | |
| jnthn | lizmat: With a little luck, the Rakudo/NQP parts of their branes will look more like mine. :) | ||
| diakopter | and the rest.. mush | ||
| jnthn | I make no claim as to whether that's a *good* state :P | ||
| lizmat | and that's supposed to make me less worried ? :-) | ||
| jnthn | lizmat: If nothing else, they'll be better at loose coupling and puns... :P | 15:48 | |
| Which are the two most important things, really... | |||
| lizmat | I feel decoupled already :-) | 15:49 | |
| jnthn avoids a "train of thought" pun... | |||
| diakopter | lizmat: does Wendy know you feel this way? :) | 15:51 | |
| lizmat | ah, yes | ||
|
15:58
LWA joined
|
|||
| TimToady wishes English had two different words for "has", because he has a liver in a very different sense than he has a lover... | 16:32 | ||
| TimToady doesn't like 'is inline'... | |||
| Ulti | how are those different types of has, both are vital for life | 16:34 | |
| just in different scales of time | |||
| TimToady | well, then compare my liver to a laver, or a louver instead | 16:35 | |
| arnsholt | TimToady: Does 'is flattened' make you less sad? | ||
| TimToady | no, that's not the point... | ||
| that makes me sadder because it's even longer | |||
| and I suspect pointerness for that repr should not be the default | 16:36 | ||
| jnthn | Let's do what c# does and introduce "struct" to go with "class" but mean "flattens" :P | 16:37 | |
| TimToady | has Ptr[Foo] $.foo; or some such | ||
| jnthn | dinner & | ||
| arnsholt | has Ptr[AStruct] might work, I guess | 16:38 | |
| TimToady | well, if it's a violent enough default switch, a different keyword is in order; hence my ruminations about the meanings of "hash" | ||
| *has!!! | |||
| HAS $.foo; # :) | |||
| HAS $.liver; | |||
| moritz | made-of $.liver; | 16:39 | |
| TimToady | has $.laver; | ||
| well, probably shouldn't be doing language design here... :) | |||
| lizmat | owns? | 16:41 | |
| TimToady | same problme | ||
| em | |||
| though it does have the advantage of being a different word, at least | |||
| lizmat | now to decide whether it is the liver or the lovers that one owns | 16:42 | |
| TimToady | contains $.liver; # too long <sniff> | ||
| part $.liver; | 16:43 | ||
| I kinda like that | |||
| lizmat | .o( do we part with our liver / lover ) | ||
| if considered as a verb | 16:44 | ||
| jnthn | .oO( contains $.lover ) |
||
| really dinner & | |||
| TimToady | jnthn: I wasn't gonna go there :) | 16:45 | |
| FROGGS[mobile] | class House { got $door; } | 17:00 | |
| class Goat { got $good; } | 17:01 | ||
| Ulti | also weird that l[aeio]ver are all words but luver isn't :S reserved for future use :) | 17:09 | |
|
17:19
FROGGS joined
|
|||
| FROGGS | jnthn: is it okay if I bug you later about nqp::resume? | 17:25 | |
| TimToady | (discussion moved from #moarvm) I think that CStruct should probably default to aggressive inlining of any constant(ish)-sized 'has', and you must override that with explicit typing: Ptr[Any] or Scalar[Any] or whatever | 18:00 | |
| so a CStruct might inline the header of an Int, though of course it can't inline anything variable sized | |||
| unless there is a relative sane max size (for something unionish) | 18:01 | ||
| they are, after all, C structs, so they should behave like C structs in requiring indirection to be explicit | 18:02 | ||
| arnsholt | (We're still in #moarvm =) | ||
| TimToady | oops :) | ||
|
18:03
japhb joined
|
|||
| timotimo | was about to say :) | 18:03 | |
| TimToady | well, you guys are the guts-folk at the moment anyway... :) | ||
| this is more implementation philosophy; we can talk about whether we want a 'struct' keyword on #perl6 :) | |||
| arnsholt | I sort of agree that it makes sense to default to inlining aggregates | 18:04 | |
| diakopter | HAZ | ||
|
18:05
benabik joined
|
|||
| TimToady | you are what you eat? | 18:05 | |
| arnsholt | But on the other hand, having pointer as the default has been a pretty nice default | ||
| diakopter | HAZE | ||
| arnsholt | Oh, and it's worth noting that CStruct and CArray maintain two separate storage spaces, ATM | 18:06 | |
| FROGGS | btw, I'd like to reserve 'template' as a keyword for the verbose for of pack/sprintf (which can be one thing I hope) | ||
| form* | |||
| diakopter | just reserve the keyword forms | 18:07 | |
| formats | |||
| you could even use the p5 formats | |||
| sorry, I'm being a griefer a bit too much lately | |||
| TimToady | .oO( use timeline 'FROGGS'; from future import 'template'; ) |
18:08 | |
| FROGGS | hehe | ||
| TimToady | well, I guess auth is kinda like a future alternative timeline | ||
| FROGGS | I still have no clue how such a template would look like | 18:09 | |
| TimToady | .oO( the many forks interpretation of QM ) |
||
| diakopter | TimToady: when does Aron say the expansion will speed up to lightspeed and all the other galaxies will suddenly disappear | 18:11 | |
| well, not suddenly. | |||
| redshift away | |||
| TimToady | I'm not aware that Aron says that, but he probably is personally acquainted with people who do say :) | 18:12 | |
| diakopter | oh, I was hoping he was there for you to ask | ||
| TimToady | went home last night | ||
| in any case, he'd say 'assuming that dark energy is proportional to the actual size of space, and assuming we know how to measure the actual size of space correctly...' | 18:13 | ||
| diakopter | and assuming it doesn't start contracting before then? | ||
| TimToady | that is subsumed in the first assumption | 18:14 | |
| or the second... | |||
| diakopter | maybe instead of the galaxies getting further apart everything's uniformly shrinking | 18:15 | |
| including speed of light changing | 18:16 | ||
| *farther | |||
| FROGGS | I am your farther? | ||
| diakopter | no, murther | ||
| TimToady | Use the farce! | ||
| FROGGS | hehe | 18:17 | |
| it is, it is | |||
| diakopter | or the farsi | ||
| FROGGS resumes the work on nqp::resume | 18:18 | ||
| diakopter throws away his work on gc | 18:19 | ||
| FROGGS | *g* | ||
|
18:34
LWA joined
19:06
cognominal joined
|
|||
| jnthn | om nom | 19:34 | |
| jnthn had dinner at a place that had one of his fave imperial stouts on tap :) | |||
| lizmat | sounds excellent! | 19:35 | |
| arnsholt | Indeed! | ||
| jnthn | (If you're curious, Evil Twin Imperial Biscotti Break) | 19:36 | |
| FROGGS | O.o | 19:37 | |
| jnthn | TimToady: In general, languages seem to divide into those that inline vs. reference based on kind of type (e.g. C#'s struct vs class package decls), and those that don't care about the kind of type but let you decide at the point of usage. | 19:38 | |
| C and C++ being in the latter category | 19:39 | ||
|
19:43
Woodi joined
|
|||
| jnthn | FROGGS: what did you want to ask about resume? | 19:45 | |
| FROGGS | jnthn: well, that was what I had yesterday gist.github.com/FROGGS/d006980f3c95b53364ca | ||
| jnthn: I'm now at a point where it is in the handler, hits the resume | 19:46 | ||
| so it should unwind to the frame of the exception, right after the die() for example, right? | 19:47 | ||
| jnthn | aye | ||
| FROGGS | how do I jump to after the die()? | ||
| jnthn | And then set the pc to the instruction just after it | ||
| ou just set the pc, which hangs off tc-> | |||
| But we may not be saving that address yet | 19:48 | ||
| FROGGS | yeah, I was guessing that | ||
| jnthn | I forget what origin is, whether it's the frame of addr | ||
| lemme look | |||
| ah, just the frame | |||
| FROGGS | the frame, yeah | 19:49 | |
| jnthn | So yeah, we aren't saving quite enough in the exception yet | ||
| FROGGS | okay, so I need to save the tc->interp_cur_op when throwing? | ||
| jnthn | Right, we need that and the pc of the next instruction too | ||
| FROGGS | pc? | ||
| jnthn | program counter | ||
| Sorry, CPU term :) | |||
| FROGGS | ahh | ||
| jnthn | As in, the bytecode address | 19:50 | |
| See how the return ops work, for example. | |||
| FROGGS | k | ||
| jnthn | Basically you re-arrange the op so that it does its incrementing (cur_op += ...) and *then* makes the call to throw the exception. | ||
| So that the PC is already correct and you just save it. | |||
| It really should be nothing more than an assignment in each direction :) | 19:51 | ||
| FROGGS | okay | ||
| jnthn | (like, assign current pc into a slot you add to MVMException, then assign it back after unwinding) | 19:53 | |
| FROGGS | why don't we have cur_op += X in interp. anymore? | 19:56 | |
| interp.c | |||
| jnthn | um...we don't? | ||
| diakopter | *giggle* | ||
| FROGGS | only in a few places | ||
| diakopter: please tell :o) | |||
| jnthn | I see it | ||
| diakopter | not_gerd++ made it depend on magic pixie dust | 19:57 | |
| FROGGS | I see it for newlexotic but not for die | ||
| diakopter | to know where to branch | ||
| well die is non-local | |||
| jnthn | grr, I hate magic pixie dust | ||
| It must be recent, my local clone doesn't even have it. | |||
| FROGGS | diakopter: I guess there is a list of the offsets somewhere? | 19:58 | |
| jnthn | um, I still see it in latest too? | ||
| diakopter | FROGGS: what revision/branch are you at | ||
| (I don't see that) | |||
| jnthn is in master | |||
| diakopter is.. oh | 19:59 | ||
| jnthn | And just pulled | ||
| FROGGS | master/HEAD | ||
| jnthn | And see the cur_op += ... | ||
| diakopter | FROGGS: yeah I think your editor is hiding those lines or something | ||
| FROGGS | O.o | 20:00 | |
| my editor hides lines? | |||
| jnthn | FROGGS: You don't see like: | ||
| OP(add_i): | |||
| GET_REG(cur_op, 0).i64 = GET_REG(cur_op, 2).i64 + GET_REG(cur_op, 4).i64; | |||
| cur_op += 6; | |||
| goto NEXT; | 20:01 | ||
| ? | |||
| FROGGS | jnthn: I see that | ||
| github.com/MoarVM/MoarVM/blob/mast...erp.c#L968 | |||
| jnthn | Ok, so it's doign the cur_op +=... what are you missing? | ||
| Ohh! | 20:02 | ||
| You were talking specifically about the die op. | |||
| FROGGS | yeah | ||
| jnthn | sorry, I misunderstood and thought you meant in general... | ||
| FROGGS | not about "die Op", which would be germish anyway :P | ||
| diakopter | well, if you want die to be resumable.. | ||
| jnthn | Yeah, so you need to move the &GET_REG(...) use in MVM_exception_throwobj call to store that MVMRegister * in a variable. | 20:03 | |
| And then cur_op += ..., and then do the throwobj call. | 20:04 | ||
| So that whereever origin is set will also be able to set the PC. | |||
| diakopter | jnthn: I can't wait to implement an interpreter on top of moarvm | ||
| *giggle* | 20:05 | ||
| FROGGS | jnthn: isnt the &GET_REG(cur_op, 0) at line 973 a noop? | 20:06 | |
| diakopter | well, it does the cast for you | 20:07 | |
| (so it's the standard way to do that) | |||
| FROGGS | and passes it to MVM_exception_throwobj that doesn't use it | 20:08 | |
| diakopter | jnthn was saying to make it use it | ||
| are *all* dies resumable in p6? | 20:09 | ||
| diakopter will cry if so | |||
| I'll just have to append a while(1) to the end of every die | |||
| benabik | Heh. I remember when people made that discovery in Parrot. | 20:10 | |
| jnthn | FROGGS: Yes, for now, but on resume we should probably but somehting in there... | ||
| diakopter: Only those that are made in the runloop, I think. | |||
| diakopter | p6 die is higher level? | ||
| benabik | diakopter: Wouldn't just exit(1) be better? | ||
| jnthn | diakopter: In MoarVM the cost of that is really low, though. | 20:11 | |
| benabik | Or maybe reallydie("don't resume that") | ||
| jnthn | diakopter: I mean, we already gotta keep track of the throwing frame for the sake of backtraces. | ||
| diakopter | diediedie("stay dead") | ||
| jnthn | well, it's not normally die exceptions that get resumed. | ||
| It's warn control exceptions and the lime. | |||
| *like | |||
| benabik | die("message"); die("double tap") | 20:12 | |
| diakopter | die('yeah') or exit('showed you') | ||
| jnthn | :D | ||
| FROGGS | ok 8 - resuming from resumable exceptions works \\o/ | 20:37 | |
| can't believe it | |||
| jnthn | \\o/ | ||
| FROGGS | and fwiw, it helps to copy all needed data when copying exception objects | 20:38 | |
| jnthn | ;) | ||
| Does that mean we pass all the 44-try-catch.t? :) | |||
| FROGGS | not ok 4 - statement prefix form of try work | 20:39 | |
| jnthn | ah | ||
| FROGGS | this is the last one | ||
| jnthn | ok :) | ||
| I really am too tired to look :( | |||
| But, great progress! :) | |||
| dalek | arVM/nativecall2: 5a8fd9c | (Gerhard R)++ | / (9 files): Start on nativecall re-implementation |
20:40 | |
|
20:41
not_gerd joined
|
|||
| not_gerd | o/ | 20:41 | |
| FROGGS | it is exceptionally fun when it works :o) | ||
| (even when it takes days) | |||
| jnthn | ;) | 20:44 | |
| gonna attempt some sleep..though if it's epic fail I may be back... | |||
| & | |||
| not_gerd is going to add pointer arithmetics to MoarVM | 20:45 | ||
| FROGGS | gnight jnthn :o) | ||
| not_gerd | I think I arrived at a factoring that's not too 'out there' | ||
| good night | |||
| diakopter | not_gerd: heh, cool; can't wait to see it :) | 20:53 | |
| FROGGS | for what do we need that ooc? | 20:55 | |
| ohh, `try nqp::die("...")`is a BOOTCode | 21:02 | ||
| or, hmmm, maybe not | 21:03 | ||
| not_gerd | FROGGS: run-time C interop without having to register types | 21:04 | |
| [Coke] likes identicons.github.com/dfc78a3215db...80c3d9.png | 21:16 | ||
| (moarvm's github icon) | |||
|
21:36
foo_bar_baz joined
|
|||
| flussence | .oO( we could have a »m̈«, like the one in #perl6 ) |
21:41 | |
| FROGGS | +1 | ||
| flussence | I'm not sure how well most people's clients will play with a Serious Unicode thing like that, but it's a good testcase :) | 21:42 | |
| (looks fine on irssi+tmux+urxvt, fwiw) | 21:43 | ||
| FROGGS | and on xhat :o) | ||
| xchat | |||
| dalek | arVM: 9de0ad5 | (Tobias Leich)++ | / (10 files): added nqp::resume, review needed |
21:44 | |
| FROGGS | ../moarvm nqp.moarvm -e 'my $x := (try nqp::die("oops")); say($x.HOW.name($x));' # is BOOTCode, should be NQPMu | 21:53 | |
| dunno how to fix that atm | |||
| diakopter | FROGGS: resume shouldn't end with a goto; it's non-returning, like die | ||
| well.. | 21:54 | ||
| I mean | |||
| hang on | |||
| *tc->interp_cur_op is just cur_op | 21:55 | ||
| .... it needs lotsa work | 21:56 | ||
| but I'm not exactly sure which things to do | |||
| gtg | |||
| meeting | |||
| dalek | arVM/nativecall2: cbc9666 | (Gerhard R)++ | / (10 files): Reorganize native stuff and add CFlexibleStruct |
22:06 | |
| not_gerd | good night | ||
|
22:06
not_gerd left
22:16
benabik joined
|
|||