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