vkirilichev has quit [Remote host closed the connection]
vkirilichev has joined #pypy
ArchDebian has joined #pypy
vkirilichev has quit [Remote host closed the connection]
stevi3 has joined #pypy
<njs>
I am dubious about the idea that you can make sys.maxint == 2 ** 63 - 1 on win64
<njs>
I suspect there is a lot of code out there (esp. C extensions) that knows that python int = C long... e.g. numpy certainly assumes this in various places
<njs>
it doesn't matter as much as python 2 disappears, but that is still a bit off :-)
<arigato>
yes, 2**32-1 => 2**31-1 is right of course
<arigato>
that's not a wiki, you can't edit
<sthalik>
ok
<arigato>
ah, that page is from the main repo
<arigato>
you can edit it by changing pypy/doc/windows.rst
<sthalik>
so i found one more weirdness, was checking if something's an int32 but meant a word size, rbigint wanted the int32 so made it its own checker
<kenaan>
antocuni faster-rstruct-2 beae5a5ccb0b /: I don't know why this popped out now as it seems unrelated with my recent changes: scoped_nonmovingbuff...
girish946 has joined #pypy
<kenaan>
arigo default 6093ff1a44e6 /pypy/module/itertools/: Rewrite itertools.groupby(), following CPython instead of having many flags to get a result that differs subtly
Tsundere_cloud has quit [Quit: Connection closed for inactivity]
<arigato>
I did write this plan but I have zero experience about Win64
<arigato>
also, it was written before I got to know cpyext well
<arigato>
indeed, what should PyInt_FromLong() be implemented as?
<arigato>
user code don't expect it to fail when the input is a Python int
<arigato>
("user" code == code in C extensions)
<arigato>
(and the PyInt_FROM_LONG() macro is even worse, because you can't fail)
<arigato>
on the other hand we can't reasonably say that RPython integers should be 32 bits only
<njs>
arigato: PyInt_AsLong is the nasty one I think
<arigato>
njs: ah yes, sorry, that's what I meant
<arigato>
and PyInt_AS_LONG
<arigato>
it's maybe possible (if plainly counterproductive) to limit our W_IntObject to 32 bits, if we review all usages of space.newint()
<arigato>
"space.newint(number) => W_IntObject": this would, in this world, mean that a 64-bit RPython integer needs to be turned into a W_IntObject or a W_LongObject
<njs>
ah, that's whatI was about to ask about :-)
<kenaan>
antocuni faster-rstruct-2 582e284508de /: we cannot malloc(STR, zero=True) because the GC does not support it. So, simplify a bit the code, remov...
<kenaan>
antocuni faster-rstruct-2 a12006f0de48 /rpython/jit/backend/x86/test/test_strstorage.py: remove the last remainder of the killed strstorage
<njs>
anyway, /me -> sleep now
<arigato>
thanks
<antocuni>
arigato: in this world, we can probably have a specialized W_Int64Object whose applevel type is long, but which is as efficient as ints
<njs>
<wife> "Hey, Nathaniel? What's 'pie pie'?" <njs> "It's umm. A Python interpreter, written in Python." <wife> "Is that... allowed?" <njs> "The weird thing is that it's faster than the regular Python interpreter." <shweta> "--Somebody sold someone's soul to *something*."
<antocuni>
(if we care about performance of ints > 2**32)
<njs>
err, shweta = wife
<arigato>
njs: :-)
<arigato>
antocuni: yes, but the annoying part is that the JIT traces would look very different and we need to optimize this case manually
<arigato>
e.g. for integer addition you need to check that the result fits a 32-bit int
<antocuni>
ah, I see
cstratak has quit [Quit: Leaving]
<arigato>
I agree that the plan to have "sys.maxint==2**63-1" might be doomed particularly by cpyext
<arigato>
we could in theory make obscure hacks in cpyext itself, to pretend that this int of value 2**40 has the type "PyLong_Type"
<arigato>
even though you get 'int' by saying 'type(x)' in Python
<arigato>
but that's probably not a good idea
cstratak has joined #pypy
ssbr has quit [Ping timeout: 258 seconds]
amaury has quit [Ping timeout: 268 seconds]
<arigato>
oh well, it would be an exercice in making rpython.rlib.rarithmetic.ovfcheck_int32_add/sub/mul() more tested and complete
Tiberium has joined #pypy
<arigato>
too bad that it looks like a rewrite of intobject.py
<kenaan>
arigo default 5ebcb8f995fd /pypy/objspace/std/intobject.py: in theory, this is a fix
antocuni has quit [Ping timeout: 240 seconds]
ssbr has joined #pypy
ArchDebian has quit [Ping timeout: 240 seconds]
ArchDebian has joined #pypy
<kenaan>
sthalik sthalik/fix-signed-integer-sizes-1494493539409 cb8ca968878f /pypy/doc/windows.rst: fix signed integer sizes
<kenaan>
arigo default 400ffc527c25 /pypy/doc/windows.rst: Merged in sthalik/pypy-1/sthalik/fix-signed-integer-sizes-1494493539409 (pull request #543) fix signed integer sizes
girish946 has quit [Quit: Leaving]
adamholmberg has quit [Remote host closed the connection]
jamadden has joined #pypy
antocuni has joined #pypy
Tiberium has quit [Remote host closed the connection]
Tiberium has joined #pypy
arigato has quit [Quit: Leaving]
Tiberium has quit [Remote host closed the connection]
Tiberium has joined #pypy
Tiberium_ has joined #pypy
realitix has quit [Read error: Connection reset by peer]
realitix has joined #pypy
MarkMangoba has quit []
MarkMangoba has joined #pypy
cstratak_ has joined #pypy
cstratak has quit [Ping timeout: 240 seconds]
Taggnostr has quit [Remote host closed the connection]
Tiberium_ has quit [Quit: Leaving]
Taggnostr has joined #pypy
stevi3 has joined #pypy
Tiberium has quit [Remote host closed the connection]
Tiberium has joined #pypy
Tiberium_ has joined #pypy
Tiberium has quit [Remote host closed the connection]
Tiberium_ has quit [Remote host closed the connection]
32NAAKZLC has joined #pypy
18VAA5IDG has joined #pypy
Tiberium_ has joined #pypy
ArchDebian has quit [Ping timeout: 260 seconds]
32NAAKZLC has quit [Remote host closed the connection]
18VAA5IDG has quit [Remote host closed the connection]
Tiberium_ has quit [Remote host closed the connection]
Tiberium has joined #pypy
Tiberium has quit [Remote host closed the connection]
Tiberium has joined #pypy
Tiberium has quit [Remote host closed the connection]
Tiberium has quit [Remote host closed the connection]
Tiberium has joined #pypy
jcea has joined #pypy
lritter has quit [Remote host closed the connection]
yuyichao has quit [Ping timeout: 246 seconds]
vkirilichev has quit [Ping timeout: 258 seconds]
vkirilichev has joined #pypy
ArchDebian has quit [Ping timeout: 246 seconds]
yuyichao has joined #pypy
wallet42 has quit []
wallet42 has joined #pypy
ArchDebian has joined #pypy
stevi3 has quit [Quit: Connection closed for inactivity]
arigato has joined #pypy
<kenaan>
antocuni faster-rstruct-2 22c587e1da2b /rpython/: deleting strstorage tests was a mistake, because they were the only ones to test llop.gc_load_indexed. ...
vkirilichev has quit [Remote host closed the connection]
<kenaan>
rlamy PyBuffer-backport 647b63731eca /pypy/objspace/std/marshal_impl.py: Restrict marshalling to old-style buffers
<kenaan>
rlamy PyBuffer-backport 89ffc4931b4b /pypy/module/micronumpy/test/test_ndarray.py: Don't bother preventing _numpypy.frombuffer() from working on memoryviews
<simpson>
o11c: So, before it slips away: What concretely were you thinking that PyPy could do to cache information so that warmup is cheaper?
<simpson>
It's a perennial topic and PyCon is around the door.
<fijal>
simpson: I have *some* ideas
<fijal>
but they all seem expensive
<simpson>
fijal: The central problem to me is designation; how do you point at a spot in the bytecode and say that you know the local context and assumptions? After that, it seems like it's a matter of encoding and indexing.
<simpson>
I guess that that indexing step is gonna be tough too.
ArchDebian has quit [Ping timeout: 255 seconds]
ArchDebian has joined #pypy
antocuni has quit [Ping timeout: 260 seconds]
kolko_ has quit [Ping timeout: 260 seconds]
Tiberium has quit [Quit: Leaving]
<o11c>
simpson: even just simple stuff like: what types exist, what types are used as the argument of each function (__module__.__qualname__)
<o11c>
if multiple functions are dynamically created with the same __module__.__qualname__, pypy isn't under any obligations
<o11c>
simpson: since pypy *already* needs to do the fallback if assumptions fail (though I really wish it *didn't* have to), it shouldn't cost much to optimize for the assumptions first
<o11c>
simpson: the more complex level is: for each __module__.__qualname__, record the series of micropasses that are used to optimize the code
<o11c>
simpson: you have to ensure that each micropass is always *correct*, even if not optimal
<fijal>
o11c: the problem is usually "what does it mean that you load the same module/class/function"
<o11c>
< o11c> if multiple functions are dynamically created with the same __module__.__qualname__, pypy isn't under any obligations
<o11c>
although I suppose something should be done if __qualname__ is assigned right after creation
<Alex_Gaynor>
under any obligations to what, to optimize or to be correct?
kolko has joined #pypy
<Alex_Gaynor>
Given the structure of the JIT, I think trying to make optimizations based on what __qualname__ is doesn't make any sense
<o11c>
to optimize I mean
<o11c>
Alex_Gaynor: most code isn't very dynamic
<o11c>
it's why I love static type systems
<o11c>
they express what the programmer actually *means*
<o11c>
the only edge cases are for traits
ArchDebian has joined #pypy
amaury has joined #pypy
amaury has quit [Ping timeout: 268 seconds]
<kenaan>
arigo default e300fd927c59 /pypy/module/itertools/interp_itertools.py: Disable an assert that fails also on CPython, where failure is better just ignored at least on PyPy
cstratak has quit [Quit: Leaving]
amaury has joined #pypy
nimaje has joined #pypy
jamesaxl has quit [Quit: WeeChat 1.7.1]
zware has quit [Remote host closed the connection]