09:30
xtt joined
09:50
bart joined
|
|||
brrt | \o | 09:51 | |
nine | o/ brrt | 10:08 | |
How's it going? | |||
10:14
FROGGS joined
10:18
domidumont joined
10:23
domidumont joined
|
|||
brrt | alright :-) | 10:33 | |
well, incredibly busy, really | |||
brrt-to-the-future.blogspot.nl/201...ation.html <- blogged :-) | 10:35 | ||
how about you? | |||
nine | Cool! Half an hour ago I looked at your blog if there's anything new :) | ||
"incredibly busy" fits just right ;) | |||
brrt | :-) | 10:36 | |
I aim to make a few more (and perhaps a bit rougher) blog posts | 10:38 | ||
i have quite a few stalled in perfectionism | 10:39 | ||
nine | Looking forward to those :) | 10:41 | |
11:01
domidumont joined
11:03
domidumont joined
11:28
bart joined
|
|||
jnthn | brrt++ # blog | 11:40 | |
timotimo | just makes me wonder why the processor doesn't expose its own internal virtual registers and register allocator so programs can use it :P | 11:45 | |
12:09
MasterDuke joined
|
|||
MasterDuke | jnthn: timotimo was asking about not being able to serialize VMHashs a day or two ago (something i ran into when working on the line numbers). you said it was special-cased in serialization.c and i see references to REFVAR_VM_HASH_STR_VAR | 12:12 | |
however, it looks like it's failing the "if (REPR(obj)->serialize)" check. and it turns out there's no serialize/deserialize, serialize_repr_data/deserialize_repr_data functions in MVMHash.c | 12:15 | ||
if i add a stub serialize, i don't get the "Missing..." error and it dies in my stub. is adding real versions of those what's needed? | 12:17 | ||
timotimo | nah | 12:19 | |
it seems like the function that can figure out if a reference is to a VMHash is a different function from the one that you're hitting them | 12:20 | ||
FROGGS | why isnt the (de)serialize code in MVMHash? sounds weird that it is somewhere else | 12:28 | |
timotimo | hm. perhaps it's there for when we know the target of a reference has to be an MVMHash? i don't know, i haven't looked at the code. | 12:32 | |
MasterDuke | well, the code in serialization.c that references REFVAR_VM_HASH_STR_VAR seems (for the most part) similar to the code that references the different REFVAR_VM_ARR_* | 12:46 | |
aside from deserialize_method_cache_lazy | 12:47 | ||
timotimo: ahh, you're saying it should be in serialize_object in the first place? | 12:51 | ||
*shouldn't | |||
timotimo | could be | 12:52 | |
MasterDuke | does moar know the name of variables? | 13:10 | |
i.e., i have an MVMObject, can i easily know what it's called in nqp/rakudo? | 13:12 | ||
timotimo | rakudo has a thing called "container descriptor" or "scalar descriptor" | 13:13 | |
that holds the name the variable has been given | |||
MasterDuke | ah, that's what those are! | 13:14 | |
timotimo | there's also the lexpad that has names for the slots | ||
MasterDuke | github.com/perl6/nqp/blob/master/s...#L854-L882 | 13:19 | |
looks to me like the if on line 869 will never be true? | 13:20 | ||
since serialize_sc always returns an nqp::null as the second element | 13:22 | ||
timotimo | we used to have the string hash as a list, now we have it in a separate section that can store it more efficiently | 13:26 | |
so having it as a tuple is probably not needed any more, but i suppose it's become API | |||
MasterDuke | the only place serialize_sc is called is line 862 | 13:27 | |
timotimo | the comment says something about serving as a hook point for overriding when you want serialization to work differently | ||
MasterDuke | for moar, there's one call for js | ||
but then shouldn't something else implement serialize_sc somewhere? | 13:28 | ||
timotimo | dunno | ||
it could be extremely rarely needed | |||
MasterDuke | fyi, nqp and rakudo both build i just remove serialize_sc entirely. spectesting now | 13:37 | |
FWIW, seems to spectest clean | 14:15 | ||
15:54
domidumont joined
16:29
ggoebel joined
|
|||
dalek | arVM: c8bfc15 | usev6++ | src/core/exceptions.c: Fix typo in function name |
16:37 | |
arVM: 0b66389 | FROGGS++ | src/core/exceptions.c: Merge pull request #439 from usev6/typo_exceptions Fix typo in function name |
|||
16:51
zakharyas joined
|
|||
japhb | MasterDuke: We've found out far too often that "spectest clean" really means "spectest incomplete". It's excellent for catching gotchas when it shows a problem, but is not a strong enough indicator of success when it's clean. | 16:55 | |
FROGGS | @all: moarvm, nqp and rakudo 2016.10 got migrated from unstable to debian testing today! \o/ | 16:56 | |
japhb | \o/ | 16:59 | |
FROGGS++ domidumont++ nebuchadnezzar++ for that | 17:00 | ||
(Did I miss anyone?) | |||
Are there any plans to start packaging modules? Or at least panda and/or zef? | 17:01 | ||
FROGGS | I think there are, but we need to fix things first... like the scenario where we install stuff to a system perl6 | 17:04 | |
like native libs (Linenoise, perhaps others), where | |||
where the lib needs to be in a certain path | |||
lib, as in 'liblinenoise.so' | 17:05 | ||
japhb | Right | 17:06 | |
17:59
geekosaur joined
|
|||
MasterDuke | japhb: sure, and i definitely don't know the codebase well enough to always know which it is. but removing a three line function (of which two appear to be no-ops) that's only called in one spot and then builds and spectests clean seems relatively safe | 18:30 | |
18:39
vendethiel joined
18:42
FROGGS joined
19:11
FROGGS joined
19:14
bart joined
|
|||
nine | FROGGS: what about 'liblinenoise.so'? | 19:31 | |
FROGGS | nine: it gets installed into ~/.perl6/perl6-2016.10/lib or how the path is spelled | 19:36 | |
and according to debian rules a path in your home can never be part or moarvm's rpath, so the library isnt loadable | 19:37 | ||
that means, liblinenoise.so needs to be installed in site | |||
nine | By whom does it get installed there? | 19:41 | |
FROGGS | by the user | 19:45 | |
it is not packaged (yet) | |||
so it gets installed via panda/zef | |||
nine | Then it's installed as a resource into the ~/.perl6 repo and loaded via NativeCall? I don't see what we would change about that? | 19:47 | |
mst | FROGGS: I'm not sure what you mean by "according to debian rules" ? | 19:48 | |
FROGGS | it cant be loaded via nativecall if you use debians rakudo/moarvm package | ||
nine | So what? | ||
FROGGS | we need an option to install to site, not to home | ||
nine | Can't Firefox on debian load plugins from ~/.mozilla/plugins? | ||
mst | FROGGS: could you start by explaining the actual problem please | ||
rather than throwing around 'we need' without explanation | |||
FROGGS | 1) .so libraries can only be loaded from directories that are either known by ld.config, or which are in rpath of an executable | 19:50 | |
mst | uh. LD_LIBRARY_PATH exists? | ||
FROGGS | 2) cite "a directory belonging to a user cannot be added in rpath (which | ||
would also be a security hole and against debian policy)" from bugs.debian.org/cgi-bin/bugreport....bug=801498 | |||
mst: LD_LIBRARY_PATH exists, yes | 19:51 | ||
mst | I mean, (2) is obvious, yes | ||
because multi-user system so duh | |||
FROGGS | yes, and you cannot refer to "home"/"~" in any way | ||
mst | ok, so how come DynaLoader works for perl5 with a local::lib then? | 19:52 | |
moritz | mst: that was my next question too | ||
mst | so we don't need 'an option to install to site', we need to figure out the actual problem and fix it. | 19:53 | |
sadly, I don't speak sufficient C to know where to look | |||
FROGGS | mst: do you happen to know if DynaLoader also works with local::lib on openbsd? I remember horrible problems with .so libs on openbsd from my old Alien::SDL days... | 19:54 | |
mst | FROGGS: I've never had a bug report about it and have plenty of obsd users, so I'm assuming yes | ||
FROGGS | AFAIK, you cannot load libs from a to ld unknown directory without invoking a subprocess | 19:55 | |
hmmmm | |||
mst | I mean, I can't be 100% sure, but you'd've thought I'd've been told by now | ||
FROGGS | I had spent days on that topic, but that was at least four years ago | ||
I'll study DynaLoader the next evenings then... let's see if I can find out how it works | 19:56 | ||
mst | but basically I *think* "make NativeCall do whatever DL does" is probably the true answer, and if it isn't, we need to know why it isn't to get any further | 19:57 | |
FROGGS: seem sane? | |||
nine | FROGGS: if your interpretation of this were correct, one wouldn't be able to compile a program from sources and run it from one's home directory if it's dynamically linked. That's clearly not the case. | ||
mst | nine: not actually true, in that case the relevant things would be in the rpath | 19:58 | |
nine: so, actually, even if his original guess was true, that would still be the case | |||
nine | What exactly is an rpath by the way? | 19:59 | |
mst handwaves frantically, defers a real explanation to somebody with more understanding of C | 20:00 | ||
FROGGS | mst: "make NativeCall do whatever DL does" sounds very sane | ||
nine: rpath is a compile time option to your C compile that registers a path to your to-be-compiled program (like moar) | 20:01 | ||
nine: it is the compile time version of LD_LIBRARY_PATH | |||
nine | Doesn't sound like it would have anything to do with how we load a liblinenoise.so that's installed as part of a module. | ||
FROGGS | well, it does | 20:02 | |
nine | We load from ~/.perl6/resources | ||
I can't find that path anywhere in Moar or nqp or the perl6 shell script | |||
FROGGS | nine: github.com/MoarVM/MoarVM/commit/d2...99281700ca | 20:03 | |
nine | The only part of the rakudo stack that even knows about that directory is CompUnit::Repository::Installation. I'm quite sure I've not touched any other part of the code base. | ||
FROGGS | nine: it is not run time, it is compile time of *moar* | ||
mst | nine: yes, you won't | ||
nine | I don't know what goes into @prefix@/share/perl6/site/lib but libraries installed during module installation are _not_ it | ||
mst | honestly I'm not actually sure why this case doesn't just work | 20:04 | |
given it does for a hand-built rakudo | |||
nine | We load the shared libs that are module resources by full path | ||
mst | FROGGS: hang on. what if his /home is mounted noexec? did you ask? | 20:05 | |
that would explain everything | |||
FROGGS | I didn't | ||
mst | maybe check that before expending further effort? | ||
mst regularly breaks things by building on a system with a noexec /tmp | 20:06 | ||
e.g. I have to do TMP=$HOME/tmp perl-build ... | |||
FROGGS | okay, the lib is installed to nqp/install/share/perl6/site/resources/DEEB27B5853BA6C98B824267B82369F02D44CB2F.so on my box | 20:13 | |
and it goes to ~/.perl6/... for the bug reporter because his site directory is somewhere in /usr or /var or something | 20:14 | ||
we still should have an abspath to that file in the end... | |||
FROGGS write the mail about noexec | |||
writes* | 20:15 | ||
*facepalm* | 20:16 | ||
the bug report was more than a year old -.- | 20:19 | ||
lemme install a debian testing to test this bug report successfully | 20:23 | ||
.tell nebuchadnezzar can we somehow put /usr/share/perl6/site/bin in PATH? | 20:40 | ||
yoleaux2 | FROGGS: I'll pass your message to nebuchadnezzar. | ||
FROGGS | ahh dammit, I've got no non-root user in a chroot -.- | 20:41 | |
need to install in a VM | 20:42 | ||
lizmat | Q: what is Moar's relaton to Lua-JIT (if any) ? | 20:53 | |
japhb | lizmat: Using its assembler in our JIT, IIRC. | 21:05 | |
dynasm | |||
lizmat | but not Lua-JIT itself? | ||
japhb | lizmat: No, it is tuned for Lua the way MoarVM is tuned for 6Model, NQP, and Perl 6 | 21:08 | |
lizmat | so what does it mean when someone says they can make Perl 6 faster by using llvm instead of Lua-JIT ? | 21:09 | |
lizmat fears some misconception in the mind of that person | |||
japhb | lizmat: From historical precedent, I'd say they haven't fully researched the question. | 21:10 | |
timotimo | if that someone really wants to put in the massive amounts of effort to make moar work with llvm, sure | 21:11 | |
japhb | That suggestion is in a class led by "Couldn't you just ...?" which essentially always ends with a naive but unworkable "solution" that has to be explained away ad nauseum. | ||
timotimo | brrt-to-the-future.blogspot.de/search?q=llvm - brrt already posted a bit about "why we don't use llvm for rakudo" | 21:12 | |
in general, irclog search in #moarvm will find you a few instances of "why no llvm" | 21:13 | ||
lizmat | timotimo japhb thanks! | 21:14 | |
timotimo | YW | ||
BBL | |||
japhb | yw | 21:15 | |
FROGGS | mst / nine: it just works... ("it" being Linenoise and the .so as /home/froggs/.perl6/resources/DEEB27B5853BA6C98B824267B82369F02D44CB2F.so) | 21:26 | |
jnthn | I think it's by now fairly well established that LLVM is good at a bunch of things, but being a first-resort JIT compiler for dynamic languages isn't one of them. | 21:28 | |
If you want to have it in your most expensive tier of compilation for very hot code, then it may be worth it. | 21:29 | ||
FROGGS | .tell nebuchadnezzar forget what I said :o) | 21:45 | |
yoleaux2 | FROGGS: I'll pass your message to nebuchadnezzar. |