• Victor Stinner's avatar
    Issue #29300: Convert _struct module to Argument Clinic · 3f2d1013
    Victor Stinner yazdı
    * The struct module now requires contiguous buffers.
    * Convert most functions and methods of the _struct module to Argument Clinic
    * Use "Py_buffer" type for the "buffer" argument. Argument Clinic is
      responsible to create and release the Py_buffer object.
    * Use "PyStructObject *" type for self to avoid explicit conversions.
    * Add an unit test on the _struct.Struct.unpack_from() method to test passing
      arguments as keywords.
    * Rephrase docstrings.
    * Rename "fmt" argument to "format" in docstrings and the documentation.
    
    As a side effect, functions and methods which used METH_VARARGS calling
    convention like struct.pack() now use the METH_FASTCALL calling convention
    which avoids the creation of temporary tuple to pass positional arguments and
    so is faster. For example, struct.pack("i", 1) becomes 1.56x faster (-36%)::
    
        $ ./python -m perf timeit \
            -s 'import struct; pack=struct.pack' 'pack("i", 1)' \
            --compare-to=../default-ref/python
        Median +- std dev: 119 ns +- 1 ns -> 76.8 ns +- 0.4 ns: 1.56x faster (-36%)
        Significant (t=295.91)
    
    Patch co-written with Serhiy Storchaka.
    3f2d1013
Adı
Son kayıt (commit)
Son güncelleme
..
_blake2 Loading commit data...
_ctypes Loading commit data...
_decimal Loading commit data...
_io Loading commit data...
_multiprocessing Loading commit data...
_sha3 Loading commit data...
_sqlite Loading commit data...
cjkcodecs Loading commit data...
clinic Loading commit data...
expat Loading commit data...
zlib Loading commit data...
README Loading commit data...
Setup.config.in Loading commit data...
Setup.dist Loading commit data...
_asynciomodule.c Loading commit data...
_bisectmodule.c Loading commit data...
_bz2module.c Loading commit data...
_codecsmodule.c Loading commit data...
_collectionsmodule.c Loading commit data...
_cryptmodule.c Loading commit data...
_csv.c Loading commit data...
_curses_panel.c Loading commit data...
_cursesmodule.c Loading commit data...
_datetimemodule.c Loading commit data...
_dbmmodule.c Loading commit data...
_elementtree.c Loading commit data...
_functoolsmodule.c Loading commit data...
_gdbmmodule.c Loading commit data...
_hashopenssl.c Loading commit data...
_heapqmodule.c Loading commit data...
_json.c Loading commit data...
_localemodule.c Loading commit data...
_lsprof.c Loading commit data...
_lzmamodule.c Loading commit data...
_math.c Loading commit data...
_math.h Loading commit data...
_opcode.c Loading commit data...
_operator.c Loading commit data...
_pickle.c Loading commit data...
_posixsubprocess.c Loading commit data...
_randommodule.c Loading commit data...
_scproxy.c Loading commit data...
_sre.c Loading commit data...
_ssl.c Loading commit data...
_ssl_data.h Loading commit data...
_stat.c Loading commit data...
_struct.c Loading commit data...
_testbuffer.c Loading commit data...
_testcapimodule.c Loading commit data...
_testimportmultiple.c Loading commit data...
_testmultiphase.c Loading commit data...
_threadmodule.c Loading commit data...
_tkinter.c Loading commit data...
_tracemalloc.c Loading commit data...
_weakref.c Loading commit data...
_winapi.c Loading commit data...
addrinfo.h Loading commit data...
arraymodule.c Loading commit data...
atexitmodule.c Loading commit data...
audioop.c Loading commit data...
binascii.c Loading commit data...
cmathmodule.c Loading commit data...
config.c.in Loading commit data...
errnomodule.c Loading commit data...
faulthandler.c Loading commit data...
fcntlmodule.c Loading commit data...
fpectlmodule.c Loading commit data...
fpetestmodule.c Loading commit data...
gc_weakref.txt Loading commit data...
gcmodule.c Loading commit data...
getaddrinfo.c Loading commit data...
getbuildinfo.c Loading commit data...
getnameinfo.c Loading commit data...
getpath.c Loading commit data...
grpmodule.c Loading commit data...
hashlib.h Loading commit data...
hashtable.c Loading commit data...
hashtable.h Loading commit data...
itertoolsmodule.c Loading commit data...
ld_so_aix.in Loading commit data...
main.c Loading commit data...
makesetup Loading commit data...
makexp_aix Loading commit data...
mathmodule.c Loading commit data...
md5module.c Loading commit data...
mmapmodule.c Loading commit data...
nismodule.c Loading commit data...
ossaudiodev.c Loading commit data...
overlapped.c Loading commit data...
parsermodule.c Loading commit data...
posixmodule.c Loading commit data...
posixmodule.h Loading commit data...
pwdmodule.c Loading commit data...
pyexpat.c Loading commit data...
readline.c Loading commit data...
resource.c Loading commit data...
rotatingtree.c Loading commit data...
rotatingtree.h Loading commit data...
selectmodule.c Loading commit data...
sha1module.c Loading commit data...
sha256module.c Loading commit data...
sha512module.c Loading commit data...
signalmodule.c Loading commit data...
socketmodule.c Loading commit data...
socketmodule.h Loading commit data...
spwdmodule.c Loading commit data...
sre.h Loading commit data...
sre_constants.h Loading commit data...
sre_lib.h Loading commit data...
symtablemodule.c Loading commit data...
syslogmodule.c Loading commit data...
termios.c Loading commit data...
testcapi_long.h Loading commit data...
timemodule.c Loading commit data...
tkappinit.c Loading commit data...
tkinter.h Loading commit data...
unicodedata.c Loading commit data...
unicodedata_db.h Loading commit data...
unicodename_db.h Loading commit data...
winreparse.h Loading commit data...
xxlimited.c Loading commit data...
xxmodule.c Loading commit data...
xxsubtype.c Loading commit data...
zipimport.c Loading commit data...
zlibmodule.c Loading commit data...