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
YannickJadoul has quit [Ping timeout: 260 seconds]
Dejan has joined #pypy
yajadoul has quit [Quit: Leaving]
YannickJadoul has joined #pypy
Ai9zO5AP has quit [Quit: WeeChat 2.7.1]
YannickJadoul has quit [Quit: Leaving]
<phlebas>
when i jit.promote a W_Object, it turns into a guard. what does the backend do here? is the object moved to the old space and there's a literal cmp and jne for the pointer?
<cfbolz>
phlebas: yes, I think so
<cfbolz>
promote will keep the object alive
<cfbolz>
why?
<phlebas>
i'm wondering about the promotions on modules if their dict doesn't change. that prevents the module from being collected then? or does the GC ignore pointers in the generated machine code?
<cfbolz>
yes, it prevents the modules from being collected
<cfbolz>
(unless the trace is collected)
<phlebas>
ok, so i guess when i would try construct a synthetic case where a module gets promoted and then gc'd, the trace will be collected eventually because it's not used anymore? or would i have to make sure it gets executed again with the guard failing often enough?
<phlebas>
s/gc'd/becomes unreachable by user code/
<cfbolz>
exactly
Ai9zO5AP has joined #pypy
<cfbolz>
phlebas: if the code of the module is never executed, the involved traces get collected
<cfbolz>
and then the module too
<phlebas>
ah, ok
<cfbolz>
phlebas: basically traces have some kind of "age", and if they aren't executed in 'a while' (however time is measured here) they get collected
<phlebas>
makes sense, you wouldn't want to keep traces from the startup code around forever
<cfbolz>
exactly
<cfbolz>
how does graal handle that?
Ai9zO5AP has quit [Remote host closed the connection]
<phlebas>
it doesn't, there's no jit.promote, right? it's all caching things in the AST and telling the compiler "these rarely change". but that's a proper field in the AST, which is not collected just because it doesn't run, as long as the function that it belongs to lives. so there's a potential memory leak when we do what pypy does
<cfbolz>
phlebas: who holds a reference to the AST?
<cfbolz>
shouldn't that be ok, because only the module does?
xcm has quit [Remote host closed the connection]
xcm has joined #pypy
<phlebas>
hm, true, that would be ok. the ast is held alive by the source object also, however, which is a truffle thing to share ASTs across multiple language contexts in the same VM
jcea has joined #pypy
<antocuni>
phlebas, cfbolz: IIRC, in pypy the "age" of traces follow some kind of exponential decay rule, FWIW
bbot2 has quit [Quit: buildmaster reconfigured: bot disconnecting]
bbot2 has joined #pypy
bbot2 has quit [Client Quit]
bbot2 has joined #pypy
igitoor has quit [Ping timeout: 260 seconds]
igitoor has joined #pypy
bbot2 has quit [Quit: buildmaster reconfigured: bot disconnecting]
bbot2 has joined #pypy
igitoor has joined #pypy
igitoor has quit [Changing host]
<antocuni>
is there any way to speed up the linking process of a translation? I am trying to modify C files by hand and it's by far the most time consuming step
<tumbleweed>
the gold linker is faster, but dunno if it works on pypy
<antocuni>
I'm not sure I want to try exotic stuff :). I was hoping there is some magic flags which turns off some optimizations, or things like that
<mattip>
yeah it is painful to link. Maybe we could improve our c generation with an eye to linking faster
<antocuni>
how?
<mattip>
like identify functions that are only called once and inline them
<antocuni>
or maybe mark them as static
<mattip>
do we have a static decorator?
<antocuni>
no, and I don't even know how it would work. Would it forbid calling the function from outside the python module and/or subpackage?
<antocuni>
I was more thinking of automatically detecting which functions are called only from within the same .c file
<antocuni>
probably there are a lot of them, because c files are split by directory
<mattip>
yeah, probably a dumb idea
<mattip>
and separate compilation of the modules is not going to happen
<antocuni>
well, as a general idea, it would be nice to have a better way to declare which functions are "exported" by a module/package, possibly with their annotation. It would be a step forward towards separate compilation
<antocuni>
but yes, I don't see separate compilation happening any time soon
<mattip>
@public? @exported? @public_api ?
<antocuni>
ideally, it would be nice to use function annotations, but for this we first need rpython3 :)
<antocuni>
(or invent a hack which let us use function annotations on python2 code as well)
ionelmc has quit [Ping timeout: 246 seconds]
lritter has quit [Ping timeout: 256 seconds]
ionelmc has joined #pypy
<mattip>
ronan did some nice refactoring of eval for rpython, but there is still a ways to go before
<mattip>
python3 pytest.py pypy/doc
<mattip>
works
EWDurbin has quit [Ping timeout: 240 seconds]
Alex_Gaynor has quit [Ping timeout: 272 seconds]
pulkit25 has quit [Ping timeout: 272 seconds]
pulkit25 has joined #pypy
EWDurbin has joined #pypy
<antocuni>
what do you mean by "refactoring of eval"?
jeroud has quit [Ping timeout: 240 seconds]
Alex_Gaynor has joined #pypy
lauren has quit [Ping timeout: 246 seconds]
lauren has joined #pypy
jeroud has joined #pypy
fijal has quit [Ping timeout: 256 seconds]
lauren has quit [Max SendQ exceeded]
fijal has joined #pypy
lauren has joined #pypy
marky1991_2 has quit [Ping timeout: 260 seconds]
marky1991_2 has joined #pypy
marky1991_2 has quit [Remote host closed the connection]
marky1991_2 has joined #pypy
tsaka__ has joined #pypy
marky1991_2 has quit [Ping timeout: 240 seconds]
marky1991_2 has joined #pypy
<mattip>
commit c067c8c93177 "Modernize exec syntax in rpython/"
<mattip>
sorry, exec not eval
jvesely has quit [Read error: Connection reset by peer]
jvesely has joined #pypy
tsaka__ has quit [Ping timeout: 272 seconds]
marky1991_2 has quit [Read error: Connection reset by peer]
tsaka__ has joined #pypy
marky1991_2 has joined #pypy
<antocuni>
aaah ok
<antocuni>
yes, although the real problems for rpython3 are much deeper of course
<tumbleweed>
gotta start somewhere :)
marky1991_2 has quit [Read error: Connection reset by peer]
marky1991_2 has joined #pypy
<Dejan>
so there is plan for rpython3
<Dejan>
good to know :)
inhahe has joined #pypy
<mattip>
no, there is no plan, only wisps of dreams
marky1991_2 has quit [Remote host closed the connection]
marky1991_2 has joined #pypy
marky1991_2 has quit [Client Quit]
oberstet has quit [Remote host closed the connection]