cfbolz changed the topic of #pypy to: PyPy, the flexible snake (IRC logs: https://botbot.me/freenode/pypy/ ) | use cffi for calling C | "the modern world where network packets and compiler optimizations are effectively hostile"
lritter has joined #pypy
inhahe_ has quit []
inhahe_ has joined #pypy
rokujyouhitoma has joined #pypy
<pjenvey> oh
yuyichao has quit [Ping timeout: 255 seconds]
rokujyouhitoma has quit [Ping timeout: 268 seconds]
marr has quit [Ping timeout: 240 seconds]
<pjenvey> may I complain that any rpython __del__ freeing raw memory should have had an associated add_memory_pressure
yuyichao has joined #pypy
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 260 seconds]
tbodt has quit [Read error: Connection reset by peer]
tbodt has joined #pypy
tbodt has quit [Read error: Connection reset by peer]
lritter_ has joined #pypy
tbodt has joined #pypy
lritter has quit [Ping timeout: 246 seconds]
kipras is now known as kipras`away
lritter_ has quit [Remote host closed the connection]
ArneBab has joined #pypy
yuyichao has quit [Read error: Connection reset by peer]
yuyichao has joined #pypy
ArneBab_ has quit [Ping timeout: 240 seconds]
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 240 seconds]
jcea has quit [Quit: jcea]
ssbr has quit [Ping timeout: 246 seconds]
ssbr has joined #pypy
rokujyouhitoma has joined #pypy
marky1991 has quit [Ping timeout: 260 seconds]
rokujyouhitoma has quit [Ping timeout: 248 seconds]
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
tbodt has joined #pypy
_whitelogger_ has joined #pypy
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
tbodt has joined #pypy
TheAdversary has quit [Remote host closed the connection]
TheAdversary has joined #pypy
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
tbodt has joined #pypy
tbodt has quit [Client Quit]
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 240 seconds]
yuyichao_ has joined #pypy
yuyichao has quit [Remote host closed the connection]
kipras`away is now known as kipras
forgottenone has joined #pypy
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 260 seconds]
vkirilichev has joined #pypy
vkirilichev has quit [Remote host closed the connection]
<fijal> plan_rich: hey
Guest40313 has quit [Ping timeout: 260 seconds]
rokujyouhitoma has joined #pypy
forgottenone has quit [Ping timeout: 248 seconds]
rokujyouhitoma has quit [Ping timeout: 268 seconds]
marvin has joined #pypy
marvin is now known as Guest31255
raynold has joined #pypy
asmeurer_ has quit [Quit: asmeurer_]
tilgovi has joined #pypy
rmariano has joined #pypy
forgottenone has joined #pypy
realitix has joined #pypy
inad922 has joined #pypy
rokujyouhitoma has joined #pypy
ronan has quit [Ping timeout: 240 seconds]
ronan has joined #pypy
rokujyouhitoma has quit [Ping timeout: 248 seconds]
kenaan has quit [Ping timeout: 260 seconds]
rmariano has quit [Ping timeout: 260 seconds]
marr has joined #pypy
antocuni has joined #pypy
forgottenone has quit [Ping timeout: 255 seconds]
<ronan> gah, ll2ctypes is driving me crazy
vkirilichev has joined #pypy
arigato has joined #pypy
utkarsh_ has quit [Ping timeout: 240 seconds]
utkarsh has joined #pypy
tych0 has quit [Ping timeout: 260 seconds]
utkarsh has quit [Client Quit]
utkarsh has joined #pypy
antocuni has quit [Remote host closed the connection]
rmariano has joined #pypy
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 258 seconds]
antocuni has joined #pypy
ronan has quit [Quit: Ex-Chat]
ronan has joined #pypy
cstratak has joined #pypy
tych0 has joined #pypy
oberstet2 has joined #pypy
vkirilic_ has joined #pypy
vkirilichev has quit [Ping timeout: 248 seconds]
ronan has quit [Ping timeout: 240 seconds]
ronan has joined #pypy
vkirilichev has joined #pypy
yuyichao_ has quit [Read error: Connection reset by peer]
ronan has quit [Ping timeout: 240 seconds]
vkirilic_ has quit [Ping timeout: 260 seconds]
<fijal> ronan you're not the only one
forgottenone has joined #pypy
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 240 seconds]
kenaan has joined #pypy
<kenaan> rlamy cpyext-leakchecking c99247c01177 /: Tweak CPyBuffer.releasebuffer() to make ll2ctypes happy
arigato has quit [Ping timeout: 255 seconds]
yuyichao_ has joined #pypy
tilgovi has quit [Ping timeout: 258 seconds]
ronan has joined #pypy
rmariano has quit [Ping timeout: 260 seconds]
<kenaan> rlamy cpyext-leakchecking 31b9aeebd66e /: revert debugging code committed by mistake
vkirilic_ has joined #pypy
vkirilichev has quit [Ping timeout: 240 seconds]
vkirilichev has joined #pypy
antocuni has quit [Ping timeout: 240 seconds]
vkirilic_ has quit [Ping timeout: 248 seconds]
ronan has quit [Ping timeout: 255 seconds]
ronan has joined #pypy
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 246 seconds]
nimaje1 has joined #pypy
nimaje has quit [Killed (moon.freenode.net (Nickname regained by services))]
nimaje1 is now known as nimaje
redj has joined #pypy
realitix has quit [Ping timeout: 240 seconds]
Tiberium has joined #pypy
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 246 seconds]
vkirilic_ has joined #pypy
vkirilichev has quit [Ping timeout: 240 seconds]
Rhy0lite has joined #pypy
adamholmberg has joined #pypy
vkirilichev has joined #pypy
Tiberium has quit [Ping timeout: 255 seconds]
antocuni has joined #pypy
vkirilic_ has quit [Ping timeout: 240 seconds]
Tiberium has joined #pypy
<kenaan> rlamy cpyext-leakchecking 5bba19e669b0 /pypy/module/cpyext/test/test_cpyext.py: Filter out C functions
<kenaan> rlamy cpyext-leakchecking 438c0c9af393 /pypy/module/cpyext/: Be more careful with refcounts in array.c
realitix has joined #pypy
santagada_ has joined #pypy
<antocuni> njs: I am getting this error message when trying to auditwheel repair a wheel (I tried both pypy and cpython 3.6): "ValueError: Could not find soname in numpy/.libs/libm-2-e51d9a45.12.so"
<antocuni> do you have any clue what is it?
Tiberium has quit [Remote host closed the connection]
<antocuni> uhm, this is what I get when I do 'readelf -d libm-2-e51d9a45.12.so '
<antocuni> note the "readelf: Error: no .dynamic section in the dynamic segment"
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 268 seconds]
<antocuni> ah, apparently this is caused by "patchelf --set-soname"
Ryanar has joined #pypy
TheAdversary has quit [Disconnected by services]
TheAdversary has joined #pypy
marky1991 has joined #pypy
ronan has quit [Quit: Ex-Chat]
ronan has joined #pypy
ronan has quit [Ping timeout: 260 seconds]
inhahe_ has quit [Read error: Connection reset by peer]
commandoline has quit [Ping timeout: 260 seconds]
inhahe_ has joined #pypy
commandoline has joined #pypy
arigato has joined #pypy
holdsworth has joined #pypy
<holdsworth> pypy vs python : I have a script that takes in a list of 5000 lines and produces different aggregations.
<holdsworth> Is there a reason why the variance in pypy runtime is so large ?
<holdsworth> I conduct the tests by calling python/pypy from shell so I don't think there is caching of intermediate results.
<holdsworth> pypy runtime varies greatly. most of the time it is around 10-40ms, but sometimes it executes at 1000ms (5% of times).
<holdsworth> I use defaultdict to create the aggregations. python runtime is around 420ms and is pretty steady.
<holdsworth> In #Python, people told me that eval and JIT are not friends but no one elaborated more
<antocuni> holdsworth: do you restart the process every time? Or you have a process with repeat the same computation again and again, and sometimes it takes 40ms sometimes 1000?
<holdsworth> the latter, thanks
<dash> holdsworth: sometimes GC has to be done :)
<antocuni> and yes, in general eval doesn't play well with the JIT, because it causes it to recompile the same code again and again
<antocuni> it is expected that some iterations can be longer than the others, because sometimes the GC and the JIT kicks in; however, 40 ms vs 1000 ms sounds a bit too much
<antocuni> holdsworth: what is returned by "construct(iteration)"?
<kenaan> plan_rich default cb8f734c831d /rpython/rlib/rvmprof/src/shared/: remove old files
<kenaan> plan_rich default e19ef006ba32 /: reapply fix
<kenaan> plan_rich default ac3af78f56db /pypy/module/_vmprof/: remove write_all_code_objects, this method is not called when it does not exist
<holdsworth> the thread contains the function exits after the function ends, so I don't understand the GC related comment. I must say that I am not familiar with the arch of GC in python, sorry
rokujyouhitoma has joined #pypy
<holdsworth> antocuni: just a second
<holdsworth> antocuni: construct(iteration) returns a statement
<holdsworth> I am sorry
<holdsworth> it returns a string
TheAdversary has quit [Remote host closed the connection]
<holdsworth> sorry again
<holdsworth> it returns a function
<antocuni> holdsworth: in pypy, the memory is managed by the GC; every time you allocate an object (even if it's temporary and you don't even know it exists), the GC does it in a very fast way; from time to time, it needs to free the memory, so when it happens you see a small pause in the program
TheAdversary has joined #pypy
<antocuni> holdsworth: you cannot pass a function to eval(); it must be either a string or a code object
vkirilichev has quit [Remote host closed the connection]
<holdsworth> antocuni: it is a code object
<nimaje> holdsworth: in most cases if you use eval you should think again what you want to do and if you really need eval
<holdsworth> nimaje: I am aware of it, it's a code written by my associate, we are reviewing it and benchmarking
<holdsworth> At first we will try to take down the eval and see if the benchmarking results improve or not and then we will see what we will do next
rokujyouhitoma has quit [Ping timeout: 260 seconds]
<holdsworth> Is there any linux distro that you might recommend on running PyPy for Near Real-Time applications? Thanks
<antocuni> holdsworth: yes, getting rid of the eval sounds like the best plan
<nimaje> and in that case you probably can put the use of eval in the outer loop (except construct() changes global state and you really need to call it in the inner loop)
<plan_rich> fijal, hi
vkirilichev has joined #pypy
<antocuni> as for real time, note that pypy and real time do not play well together: as I said, the GC and the JIT can cause spikes at random points
<fijal> plan_rich: can you sort out the upload size?
<fijal> and explain to me how
<plan_rich> unsure why it does not work. nginx does not seem to reject it.
<plan_rich> (I assume you restarted nginx)
<antocuni> holdsworth: on a system I worked on, we mitigated the issue by manually calling gc.collect() at points in which we knew we could afford a pause, and by disabling the JIT after a while
vkirilichev has quit [Remote host closed the connection]
<fijal> antocuni: gc is not a problem for a while
<holdsworth> thanks antocuni, sounds like a good advice
<antocuni> fijal: I know it's incremental, but it still causes small pauses here and there. If we are talking about hard real time, it might still be a problem
<antocuni> (if it's hard real time, pypy is probably not a good solution anyway)
<fijal> well anything is a problem for hard real time
<fijal> including malloc
<fijal> plan_rich: i think so? restart it again?
<plan_rich> ok, I'll look now
<antocuni> about the patchelf issue I mentioned above; if anyone is interested, here is the bug report: https://github.com/NixOS/patchelf/issues/128
<antocuni> njs: ^^^ I suppose this is a problem for the manylinux{2,3} idea you mentioned earlier
<arigato> see also https://bitbucket.org/pypy/pypy/issues/2617/ where I discuss an idea not involving hacking at ELF files
<antocuni> arigato: yes but note that this bug is not really pypy-related; it bites you even if you try to build a linux wheel on cpython
<antocuni> (on centos6)
<arigato> because building a linux wheel on cpython requires patchelf?
<arigato> the world is sane
<antocuni> sorry, my fault
<antocuni> building the wheel work
<antocuni> auditwheel repair doesn't
<antocuni> "auditwheel repair" tries to bundles all the needed *.so inside the wheel
<antocuni> and to do so it needs to changes the rpath/soname of all of them
vkirilichev has joined #pypy
yuyichao_ has quit [Ping timeout: 246 seconds]
<plan_rich> dont know why yet. nothing useful in the logs
<plan_rich> tried to upload random file (300 mb) but still fails
yuyichao_ has joined #pypy
<plan_rich> it could be uwsgi limiting the traffic
rokujyouhitoma has joined #pypy
* plan_rich add post-limit to the config
rokujyouhitoma has quit [Ping timeout: 260 seconds]
<plan_rich> nope did not help
jiffe has quit [Quit: WeeChat 1.9]
* plan_rich needs to go. I'll look later
jiffe has joined #pypy
ronan has joined #pypy
vkirilichev has quit [Read error: Connection reset by peer]
vkirilichev has joined #pypy
TheAdversary has quit [Disconnected by services]
<LarstiQ> arigato: on https://bitbucket.org/site/master/issues/14563/remote-abort-abandoned-transaction-found you said you had a repo with any errors, could you give that to Sean? (smf on #bitbucket)
TheAdversary has joined #pypy
vkirilic_ has joined #pypy
asabil has joined #pypy
asabil has left #pypy [#pypy]
vkirilichev has quit [Ping timeout: 240 seconds]
vkirilichev has joined #pypy
rokujyouhitoma has joined #pypy
<yuvipanda> fijal: plan_rich thank you for working on the upload issue! I'll keep an eye out!
vkirilic_ has quit [Ping timeout: 240 seconds]
rokujyouhitoma has quit [Ping timeout: 260 seconds]
TheAdversary has quit [Disconnected by services]
arigo has joined #pypy
TheAdversary has joined #pypy
<kenaan> arigo reverse-debugger a24d6c7000c8 /rpython/: Fix for edc44ccff552: the previous fix in clibffi had no effect
jacob22 has quit [Remote host closed the connection]
jacob22 has joined #pypy
arigato has quit [Quit: Leaving]
arigo is now known as arigato
antocuni has quit [Ping timeout: 260 seconds]
<arigato> ronan: revdb is now fixed
<arigato> ronan: fwiw, I changed test_cpyext.py around the line with the KeyError:
<arigato> which makes revdb.py "c" command go there immediately
<kenaan> arigo reverse-debugger b0b66add46af /.hgtags: Added tag RevDB-pypy2.7-v5.6.2 for changeset a24d6c7000c8
mwhudson has quit [Quit: No Ping reply in 180 seconds.]
tmarkovich has quit [Ping timeout: 260 seconds]
jacob22 has quit [Remote host closed the connection]
jacob22 has joined #pypy
mwhudson has joined #pypy
mwhudson has joined #pypy
tmarkovich has joined #pypy
santagada_ has quit [Quit: Connection closed for inactivity]
cstratak has quit [Quit: Leaving]
kbtr_ has joined #pypy
cstratak has joined #pypy
cstratak_ has joined #pypy
kbtr has quit [Ping timeout: 260 seconds]
froztbyte has quit [Ping timeout: 260 seconds]
realitix has quit [Quit: Leaving]
froztbyte has joined #pypy
froztbyte has joined #pypy
froztbyte has quit [Changing host]
cstratak has quit [Client Quit]
inad922 has quit [Ping timeout: 240 seconds]
cstratak_ has quit [Client Quit]
<ronan> arigato: thanks!
vkirilichev has quit [Remote host closed the connection]
vkirilichev has joined #pypy
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 248 seconds]
asmeurer__ has joined #pypy
rmariano has joined #pypy
oberstet2 has quit [Ping timeout: 246 seconds]
asmeurer__ has quit [Quit: asmeurer__]
<rmariano> hi, I'm having trouble runnign the grammar tests, basically doesn't collect them
<rmariano> I'm running ./pytest.py -k test_underscore lib-python/3/test/test_grammar.py
<arigato> rmariano: the tests in "lib-python" are the standard CPython tests, so they are not run with py.test
<arigato> I mean, we have some hacks to run them with py.test, but they are not meant to
<arigato> I think each file is considered as a single test, so "-k" won't work
<rmariano> oh I see thanks
<rmariano> because I wanted to check if the underscore literals work
<rmariano> I mean having a failing test for that
<arigato> you should make a test in the style of pypy, in pypy/interpreter/astcompiler/test/ I guess
<arigato> testing just that
<arigato> usually if you change file xy.py, the corresponding test is in "test/test_xy.py"
<arigato> (ideally, but not always)
rokujyouhitoma has joined #pypy
<rmariano> great! I'll check that
rokujyouhitoma has quit [Ping timeout: 260 seconds]
<pjenvey> arigato: does it make sense that any __del__ freeing raw memory should have had an associated add_memory_pressure?
<Alex_Gaynor> pjenvey: that sounds correct to me, yes
<Cheery> I started getting a weird segmentation fault on Lever, with JIT on, on Ubuntu
<Cheery> It didn't appear until I increased the size of the computation.
<fijal> pjenvey: why freeing should increase memory pressure?
<Cheery> sometimes it crashes immediately, other times it goes further a short while
<Alex_Gaynor> fijal: it's not that __del__ should add memory pressure, it's that if you're allocating memory that is freed by an __del__ you should add memory pressure
<Cheery> here's the same with situation that it did continue further.
antocuni has joined #pypy
<Cheery> g_initialstub hmm..
<fijal> Alex_Gaynor: right
<kenaan> rlamy cpyext-leakchecking 82d95ae3d2c8 /pypy/module/cpyext/test/: A failing test that explains why test_subclass() leaks the class Sub
<ronan> mattip: ^^^ Note that it fails on nightly but not on 5.6.0, so it looks like a regression
<pjenvey> fijal: cffi docs points this out now for app level -- I'm asking about rpython lltype.malloc + rpython __del__. it's a similar situation
<mattip> ronan: nice. Maybe subtype_dealloc is too magical?
<Cheery> I seem lucky, as this seems like a segmentation fault due to load from zero address
<ronan> mattip: here the issue is that it's not called
<ronan> Sub gets the tp_dealloc of array instead, which doesn't know about heap types
<mattip> on cpython -A that test passes
<Cheery> Hey. My thing seems to crash because stacklet_thread_s g_source is NULL
<Cheery> thrd->g_source != NULL
<Cheery> in g_initialstub
tbodt has joined #pypy
<Cheery> but it does not make sense
<Cheery> it should crash much sooner
vkirilichev has quit [Remote host closed the connection]
<Cheery> I think I guess what it is.
<Cheery> it is an uncatched exception of some class
<Cheery> yep. There the culprit is.
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 240 seconds]
<mjacob> mattip: on the mailing list there's someone complaining about the pypy version number in wheel file names
<mjacob> mattip: wouldn't it make sense to include just the major version number in the file name and increase it every time we break compatibility?
gutworth has quit [Ping timeout: 260 seconds]
gutworth has joined #pypy
<antocuni> mjacob: I think it's the 'wheel' package which chooses what to include the filename
<antocuni> pypy reports only the ABI version, which is pypy_41. This is probably wrong for the opposite reasons, i.e. it claims it's backward compatible even when it's not
<mattip> somehow the actual version number is being included in the wheel name, i.e. "pp257-pypy41"
<mjacob> i think the whole logic is described here: https://www.python.org/dev/peps/pep-0425/
<mattip> the pypa would probably welcome a patch to change this to either "pp2-pypy41" or "pp3-pypy41"
<mjacob> "The tag format is {python tag}-{abi tag}-{platform tag}"
<tumbleweed> if it's not backwards compatible, we should be bumping the soabi
<mjacob> so our python tag would be pp{major version of implemented python version}?
<tumbleweed> + pypy version
<mjacob> i'd vote for setting the python tag to pp27, pp35, pp36 etc.
<tumbleweed> err how does that help?
<mjacob> and setting the abi tag to something like pypy5, pypy6, pypy7 and increase pypy's major version every time we break ABI compatibility
<tumbleweed> right
<tumbleweed> if you're actually tracking ABI breaks
<tumbleweed> the current (lazy) option is pypyX.Y, bumping when you know you've made a break
<tumbleweed> err XY
<tumbleweed> (which apparently isn't happening)
<mattip> mjacob: +1, that would mean whoever is fishing out the xx in "ppxx-pypyzz" should be using sys.version_info, not sys.pypy_version_info
<mattip> tumbleweed: the zz is from the SOABI and a whole nother kettle of fish, let's not open that now
<dstufft> I'm not sure that's right
<dstufft> well
<dstufft> sort of
<tumbleweed> mattip: are you saying that we currently say pp27 for python 3 too?
<mjacob> tumbleweed: ok, then we have to tell the guy on the mailing list that "too bad, you need new wheels every few months" i think
<dstufft> pip/wheel started doing pp2XY and pp3XY because PyPy didn't provide an ABI so we had to be conservative
<dstufft> er didn't provide the ABI variable*
<tumbleweed> dstufft: I fixed that (providing the variable) at some point
<dstufft> yea
<tumbleweed> if we're breaking ABIs he needs new wheels, that's simple enough :P
<dstufft> I would have to think more about it, because I have a nagging feeling like even at the python level, PyPy can be incompatible between versions
<dstufft> (e.g. CFFI differences and what not)
<tumbleweed> CFFI has its own compatibility variables
Rhy0lite has quit [Quit: Leaving]
<tumbleweed> but of course those aren't exposed in wheel tags
<mattip> dstufft: currently we handle cffi with the SOABI value
<mattip> so IMO the python version should reflect the "python" (interpreter + stdlib) implemented, i.e. 2.7, 3.5, 3.6
<tumbleweed> yes, that's what the spec says
<mattip> in my example ppXXX-pypyZZ currently XXX is the pypy version, not the "python" version
<mattip> (of course I am ignoring the ZZ value for the sake of simplicity right now)
<tumbleweed> right, +1
<mjacob> so we have different levels at which incompatibilities could arise: new/changed bytecodes, cffi and cpyext
<mjacob> an ideal solution would require wheel rebuilds only when *really* required
<tumbleweed> oh, right, that's not what the spec says: The version is py_version_nodot . CPython gets away with no dot, but if one is needed the underscore _ is used instead. PyPy should probably use its own versions here pp18 , pp19 .
<dstufft> the compatabiltiy tag spec isn't worded the most wonderfully
<tumbleweed> it's pretty explicit on that, although it does say "should probably"
<dstufft> the way to specify something that is python interpeter + stdlib is with the `py` prefix
<mattip> dunno if that sentence ever came up on a pypy discussion, we don't have strong representation on these things
<dstufft> py27 for instance works for anything that implements Python 2.7
<tumbleweed> right
<dstufft> pp258 is for something that the python level is specific to PyPy
<tumbleweed> but as soon as you're in c extension land, you use an implementation prefix, and it assumes the ABI changes on every release because that's the case for cpython
<dstufft> yea, though we have special logic to handle >= in CPython if you're using abi3
<dstufft> so cp35-abi3 works for CPython 3.6
Guest31255 has quit [Remote host closed the connection]
<tumbleweed> o_O
marvin has joined #pypy
<dstufft> that's because CPython has the limited ABI now (which is singified by the abi3) which is >= $SOMEVERSIONOFCPYTHON
marvin is now known as Guest76965
<dstufft> where $SOMEVERSIONOFCPYTHON defaults to 3.2 IIRC, but can be specified to any version
<mattip> wait, we were talking about XXX, let's leave ZZ for later
<mattip> pp258 IMO is wrong, if indeed the intention is "py27 for instance works for anything that implements Python 2.7" we should be py27
antocuni has quit [Ping timeout: 240 seconds]
<dstufft> meeting - afk
<tumbleweed> we should be py27 for pure python
<mattip> i.e. pure python wheels should just work on pypy
<tumbleweed> and ppXX for C-stuff
<mattip> and anytihn with a c-extension, CFFI or CAPI should use pypy-ZZ
<tumbleweed> yes
arigato has quit [Ping timeout: 248 seconds]
<mattip> ok, ppZZ
<tumbleweed> the question of whether ppXX or ppZZ is probably moot if ZZ changes on all (cffi and capi) ABI changes
<mattip> so in the example from the mail, "uWSGI-2.0.14.0.pp257-pypy_41-linux_x86_64.whl" should be "uWSGI-2.0.14.0.py27-pp41-linux_x86_64.whl"
<tumbleweed> err no, I don't get that
<mattip> well, it contains python 2.7 python code, and pypy CFFI/CAPI 41 code
<mattip> our SOABI is currently 41 for historical reasons
<mattip> another example, "pytest-3.1.3-py2.py3-none-any.whl" should install on anything, cpython 2.7, cpython3.6, pypy2 and pypy3
<mattip> s/anything/everything/
<tumbleweed> the tag is about the lowest common denominator, not an accurate inventory
<tumbleweed> so that pytest tag makes sense
<tumbleweed> but uWSGI-2.0.14.0.pp257-pypy_41-linux_x86_64.whl doesn't. uWSGI-2.0.14.0.pp2.7-pypy_57-linux_x86_64.whl would
<tumbleweed> err
<tumbleweed> uWSGI-2.0.14.0.pp27-pypy_57-linux_x86_64.whl or uWSGI-2.0.14.0.pp257-pypy_57-linux_x86_64.whl would work
<tumbleweed> I think the first one is more logical
<mattip> I am wiling to comprimise on pp27, but I do not really see why it cannot be py27, the tooling is easier
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<tumbleweed> yeah, that makes sense to me too
<tumbleweed> I think the point of the python tag is for implementation-specific language features, but it doesn't really go into that
<mjacob> the PEP says "The Python tag indicates the implementation and version required by a distribution."
<tumbleweed> there are no examples of py27-cpXX
<mjacob> the question is of course what it means for a distribution to "require an implementation"
vkirilichev has joined #pypy
rokujyouhitoma has joined #pypy
<mjacob> i mean, we try hard to emulate cpython, just the ABI is different
<mattip> tumbleweed: so I guess where cpython does cp33-abi3 I would prefer py35-pp57 but realistically will get pp35-abi57 or even pp35-pypy_57
<tumbleweed> if you want to emulate cpython, there, then use ppXX, because cpython uses cpXX
<tumbleweed> pp35-pypy_57 sounds like the best bet, yes
<tumbleweed> abi3 would be neat :P
* tumbleweed -> lunch
rokujyouhitoma has quit [Ping timeout: 240 seconds]
arigato has joined #pypy
<mattip> what does pypa need from our side to get the change for the python XXX in the wheel version string moving ?
<mattip> i.e. for pp257 (where 258 comes from sys.pypy_version_info() ) to become pp27 (where 27 comes from sys.version_info() ) ?
<mjacob> arigato: do we provide *any* cpyext ABI garuantees between pypy minor versions?
<mattip> mjacob: it may be more productive to conduct the discussion on the issue https://bitbucket.org/pypy/pypy/issues/2613
yuyichao_ has quit [Read error: Connection reset by peer]
yuyichao has joined #pypy
<mjacob> for cpyext extensions we could have the following: cp27-pypy57-linux_x86_64
<dstufft> mattip: so if pypy_41 is not ana ccurate ABI tag, then the first thing that is going to need to be done is that the ABI tag gets fixed, that logic currently assumes there is only one ABI per running python process (get_config_var("SOABI")) but that's just software so it can change
<dstufft> after that, probably the best route is to get pip updated so it starts accepting both the pp(2|3)XY and the new proposed ones
<dstufft> and then update wheel so it starts producing the new ones
<mattip> dstufft: +1 for the SOABI issue, it is now part of the release document so hopefully will recieve consideration before the next release
tbodt has joined #pypy
<mattip> dstufft: if we can help with "get pip updated .. update wheel..." let us know here or on pypy-dev
<mjacob> i still don't understand the point of the pp27 tag
<dstufft> mattip: at a minimum issues would be great, PRs would be even better though :) but should at least open up issues so we remember
<mattip> would that be https://github.com/pypa/pip ? https://github.com/pypa/wheel is not a thing ... ?
<agronholm> dstufft: ping (pm)
<dstufft> mattip: yes to the former, for the latter uh, it's currently on bitbucket but I think agronholm is changing that
<dstufft> agronholm: oops, I forgot to respond b/c I was in a meeting
<agronholm> no worries
<agronholm> mattip: I volunteered to be a co-maintainer for wheel
<mattip> cool, good luck
ctismer_afk has joined #pypy
ctismer has quit [Excess Flood]
inad922 has joined #pypy
arigato has quit [Quit: Leaving]
<mattip> mjacob: what would you propose instead of pp27? I would push for pip on pypy2 to consume cp27, cp2, pp2, pp27,
<mattip> and that wheel should produce cp2 or cp27 tags even when run on pypy
<tumbleweed> that sounds pretty crazy
<mattip> unless there is a know incompatibility
<tumbleweed> yeah, if there are any C extensions they won't be compatible
<mattip> nonono, pure python packages
<tumbleweed> are pure python packages get cp27 by default?
<tumbleweed> that's when py27 is supposed to be used
<mattip> ahh, sorry, you are right of course
<mattip> meant to be "and that wheel should produce py2 or py27 tags when run on pypy"
<tumbleweed> that makes sense
<mattip> and "pip on pypy2 to consume py27, py2, pp2, pp27", sorry
<mattip> grrr, meant to be "and that pure-python wheel should produce py2 or py27 tags when run on pypy"
<mattip> wheel builds pure-python packages that way today on PyPy so, YAY
rokujyouhitoma has joined #pypy
<tumbleweed> gonna update your issues?
<mjacob> pure python packages are already a solved problem i think
* mattip updating issues
<ronan> mattip: the tp_dealloc issue seems to come from 1563ed4d99ac
rokujyouhitoma has quit [Ping timeout: 248 seconds]
<ronan> mattip: do you remember why you changed the subtypes' tp_dealloc?
<mattip> there is a test that at the time failed
<ronan> hmm, does it need different logic for heaptype vs non-heaptype subclasses?
<mattip> test_userslots.py in ca60170ed0cb
<mattip> some pandas cython classes i think
<mattip> no, an app-level class that inherits from a c class, so like your test
<mattip> ahh, other way around. This was to support a CAPI type that inherits from an app-level type
<mattip> cuz datetime on PyPy is app-level vs. CPython where it is C
raynold has quit [Quit: Connection closed for inactivity]
<ronan> is that possible in CPython?
<ronan> apparently yes, but only in CPython 2
<mattip> fixed issue on wheel repo, closed pip issue and made a new one https://github.com/pypa/pip/issues/4631
<mattip> ronan: what happens on CPython3, if for instance an app-level class is subclassed in cython?
<ronan> TypeError!
<mattip> sorry, zzz. FWIW, looking at the code in typeobject.py subtype_dealloc it is clear there will be cases that break that,
<mattip> it is way too complicated and convolved
<mattip> but at least now there is a test that fails
inad922 has quit [Ping timeout: 260 seconds]
mattip has left #pypy ["bye"]
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
adamholm_ has joined #pypy
adamholmberg has quit [Ping timeout: 240 seconds]
vkirilichev has quit [Remote host closed the connection]
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 240 seconds]
ronan has quit [Quit: Ex-Chat]
ronan has joined #pypy
ronan has quit [Ping timeout: 260 seconds]
rmariano has quit [Ping timeout: 240 seconds]
jcea has joined #pypy
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 268 seconds]
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
tbodt has joined #pypy
Guest76965 has quit [Ping timeout: 260 seconds]
adamholm_ has quit [Remote host closed the connection]
adamholmberg has joined #pypy
asmeurer_ has joined #pypy
adamholmberg has quit [Ping timeout: 240 seconds]
marvin has joined #pypy
marvin is now known as Guest15275
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
tbodt has joined #pypy
deep-book-gk_ has joined #pypy
deep-book-gk_ has left #pypy [#pypy]
marky1991 has quit [Read error: Connection reset by peer]
rokujyouhitoma has joined #pypy
marky1991 has joined #pypy