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
xcm has quit [Remote host closed the connection]
xcm has joined #pypy
Kipras_ has quit [Ping timeout: 258 seconds]
xcm has quit [Remote host closed the connection]
xcm has joined #pypy
antocuni has quit [Ping timeout: 244 seconds]
jcea has quit [Quit: jcea]
<kenaan> mattip default ad8eb33a762d /rpython/translator/c/gc.py: actually test before committing
dddddd has quit [Remote host closed the connection]
adamholm_ has joined #pypy
Garen has quit [Read error: Connection reset by peer]
Garen has joined #pypy
adamholmberg has quit [Ping timeout: 255 seconds]
speeder39_ has joined #pypy
adamholm_ has quit [Remote host closed the connection]
<kenaan> mattip default b746e83d4c54 /lib-python/2.7/: add some pieces needed to start building opencv-python with scikit-build
whitequark has joined #pypy
<whitequark> i'm getting a crash (assertion failure) in: File "pypy_objspace_std.c", line 47561, in _string_to_int_or_long
<whitequark> i believe it's related to literals with underscores and i'd like to fix it
<whitequark> where do i start?
<Alex_Gaynor> whitequark: generally you start by writing a unit test that can be run untranslated (where you get better tracebacks, easier to debug, faster dev cycle)
<Alex_Gaynor> I don't know anythign about that part of the code, so I can't really suggest how you fix that
<Alex_Gaynor> but based on where the assertion was, pypy/objspace/std/test/test_something.py is where the testcase goes
<Alex_Gaynor> well, unless it's a parser bug (might be able to guess if there's a full stack trace) that happens to be using some shared function, then it'd go somewhere else
<whitequark> the unit test is: 0xffff_ffff_ff20_0000
<whitequark> (the entire thing)
<Alex_Gaynor> just having that in source code?
<whitequark> yep, a file with that one literal crashes
<whitequark> it's in prev_digit which doesn't handle underscores
<whitequark> i don't really understand why prev_digit is even needed
<whitequark> but i can fix it i think
<Alex_Gaynor> ok, so pypy/interpreter/ is where the tests for tha tgo
<Alex_Gaynor> I'm not 100% sure which test file, but I suppose any will do
<whitequark> aha
<whitequark> how do i run tests?
<Alex_Gaynor> ./pytest.py path/to/test.py
<Alex_Gaynor> (At least, assuming nothing's changed since ... a long time ago... when I last did any substantial dev work)
<mattip> python2 pytest.py ...
<whitequark> that's really weird, it parses
<Alex_Gaynor> whitequark: that might mean the bug is later in the pipeline, in the astcompiler
<Alex_Gaynor> then the test probably goes in the interpreter/astcompiler/test directory
<whitequark> yeah, i just realized
<whitequark> what mode does test_compiler parse testcases with and how do i switch it to 3.6?
<mattip> checkout the py3.6 branch of the pypy repo
<mattip> "default" branch is 2.7
<Alex_Gaynor> ah yes, that's an important note :-)
<mattip> both still use `python2 pytest.py ...`
<whitequark> yes, i'm already on 3.6
<whitequark> that's why i get an assertion on that literal and not a syntax error
<whitequark> i can read :p
<mattip> where did you put the added test?
<whitequark> pyparser/test/expressions.py
<whitequark> since that seemed appropriate
<whitequark> ohhh i think i see what i need instead
<whitequark> excellent, got a failing test
<mattip> +1
<whitequark> now do i just fix the source and rerun the test? or do i need to rebuild?
<mattip> the first thing
<mattip> since rebuild is ~30 minutes, we prefer run "untranslated tests" like we guided you to do
<whitequark> prev_digit is written very strangely
<whitequark> i = self.i - 1
<whitequark> assert i >= 0
<whitequark> self.i = i
<whitequark> c = self.s[i]
<whitequark> is it trying to keep self.i nonnegative?
<simpson> whitequark: RPython fun! Can't take negative indices, so we gotta prove to RPython that `i` can't be negative.
<mattip> to run post-translation tests on py3.6, you do `python2 pytest.py -A --python=pypy3-c ...`
<whitequark> thought so, ok
forgottenone has joined #pypy
<Alex_Gaynor> whitequark: we recommend avoiding translating as much as possible (it's why we have so many unit tests :-))
<whitequark> is translation always from scratch?
<whitequark> the test just passed but what i was trying to do is to run my application under pypy
<mattip> translation is always from scratch, we have not yet figured out how to partially compile rpython
<whitequark> can i run setup.py untranslated somehow at least?
<whitequark> it bytecompiles everything so that should show any other parser crashes
<mattip> maybe, if it does not import too many modules
<whitequark> just distutils really
<whitequark> which binary do i use for this?
<mattip> ... which means time, signals, maybe others. Hang on, I am trying it out so I don't mislead you
<mattip> so something like `python2 pypy/bin/pyinteractive.py --withmod-signal --withmod-_time
<whitequark> aha
<mattip> you can see the complete set with `python2 pypy/bin/pyinteractive.py --help`
<whitequark> uh, it doesn't know --withmod-_time
<mattip> this will run slowly, without translation
<whitequark> ah, no _
<mattip> sorry
<whitequark> ok that's kind of depressingly slow, i guess i'm going to translate
<whitequark> while we're at it how do i contribute the patch
<simpson> ISTR that the slowdown is something like 2000x, running untranslated. I don't have the patience to double-check that figure.
<mattip> we can give you a commit bit as long as you don't break things too often, do you have a bitbucket ID?
<mattip> or you can issue a pull request to the bitbucket/pypy/pypy repo
<mattip> we try to follow good practices and put changes on a branch, then merge the branch to py3.6 / default as appropriate,
<mattip> some people commit directly to default and break stuff (like I did for the past three days)
<whitequark> i'll do whichever you think is best
<mattip> you should be a "contributor" now, let's start off slow: put your commit on a branch and push it to pypy/pypy
<whitequark> sweet, let me figure out hg
<whitequark> i've never used it before that i rememer
<mattip> hg branch my cool branch
<mattip> hg commit -m"fix some parsing stuff"
<mattip> hg push
<whitequark> i've already committed it to uh, py3.6 i think
<whitequark> what do?
<mattip> there is hg rebase
<Alex_Gaynor> hg rollback I think?
<whitequark> roll back the last transaction (DANGEROUS) (DEPRECATED)
<whitequark> hm
<mattip> did you push it somewhere?
<whitequark> nope
<mattip> then that is the easiest thing to do
<mattip> besides, there is always the pastebin you posted
<whitequark> ok
<kenaan> whitequark fix-literal-prev_digit-underscore 2c00b58bf83c /: Fix a crash on literals like 0xffff_ffff_ff20_0000.
<whitequark> pushed
<whitequark> aha
<mattip> congrats
<whitequark> alright what next
<mattip> we look at it, and merge to py3.6. Then when buildbots run tomorrow the built artifact shows up on buildbot.pypy.org/nightlies
<whitequark> ack
<mattip> thanks!
<whitequark> np, looking at pypy to see if i'll get a speedup in my project
<whitequark> it involves sending 40 MB/s via libusb and soft realtime so it kinda strains cpython at times
<mattip> hopefully using cffi not ctypes nor c-extensions
<whitequark> uhhh, python-libusb uses ctypes
<whitequark> is that bad?
<mattip> cffi would be faster
<mattip> on pypy
<whitequark> oh no... migen doesn't work out of box on pypy
<whitequark> this one might be a real issue sadly, it parses bytecode of the caller to see which variable the result is assigned to
<whitequark> (i know, i know)
<whitequark> what kind of IR does pypy use? maybe i can port it
<Alex_Gaynor> pypy's byetcode is very similar to cpythons, almost identicla
<whitequark> ah that's good
<mattip> you don't mean migen https://github.com/m-labs/migen
<whitequark> yes, this migen
<mattip> if so there is myhdl
<whitequark> well a) myhdl uses a fundamentally inferior approach in my opinion and b) i have a huge design in migen that i spent a year working on, i'm not going to rewrite it
<whitequark> (full disclosure: i wrote the successor to migen. i think migen is one freakin good idea)
<mattip> heh. myhdl is what got me involved in pypy, so I am partial to it. I kind of drifted away from that world though
<whitequark> glasgow (the project i'm working on right now) heavily uses things like FSMs parameterized by data
<whitequark> let me show you some representative example
Ai9zO5AP has joined #pypy
<whitequark> stuff like this isn't really amenable to myhdl's approach
<whitequark> it could be made amenable if myhdl gained an unquote operation
<whitequark> but at that point you're stuck maintaining a python parser and that's just a world of pain
<whitequark> (i maintain a python parser, i would know)
<mattip> ok. Is there a fundamental reason getting migen / glasgow to run on PyPy would be hard? It seems to be pure python
<whitequark> there isn't. that's what i'm trying to do right now
<mattip> cool
<whitequark> the bytecode parsing stuff in migen is mostly required for debuggability, there's only 2 places in glasgow where it's required to function
<whitequark> (and i might be able to fix that in nmigen)
<whitequark> hm
<whitequark> so glasgow does run on pypy
<whitequark> with a 2 line patch besides the bugfix we discussed earlier
<whitequark> unfortunately performance is really bad
<whitequark> the 2nd command is actually limited by USB line rate
<mattip> most of the core devs are on european time, maybe we can pull them in soon
<simpson> The standard profiling tools work, as long as you don't need to peek into the (nonexistent) libpython.so.
<whitequark> i'm theoretically in europe too i just dont sleep like a normal person
<whitequark> hmm
<simpson> e.g. I would reach for profile and pstats, if I didn't have any good ideas and I didn't know the codebase well.
<mattip> better to use vmprof on pypy, less intrusive than cProfile, and it can show jit traces
<whitequark> i'm not sure if i've ever profiled this before, getting it to that level of performance mostly meant finding and eliminating USB bugs and n^2 algorithms :D
<whitequark> let's see what vmprof says
<mattip> the "upload to our server" part does not work, but there is a local viewer
<simpson> Sure. TBH I'm expecting that you'll find an infelicity not in your code, but in PyPy. It's (un?)common for folks to discover that some library method is poorly implemented.
<whitequark> infelicity, heheh
<simpson> Well, not a correctness bug so much as a slowly-implemented library routine.
<whitequark> oh i've just never heard that word before
<whitequark> it's a good word
<simpson> It is! It's on my list of terrible baby names.
<whitequark> is pypy expected to have a huge startup time?
<mattip> is there a benchmark that just tests io over lib-usb?
<whitequark> mattip: that's pretty much what that benchmark is
<whitequark> it tests libusb, my async wrapper for libusb, and some extremely thin code for buffering
<mattip> code paths need to run ~1000 times before they are jitted
<whitequark> hmm so what you're saying i should run that test in a loop
<whitequark> i can do that
<whitequark> that's somewhat better
<whitequark> by ~6th iteration it tops out at https://paste.debian.net/1083661/
<whitequark> which means it's still pypy-limited
<kenaan> mattip default 3175515ea703 /pypy/module/cpyext/include/object.h: this enables building opencv2 since they use these macros
<mattip> yay, opencv
<mattip> whitequark: do you have a simulation benchmark that avoids libusb?
<whitequark> marvin: what would that possibly benchmark?
<whitequark> er mattip ^
<whitequark> hm i think i see, if a benchmark for hardware bottlenecks on software, we need to isolate that
<whitequark> no, i don't, and it would be very hard to separate it from the hardware
<whitequark> i'd basically have to build a simulation model of my hardware and a part of the usb stack
<whitequark> hmm
<mattip> ok. myhdl had a pure python simulaiton mode with a step-timer
<whitequark> i can do that in migen, of course
<whitequark> but you'll never be able to remotely achieve USB line rate by running the simulation
<whitequark> hell, you'd be lucky to get maybe 10 kB/s
<mattip> we used that mode for validation before sythesis, but it could not use third-party HDL blocks
<whitequark> yeah, migen used to have a vpi plugin but it bitrotted
<whitequark> i'll likely resurrect it for nmigen
* mattip needs to read more about migen, goals, underpinnings
<whitequark> tl;dr Python eDSL for describing synchronous logic only and allowing heavy use of metaprogramming
<whitequark> you don't get the weird asynchronous parts of verilog but you also don't get any of its design issues
<whitequark> Migen desugars to Verilog, nMigen desugars to RTLIL and uses Yosys to emit Verilog or any other desired representation
<whitequark> or just directly synthesize
<whitequark> i think my most interesting migen code is my PCIe PHY TS parser/emitter
<whitequark> it looks like an FSM but that's misleading, what it does is it parameterizes over datapath width
<whitequark> so you write a parser "as if" you're processing symbols one by one and it allows you to stick a gearbox in front of it and process them by two or by four
<whitequark> this is especially interesting when you need to decide what to do e.g. for symbol 3 based on something you have in symbol 2 when parsing them in pairs
<whitequark> you might have to use a register or a combinatorial circuit for deciding in that case
<whitequark> this is handled transparently
<mattip> looks cool
* mattip off
<mattip> let us know if you find anything
<whitequark> i can't figure out how to run vmprof
<whitequark> i install vmprof and there are no files in site-packages/...egg
<mattip> did you use pypy's pip?
<whitequark> pypy3.6 -m pip, yes
<mattip> I see it in /path/to/pypy/site-packages/vmprof
<mattip> and there is a vmprofshow in /path/to/pypy/bin
<whitequark> so what i'm doing is $ pypy3.6 -m pip install --prefix .pypy3.6 vmprof
<whitequark> this seems to have worked with setup.py
<whitequark> no vmprofshow though
<mattip> `pip install --user` I think
<whitequark> i have my stuff in a custom prefix so it doesn't change my existing binaries in ~/.local/bin
<mattip> dunno, it all depends what version of pip and what phase of the moon. I just use a virtualenv and rm it every week or so
<whitequark> depressing
<mattip> yeah, but better than it was 5 years ago
<energizer> https://github.com/pipxproject/pipx is the replacement for pipsi
<mattip> anyhow, bye for now
<whitequark> ha, well, vmprof doesn't work
<whitequark> it crashes libusb: usb1.USBErrorInterrupted: LIBUSB_ERROR_INTERRUPTED [-10]
<energizer> whitequark: might try plop
<whitequark> yeah, looking
<energizer> pypy -m plop.collector -f flame hello.py
<energizer> s/flame/flamegraph/
<whitequark> uh, does plop not let me specify the output explicitly?
<energizer> when i've used it, it creates a ./profiles/
<whitequark> yeah but it's trying to do silly things after
<whitequark> since i specify a path to a script
<energizer> if you have your thing installed, you can plop.collector -m the.module
<whitequark> nope, also usb1.USBErrorInterrupted: LIBUSB_ERROR_INTERRUPTED [-10]
<whitequark> ok, got a trace out of it
<whitequark> how do i view the flame file?
<whitequark> nvm, found it
<whitequark> ? (?:0) 1
<whitequark> ^
<whitequark> SyntaxError: Unknown character
<energizer> haven't seen that before
<whitequark> i'm confused, why does it eval flame files?
<energizer> what is evaling them?
<whitequark> plop.
<whitequark> it uses ast.literal_eval
<energizer> whitequark: i like to upload mine to http://speedscope.app
<whitequark> ok that worked
<whitequark> m yeah not super informative
<whitequark> 30% spent in ? (?:0)
<energizer> i guess that means non-python code?
<whitequark> 15% more in _call_funcptr
<whitequark> looks like it's bumping into ctypes
<whitequark> i guess that's reasonable
oberstet has joined #pypy
cjwelborn has quit [Quit: sys.exit(0)]
speeder39_ has quit [Quit: Connection closed for inactivity]
<arigato> note that LIBUSB_ERROR_INTERRUPTED is likely a bug inside this libusb, which doesn't correctly catch and retry on EINTR. E.g. if you resize your terminal window at just the wrong time, it would get this error too
<whitequark> hmm
<whitequark> it might be a bug in my code too
<arigato> you know the problem, right? on POSIX many OS functions can return EINTR if a signal happens to be received by the application while they are blocked in the kernel. The problem is that signals are rare, and so this kind of problem is kind of common. But a typical sampling profiler works by delivering regular signals
<arigato> the fix is to identify where this occurs and fix the code by trying again if errno == EINTR
<whitequark> yeah
<arigato> ok
* cfbolz waves
<arigato> hi
<cfbolz> arigato: feel like thinking for a minute about a vmprof bug?
<cfbolz> (or limitation rather, I suppose)
<arigato> maybe stop using the address of the code object, and instead use a monotonic number?
<cfbolz> arigato: how would we do that in CPython?
<cfbolz> Maybe givinpbuf on CPython is the answer
<cfbolz> Giving up
<arigato> there's obscure logic in "_hotspot.c" that I wrote long ago, which tries to be a fast dict-like with structure with code objects as keys
<arigato> I'm not sure it's a weak structure, but maybe that's still fine
<cfbolz> Where do I find that file?
<arigato> sorry, "hotshot" not "hotspot"
<arigato> wait a sec, still searching
<cfbolz> Ah, that was part of lsprof?
<arigato> sorry
<cfbolz> arigato: ok
<cfbolz> Now I need to decide whether I feel like this ;-)
<arigato> ah well
<arigato> it's probably enough to just keep alive the code objects in a profiling session, right?
<cfbolz> arigato: yes, that would work
<cfbolz> arigato: do I see it correctly that normally the code objects of global scope of modules get collected?
<arigato> yes
<cfbolz> Right
<cfbolz> That's the biggest source of impossible call graph edges I think
<arigato> ah I see
<cfbolz> (btw what I am *actually* doing is trying to use the chrome dev tools as a visualizer for vmprof, with interesting first results)
<arigato> :-)
brtknr has left #pypy ["WeeChat 2.2"]
ruda_porto has joined #pypy
ruda_porto has quit [Remote host closed the connection]
ruda_porto has joined #pypy
ruda_porto has quit [Remote host closed the connection]
ruda_porto has joined #pypy
ruda_porto has quit [Remote host closed the connection]
ruda_porto has joined #pypy
xcm has quit [Ping timeout: 246 seconds]
xcm has joined #pypy
ruda_porto has quit [Remote host closed the connection]
ruda_porto has joined #pypy
forgottenone has quit [Quit: Konversation terminated!]
dddddd has joined #pypy
forgottenone has joined #pypy
ruda_porto has quit [Remote host closed the connection]
ruda_porto has joined #pypy
speeder39_ has joined #pypy
tsaka__ has quit [Ping timeout: 258 seconds]
xcm has quit [Remote host closed the connection]
xcm has joined #pypy
antocuni has joined #pypy
adamholmberg has joined #pypy
danieljabailey has quit [Quit: ZNC 1.6.6+deb1ubuntu0.1 - http://znc.in]
jcea has joined #pypy
idnar has quit [Ping timeout: 248 seconds]
stillinbeta has quit [Ping timeout: 248 seconds]
msjyoo has quit [Ping timeout: 248 seconds]
wallet42 has quit [Ping timeout: 248 seconds]
idnar has joined #pypy
andrewsm1dina has quit [Ping timeout: 252 seconds]
andrewsmedina has joined #pypy
_aegis_ has quit [Ping timeout: 252 seconds]
msjyoo has joined #pypy
_aegis_ has joined #pypy
ruda_porto has quit [Ping timeout: 258 seconds]
marky1991 has joined #pypy
wallet42 has joined #pypy
stillinbeta has joined #pypy
speeder39_ has quit [Quit: Connection closed for inactivity]
marky1991 has quit [Ping timeout: 252 seconds]
Rhy0lite has joined #pypy
tsaka__ has joined #pypy
oberstet has quit [Quit: Leaving]
fling has quit [Read error: Connection reset by peer]
xcm has quit [Remote host closed the connection]
xcm has joined #pypy
<mattip> any opinions on merging fix-literal-prev_digit-underscore?
<ronan> mattip: LGTM, did you run the tests?
<antocuni> ronan: did you submit your EP proposals at the end?
<ronan> antocuni: yes
<antocuni> cool! What's the title?
<ronan> Opening PyPy's magic black box
<antocuni> nice title
<ronan> I ran a bit out of time, so the proposal is meh
<ronan> (does that work?)
<bbot2> Started: http://buildbot.pypy.org/builders/own-linux-x86-64/builds/7458 [mattip: force build, fix-literal-prev_digit-underscore]
<antocuni> it works and looks good to me
<antocuni> although it will be hard to cover too many details in 45 mins
<bbot2> Started: http://buildbot.pypy.org/builders/pypy-c-jit-linux-x86-32/builds/5211 [mattip: force build, fix-literal-prev_digit-underscore]
<antocuni> I submitted this one (same talk to the one I gave at Pycon italy last week): https://ep2019.europython.eu/cfp/preview/S4nvhVb-how-to-write-a-jit-compiler-in-30-minutes/
<ronan> yes, I don't know yet what I will cover and what I will skip
<ronan> antocuni: nice!
<antocuni> on an unrelated news, may I complain that the "Guido van Rossum Core Developer Grant" doesn't apply to pypy? :(
<ronan> yes, I'm rather unhappy about that too
<antocuni> apparently we don't qualify as "Python core developers"
<ronan> well, I wouldn't mind too much if it was described as being only for "CPython core developers"
<ronan> it's the Python == CPython assumption that annoys me the most
<antocuni> yes, same
fling has joined #pypy
mattip has quit [Ping timeout: 245 seconds]
Ai9zO5AP has quit [Ping timeout: 246 seconds]
mattip has joined #pypy
<bbot2> Failure: http://buildbot.pypy.org/builders/pypy-c-jit-linux-x86-32/builds/5211 [mattip: force build, fix-literal-prev_digit-underscore]
whitequark has left #pypy [#pypy]
Zaab1t has joined #pypy
ruda_porto has joined #pypy
Zaab1t has quit [Remote host closed the connection]
moei has joined #pypy
antocuni has quit [Ping timeout: 246 seconds]
antocuni has joined #pypy
speeder39_ has joined #pypy
<ronan> going through the Europython talks, I saw this: https://pastebin.com/RDKPffh2
<ronan> does anybody know about it?
antocuni has quit [Ping timeout: 258 seconds]
antocuni has joined #pypy
<mattip> looks like maybe this https://github.com/mesalock-linux/mesapy
<mattip> mostly "safe" by removing things, but what do you do with a python with no sockets?
antocuni has quit [Ping timeout: 246 seconds]
<mattip> sorry, they leave socket but remove ssl
<bbot2> Failure: http://buildbot.pypy.org/builders/own-linux-x86-64/builds/7458 [mattip: force build, fix-literal-prev_digit-underscore]
Taggnostr has quit [Remote host closed the connection]
glyph has quit [Quit: End of line.]
glyph has joined #pypy
asmeurer_ has joined #pypy
Taggnostr has joined #pypy
Zaab1t has joined #pypy
Zaab1t has quit [Remote host closed the connection]
asmeurer_ has quit [Quit: asmeurer_]
forgottenone has quit [Quit: Konversation terminated!]
ronan has quit [Ping timeout: 258 seconds]
ronan has joined #pypy
jacob22 has quit [Ping timeout: 244 seconds]
ronan has quit [Ping timeout: 252 seconds]
ronan has joined #pypy
asmeurer__ has joined #pypy
ronan has quit [Ping timeout: 252 seconds]
ronan has joined #pypy
dddddd has quit [Ping timeout: 268 seconds]
Ai9zO5AP has joined #pypy
forgottenone has joined #pypy
dddddd has joined #pypy
Rhy0lite has quit [Quit: Leaving]
forgottenone has quit [Quit: Konversation terminated!]
marky1991 has joined #pypy
_whitelogger_ has joined #pypy
jacob22 has joined #pypy
ssbr has quit [Ping timeout: 250 seconds]
mattip has quit [Ping timeout: 252 seconds]
xcm is now known as Guest9606
Guest9606 has quit [Killed (hitchcock.freenode.net (Nickname regained by services))]
mattip has joined #pypy
xcm has joined #pypy
<mattip> the fix-literal-prev-digit-underscore branch fixed a lib-python test_grammar failure
<kenaan> mattip fix-literal-prev_digit-underscore b41ce6edfaf2 /pypy/doc/whatsnew-pypy3-head.rst: document and close branch to be merged
<kenaan> mattip py3.6 c0cb46236cc7 /: merge fix-literal-prev_digit-underscore which fixes converting strings with '_' to ints
ruda_porto has quit [Remote host closed the connection]
ruda_porto has joined #pypy
PileOfDirt has joined #pypy
Ai9zO5AP has quit [Quit: WeeChat 2.4]
marky1991_2 has joined #pypy
marky1991 has quit [Ping timeout: 246 seconds]
antocuni has joined #pypy
adamholmberg has quit [Remote host closed the connection]
ruda_porto has quit [Ping timeout: 258 seconds]
antocuni has quit [Ping timeout: 246 seconds]
ruda_porto has joined #pypy
adamholmberg has joined #pypy
_whitelogger has joined #pypy