cfbolz changed the topic of #pypy to: PyPy, the flexible snake (IRC logs: https://quodlibet.duckdns.org/irc/pypy/latest.log.html#irc-end ) | use cffi for calling C | if a pep adds a mere 25-30 [C-API] functions or so, it's a drop in the ocean (cough) - Armin
forgottenone has quit [Remote host closed the connection]
marvin_ has quit [Remote host closed the connection]
marvin has joined #pypy
<arigato>
muke (for the logs): someone should have pointed you to the main unsolved problem with writing a JIT backend using llvm: the lack of a good solution to implement guards
<arigato>
and how to map rpython's GC system with llvm.gcroot, if possible at all
<arigato>
(interesting, there is or was a project called BEAMJIT for Erlang that is pypy-like in that it builds the interpreter and the tracing JIT compiler from a single source)
oberstet has joined #pypy
wleslie has quit [Quit: ~~~ Crash in JIT!]
forgottenone has joined #pypy
isidentical has joined #pypy
muke has joined #pypy
<cfbolz>
arigato: I talked to him, we plan to do boehm for the second problem to get started
<cfbolz>
as for guards, the goal is really to recompile the whole loop nest every time a bridge gets attached
<cfbolz>
antocuni: the three approaches are, as far as I got it a) a consultancy (julia) b) a consultancy but with support contracts (elixir) c) a patreon-like model (elm, but the creator isn't happy with it)
<cfbolz>
antocuni: I thought the support contracts sounded the most interesting
<cfbolz>
(fixed monthly price, ongoing, the companies can come and ask for reviews, feedback, bugfixes. makes everything quite plannable)
<antocuni>
cfbolz: yes, support contracts sounds interesting
<antocuni>
I can't find a link to the company behind elixir though
<cfbolz>
José Valim seemed really open in the panel, maybe we could just send a mail
ebarrett has quit [Quit: WeeChat 2.9]
ebarrett has joined #pypy
otisolsen70 has joined #pypy
Kipras_ has joined #pypy
<antocuni>
yes, could be an indea
<antocuni>
I think that as usual our biggest blocker is that we don't have a business oriented person
isidentical has quit [Read error: Connection reset by peer]
isidentical has joined #pypy
Kipras_ has quit [Read error: Connection reset by peer]
<muke>
I'm looking at the runner backend tests and seeing that the loops are defined with input arguments, and the resulting assembly is called with specific values for them through cpu.execute_token, so does this mean the current backends are creating indivisual functions for every trace passed to them?
<muke>
That just seems a little weird to me, as surely in the context of a JIT you already have what those values are anyway right? Is it just a testing thing?
<muke>
doing a bit more looking and thinking another possibility is it's patching generated assembly with given arguments before executing it just for testing, but still not sure
<cfbolz>
muke: you want to reuse those pieces of assembler many times, right?
<cfbolz>
so yes, they are all "functions" (not quite, but close enough)
<cfbolz>
I'll do some streaming again now
<muke>
cfbolz I had thought it was a more 'static' thing where the compiled traces are using the same values, but I suppose it makes sense to reuse the same generated code with different ones
<muke>
the main reason I was wondering is because it'll inform how I construct the LLVM-IR through it's api
<muke>
when you say 'not quite' does that mean stack frames aren't actually being allocated or something?
<muke>
anyway for now I'll enjoy your stream :)
isidentical has quit [Quit: isidentical]
<cfbolz>
muke: the input args are definitely function arguments
<muke>
ok, I'll use the api to define a function for each call to compile_loop and similar methods then
<muke>
I have to figure out how to parse the return value for any arbitrary trace, though, hope that's not too complicated