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
<bbot2> Failure: http://buildbot.pypy.org/builders/pypy-c-jit-linux-x86-64/builds/7363 [mattip: force build, win64-py3.7]
andi- has quit [Ping timeout: 240 seconds]
jacob22_ has quit [Read error: Connection reset by peer]
jacob22_ has joined #pypy
andi- has joined #pypy
jcea has quit [Read error: Connection reset by peer]
jcea has joined #pypy
lritter has quit [Ping timeout: 256 seconds]
jcea has quit [Ping timeout: 260 seconds]
bogner has joined #pypy
<bbot2> Started: http://buildbot.pypy.org/builders/pypy-c-jit-win-x86-32/builds/5689 [mattip: force build, win64-py3.7]
otisolsen70_ has joined #pypy
otisolsen70 has quit [Ping timeout: 256 seconds]
otisolsen70_ has quit [Quit: Leaving]
<bbot2> Retry: http://buildbot.pypy.org/builders/pypy-c-jit-win-x86-32/builds/5689 [mattip: force build, win64-py3.7]
<bbot2> Started: http://buildbot.pypy.org/builders/pypy-c-jit-win-x86-32/builds/5690 [mattip: force build, win64-py3.7]
<antocuni> wow, I just discovered that it exists a thing called "PseudoHighLevelCallable"
<antocuni> which doesn't seem to be used anywhere, but the name is very cool :)
<LarstiQ> now what could that mean? :)
<antocuni> """A gateway to a low-level function pointer. To high-level RPython
<antocuni> code it looks like a normal function, taking high-level arguments
<antocuni> and returning a high-level result.
<antocuni> """
<antocuni> but don't ask me what *actually* means :)
<LarstiQ> that sounds like a transparent python-to-c bridge?
<LarstiQ> ish
<antocuni> no I think it's on another level
<LarstiQ> a high one? ;)
<antocuni> in rpython a "high level function" takes things like rpython lists and strings. A low level function takes things like "struct _rpy_str { char *content; int lenght}"
<LarstiQ> right
<antocuni> so the same function can be seen with two different rpython types. I think this was meant to "level up" if you start with a low-level function, but I'm not sure what it was used for
<antocuni> probably something in the v1 JIT, since according to hg blame it was introduced on 2006-08-24
jcea has joined #pypy
<cfbolz> antocuni: we still have some of that kind of stuff around, eg hlstr and llstr
Mortir has joined #pypy
<mattip> cfbolz: I am not sure if you can merge default into py3.7 right now, it might break
<mattip> since I merged the win64 branch into default
<cfbolz> mattip: it's fine
<cfbolz> I wasn't planning to
<mattip> ok, thanks
<cfbolz> it'll get merged eventually, that's good enough for me
<mattip> almost there, then the windows buildbot had an OOM error cuz I was compiling pytorch :(
<cfbolz> we should *really* write a blog post
bbot2 has quit [Quit: buildmaster reconfigured: bot disconnecting]
<mattip> once it is available for use, yes
bbot2 has joined #pypy
<bbot2> Started: http://buildbot.pypy.org/builders/pypy-c-jit-win-x86-32/builds/5691 [mattip: force build, win64-py3.7]
<cfbolz> mattip: do you expect the merge to 3.7 to be hard?
<mattip> stage 1 - getting win32 to finish a build might be done, then I will merge and try to see how badly win64 fails
<mattip> there are weird utf8 problems still around locale and codepages
<cfbolz> right :-(
<mattip> so stage 2 is either switch to win64 and leave win32 behind
<mattip> or it might be fix utf8 things and then stage 3 switch to win64
<mattip> depends on how many new test failures there are
lritter has joined #pypy
dmalcolm has joined #pypy
lritter has quit [Ping timeout: 264 seconds]
lritter has joined #pypy
<exarkun> I'm pretty sure this code is wrong on both CPython and PyPy but it only seems to fail on PyPy - https://github.com/tahoe-lafs/tahoe-lafs/blob/master/src/allmydata/nodemaker.py#L69-L70
<exarkun> I wonder if anyone knows of any tricks I might employ to make it fail _more_? Right now I've only seen it on Tahoe-LAFS' PyPy CI job, and only once in a while. That makes it hard to be confident I've actually fixed it.
<simpson> Maybe could patch it with worst-case behavior; is WeakValueDictionary still correct if its .__contains__() pops the key from itself and returns True?
<simpson> self._node_cache = OohSorryJustMissedThemBetterLuckNextTimeDictionary()
<exarkun> Hm yea I guess that's a possibility. Or maybe a not _quite_ worst-case but more realistic version? `__contains__` determines its result, the forces a full gc run, then returns it? I don't know if that would actually reliably provoke this case though.
<exarkun> I did finally reproduce it one time on my laptop after 455 test runs.
<cfbolz> exarkun: it's wrong because the dict entry disappears between the two lines?
<exarkun> Oh right, sorry, yes, the way it fails is with a KeyError on the 2nd line
<exarkun> And note it's not a regular dict but a WeakValueDictionary
<cfbolz> the weak*dicts on pypy are really a bit annoying
<exarkun> certainly they're a bit different than the CPython versions. but I remember being pretty annoyed with the CPython versions on more than one occassion. :)
<cfbolz> exarkun: yes, in cpython it's "mostly nice, and sometimes really strange"
<cfbolz> exarkun: I'd be tempted to go with simpson's suggestion, your idea is more realistic but sounds like it could lead to flaky or slow tests
<exarkun> A complicating factor (applying to both ideas mentioned) is that the test suite is really complicated and I'm not actually convinced I can poke a different kind of dict into the implementation :/
<exarkun> (Or, I'm sure I can, just not sure if it will cost $8000 to do so)
<exarkun> If I can reproduce the problem locally about 30 times then I might call that statistically significant and I can validate the fix that way...
<exarkun> I think what I originally had in mind when I asked the question is whether there was some `pypy -Xmakeweakrefsdowhatiwant ...` I could use to get closer to determinism without code changes
<exarkun> Oh, well, as a temporary hack, if I just jam a gc.collect() right between the two lines then my average runs-until-failure goes from >700 to 1
<simpson> Nice. Proves the concept and mechanism.
<bbot2> Exception: http://buildbot.pypy.org/builders/pypy-c-jit-win-x86-32/builds/5691 [mattip: force build, win64-py3.7]
<cfbolz> exarkun: sorry, was afk. my suggestion was to write a very targetted regression test, that monkeypatches the dict implementation and then fix the code. I understand that it doesn't really help you in fixing the other potential problems with weak dicts
<exarkun> cfbolz: Hm, yea, that is probably a pretty good suggestion.
<cfbolz> :-)
<mattip> nulano: around? Feel like taking a look at the pypy.module._rawffi failures on the win64-py3.7 branch?
<mattip> I think those are the only new failures compared to py3.7
<arigato> AttributeError: module 'sys' has no attribute 'maxint' ?
<arigato> running app-level code in py3.7, yes, that's expected
<mattip> ahh, never mind, it is a stupid merge problem
<mattip> cool. So that branch should be good to merge
<arigato> great!
<bbot2> Started: http://buildbot.pypy.org/builders/pypy-c-jit-win-x86-64/builds/38 [mattip: force build, py3.7]
<bbot2> Started: http://buildbot.pypy.org/builders/own-win-x86-64/builds/117 [mattip: force build, py3.7]
<mattip> if these do not fail much worse than 32-bit windows, we can flip to building 64-bit by default and make a blog post
<bbot2> Failure: http://buildbot.pypy.org/builders/pypy-c-jit-win-x86-64/builds/38 [mattip: force build, py3.7]
<bbot2> Started: http://buildbot.pypy.org/builders/rpython-linux-x86-64/builds/399 [antocuni: force build, rpython-error_value]
<bbot2> Failure: http://buildbot.pypy.org/builders/own-win-x86-64/builds/117 [mattip: force build, py3.7]
<cfbolz> woopsie, finding some fun bugs
<mattip> corner cases or real show stoppers?
<bbot2> Failure: http://buildbot.pypy.org/builders/rpython-linux-x86-64/builds/399 [antocuni: force build, rpython-error_value]
<cfbolz> mattip: corner cases
<cfbolz> mattip: in one case the location of a warning produced by the bytecode compiler is wrong
<mattip> oy
<cfbolz> >>>> import x
<cfbolz> _frozen_importlib:228: DeprecationWarning: invalid escape sequence 'z'
<cfbolz> (the warning should be in x.py, obviously)
<mattip> arigato: it seems cffi is out of sync, test_same_file is failing. No big deal, but when you have some spare cycles
jacob22_ has quit [Read error: Connection reset by peer]
jacob22_ has joined #pypy
pingpong has joined #pypy
<pingpong> Hi
<bbot2> Started: http://buildbot.pypy.org/builders/rpython-linux-x86-64/builds/400 [antocuni: force build, rpython-error_value]
<bbot2> Started: http://buildbot.pypy.org/builders/pypy-c-jit-win-x86-64/builds/39 [mattip: force build, py3.7]
<bbot2> Started: http://buildbot.pypy.org/builders/own-win-x86-64/builds/118 [mattip: force build, py3.7]
<mattip> pingpong: hello
<bbot2> Failure: http://buildbot.pypy.org/builders/rpython-linux-x86-64/builds/400 [antocuni: force build, rpython-error_value]
jacob22_ has quit [Quit: Konversation terminated!]
jacob22 has joined #pypy
jacob22 has quit [Client Quit]
<bbot2> Failure: http://buildbot.pypy.org/builders/own-win-x86-64/builds/118 [mattip: force build, py3.7]
<bbot2> Failure: http://buildbot.pypy.org/builders/pypy-c-jit-win-x86-64/builds/39 [mattip: force build, py3.7]
ambv has joined #pypy
darley has joined #pypy
darley is now known as Guest87173
jacob22 has joined #pypy
jacob22 has quit [Read error: Connection reset by peer]
jacob22 has joined #pypy