timotimo | hm, so how do i find the patch for that ... | 00:01 | |
cygx: gist.github.com/timo/49dcb80d6ce40e0613f5 - here you can see how you can grab objects out of a SC, perhaps that helps? | 00:02 | ||
since they have consecutive IDs, you can probably just grab things until you only get exceptions any more | 00:03 | ||
cygx | timotimo: thanks | 00:18 | |
if I find the time, I'll take a look | |||
right now, I'm having too much fun trying to bypass NativeCall altogether | |||
timotimo | oh? | 00:40 | |
as in, you're putting the stuff from CALL-ME into your module directly? | |||
i've wanted to do the same thing to measure performance benefit for generating code for individual methods rather than re-using the same method for general calling | |||
02:02
dalek joined
02:46
vendethiel joined
02:48
ilbot3 joined
03:00
lizmat_ joined
03:49
ShimmerFairy joined
|
|||
konobi | so... seems that moarvm doesn't build on Illumos | 04:44 | |
seems that '-mt' gets added to a CFLAGS if the os is "solaris" regardless of wether we're using a gcc toolchain | 04:45 | ||
and... it fails at the minilua stage | 04:47 | ||
timotimo | uh oh | 04:48 | |
welllll, you could build the jit stuff on another system and just move the resulting files over | |||
konobi | specifically dynasm.lua | ||
timotimo | right, that's exactly what we got lua for | 04:49 | |
konobi | pastebin.com/p6ePDTUW | 04:51 | |
timotimo | er, what? | 04:52 | |
that's a very weird thing to have ... it can't be a different lua version... so ... wha? | |||
konobi | it is though... 2015.09 | 04:53 | |
timotimo | hum? | ||
konobi | is it using some other tool underneath? | 04:54 | |
timotimo | shouldn't be | ||
i mean, it explicitly runs ./3rdparty/dynasm/minilua | |||
so it can't accidentally pick up something from your system | |||
and it's probably not relying on some libc thing that's different in illumos' libc?! | 04:55 | ||
konobi | well, uunless it's solaris specific | 04:56 | |
timotimo | shouldn't be | 04:57 | |
konobi | weird | ||
timotimo | i don't know how to lua. it seems like it just uses "tonumber" | 04:58 | |
konobi | and i doubt it's an endianness issue | 04:59 | |
timotimo | right | ||
"if n % 1 ~= 0" - is this about checking for Nan? | |||
konobi | not a lua person either =0/ | 05:00 | |
timotimo | on line 599 of dynasm_x86.lua you could add some debug statements | ||
like what exactly n is | |||
with "wwarn(n)" | |||
konobi | sec | 05:02 | |
oh... odd | 05:05 | ||
src/jit/emit_x64.dasc:226: warning: 1.844674407371e+19: | mov [rbp-0x8], TC; | |||
src/jit/emit_x64.dasc:226: error: bad integer number `-0x8': | mov [rbp-0x8], TC; | |||
timotimo | dude whaaaaaaat | ||
wait | 05:06 | ||
konobi | all the same number | ||
timotimo | hm, -0x8 is the expr | ||
i know hardly anything about lua and the minilua code is Pall-styled, which i have a hard time getting used to | 05:10 | ||
konobi | well, there's 2 bugs on illumos then ^_^ | 05:11 | |
(SmartOS specifically in this case) | |||
timotimo | okay, bedtime. see you around! and thanks for potentially adding 1 more OS to our list :) | 05:13 | |
06:35
domidumont joined
|
|||
nwc10 | blog.pyston.org/2015/11/03/102/ -- Pyston 0.4 released | 07:20 | |
07:21
domidumont joined
07:30
brrt joined
|
|||
nwc10 | brrt: blog.pyston.org/2015/11/03/102/ -- Pyston 0.4 released | 07:31 | |
brrt | ohai nwc10 | ||
lemessee | |||
is all jit work in python land these days? | |||
nwc10 | I wasn't thinking that | ||
brrt | nwc10: i found this one interesting: wingolog.org/archives/2015/11/03/tw...mentations | ||
nwc10 | it's not fair for me to summarise it | ||
brrt | well, a lot of it is | 07:32 | |
the wingolog article is of sufficient interest that i was considering reviewing it on the blog | 07:33 | ||
because a lot of what he said rings true, although we have of course made very different decisions, and i think the local-optimising path is not as bleak as he claims | 07:34 | ||
nwc10 | I think, more accurately - I don't want to pre-bias you before you read the pyston blog, to see if you comment on the same thing that I was thinking about | ||
brrt | 'A baseline jit tier, which sits between the interpreter and the LLVM JIT. This tier approaches the performance of the LLVM tier but has much lower startup overhead.' - that is, ahem, very interesting | 07:35 | |
'Conspicuously absent from this list is better LLVM optimizations. Our LLVM tier has been able to do well on microbenchmarks, but on āreal codeā it tends to have very little knowledge of the behavior of the program, even if it knows all of the types.' | 07:36 | ||
at some level it is good to have your suspicions be validated, on the other level it's quite sad | |||
nwc10 | the latter one was the one I noticed. And how they commented that (roughly) "great, we inline the call to len(). But then that code makes a decision about what to call next" | 07:38 | |
so method JIT doesn't work as well as tracing | |||
I think the first flipped in and out of my head | |||
and I'd not really noticed " approaches the performance of the LLVM tier" | |||
that's almost saying "we can make this tier fast for less work than making LLVM fast" | |||
brrt | uhuh | ||
that is, i think, the silver lining here | 07:39 | ||
for us | |||
nwc10 | they did the work, to confirm your/jnthn's suspicions | ||
also, it's much faster to clone pyston than pypy | 07:40 | ||
OK, so pypy has far more historical revisions | |||
but, um, git vs mercurial, I think is the real reason | |||
brrt | aye | ||
nwc10 | I was going to try building both to | ||
1) see if I can | |||
2) see how long | |||
3) see what startup is like | 07:41 | ||
brrt | good luck with pypy :-P | ||
nwc10 | yeah. | ||
brrt | i tried that not so long ago | ||
nwc10 | hence point (1) | ||
which should have been (0) I think :-) | |||
brrt | it didn't work, and i forgot why | ||
nwc10 | although Rubinius is even more tempramental | ||
but I have a suspicion that Rubinius is no longer that interesting | 07:42 | ||
brrt | hmm | ||
rubinius was buildable last time i was interested in it; but i admit that was some time ago | |||
nwc10 | failed for me on a bug standard Ubuntu desktop | ||
but had worked previously on a Debian desktop | |||
(different vintage) | |||
brrt | hmmm | 07:43 | |
i had failed to consider that might be a difference | |||
(i'm spoiled from the perl world, clearly) | |||
nwc10 | there shouldn't be | ||
but I guess it was particular packages with different versions | |||
brrt | but, i don't hear anything about rubinius either | 07:45 | |
nwc10 | it seemed to want to download binaries of a particular LLVM version | ||
brrt | i only recently noticed that fedora had sneakily stuck jruby under the name of ruby, and that it works | 07:46 | |
pyston? | |||
(is there a meetup for dynamic language implementers somewhere?) | |||
nwc10 | no, Rubinisu | 07:47 | |
sorry, not clear | |||
brrt | rubinius was fully self-hosting last time i looked at it? | 07:49 | |
nwc10 | I don't know. | ||
brrt | again, that was long ago | ||
ok, i have a stupid, and somewhat embarassing, idea | 07:50 | ||
wrt to even-moar-jit | |||
i can rip out most templates until i'm left with something that i know compiles correctly | |||
then refactor the backend for my own sane understanding | |||
then add templates piecemeal | |||
because, templates have been historically added for another purpose, which is to experiment with the expressiveness of the expression tree | 07:51 | ||
i am, in short, sick of sitting in gdb and figuring out where in a >2000loc codebase my next bug or omission is | 07:52 | ||
(although doing so helped a lot in figuring out compiler-bugs, so all is not bad) | |||
nwc10 | grumble: /home/nc/pyston_deps/llvm-trunk | 08:17 | |
er | |||
AssertionError: Expected to find repo directory at /home/nc/pyston_deps/llvm-trunk | |||
assumptions about an entire $expletive LLVM clone, and at an expeltive $expletive location messing up the tope level of my home directory | 08:18 | ||
brrt | oh, that is $expletive | 08:26 | |
brrt is currently building pypy | |||
nwc10 | I'm currently *cloning* llvm | 08:27 | |
brrt | that is likely to take some time... | ||
nwc10 | it is. even git doesn't enjoy that | 08:28 | |
brrt | it seems sometimes the topic of performance sometimes is treated as both mysterious and emotionally significant | ||
and... that's entirely similar to discussions about something like energy | 08:29 | ||
and that's why both discussions never go anywhere.. | 08:30 | ||
at least not with 'the general public' | 08:33 | ||
08:38
zakharyas joined
|
|||
brrt | ugh, nonconcurrent builds for pypy | 09:10 | |
nwc10 | single core, all the way? | 09:11 | |
brrt | :-( | 09:17 | |
oh, it's been nice enough to do the actual c compilation bit in parallel | |||
and surprisingly much of it, too | 09:26 | ||
wow, it finished | 09:29 | ||
nwc10: i've a question about brittain | 09:40 | ||
when a governmental service is prefixed by HM, like HMGS | |||
does HM stand for Her Majesty? | 09:41 | ||
(i've noticed a few of them do) | |||
nwc10 | yes. (currently) | ||
brrt | and i suppose in the future it will be His' | ||
wow | |||
that is archaic | |||
(dutch organisations have the same, of course, when starting with K) | 09:42 | ||
arnsholt | brrt: Any particular reason you're building PyPy? | 09:54 | |
brrt | same as nwc10 | ||
see if i can | 09:55 | ||
arnsholt | Heh =) | ||
I've been told it takes a (long) while | |||
brrt | it took 1,5 hours | 10:03 | |
for me | |||
10:09
tokuhir__ joined
|
|||
jnthn | wowser, so backlog... | 10:37 | |
nwc10 | OK, time ./build/Release/pyston -c 'print "Hi"' says about 0.04s | 10:39 | |
packaged pypy, so somewhat old, takes 0.149 | |||
er, scrub that | |||
second and subsequent times pypy is 0.29s | |||
timotimo | so pypy is faster with a cold cache? :P | 10:44 | |
nwc10 | good point | ||
0.029 | |||
timotimo | ah | 10:45 | |
nwc10 | PEBKAC | ||
dalek | arVM/sync-without-uv: e7e8421 | jnthn++ | src/io/syncfile. (2 files): Start teasing sync file I/O away from libuv. |
10:59 | |
timotimo | ^- this'll give us much easier access to isatty, too | 11:00 | |
jnthn | Yeah, that's one of the two tickets I was planning to address today | ||
timotimo | do we have a good way towards letting the user decide if they want to use $*IN synchronously or asynchronously? | 11:02 | |
jnthn | Not yet | ||
timotimo | i suppose at least it'll be much easier to just open a numbered file descriptor as an IO object | 11:03 | |
jnthn | That's also somewhat on my todo list | ||
timotimo | neato | ||
ilmari | jnthn: do you prefer adding the encoderep opcode to be a separate commit from adding the underlying replacement character functionality? | 11:20 | |
jnthn | ilmari: Yes, please, if it's no hassle; in the unlikely event of a regression it makes it easier to see what caused it. | ||
dalek | arVM/sync-without-uv: ebc1f67 | jnthn++ | src/ (2 files): Use platform "abstraction" for OS I/O functions. |
11:22 | |
ilmari | jnthn: no problem | ||
github.com/MoarVM/MoarVM/pull/289 | 11:28 | ||
github.com/perl6/nqp/pull/251 | 11:29 | ||
github.com/rakudo/rakudo/pull/576 | 11:30 | ||
jnthn | ilmari: In 381f0979b it looks like we leak repl_bytes | 11:31 | |
ilmari | doh, indeed | 11:32 | |
jnthn | Otherwise I'm happy | ||
brrt | \o/ jnthn++ | 11:34 | |
jnthn | Comment of the day discovered while seeing how libuv does something: | 11:35 | |
* IOW it's all just a clusterfuck and we should think of something that | |||
* makes slighty more sense. | |||
:-) | |||
brrt | that sums up my feeling about (cross-platform) IO as well | 11:36 | |
ilmari | jnthn: fixed | 11:39 | |
brrt | offtopic; the whole mobile site trend has helped a lot at making websites readable at high zoom levels | ||
arnsholt | Indeed. Even Hacker News is not quite completely terrible on mobile these days | 11:41 | |
ilmari | jnthn: the RT ticket suggests a more specific exception type, but I don't know how to do that from moarvm, so it's just an adhoc one for now | 11:42 | |
jnthn | That's fine for now | 11:43 | |
Oh...just spotted the "/* XXX: May overflow */" in the UTF-16... | |||
jnthn sees why | |||
Hm, but UTF-16 code wasn't updated for NFG either | |||
And I didn't implement the streaming decode for it either | 11:44 | ||
ilmari | it probably won't because the buffer is allocated assuming -every- char needs a surrogate | ||
s/probably/usually/ | |||
jnthn | Yeah | ||
Anyway, will merge. :) | 11:49 | ||
ilmari | heh, I haven't written my first perl6 program yet, and here I am patching the implementation instead ;) | ||
jnthn | ;) | ||
heh, another reassuring libuv comment | |||
/* Buffer overflow (a warning status code) is expected here. */ | |||
:-) | |||
brrt | well, at least they're honest about it :-) | 11:50 | |
www.gnu.org/software/guile/ <- this page looks much better than i had expected | |||
(arnsholt: shame their actual content has degraded so much) | 11:51 | ||
dalek | arVM: 4fe6edb | (Dagfinn Ilmari MannsƄker)++ | .dir-locals.el: Add basic .dir-locals.el file Doesn't handle function parameter indentation, but better than nothing. |
11:55 | |
arVM: dbe50d3 | (Dagfinn Ilmari MannsƄker)++ | src/strings/ (4 files): Throw exceptions on unencodeable characters |
|||
arVM: af4434c | (Dagfinn Ilmari MannsƄker)++ | src/ (15 files): Allow specifying a replacement string for unencodeable characters |
|||
jnthn | dalek didn't report it all, but all was merged | 11:56 | |
brrt | aha | 11:59 | |
oh, cool | |||
ilmari++ | 12:00 | ||
ilmari | jnthn: we should probably do something similar for the decode part | 12:08 | |
e.g. on malformed utf8 | |||
jnthn | ilmari: Yeah, though we also need to refactor that somewhat to not throw exceptions deep in the decoder itself also | 12:19 | |
dalek | arVM/sync-without-uv: e6787a0 | jnthn++ | src/ (2 files): Ensure standard handles are binary mode on Win32. |
12:26 | |
arVM/sync-without-uv: dedfb1a | jnthn++ | / (5 files): Specialized function for getting file size. Emulating all of stat on Windows just for checking file size is quite wasteful. |
|||
timotimo | jnthn: what little piece of equipment would we use to figure out why "use NativeCall; sub foobar() is native<barbaz> {*}" causes a surprisingly large precompilation file? | 12:30 | |
is it about the grammar getting a trait merged in? | |||
jnthn | timotimo: Throw a MVM_dump_backtrace(tc); into the repossession code | 12:37 | |
YOu must be repossessing things | |||
timotimo | right | ||
jnthn | That'll tell you where | ||
timotimo | i'm asking for cygx | ||
but since i know my way around the code a little, i'll go ahead and investigate a bit more | 12:38 | ||
i don't have a lot of clue about repossessions that ought to happen, but this seems strange: when running just "use Test", canonpath gets called from the module loader code does a substitution. that calls into match, into something not annotated with proper line info, then into !alt and that triggers cache_add from inside Perl6/Metamodel | 12:50 | ||
does that mean there's a cache that wants sc write barriers disabled around access to it? | |||
ah, nice, there's only a single cache_add in all of the metamodel | 12:51 | ||
so i wouldn't even have to hunt | |||
dalek | arVM/sync-without-uv: 39abfc9 | jnthn++ | src/io/fileops.c: Just use syncfile for standard handles always. Now we've detangled it from libuv and can see it just uses standard system functions. This fixes issues like being unable to read from $*IN on a thread depending what kind of input we had. |
12:53 | |
timotimo | hm. adding scwbdisable before and scwbenable after that piece of code doesn't change the repossession from "use Test" from !alt | 12:54 | |
perhaps the cache method wants that treatment, too, but it doesn't appear in that traceback | 12:57 | ||
doesn't change the behavior in this case at all ... | 12:59 | ||
jnthn back from nomming rajma | 13:31 | ||
lizmat | .oO( how did rajma feel about that? :-) |
13:36 | |
jnthn | :P | ||
lizmat | ah, a popular vegetarian Indian dish :-) | 13:37 | |
jnthn | Yeah. It was quite different. | ||
(From any of the others I've done) | 13:38 | ||
lizmat | Czech style ? | ||
jnthn | No, I mean different from other vegetarian Indian dishes I've cooked :) | ||
lizmat | aha, ok | ||
jnthn | I've no idea how faithfully I'm recreating them compared to how they'd be in India. I just know they're tasty. :) | 13:39 | |
dalek | arVM/sync-without-uv: 3b837c4 | jnthn++ | src/ (2 files): Don't try to use _O_BINARY on POSIX. |
13:43 | |
jnthn | Righty, spectest for that running on Windows, and about to start on Linux. | 13:48 | |
Then I'll cross my fingers and hope OSX is POSIX enough :) | 13:51 | ||
Darn, close... | 14:02 | ||
nwc10 | no plan survives contact with the enemy? | 14:04 | |
jnthn | We'll see. :) | ||
14:11
brrt joined
|
|||
jnthn | yup, busted repl | 14:15 | |
dalek | arVM/sync-without-uv: 0944be7 | jnthn++ | src/io/syncfile.c: Make syncfile EOF detection not need to seek. |
14:31 | |
Heuristic branch merge: pushed 65 commits to MoarVM/even-moar-jit by bdw | 15:14 | ||
jnthn | *sigh* So yeah, consoles will need special handling on Windows, it seems. Can't just use file I/O and have it work out. | 15:22 | |
dalek | arVM/even-moar-jit: 245fb1b | brrt++ | src/jit/ (2 files): Remove templates which are compiled incorrectly The original set of templates was developed with the expressivity of the template language as our main concern, but this meant that the JIT compiler had to support a complex set of operations right from the start. This simplifies that set so that we can add and test features in relative isolation. |
||
brrt | :-( | ||
why should that be so jnthn? | |||
jnthn | Because _read on a console, no matter how you tweak the handle, seems to always immediately return empty | 15:23 | |
JimmyZ | linenoise uses stdin | 15:24 | |
jnthn | linenoise manages to make things worse than cmd.exe in some ways too :P | 15:25 | |
JimmyZ | ah, it's ReadConsoleInput | ||
jnthn | Right | ||
Plus that's almost certainly going to end up giving you utf-16 | 15:26 | ||
JimmyZ | yeah | ||
jnthn | Anyway, will need to fix that before I can flip most sync I/O over to being libuv free | ||
My test to check you can read from $*IN with my patch actually passes | 15:27 | ||
But that's for the pipe case | |||
Not sure I can write a test for the console case. | |||
15:28
zakharyas joined
|
|||
JimmyZ | when I was coding with libuv, it cant read pipe if the fd is stdin | 15:28 | |
dalek | arVM/sync-without-uv: fa93f8d | jnthn++ | src/platform/io.h: Platform abstraction for isatty. |
15:29 | |
arVM/sync-without-uv: e155617 | jnthn++ | src/io/syncfile.c: Cope with non-file handles better. |
|||
JimmyZ | but, I was on windows | 15:30 | |
jnthn | Me too :) | ||
Things work out pretty fine now on Linux | |||
Anyway, will continue with that next week, I think | 15:31 | ||
JimmyZ | so, windows--, as far as I know the thread api on windows is also not as good as posix api | 15:32 | |
:P | |||
15:55
tokuhiro_ joined
|
|||
brrt | JimmyZ i wouldn't say that, though | 16:27 | |
windows basically uses threading as a first-class building block | |||
dalek | arVM/utf8-c8: 1beea0b | jnthn++ | / (9 files): Work in progress UTF-8 Clean-8bit encoding. For allowing us to round-trip filenames and so forth. Only partially implemented so far. |
17:22 | |
jnthn | TimToady: Feedback welcome on the scheme described in the comment at github.com/MoarVM/MoarVM/commit/1b...143d138aR3 | 17:23 | |
17:56
tokuhiro_ joined
|
|||
TimToady | looks reasonable to me, offhand, as long as it doesn't blow up our cross-product of stringy types | 18:06 | |
jnthn | TimToady: No, that's the "beauty" of it: it's just a Str | 18:08 | |
An NFG Str where some synthetics happen to be recognized as special by one particular encoding. | |||
TimToady | yes, forgot that part by the time I got to the end :) | 18:09 | |
jnthn | :) | ||
OK | |||
TimToady | too long; did read :) | ||
jnthn | :P | ||
jnthn is trying to work out a talk submission for LPW | |||
TimToady | just pick one of the xmas bugs and fix it live :P | 18:10 | |
jnthn | :D | 18:11 | |
Think it'll be a mix of reminiscence, some of my favorite examples from over the years maybe with the odd new one, and a little looking at what happens next. :) | 18:12 | ||
nwc10 | I need some more thought to properly cynically predict what happens next. But my first thoughts are that everyone complains that there is no ecosystem (ignoring reality and the Perl 5 embedding), and vow not to use it, but fairly soon it sneaks into places as a pretty awesome multi-core glue language for co-ordinating single-threaded languages. | 18:17 | |
and at some point folks discover that it's NFG | |||
in particular, that it's NFG in O(1) | |||
I wonder who will be the first to steal NFG | 18:19 | ||
18:25
lizmat joined
18:26
colomon joined
|
|||
TimToady | well, Swift already does something like NFG, iirc | 18:37 | |
nwc10 | I started reading the docs. It seems a bit LTA than that, given "As a result, the number of characters in a string cannot be calculated without iterating through the string to determine its extended grapheme cluster boundaries. If you are working with particularly long string values, be aware that the characters property must iterate over the Unicode scalars in the entire string in order to determine the characters for that string. " developer | 18:43 | |
did that get truncated? | |||
tadzik | yes | 18:44 | |
up to developer. | |||
nwc10 | ah OK. URL was developer.apple.com/library/ios/do...cters.html | ||
jnthn | So, not O(1) | 18:45 | |
jnthn away-ish | |||
18:51
zakharyas joined
18:54
TimToady joined,
leont joined
18:57
Peter_R joined
|
|||
konobi | howdy | 20:31 | |
timotimo: ollo! | |||
timotimo | hey | 20:33 | |
konobi | any more ideas on that lua thing? | 20:42 | |
timotimo | no :( | 21:22 | |
maybe brrt has an idea? | |||
brrt, on konobi's illumos system minilua fails to parse negative offsets from rbp (or something?) saying "not a valid integer" | 21:24 | ||
21:42
vendethiel joined
22:24
Ven joined
22:44
tokuhiro_ joined
22:56
vendethiel joined
|