Antoine Pitrou
fce60eaf15
Issue #22676 : Make the pickling of global objects which don't have a __module__ attribute less slow.
2014-10-23 22:47:50 +02:00
Serhiy Storchaka
67c719b34b
Silenced some warnings about comparison between signed and unsigned integer
...
expressions.
2014-09-05 10:10:23 +03:00
Victor Stinner
049e509a9f
Issue #22207 : Fix "comparison between signed and unsigned integers" warning in
...
test checking for integer overflow on Py_ssize_t type: cast explicitly to
size_t.
2014-08-17 22:20:00 +02:00
Victor Stinner
7270b7f1aa
_pickle: Optimize raw_unicode_escape(), use directly a bytes object, don't use
...
a temporary bytearray object.
2014-08-17 21:14:46 +02:00
Victor Stinner
f13c46cc69
Issue #22218 : Fix "comparison between signed and unsigned integers" warnings in
...
Modules/_pickle.c.
2014-08-17 21:05:55 +02:00
Larry Hastings
581ee3618c
Issue #20326 : Argument Clinic now uses a simple, unique signature to
...
annotate text signatures in docstrings, resulting in fewer false
positives. "self" parameters are also explicitly marked, allowing
inspect.Signature() to authoritatively detect (and skip) said parameters.
Issue #20326 : Argument Clinic now generates separate checksums for the
input and output sections of the block, allowing external tools to verify
that the input has not changed (and thus the output is not out-of-date).
2014-01-28 05:00:08 -08:00
Serhiy Storchaka
3c1f0f1b42
Issue #20395 : Extract generated clinic code in Modules/_pickle.c to separate file.
2014-01-27 10:34:22 +02:00
Christian Heimes
27ea78b352
silence compiler warning that 's' may be used uninitialized in the load function.
2014-01-27 01:03:53 +01:00
Larry Hastings
c20472640c
Issue #20390 : Small fixes and improvements for Argument Clinic.
2014-01-25 20:43:29 -08:00
Larry Hastings
5c66189e88
Issue #20189 : Four additional builtin types (PyTypeObject,
...
PyMethodDescr_Type, _PyMethodWrapper_Type, and PyWrapperDescr_Type)
have been modified to provide introspection information for builtins.
Also: many additional Lib, test suite, and Argument Clinic fixes.
2014-01-24 06:17:25 -08:00
Larry Hastings
462582651c
Two minor Argument Clinic bugfixes: use the name of the class in the
...
docstring for __new__ and __init__, and always use "goto exit" instead of
returning "NULL" for failure to parse (as _new__ and __init__ return ints).
2014-01-22 03:05:49 -08:00
Larry Hastings
b7ccb20423
Issue #20294 : Argument Clinic now supports argument parsing for __new__ and
...
__init__ functions.
2014-01-18 23:50:21 -08:00
Larry Hastings
bebf73511a
Issue #20287 : Argument Clinic's output is now configurable, allowing
...
delaying its output or even redirecting it to a separate file.
2014-01-17 17:47:17 -08:00
Larry Hastings
8666e65206
Issue #20228 : Argument Clinic now has special support for class special
...
methods.
2014-01-12 14:12:59 -08:00
Larry Hastings
61272b77b0
Issue #19273 : The marker comments Argument Clinic uses have been changed
...
to improve readability.
2014-01-07 12:41:53 -08:00
Larry Hastings
3cceb38486
Issue #19976 : Argument Clinic METH_NOARGS functions now always
...
take two parameters.
2014-01-04 11:09:09 -08:00
Stefan Krah
f483b0f3a9
Issue #19972 : Add rarely used freefunc. This fixes a leak if sys.exit()
...
is used in a program.
2013-12-14 13:43:10 +01:00
Alexandre Vassalotti
d05c9ff845
Issue #6784 : Strings from Python 2 can now be unpickled as bytes objects.
...
Initial patch by Merlijn van Deen.
I've added a few unrelated docstring fixes in the patch while I was at
it, which makes the documentation for pickle a bit more consistent.
2013-12-07 01:09:27 -08:00
Alexandre Vassalotti
6e73ff1a31
Issue #19881 : Fix bad pickling of large bytes in cpickle.
2013-12-05 19:29:32 -08:00
Alexandre Vassalotti
2ccf8e969c
Issue #6477 : Merge with 3.3.
2013-11-30 17:58:53 -08:00
Alexandre Vassalotti
65846c6c51
Issue #6477 : Keep PyNotImplemented_Type and PyNone_Type private.
2013-11-30 17:55:48 -08:00
Alexandre Vassalotti
3c23e7a5dc
Issue #6477 : Merge with 3.3.
2013-11-30 16:21:20 -08:00
Alexandre Vassalotti
19b6fa6ebb
Issue #6477 : Added support for pickling the types of built-in singletons.
2013-11-30 16:06:39 -08:00
Alexandre Vassalotti
a1eedf9ff0
Merge with 3.3.
2013-11-30 13:55:39 -08:00
Alexandre Vassalotti
896414fedf
Fixed _pickle.Unpickler to handle empty persistent IDs correctly.
2013-11-30 13:52:35 -08:00
Serhiy Storchaka
6fe39b76a9
Issue #17897 : Optimized unpickle prefetching.
2013-11-30 23:15:38 +02:00
Alexandre Vassalotti
567eba1852
Use PyDict_GetItemWithError instead of PyDict_GetItem in cpickle.
2013-11-28 17:09:16 -08:00
Alexandre Vassalotti
6bf41e54a4
Remove explicit empty tuple reuse in cpickle.
...
PyTuple_New(0) always returns the same empty tuple from its free list anyway,
so we are not saving much here. Plus, the code where this was used is on
uncommon run paths.
2013-11-28 15:17:29 -08:00
Alexandre Vassalotti
b13e6bcbd8
Remove the tuple reuse optimization in _Pickle_FastCall.
...
I have noticed a race-condition occurring on one of the buildbots because of
this optimization. The function called may release the GIL which means
multiple threads may end up accessing the shared tuple. I could fix it up by
storing the tuple to the Pickler and Unipickler object again, but honestly it
really not worth the trouble.
I ran many benchmarks and the only time the optimization helps is when using a
fin-memory file, like io.BytesIO on which reads are super cheap, combined with
pickle protocol less than 4. Even in this contrived case, the speedup is a
about 5%. For everything else, this optimization does not provide any
noticable improvements.
2013-11-28 14:56:09 -08:00
Alexandre Vassalotti
23bdd83053
Encapsulate cpickle global state in a dedicated object.
...
This implements PEP 3121 module finalization as well. This change does not
cause any significant impact on performance.
2013-11-27 19:36:52 -08:00
Alexandre Vassalotti
20c28c1ea2
Combine the FastCall functions in cpickle.
...
I fixed the bug that was in my previous attempt of this cleanup. I ran
the full test suite to verify I didn't introduce any obvious bugs.
2013-11-27 02:26:54 -08:00
Alexandre Vassalotti
b4a04fb7e6
Reverting e39db21df580 eagerly due to buildbot failures.
2013-11-25 13:25:12 -08:00
Alexandre Vassalotti
f94a041f8f
Combine _Pickler_FastCall and _Unpickler_FastCall in cpickle.
2013-11-25 13:03:32 -08:00
Alexandre Vassalotti
1048fb5539
Issue #19739 : Try to fix compiler warnings on 32-bit Windows.
2013-11-25 11:35:46 -08:00
Alexandre Vassalotti
ded929b300
Merge save_int into save_long in cpickle to remove redundant code.
...
Also, replace unnessary uses of the #if preprocessor directive.
2013-11-24 22:41:13 -08:00
Alexandre Vassalotti
8a67f52463
Simplify save_bool in cpickle.
2013-11-24 21:40:18 -08:00
Alexandre Vassalotti
ed8c906127
Use Clinic to process arguments in cpickle.
...
This doesn't make any functional changes to the exisiting implementation. The
conversion did help however uncover documentation bugs. The best thing about
this conversion is less C code to maintain by hand.
2013-11-24 12:25:48 -08:00
Alexandre Vassalotti
fc91285c93
Remove code path in cpickle that does not exist in pickle.
2013-11-24 03:07:35 -08:00
Alexandre Vassalotti
c49477b184
Make Ellipsis and NotImplemented picklable through the reduce protocol.
2013-11-24 02:53:45 -08:00
Alexandre Vassalotti
4c05d3bc56
Make built-in methods picklable through the reduce protocol.
2013-11-24 02:41:05 -08:00
Alexandre Vassalotti
b6a2f2a0d1
Make framing optional in pickle protocol 4.
...
This will allow us to control in the future whether to use framing or not.
For example, we may want to turn it off for tiny pickle where it doesn't
help.
The change also improves performance slightly:
### fastpickle ###
Min: 0.608517 -> 0.557358: 1.09x faster
Avg: 0.798892 -> 0.694738: 1.15x faster
Significant (t=3.45)
Stddev: 0.17145 -> 0.12704: 1.3496x smaller
Timeline: http://goo.gl/3xQE1J
### pickle_dict ###
Min: 0.669920 -> 0.615271: 1.09x faster
Avg: 0.733633 -> 0.645058: 1.14x faster
Significant (t=5.05)
Stddev: 0.12041 -> 0.02961: 4.0662x smaller
Timeline: http://goo.gl/LpLSXI
### pickle_list ###
Min: 0.397583 -> 0.368112: 1.08x faster
Avg: 0.412784 -> 0.397223: 1.04x faster
Significant (t=2.78)
Stddev: 0.01518 -> 0.03653: 2.4068x larger
Timeline: http://goo.gl/v39E59
### unpickle_list ###
Min: 0.692935 -> 0.594870: 1.16x faster
Avg: 0.730012 -> 0.628395: 1.16x faster
Significant (t=17.76)
Stddev: 0.02720 -> 0.02995: 1.1012x larger
Timeline: http://goo.gl/2P9AEt
The following not significant results are hidden, use -v to show them:
fastunpickle.
2013-11-23 20:30:03 -08:00
Antoine Pitrou
c1207c1bcf
Fix signed / unsigned comparison
2013-11-23 21:34:04 +01:00
Gregory P. Smith
2b38fc187c
gcc doesn't realize that dummy is always initialized by the function call
...
and warns about potential uninitialized use.
Silence that by initializing it to null.
2013-11-23 20:21:28 +00:00
Christian Heimes
e8b1ba1699
Issue #17810 : Add two missing error checks to save_global
...
CID 1131946: Unchecked return value (CHECKED_RETURN)
2013-11-23 21:13:39 +01:00
Antoine Pitrou
6188d09f1c
Merge
2013-11-23 21:06:21 +01:00
Christian Heimes
74d8d63b18
Issue #17810 : return -1 on error
2013-11-23 21:05:31 +01:00
Antoine Pitrou
8f2ee6e407
Fix writing out 64-bit size fields on 32-bit builds
2013-11-23 21:05:08 +01:00
Christian Heimes
b3d3ee4fef
Issue #17810 : Add NULL check to save_frozenset
...
CID 1131949: Dereference null return value (NULL_RETURNS)
2013-11-23 21:01:40 +01:00
Antoine Pitrou
c9dc4a2a8a
Issue #17810 : Implement PEP 3154, pickle protocol 4.
...
Most of the work is by Alexandre.
2013-11-23 18:59:12 +01:00
Victor Stinner
804e05e800
Issue #19437 : Use an identifier for "__name__" string in pickle to improve
...
error handling
The following code didn't handle correctly the failure of
PyUnicode_InternFromString("__name__").
if (newobj_str == NULL) {
newobj_str = PyUnicode_InternFromString("__newobj__");
name_str = PyUnicode_InternFromString("__name__");
if (newobj_str == NULL || name_str == NULL)
return -1;
}
2013-11-14 01:26:17 +01:00