arigato 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 | mac OS and Fedora are not Windows
lritter has quit [Remote host closed the connection]
Garen has quit [Remote host closed the connection]
jcea has quit [Quit: jcea]
Garen has joined #pypy
dddddd has quit [Remote host closed the connection]
redj has quit [Read error: Connection reset by peer]
_whitelogger has joined #pypy
redj has joined #pypy
<mattip> this test runs twice as fast on py3.5 as on unicode-utf8-py3
<mattip> python pytest.py pypy/objspace/std/test/test_dictproxy.py
kipras has joined #pypy
kipras has quit [Read error: Connection reset by peer]
kipras has joined #pypy
<mattip> hmm, that slowdown seems to be everywhere. I could not find a test suite that is not slower
iomari has quit [Remote host closed the connection]
<mattip> pypy/interpreter/test/test_exec.py is about the same time
<mattip> test_code.py is also about the same
<kenaan> stevie_92 cpyext-gc-cycle c03fe327893a /: Added additional flags for objects Implemented refcount overhead (for non-cyclic refcount) Implemented ...
<kenaan> stevie_92 cpyext-gc-cycle fb1c6fe11349 /: Call tp_traverse from incminimark Mark cpython objects reachable by pypy objects
<kenaan> stevie_92 cpyext-gc-cycle 94b062729ca4 /: Refactored call to tp_traverse from incminimark so there are no dependencies to pypy
<kenaan> stevie_92 cpyext-gc-cycle fd6699184d11 /pypy/module/cpyext/state.py: Directly call tp_traverse instead of via generic_cpy_call
<kenaan> stevie_92 cpyext-gc-cycle 65ead3f78618 /: Removed unnecessary code
<kenaan> stevie_92 cpyext-gc-cycle b74906a7ac4b /: Removed unnecessary code
<kenaan> stevie_92 cpyext-gc-cycle e5ba3fd47f96 /: Implemented cpython-like GC list for cpyext Added some code for cpyext-only boehm GC support
<kenaan> stevie_92 cpyext-gc-cycle 878ff32d88a1 /: Removed extra flags in cpython refcount Fixed tests in test_rawrefcount and test_cpyext Removed referen...
<kenaan> stevie_92 cpyext-gc-cycle 9e5001a6604b /: Implemented pyobj_list for rawrefcount (to be used in cpyext tests) Added own cpyext test file for GC-r...
<kenaan> stevie_92 cpyext-gc-cycle a189719f68e4 /: Implemented pyobj as gc and vice-versa Cleaned cpyext and gc/rawrefcount tests Cleaned translation options
<kenaan> stevie_92 cpyext-gc-cycle ada4b64c0816 /pypy/module/cpyext/test/test_cpyext.py: Fixed cpyext test
<kenaan> stevie_92 cpyext-gc-cycle 860d9f8d29b6 /pypy/module/cpyext/test/test_cpyext.py: Fixed cpyext test
<kenaan> stevie_92 cpyext-gc-cycle c1219f8ea34b /rpython/memory/gc/test/test_rawrefcount.py: Fixed rawrefcount tests
<kenaan> stevie_92 cpyext-gc-cycle fa88e83164e0 /: Fixed cpyext test
<kenaan> stevie_92 cpyext-gc-cycle 5b3e2b3a25bf /rpython/memory/gc/incminimark.py: Cleaned up code in incminimark
<kenaan> stevie_92 cpyext-gc-cycle 80824650968a /pypy/module/cpyext/: Fixed some formatting issues
<kenaan> stevie_92 cpyext-gc-cycle 2e7b85611e30 /rpython/memory/gc/: Added complex rawrefcount tests using dot files Adapted traverse support in incminimark to support tests
<kenaan> stevie_92 cpyext-gc-cycle 48c91f03eaa6 /rpython/memory/gc/test/test_rawrefcount.py: Finished implementation of dot file tests for rawrefcount Removed obsolete tests, that will be replaced...
<kenaan> stevie_92 cpyext-gc-cycle ea95f4bc807f /rpython/memory/gc/test/test_rawrefcount.py: Fixed dot tests by allocating all PyPy objects old Add to stackroots instead of immortal PyPy objects f...
<kenaan> stevie_92 cpyext-gc-cycle c46c894a7c06 /rpython/memory/gc/test/dot/: Added some dot tests
<mattip> ahh, no wrong measuring
dddddd_ has joined #pypy
dddddd_ is now known as dddddd
<mattip> ok, that was a dead end. The difference in test times is due to W_UnicodeObject.__init__,
<mattip> we call lgt = rutf8.codepoints_in_utf8(utf8str) to assert lgt == length
<mattip> that test really slows things down
<mattip> s/test/check/
<mattip> i guess we need a flag to disable this check for the buildbots
<kenaan> mattip unicode-utf8-py3 cc276d4cd166 /pypy/objspace/std/unicodeobject.py: vastly speed up own tests
marky1991 has joined #pypy
<cfbolz> mattip: good catch!
Rhy0lite has joined #pypy
<arigato> mattip: uh what
<arigato> code in W_UnicodeObject.__init__ contains "try: check stuff; except: pass"
<arigato> that means "please check, and if the check fails, ignore that anyway"
<arigato> (in the py2 branch)
<mattip> yes, that is to handle a = array.array('u', ...); a.byteswap();
<arigato> ok, but the whole code is strictly equivalent to nothing
<arigato> (except much slower)
<mattip> ahh, yes, the assert should be outside the try/except, or all that should just be removed
<arigato> even the assert would have its AssertionError eaten
<arigato> ..ah I see
<mattip> probably removing would be the best choice
<arigato> at this point, yes
<arigato> also, if we allow array.array to make nonsense W_UnicodeObjects, we must be ready to have random explosions down the line
<mattip> yes, there are tests for that since CPython allows it, and we pass them
<arigato> I guess the tests don't cover all details, but "good enough"
<kenaan> mattip unicode-utf8 baef7e3e3ac0 /pypy/objspace/std/unicodeobject.py: remove untranslated check for unicode object creation
<mattip> note this useless code did not slow down unicode-utf8 as much as its counterpart in unicode-utf8-py3
<arigato> it might be because unicode strings are more rare in the python interpreter on py2
<mattip> because the first used check_utf8 which the other used codepoints_in_utf8, and the latter is much slower untranslated
<arigato> ah
<mattip> all the rffi.casts are costly
<mattip> each character in the string is cast twice
<arigato> ok, that's indeed a very good explanation
adamholmberg has joined #pypy
<mattip> why do we need the double-cast rffi.cast(lltype.Signed, rffi.cast(rffi.SIGNEDCHAR, ord(value[i]))) ?
realitix has joined #pypy
fryguybob has joined #pypy
realitix has quit [Quit: realitix]
realitix has joined #pypy
marky1991 has quit [Ping timeout: 268 seconds]
<bbot2> Started: http://buildbot.pypy.org/builders/pypy-c-jit-win-x86-32/builds/4332 [mattip: force build, unicode-utf8-py3]
<bbot2> Started: http://buildbot.pypy.org/builders/own-win-x86-32/builds/1931 [mattip: force build, unicode-utf8-py3]
jcea has joined #pypy
realitix has quit [Quit: realitix]
realitix has joined #pypy
realitix has quit [Client Quit]
realitix has joined #pypy
realitix has quit [Quit: realitix]
realitix has joined #pypy
realitix has quit [Quit: realitix]
realitix has joined #pypy
inhahe has quit []
realitix has quit [Quit: realitix]
realitix has joined #pypy
realitix has quit [Client Quit]
realitix has joined #pypy
inhahe has joined #pypy
inhahe has quit []
inhahe has joined #pypy
realitix has quit [Quit: realitix]
realitix has joined #pypy
realitix has quit [Client Quit]
realitix has joined #pypy
marky1991 has joined #pypy
realitix has quit [Quit: realitix]
realitix has joined #pypy
realitix has quit [Client Quit]
realitix has joined #pypy
realitix has quit [Quit: realitix]
realitix has joined #pypy
realitix has quit [Client Quit]
realitix has joined #pypy
realitix has quit [Quit: realitix]
forgottenone has joined #pypy
marky1991 has quit [Ping timeout: 258 seconds]
marky1991 has joined #pypy
forgottenone has quit [Remote host closed the connection]
marky1991 has quit [Ping timeout: 244 seconds]
marky1991 has joined #pypy
marky1991_2 has joined #pypy
marky1991 has quit [Ping timeout: 244 seconds]
<bbot2> Failure: http://buildbot.pypy.org/builders/pypy-c-jit-win-x86-32/builds/4332 [mattip: force build, unicode-utf8-py3]
Zaab1t has joined #pypy
Rhy0lite has quit [Quit: Leaving]
mattip has quit [Ping timeout: 250 seconds]
<ronan> cfbolz, mattip: I see what's going on now, LOAD_GLOBAL is the bottleneck, cf. updated gist https://gist.github.com/rlamy/392931b55183fbb86587f982990e74d3
<cfbolz> Weird
<ronan> so when globals() has the UnicodeDictStrategy, LOAD_GLOBAL leaves residual calls after jitting, and the branch adds a slow call to str_decode_utf8() to the already-slow path
<cfbolz> Can you paste the trace?
<ronan> (I can't remember what the good options are, so I just did PYPYLOG=jit:jit.log)
<cfbolz> ronan: getting a 404?
<ronan> aaargh, github doesn't seem to like it
<cfbolz> thanks. reading
<cfbolz> ronan: that is running the whole bm_chameleon.py, as in this gist?: https://gist.github.com/rlamy/392931b55183fbb86587f982990e74d3
<cfbolz> or just the execed version?
<cfbolz> (because there is only one trace in that log)
<ronan> cfbolz: sorry, just the execed version
<cfbolz> ok
<cfbolz> I don't see the call to str_decode_utf8
<cfbolz> sorry, I guess I should just download my own executables and look properly ;-)
<ronan> cfbolz: yeah, sorry, that was actually with py3.5
<cfbolz> ok
<cfbolz> was just confused, because that code looks as I expect
<cfbolz> downloading now
<ronan> cfbolz: here's the unicode-utf8-py3 version: https://pastebin.com/u4FyZC9Y
<cfbolz> right, that looks fairly bad indeed
<cfbolz> (but a little bit to be expected, nobody looked at traces of the utf8 branches yet at all, no?)
<ronan> I guess not, at least not on py3
<cfbolz> ok, trying to find out what is going on
<cfbolz> I am confused by the docstring in str_decode_utf8
<cfbolz> """Same as checking for the valid utf8, but we know the utf8 is not
<cfbolz> valid so we're trying to either raise or pack stuff with error handler.
<cfbolz> The key difference is that this is call_may_force """
marky1991_2 has quit [Remote host closed the connection]
<ronan> cfbolz: I guess it means that we call this for the side-effects, as decoding valid utf8 is actually a no-op
<cfbolz> yes, just saying that in the context of UnicodeDictStrategy, I think we want the checking version, not the side-effect version
<cfbolz> but the more I think about it, the more I become convinced that UnicodeDictStrategy is just wrong in the utf8 world
<kenaan> cfbolz unicode-utf8-py3 1da3240effbd /pypy/objspace/std/dictmultiobject.py: three XXX, will try to fix this weekend
<bbot2> Failure: http://buildbot.pypy.org/builders/own-win-x86-32/builds/1931 [mattip: force build, unicode-utf8-py3]
Zaab1t has quit [Quit: bye bye friends]
powerbit has joined #pypy
jcea has quit [Remote host closed the connection]
jcea has joined #pypy
ssbr has quit [Quit: Leaving]
ssbr has joined #pypy
k1nd0f has joined #pypy
k1nd0f has quit [Client Quit]
adamholmberg has quit [Remote host closed the connection]
k1nd0f has joined #pypy
adamholmberg has joined #pypy
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
k1nd0f has quit [Remote host closed the connection]
adamholmberg has quit [Remote host closed the connection]
k1nd0f has joined #pypy
adamholmberg has joined #pypy
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
adamholmberg has quit [Remote host closed the connection]