github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm Set by AlexDaniel on 12 June 2018. |
|||
00:19
Kaypie joined,
p6bannerbot sets mode: +v Kaypie
02:05
lucasb left
03:40
leont left
05:55
Kaypie left
05:57
Kaiepi left,
Kaiepi joined
05:58
p6bannerbot sets mode: +v Kaiepi
06:04
Kaypie joined
06:05
p6bannerbot sets mode: +v Kaypie
06:08
Kaypie left,
lizmat left
|
|||
Geth | MoarVM: 05384f2150 | (Petr Rockai)++ | src/io/filewatchers.c Add a cancel handler for filewatch tasks Without this, MVM_OP_watchfile is bound to leak a file descriptor and/or other resources (depending on the platform). Stopping the libuv fs_event in the cancel op allows rakudo to nqp::cancel the task and thus prevent the leak. |
08:31 | |
MoarVM: 1d9a71c7cd | niner++ (committed using GitHub Web editor) | src/io/filewatchers.c Merge pull request #1014 from mornfall/master Add a cancel handler for filewatch tasks |
|||
MoarVM: 1c3b0c936a | (Stefan Seifert)++ | lib/MAST/Nodes.nqp Fix label id clash in bytecode compiler It was possible that a label got created that got the exact same objectid as a previously existing label that has since been freed by the GC. To avoid this, keep a list of all added labels in the frame alongside the lookup hash for labels. |
08:47 | ||
08:47
travis-ci joined,
p6bannerbot sets mode: +v travis-ci
|
|||
travis-ci | MoarVM build passed. niner 'Merge pull request #1014 from mornfall/master | 08:47 | |
travis-ci.org/MoarVM/MoarVM/builds/465547314 github.com/MoarVM/MoarVM/compare/d...9a71c7cdf3 | |||
08:47
travis-ci left
|
|||
nine | No Geht? | 09:08 | |
09:23
domidumont joined,
p6bannerbot sets mode: +v domidumont
09:33
domidumont left
09:34
domidumont joined
09:35
p6bannerbot sets mode: +v domidumont
09:36
domidumont left
09:41
domidumont joined,
p6bannerbot sets mode: +v domidumont
09:57
mornfall joined
09:58
p6bannerbot sets mode: +v mornfall
09:59
dalek left
10:01
Geth left
|
|||
nine | Oh boy...fixing the writeuint flags issue is even harder cause of nqp's stage0 | 10:24 | |
10:28
lizmat joined,
p6bannerbot sets mode: +v lizmat
10:35
lucasb joined,
p6bannerbot sets mode: +v lucasb
11:49
robertle joined
11:50
p6bannerbot sets mode: +v robertle
|
|||
nine | That's solveable at least. I can have an in-between version in MoarVM that treats flag values where BINARY_ENDIAN_LITTLE (1) is set as the new kind and where it's missing as the old one. All current users are missing that flag despite wanting it. | 11:56 | |
12:30
leont joined,
p6bannerbot sets mode: +v leont
13:02
brrt joined
13:03
p6bannerbot sets mode: +v brrt
|
|||
brrt | ohai #moarvm | 13:04 | |
I have a fix for the dynasm bug in which we'd misencode some SSE instructions with variable registers | 13:05 | ||
jnthn | brrt: Sounds good :) | 13:09 | |
That unblocks float stuff on template JIT, maybe? | |||
brrt | a bit | ||
I need to do a bunch more work for the linear scan allocator | |||
but it definitely helps :-) | 13:10 | ||
jnthn | ah, I see | ||
brrt | hmm, actually, now that I think about it, it was necessary | 13:13 | |
because the rex byte can also be inserted if we have a rex-requiring secondary operand | 13:18 | ||
13:38
brrt left
14:06
brrt joined
14:07
p6bannerbot sets mode: +v brrt
|
|||
brrt | the register allocator is kind of a hard bit of code... | 14:19 | |
mornfall | (says so in the docs too) | 14:49 | |
brrt | hehe | 14:53 | |
yeah | |||
I wrote that | |||
So I hope that you take that with some grains of salt | |||
I'll be honest, I am a huge C fan, but I'm not entirely convinced that C is the right language for this job | 15:02 | ||
timotimo | looking forward to your article titled "C considered harmful" | 15:11 | |
brrt | but I like C.... | 15:13 | |
And I'll be more likely to say 'foolishness considered harmful but necessary' | |||
.... no, what I find harmful, is the following set of ideas: | 15:15 | ||
- 'you should $safe-language always because CVE' | |||
- 'you should use $dynamic-language always because machines are cheap' | 15:16 | ||
- 'you should use C++ always because fast' | |||
mornfall | well, it's hard to write plumbing for $dynamic-language in $dynamic-language | ||
15:17
Kaiepi left
|
|||
brrt | that's mostly because a bunch of the plumbing for $dynamic-language has been written in something like C | 15:17 | |
15:17
Kaiepi joined
|
|||
brrt | and doesn't provide much of the necessary access to the underlying systme | 15:18 | |
and there's no reason why that should be so, except conventions | |||
15:18
p6bannerbot sets mode: +v Kaiepi
|
|||
mornfall | well, bootstrapping is hard, so there's that | 15:20 | |
brrt | safety is hard, I think | 15:21 | |
mornfall | of course, especially if you also want speed | ||
timotimo | pypy writes most of its plumbing in rpython, which is ... semi-dynamic? | 15:22 | |
brrt | hmmm | ||
timotimo | but it's also a to-C compiler | ||
mornfall | isn't rpython kinda like nqp? | 15:23 | |
brrt | I think rpython isn't really dynamic, it's type-inferred | ||
timotimo | yeah, it's full-program type-inferred | ||
brrt | HN comment I read argued that 'python scales better to large codebases than perl (5)', which annoyed me | ||
because I'm fairly sure that isn't true | 15:24 | ||
mornfall | probably debatable | ||
depends on who your programmers are | |||
brrt | perl5 has the advantage in that the import protocol is very hackable | ||
timotimo | i guess you can't really say "Python is better at X than *" because Python is not a single thing? | ||
neither is Perl 5, of course | 15:25 | ||
mornfall | dunno, python is very hackable overall (which is what makes it slow... and making use of its flexibility makes it even slower) | ||
timotimo | except if you're using pypy in which case it's still pretty dramatically fast | ||
mornfall | it is? i wouldn't know | 15:26 | |
timotimo | pypy is just frighteningly good in general | 15:27 | |
mornfall | pypy doesn't seem to be terribly popular | ||
timotimo | yeah, i don't really know why that is | ||
have you ever done 3d printing? | |||
mornfall | most python folks hate it because it defaults to python 2 | ||
and of course they want to move on | 15:28 | ||
timotimo | there's this piece of software called "cura" which turns 3d models into slices and paths for the printer head | ||
and it's highly encouraged to run that with pypy, AFAIK | |||
oh, maybe it's not cura but skeinforge that is written in pypy | 15:31 | ||
er | 15:32 | ||
meant to be used with pypy* | |||
brrt | counterargument: anything that you'd write in python, and need pypy for speed, why wouldn't you write that in, say, java or C#, and have the same speed at minor inconvenience | 15:33 | |
especially C#. I've come to the conclusion it is a substantially better system... | 15:34 | ||
writing in C++ would be a major inconvenience, as would writing in rust, imho | |||
mornfall | one thing from C++ that i miss everywhere else is value semantics | 15:35 | |
'everything is a reference' kinda gets on my nerves | |||
timotimo | you could write it in microsoft's managed C++! | 15:37 | |
it's C++, but it's actually C#! | 15:38 | ||
a friend asked me to look over a friend-of-their's C++ code which I think they were learning at university or something and I was like "this isn't like any c++ i've ever seen" | |||
mornfall | C++ has changed a lot in the last 5 or so years | 15:40 | |
brrt | go has value semantics, C has value semantics (more honestly than C++ imho) | ||
C++ references are... one of the less-good design decisions | 15:41 | ||
and I agree, value semantics are very important | |||
(C# has value types as well, I think?) | |||
mornfall | you mean unboxed stuff in C#? perhaps | ||
timotimo | mornfall: yeah, but it's still very very different from c++ :) | ||
mornfall | but you are probably not supposed to use that | 15:42 | |
java has some unboxed types too, perhaps even unboxed arrays? or used to have... it was very ugly | |||
i didn't know about go, not having used it like ever | 15:43 | ||
timotimo | yeah, unboxed arrays do exist i believe | ||
brrt | C# has structs | ||
go is awesome in all its limitations | |||
mornfall | i imagine erlang might have values | ||
brrt | and C# structs are value-typed | ||
mornfall | but i don't actually know either :) | ||
brrt | java only has reference-objects. It's a major weakness | ||
as in, it doesn't hurt until suddenly it does | 15:44 | ||
But go doesn't have 'hidden' reference types. If something is a reference, that's really quite obvious | |||
mornfall | but it seems that the whole OO world pretty much follows java and python in that objects are always references | 15:45 | |
brrt | yes, mostly because that's easier for the implementation :-) | ||
timotimo | mornfall: have you ever seen something like "generic<typename T> [Serializable] public ref struct blah { ... };" in C++? | ||
brrt | go even gives you internal references | ||
mornfall | timotimo: certainly not, that's not C++ :-) | ||
timotimo | i've told you | 15:46 | |
or maybe your "C++ has changed a lot in the last 5 or so years" wasn't a reply to me | |||
mornfall | it was, but i was banking on the person in question cranking out some serious C++17 or perhaps 2a :-) | 15:47 | |
didn't know MS has created a frankenparser for half-C++-half-C# hybrid | 15:48 | ||
brrt | I'm wondering if I can, maybe should, implement the 'free register set' as a bitmap | 15:49 | |
I know how to implement all the relevant bits (ha ha) as a bitmap | |||
and it has nice properties... | |||
15:49
lizmat left
|
|||
timotimo | the C# parts are really mild, though. i think it's mostly "this struct shall get a GC header" and "this is a reference to a GC-managed object" and a "gcnew" in addition to "new" | 15:52 | |
15:58
lizmat joined,
p6bannerbot sets mode: +v lizmat
|
|||
brrt | whenever you want to manage a set of a small number of integers, I'm not sure we can really do better than a bitmap generally... | 16:05 | |
16:29
brrt left
17:06
dalek joined,
p6lert left,
p6lert joined,
Geth joined,
p6bannerbot sets mode: +v dalek,
p6bannerbot sets mode: +v p6lert
17:07
p6bannerbot sets mode: +v Geth
17:10
Geth_ joined,
dalek left,
d4l3k_ joined,
p6lert left,
Geth left,
p6lert_ joined
17:11
p6bannerbot sets mode: +v Geth_,
p6bannerbot sets mode: +v d4l3k_,
p6bannerbot sets mode: +v p6lert_,
d4l3k_ is now known as dalek,
Geth_ left,
Geth joined
17:12
p6lert_ left,
p6lert joined,
SourceBaby joined,
p6bannerbot sets mode: +v Geth,
p6bannerbot sets mode: +v p6lert
17:13
p6bannerbot sets mode: +v SourceBaby
18:02
zakharyas joined
18:03
p6bannerbot sets mode: +v zakharyas
19:52
domidumont left
|
|||
nine | Darn....I've let my computer compile MoarVM for a couple of hours in a mips VM, just to have it fail with a linker error: ./libmoar.so: undefined reference to `dcCallbackThunkEntry' | 19:54 | |
samcv | nine, if you are trying to use big endian, an arm vm is faster as i remember | 19:56 | |
nine | samcv: thanks, will try that then :) | 19:57 | |
samcv | yeah. it's like 8x faster | 19:58 | |
maybe more! | |||
i think you have to go back a debian version though | 19:59 | ||
or not. maybe i misremember. maybe i'm thinking about mips | |||
ooh. nine i'm thinking about powerpc | 20:02 | ||
robertle | note that most arm are little-endian, so I guess support within BE arm VMs is going to be a bit patchy as well | 20:03 | |
samcv | robertle, yeah my memory was incorrect. it was the powerpc emulation that was 20x faster than mips | ||
mips was... more than painful. | |||
robertle | s390x is a good one to hack BE stuff on as well ;) | ||
samcv | uh last release was jessie on powerpc. so that's what my memory was correct about | 20:04 | |
had to go back a debian release and it was ppc 32bit (ppc 64 on debian is little endian mode) | |||
robertle | I think it's better to use ffi on mips (regarding dcCallbackThunkEntry) | 20:06 | |
nine, do you have something concrete you want to try, or just general debugging? | |||
nine | robertle: nah, need to implement endian swapping. So probably a couple edit/test cycles involved | 20:55 | |
OTOH I could just make pmurias++ happy and write a couple of nqp tests for writeuint including endian swapping. If swapping works on a little endian machine, it's probably going to do that on big endian, too. So there's less that can go wrong. | 20:57 | ||
lizmat | nine: are those new nqp::ops documented? | ||
nine | lizmat: kinda: gist.github.com/jnthn/1e865a06d213...2908858a57 | 21:00 | |
lizmat | nine: ok, will take that and document after I've done the P6W | 21:01 | |
mornfall | well you can get actual mips computers too you know :-) new, reasonably low-power, probably not much slower than a typical arm? | ||
nine | ++lizmat | 21:09 | |
21:34
robertle left
21:35
zakharyas left
21:40
AlexDaniel joined,
p6bannerbot sets mode: +v AlexDaniel
|