antocuni changed the topic of #pypy to: PyPy, the flexible snake (IRC logs: https://botbot.me/freenode/pypy/ ) | use cffi for calling C | "PyPy: the Gradual Reduction of Magic (tm)"
<kenaan> antocuni keep-debug-symbols 005844269621 /pypy/tool/release/: add a smartstrip tool, which can optionally keep the debug symbols in a separate file, instead of jus...
<kenaan> antocuni keep-debug-symbols 7108fe737121 /pypy/tool/release/package.py: remove the nostrip option; introduce a --no-keep-debug option; use smartstrip(keep_debug=True) by def...
tbodt has quit [Read error: Connection reset by peer]
tbodt has joined #pypy
<bbot2> Started: http://buildbot.pypy.org/builders/pypy-c-jit-linux-x86-64/builds/5040 [antocuni: force build, keep-debug-symbols]
<bbot2> Started: http://buildbot.pypy.org/builders/pypy-c-jit-macosx-x86-64/builds/3391 [antocuni: force build, keep-debug-symbols]
tbodt has quit [Client Quit]
tbodt has joined #pypy
antocuni has quit [Ping timeout: 248 seconds]
squeaky_pl has quit [Ping timeout: 248 seconds]
marr has quit [Ping timeout: 248 seconds]
asmeurer__ has quit [Quit: asmeurer__]
asmeurer_ has joined #pypy
kipras is now known as kipras`away
<bbot2> Success: http://buildbot.pypy.org/builders/pypy-c-jit-linux-x86-64/builds/5040 [antocuni: force build, keep-debug-symbols]
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
tbodt has joined #pypy
asmeurer_ has quit [Quit: asmeurer_]
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<bbot2> Failure: http://buildbot.pypy.org/builders/pypy-c-jit-macosx-x86-64/builds/3391 [antocuni: force build, keep-debug-symbols]
forgottenone has joined #pypy
ArneBab_ has joined #pypy
ArneBab has quit [Ping timeout: 255 seconds]
forgottenone has quit [Ping timeout: 240 seconds]
asmeurer_ has joined #pypy
marky1991 has quit [Remote host closed the connection]
marky1991 has joined #pypy
asmeurer_ has quit [Quit: asmeurer_]
asmeurer_ has joined #pypy
zmt00 has quit [Quit: Leaving]
asmeurer_ has quit [Quit: asmeurer_]
asmeurer__ has joined #pypy
jacob22 has quit [Quit: Konversation terminated!]
Remi_M1 has joined #pypy
Remi_M has quit [Ping timeout: 255 seconds]
Remi_M1 has quit [Ping timeout: 258 seconds]
asmeurer__ has quit [Quit: asmeurer__]
asmeurer__ has joined #pypy
asmeurer__ has quit [Quit: asmeurer__]
asmeurer_ has joined #pypy
asmeurer_ has quit [Quit: asmeurer_]
asmeurer_ has joined #pypy
asmeurer_ has quit [Quit: asmeurer_]
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
adamholmberg has quit [Ping timeout: 248 seconds]
adamholmberg has joined #pypy
kenaan has quit [Read error: Connection reset by peer]
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
adamholmberg has quit [Ping timeout: 240 seconds]
<fijal> arigato: ping
vishesh has quit [Quit: WeeChat 1.4]
adamholmberg has joined #pypy
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
adamholm_ has joined #pypy
adamholmberg has quit [Read error: Connection reset by peer]
adamholm_ has quit [Remote host closed the connection]
adamholmberg has joined #pypy
cstratak has joined #pypy
adamholmberg has quit [Ping timeout: 260 seconds]
cstratak has quit [Remote host closed the connection]
cstratak has joined #pypy
adamholmberg has joined #pypy
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
adamholmberg has quit [Read error: No route to host]
adamholmberg has joined #pypy
antocuni has joined #pypy
Remi_M has joined #pypy
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
kenaan has joined #pypy
<kenaan> antocuni keep-debug-symbols f29f0f12ffa8 /: close branch to be merged
<kenaan> antocuni default 77fff565d382 /pypy/tool/release/: merge the branch keep-debug-symbols: - symbols are stripped from the executable and placed in a file libpypy-c....
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
<arigato> fijal: pong
<fijal> arigato: I need a few things. One is guidance of where to take utf8 branch next
<fijal> the other thing is the total memory GC allocates
<fijal> and the third is review of the intro materials, I'm about to finish the third part
<fijal> the third can wait, pick at most one of the previous two :)
<arigato> I answered on #pypy-sync about the total memory, right?
<fijal> 9:58 AM <arigato> yes, everywhere in incminimark.py and minimarkpage.py (it's not many places but don't forget one)
<fijal> 9:58 AM <arigato> e.g. minimarkpage.allocate_new_arena
<arigato> yes
<fijal> so, what is "everywhere"?
<fijal> everywhere that calls malloc?
<arigato> llarena.stuff, I think
<fijal> llarena.arena_malloc
<fijal> so the other bookkeeping data should be small right?
AndrewBC has joined #pypy
adamholmberg has quit [Ping timeout: 248 seconds]
<arigato> from allocate_new_arena? yes
<fijal> ok
<arigato> ah, or you mean, all the lists and deques of addresses
<fijal> yeah
<arigato> yes, should also be small
<fijal> arena = lltype.malloc(ARENA, flavor='raw', track_allocation=False)
<fijal>
<fijal> stuff like that
<arigato> yes
<fijal> ok, cool
<fijal> so that should give me a good estimate what GC feels responsible for allocating, great
<fijal> then I need to add the raw assembler stuff (which is already somewhere) and summarize, awesome
<arigato> but slightly less small (but still small) are all the AddressStack() and AddressDeque()
<fijal> can you give me a number?
<fijal> e.g. at most 10% of total allocations?
<arigato> no, because it depends on the usage pattern a lot
<fijal> ok
<fijal> so there are bad case scenarios, like the 60M for shadowstacks?
<arigato> e.g. for a weakref, it's maybe 1/3rd of the memory (but only for the weakref objects)
<fijal> I guess I'll not count them and then maybe I'll try to add them later
<fijal> ok, so that's fine, thanks
<arigato> and indeed, the shadowstacks
<fijal> about utf8 - I have a build that works
<fijal> makes some benchmarks faster, some slower
<arigato> (we should maybe at some point reduce the memory allocations if we have many threads)
<fijal> one of the things we're missing is a) unicode dict/list and b) some more obscure codecs
<fijal> and possibly optimizations
<arigato> cool
<fijal> the a) is a bit tricky
<arigato> why?
<fijal> because now unicode has more fields - like indexes
<fijal> do we throw them away?
<arigato> I see
<fijal> not to mention the mess with surrogates (but maybe we just don't write unicode with surrogates)
<fijal> as in, don't use them for fast dict
<fijal> but the indexes are definitely a problem
<fijal> or length
<fijal> arigato: on a completely unrelated note, rffi.charp2str is followed by guard_no_exception, because assert_str0 is marked as "can raise"
adamholmberg has joined #pypy
<arigato> uh, that's wrong
squeaky_pl has joined #pypy
<fijal> (I think it's assert_str0, can't think of anyone else
<fijal> )
<fijal> or a bunch of other asserts, but RPython-level asserts should not raise in canraise analyzer right?
<arigato> you can check, instead of guessing :-)
<arigato> even write a test for the canraise analyzer that calls charp2str
<fijal> yeah
<fijal> sounds like a sane break
<fijal> arigato: any thought on strategies?
<fijal> we can *also* just have an ascii flag on unicode which will make all the benchmarks better, for bad reasons
<lesshaste> I can't wait for the new numpy magic to make it into a pypy release
<arigato> fijal: strategies are hard, no idea so far
<fijal> lesshaste: what numpy magic?
<lesshaste> the cpyext-avoid-roundtrip branch
<lesshaste> seems like a "game changer" as they say
adamholmberg has quit [Remote host closed the connection]
lritter has joined #pypy
<cfbolz> fijal: the unicode dict strategy is an easier choice: just use the wrapped objects as keys, with a faster hash and compare
raynold has quit [Quit: Connection closed for inactivity]
forgottenone has joined #pypy
adamholmberg has joined #pypy
<lesshaste> fijal, am I too excited by it? In other words do you think it won't make that much difference in the end?
<fijal> lesshaste: it depends on the usecase a loy
<fijal> lot
<cfbolz> if you have many level-crossing calls it should help quite a bit
<lesshaste> I am thinking numpy code that accesses individual elements in an array a lot
<lesshaste> which is what I hav
<lesshaste> e
<lesshaste> which is very slow even in cpython currently
<cfbolz> yes, good usecase
<cfbolz> the calls aren't faster than in CPython of course
<cfbolz> I said "the calls aren't faster" though
<cfbolz> if you have a lot of code in python, that part will be faster
<lesshaste> but aren't those measuring the speed of calling (empty) C functions?
<cfbolz> yes, but there is still a loop on the python side
<cfbolz> that loop is slow in cpython
<lesshaste> oh I didn't realise that was where the speedup was
<lesshaste> it isn't clear from the blog post at all
<lesshaste> if anyone would like to use that code I pasted as a benchmark I can add some simple data generation too
<antocuni> cfbolz: actually from what I can see by running the branch on simple benchmarks, the pure-python speedup is huge enough that you get an overall win even if your benchmark is cpyext-intensive
<lesshaste> please just let me know
<fijal> lesshaste: if you want to submit stuff like that, PLEASE provide a self-running example
<fijal> lesshaste: this is a function which I have no clue whats' the input
<antocuni> for example, the numpy version of code which I showed in my last blog post: on CPython is ~6.5 seconds; on PyPy is ~33 seconds; on cpyext-avoid-roundtrip is ~5.5 seconds
<fijal> lesshaste: but it should be as easy as downloading the nightly and trying, too
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
<antocuni> there is no recent nighly of the branch, AFAIK
<fijal> well it can be kicked no?
<antocuni> ye
<antocuni> yes
<lesshaste> here is a self-running example
danieljabailey has quit [Ping timeout: 258 seconds]
<arigato> fijal: strategies: what cfbolz said is a good (and maybe only) first step
adamholmberg has quit [Ping timeout: 240 seconds]
<lesshaste> I hope it's helpful
<antocuni> note that this particular example might not be fast on the branch. I **think** that special methods like __getitem__ goes trough a code path which is not currently optimized
<lesshaste> antocuni, do you mean my example?
<antocuni> yes
<fijal> arigato: so no lists?
<lesshaste> antocuni, ah ok. I hope it will be of some use in the future. My timing claims were a bit off. for n = 20 it's about 7 secinds
<lesshaste> but it increases exponentially with n
<lesshaste> so it's very slow by n = 25
<lesshaste> fijal, it computes the permanent of a matrix
<arigato> fijal: for lists, it may make sense anyway to have a strategy, *just* to remove the type check when we get elements
<lesshaste> antocuni, I have a pure python version of the function too if that's of interest
<cfbolz> arigato: if we want that, we might want to enable the general strategy of 'all elements have the same rpython type'
<antocuni> lesshaste: yes please
<cfbolz> Which exists somewhere (a branch?)
<arigato> cfbolz: yes, but it might be the case that it's good to enable it for unicodes only, and less good for everything (for all I know)
<cfbolz> No, enabling this changed nothing measurable, in either direction :-(
<cfbolz> Guards are just too cheap
<arigato> cfbolz: well, that's my point
<antocuni> can't we just have a list of unwrapped unicodes and forget about indexes?
<lesshaste> antocuni, it's sped up very nicely by pypy
<arigato> cfbolz: it may help u''.join() for example
<arigato> cfbolz: (not in the jit)
<cfbolz> Indeed
<antocuni> and maybe, if we somehow detect that we recompute the index again and again, we switch the strategy
<cfbolz> antocuni: it's not just indices, it's also the length
<arigato> cfbolz: but no real clue
<antocuni> ah
<antocuni> then we keep the lengths in a parallel rpython lists, or something
danieljabailey has joined #pypy
<antocuni> but indeed, I'm not sure it's worth
<arigato> the length can also be recomputed, too
<lesshaste> antocuni, you will see that the implementation is not identical to the numpy version which may not be ideal..sorry. The numpy version was written to try to use numpy functions as much as possible
<arigato> but I think that the regular W_UnicodeObject has the length non-lazily
adamholmberg has joined #pypy
<antocuni> lesshaste: as usual :)
<lesshaste> antocuni, :)
<lesshaste> if I can explain any aspect of the code please just ask
<lesshaste> it is interesting to me how slow the numpy version is even using cpython. It seems that cpython has some large overhead to access array elements too
<lesshaste> I mean numpy does
<bbot2> Started: http://buildbot.pypy.org/builders/pypy-c-jit-linux-x86-64/builds/5042 [antocuni: force build, cpyext-avoid-roundtrip]
<antocuni> lesshaste: ^^^
<antocuni> I kicked a buildbot build
<lesshaste> antocuni, what is ^^^ referring to? "as usual"?
<antocuni> you should be able to download the result from http://buildbot.pypy.org/nightly/cpyext-avoid-roundtrip/
<antocuni> no, to the "bbot2" message with the link to the started build
<lesshaste> aha.. maybe I got the messages out of order
<antocuni> anyway, you can try things by yourself when it's ready :)
* antocuni off for today
<antocuni> bye
<lesshaste> bye
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
antocuni has quit [Ping timeout: 248 seconds]
cstratak_ has joined #pypy
adamholmberg has quit [Read error: No route to host]
adamholm_ has joined #pypy
cstratak has quit [Ping timeout: 258 seconds]
adamholm_ has quit [Remote host closed the connection]
adamholmberg has joined #pypy
adamholm_ has joined #pypy
adamholmberg has quit [Read error: Connection reset by peer]
<bbot2> Success: http://buildbot.pypy.org/builders/pypy-c-jit-linux-x86-64/builds/5042 [antocuni: force build, cpyext-avoid-roundtrip]
adamholm_ has quit [Remote host closed the connection]
adamholmberg has joined #pypy
kipras`away is now known as kipras
tos9 has quit [Ping timeout: 246 seconds]
marky1991 has quit [Ping timeout: 240 seconds]
jcea has joined #pypy
tos9 has joined #pypy
slackyy has joined #pypy
marky1991 has joined #pypy
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
Rhy0lite has joined #pypy
marky1991 has quit [Remote host closed the connection]
marky1991 has joined #pypy
yuyichao has quit [Ping timeout: 248 seconds]
jacob22_ has joined #pypy
yuyichao has joined #pypy
rindolf has joined #pypy
pilne has quit [Quit: Quitting!]
marky1991 has quit [Ping timeout: 248 seconds]
tbodt has joined #pypy
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
oberstet has joined #pypy
nopf has quit [Remote host closed the connection]
TheAdversary has quit [Ping timeout: 246 seconds]
zmt00 has joined #pypy
tos9 has quit [Ping timeout: 255 seconds]
tbodt has joined #pypy
yuyichao has quit [Ping timeout: 246 seconds]
yuyichao_ has joined #pypy
<arigato> rindolf: a bit of a corner case between "valid" and "invalid"
<arigato> of course CPython would segfault too with numbers greater than 10000
<arigato> I think that ulimit fixes it for CPython but PyPy has a second depth limit somewhere
<rindolf> arigato: ok
<arigato> (in the shadowstack)
<arigato> maybe we should allocate shadowstack sizes based on setrecursionlimit()? just a thought
raynold has joined #pypy
tos9 has joined #pypy
rindolf has quit [Ping timeout: 248 seconds]
<arigato> yes, the crash occurs after the "shadowstack" overflows
<arigato> the size is hard-coded, though
rindolf has joined #pypy
<rindolf> arigato: how can i fix it now?
<arigato> the safest is to rewrite your algorithm
<arigato> otherwise, you could try to translate a version of pypy with a larger constant
<arigato> "root_stack_depth = 163840"
<arigato> in rpython/memory/gctransform/shadowstack.py
<arigato> you can rewrite your algo to be non-recursive, by using a global "stack = []" that contains the arguments you want to pass to ret()
<arigato> and a global loop "while stack: ret(*stack.pop())"
drolando has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<rindolf> arigato: i did that, and it is kinda slow
<arigato> is it really slower?
<rindolf> arigato: runs at over 5 minutes whereas C++ and perl 5 take under 50 seconds
<arigato> with CPython or PyPy?
<rindolf> arigato: with pypy
<arigato> I suppose being 6 times slower than C++ is not that awful
<rindolf> arigato: well, I used C++ and GMP
<arigato> can you try with e.g. a limit of 5000, which should work unmodified?
<rindolf> arigato: i can
<arigato> then you can compare the recursive and the stack=[] version
<arigato> I doubt it makes a lot of difference
<rindolf> arigato: ah
<rindolf> arigato: well, the perl 5 version also runs under 50 seconds and perl 5 does not have jit yet
drolando has joined #pypy
<arigato> ok, then it may mean that all the time is spent anyway in some longnum computation
<rindolf> arigato: sorry - wronng link
<arigato> perl 5 and c++ use GMP, whereas pypy and cpython use their custom implementation
<rindolf> arigato: ah
<arigato> maybe report a bug if you can isolate the kind of operation
<arigato> being maybe 2x slower is okish, but 6x is a lot
<arigato> (we can't simply use GMP, because GMP has no fallback in case it runs out of memory)
<arigato> (it just abort()s, which is not acceptable in Python)
<arigato> I'm sure there are 3rd-party python module to access GMP, though
<rindolf> arigato: ok, there is
<rindolf> arigato: there is https://pypi.python.org/pypi/gmpy2/
<arigato> if I'm correct about this being the bottleneck, then (1) this would help a lot, and (2) CPython or PyPy should make no difference
<rindolf> arigato: i'll try
<rindolf> arigato: thanks
jamesaxl has quit [Ping timeout: 240 seconds]
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<fijal> arigato: uh, do you understand analyze_except_block in canraise.py?
<fijal> like what is DataFlowFamilyBuilder
<fijal> :-)
<cfbolz> fijal: it tells you which variables are "the same"
<fijal> ok, why?
<cfbolz> did you read the comment in line 37?
<cfbolz> I think it's done really only to support this case
<cfbolz> if you re-raise an exception, that graph is thought not to raise
<fijal> why si it only ever invoked if we ignore MemoryError?
<cfbolz> pfff
<cfbolz> who knows
<fijal> ok
<fijal> so well now I'm trying to fix the case where we have an except block always raising assertion error
<fijal> which is generally "not raising" I think
<cfbolz> fijal: this is about residual calls from the trace, right?
<fijal> yeah
<fijal> I mean I'm editing canraise, but yes
<fijal> ^^^ test
tbodt has joined #pypy
asmeurer_ has joined #pypy
<cfbolz> right
<arigato> I think you should detect and ignore AssertionError and NotImplementedError
tbodt has quit [Client Quit]
drolando has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<arigato> (these two are not officially catchable in RPython)
<cfbolz> when do we raise NotImplementedError? in abstract base methods?
<fijal> yeah
drolando has joined #pypy
<cfbolz> rindolf: my very short looking around suggests that what is slow is this computation: ((sq*sq) % powers[n]) != sq
<rindolf> cfbolz: probably
<arigato> maybe rewriting it as pow(sq, 2, powers[n]) ? don't know if it's going to be faster
<cfbolz> the modulo is the problem
<arigato> yes, but pow() exists with three arguments (doing a modulo) for a reason
<fijal> uh
<fijal> how do I get type of class from block.inputargs again?
<arigato> cfbolz: don't know if this reason is only valid for greater powers than 2
<arigato> fijal: likely, you need to track it down a bit
<Alex_Gaynor> arigato: it is; it interleaves the modulos to "reduce" the value every once in a while. with only 1 mul there's nothing to interleave the modulos with
<arigato> thanks
<xorAxAx> yes, pow() will use square and multiply
tbodt has joined #pypy
<fijal> arigato: and is there a way to get it from struct* assertion error to AssertionError?
<fijal> rclass.some_cast?
* arigato digs in rtyper/
<fijal> arigato: ok, if you don't remember I can dig too :)
<arigato> get_standard_ll_exc_instance_by_class()
<arigato> in rtyper/exceptiondata.py
<arigato> looks promizing
TheAdversary has joined #pypy
asmeurer_ has quit [Quit: asmeurer_]
<rindolf> cfbolz: arigato : the gmpy-based port runs much faster in cpython 2.7 - about 1m17s and i am unable to build gmpy or gmpy2 for pypy using pip
<arigato> rindolf: thanks. indeed
<arigato> gmpy and gmpy2 are both supported in pypy via cpyext, and they both access the internals of python's long objects
<arigato> it could be regarded as a bug of cpyext, but well
<arigato> we'd need to emulate the whole CPython way to represent long integers, which is slightly different in PyPy
<arigato> if you only need a few functions, and really want to try PyPy, then try this:
<arigato> gmp.py and gmp_build.py
<arigato> or this (no idea about its status):
<arigato> but then it's like writing in C++, you need to call the C functions manually (with cffi)
<arigato> no, if http://bazaar.launchpad.net/~tolot-solar-empire/+junk/gmpy_cffi/files still works, then it should help
<arigato> according to the example pi_digits
mattip has joined #pypy
drolando has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<cfbolz> I suppose we can still think about improving our long modulo
<arigato> so it's "a % b" where a has up to twice as many digits as b
<arigato> I guess gmp has an algo just for this kind of case
cstratak_ has quit [Ping timeout: 240 seconds]
<cfbolz> arigato: possible, yes
drolando has joined #pypy
* fijal is playing with his estonian e-residency instead of doing work
<fijal> you can write me an email using maciej.seweryn.fijalkowski@eesti.ee
<fijal> :]
adamholm_ has joined #pypy
<cfbolz> Haha
cstratak has joined #pypy
<fijal> cfbolz: hardware crypto is cool :)
<cfbolz> I tried antocuni's code with numba, it gets slower :-(
adamholmberg has quit [Ping timeout: 260 seconds]
<fijal> cfbolz: haha
<fijal> cfbolz: I'm sure there is the right invocation....
<fijal> (pypy is a bit the same, but a bit less so)
<cfbolz> Yes
<cfbolz> I tried the invocation that Nick suggested on Twitter
adamholm_ has quit [Ping timeout: 240 seconds]
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<arigato> ?- A is 1 << 50000000000.
<arigato> A = 1.
<arigato> swi-prolog is strange
drolando has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
tbodt has joined #pypy
drolando has joined #pypy
<fijal> lltype.cast_pointer(rclass.OBJECTPTR, graph.startblock.exits[0].target.operations[0].args[0].value) == self.translator.rtyper.exceptiondata.get_standard_ll_exc_instance_by_class(AssertionError)
<fijal> that's a lot of digging....
<fijal> arigato, cfbolz: feel like reviewing?
<cfbolz> arigato: uh, what?
adamholmberg has joined #pypy
<cfbolz> fijal: there need to be more tests
<fijal> cfbolz: ok, for what?
<cfbolz> This is quite a subtle change
<cfbolz> Well, NotImplementedError, for starters
<cfbolz> And a more unit testy for assert
<arigato> I think it contains enough asserts, but I'm concerned about whether all existing tests pass (and pypy translates)
<fijal> right
<fijal> so thats's another question - I can put it on branch and run buildbots
<fijal> cfbolz: uh, there is not a single test for can_raise that's different than what I wrote
<cfbolz> Even worse :-P
<fijal> yeah I know, but what can I do?
<cfbolz> fijal: sorry, what I mean is really just test a function that contains an assert statement, as opposed to one that contains an assert many levels away
<arigato> run all the tests anyway
<arigato> in that directory
<arigato> as a first step
<fijal> cfbolz: ah :)
<cfbolz> And definitely a test about NotImplementedError, with the standard pattern we use (an abstract method in the base, and concrete implementations)
<fijal> ok so the raise statements are not always 4 operations of course
<fijal> eh
<arigato> I think you should ask the question about "preblock.exits[0].args[0]", resolving the same_as() as long as it's a Variable
<arigato> ah I guess it's "preblock.exits[0].args[1]"
<fijal> so now there is a question what do we do with a block that has direct_call(something_always_raises) -> except_block
<arigato> that's fine if RaiseAnalyzer thinks this precise function can't raise, because it calls something else that always raises
<arigato> so it will still say Yes
<arigato> (but test!)
<fijal> yes that's what I did
<fijal> (write a test)
<arigato> I wonder though
<arigato> if we drop the guard_exception in the JIT
<arigato> but an AssertionError is really raised
<arigato> I think that nonsense can follow
<fijal> you need a debug build right?
<arigato> no, failing asserts are always there
<arigato> they cause fatal rpython errors
<fijal> right
<arigato> but only at the point where they are "caught" I think
<fijal> so maybe we should propagate them like MemoryError?
<arigato> maybe
jcea has quit [Remote host closed the connection]
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
drolando has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
tbodt has joined #pypy
adamholmberg has quit [Remote host closed the connection]
adamholmberg has joined #pypy
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
Rhy0lite has quit [Quit: Leaving]
<kenaan> mattip bsd-patches 86e686981d73 /: patches from issue 2694, implement ctypes.CDLL(... handle=n)
<kenaan> mattip bsd-patches 16db4e36eac0 /rpython/rtyper/lltypesystem/ll2ctypes.py: patch from issue2695, fail early in ll2ctypes RTLD code
<kenaan> mattip bsd-patches e9096f3b8ca5 /pypy/module/: patches from issue #2696, fix various tests on FreeBSD
<kenaan> mattip bsd-patches 0e6fa4b45bfa /: patches from issue #2697 fix compilation on FreeBSD
<mattip> it seems the win32 buildbot is gone
<mattip> the owner is trying to bring it back up, not clear if he will succeed
<nanonyme> :(
jamesaxl has joined #pypy
forgottenone has quit [Ping timeout: 246 seconds]
forgottenone has joined #pypy
adamholmberg has quit [Remote host closed the connection]
<mattip> maybe I can restart my old SalsaSalsa slave, but tests just run so slow on windows
<mattip> subprocess.Popen() is much slower on windows, and we do _alot_ of those
<raynold> ahh it's a wonderful day
<fijal> arigato: is there a chance that assertion error gets eaten otherwise, or is it just raised somewhere else?
<fijal> mattip: we have a hack to call it less, via one subprocess, maybe it can be ported to windows?
<fijal> heh
<mattip> fijal: do you mean run_subprocess ? AFAICT it forks once before lots of memory is alloctaed, then forks the smaller-footprint process again at each Popen-like call
<mattip> but still forks each time
<fijal> ah right, because we have to call exec
<fijal> is there a way to cheaply call compiler?
<mattip> not with python AFAICT, I looked around a bit.
<nanonyme> mattip, out of curiosity, is it irrepairably slower?
<mattip> seems to be, yes, on windows CreateProcess has hooks to allow things like antivirus scanners to run, and security contexts and ...
<nanonyme> Hm
<mattip> so on linux fork, exec can be under 1ms, windows CreateProcess is multple ms if not tens-of-ms depending on what antivirus is running
<mattip> (I may be wrong, I timed all this out a few months ago and that is what I remember)
<nanonyme> Well, Windows doesn't have CoW memory on CreateProcess like Linux does on fork anyhow. I guess if you always exec, doesn't really help much
<nanonyme> I guess parallelizing won't help any there?
marky1991 has joined #pypy
jamesaxl has quit [Ping timeout: 255 seconds]
jamesaxl has joined #pypy
marr has joined #pypy
drolando has joined #pypy
tbodt has joined #pypy
<bbot2> Started: http://buildbot.pypy.org/builders/pypy-c-app-level-win-x86-32/builds/597 [Mostafa Shahdadi: force build]
<bbot2> Started: http://buildbot.pypy.org/builders/pypy-c-app-level-win-x86-32/builds/598 [mihaid: force build, py3.5-sendmsg-recvmsg]
<mattip> wow, there was quite a backlog of old build jobs
<nanonyme> mattip, you set up that builder of yours?
<mattip> yup
<mattip> well, maybe, let's see if the jobs run to completion
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<bbot2> Exception: http://buildbot.pypy.org/builders/pypy-c-app-level-win-x86-32/builds/598 [mihaid: force build, py3.5-sendmsg-recvmsg]
tbodt has joined #pypy
bbot2 has quit [Quit: buildmaster reconfigured: bot disconnecting]
bbot2 has joined #pypy
Arfrever has joined #pypy
forgottenone has quit [Quit: Konversation terminated!]
cstratak has quit [Quit: Leaving]
Rhy0lite has joined #pypy
demonimin has quit [Read error: Connection reset by peer]
demonimin has joined #pypy
<bbot2> Started: http://buildbot.pypy.org/builders/pypy-c-jit-win-x86-32/builds/3477 [mattip: test, bsd-patches]
<mattip> whoops, I removed JOM.exe from the machine since it is not yet ready for prime time, JOM is a parallel make.exe for windows
<mattip> but the translation process checks for JOM at the beginning, not the end :(
<mattip> on a more positive side, it seems our next py3.5 release will include linux32 and macosx
<mattip> gnite
mattip has left #pypy ["bye"]
jamesaxl has quit [Read error: Connection reset by peer]
TheAdversary has quit [Ping timeout: 248 seconds]
jamesaxl has joined #pypy
tbodt has quit [Read error: Connection reset by peer]
tbodt has joined #pypy
tbodt has quit [Read error: Connection reset by peer]
TheAdversary has joined #pypy
tbodt has joined #pypy
Rhy0lite has quit [Quit: Leaving]
tbodt has quit [Read error: Connection reset by peer]
tbodt has joined #pypy
Arfrever has quit [Quit: 御出で]
TheAdversary has quit [Ping timeout: 258 seconds]
aboudreault_ has quit [Ping timeout: 258 seconds]
rindolf has quit [Quit: Leaving]
asmeurer__ has joined #pypy