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
xcm has quit [Remote host closed the connection]
xcm has joined #pypy
commandoline has quit [Ping timeout: 240 seconds]
commandoline has joined #pypy
jcea has quit [Quit: jcea]
xcm has quit [Remote host closed the connection]
xcm has joined #pypy
ionelmc has quit [Quit: Connection closed for inactivity]
oberstet has joined #pypy
lritter has joined #pypy
dddddd has quit [Ping timeout: 256 seconds]
dansan has quit [Excess Flood]
dansan has joined #pypy
marky1991_2 has joined #pypy
marky1991 has quit [Ping timeout: 258 seconds]
ionelmc has joined #pypy
inhahe has quit [Ping timeout: 260 seconds]
YannickJadoul has joined #pypy
dddddd has joined #pypy
yajadoul has joined #pypy
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
BPL has joined #pypy
graingert has quit [Ping timeout: 265 seconds]
graingert has joined #pypy
dnshane has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
andi- has left #pypy ["WeeChat 2.8"]
dnshane has joined #pypy
tsaka__ has quit [Ping timeout: 246 seconds]
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]
tsaka__ has quit [Read error: No route to host]
tsaka__ has joined #pypy
tsaka__ has quit [Ping timeout: 246 seconds]
andi- has joined #pypy
andi- has quit [Excess Flood]
andi- has joined #pypy
Ai9zO5AP has joined #pypy