[Python-checkins] python/dist/src/Doc/whatsnew whatsnew23.tex,1.132,1.133
akuchling@users.sourceforge.net
akuchling@users.sourceforge.net
Fri, 21 Mar 2003 10:32:45 -0800
Update of /cvsroot/python/python/dist/src/Doc/whatsnew
In directory sc8-pr-cvs1:/tmp/cvs-serv21709
Modified Files:
whatsnew23.tex
Log Message:
Add PEP 307 section
Index: whatsnew23.tex
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/whatsnew/whatsnew23.tex,v
retrieving revision 1.132
retrieving revision 1.133
diff -C2 -d -r1.132 -r1.133
*** whatsnew23.tex 21 Mar 2003 18:10:12 -0000 1.132
--- whatsnew23.tex 21 Mar 2003 18:32:43 -0000 1.133
***************
*** 885,888 ****
--- 885,932 ----
%======================================================================
+ \section{PEP 307: Pickle Enhancements \label{section-pep305}}
+
+ The \module{pickle} and \module{cPickle} modules received some
+ attention during the 2.3 development cycle. In 2.2, new-style classes
+ could be pickled without difficult, but they weren't pickled very
+ compactly; \pep{307} quotes a trivial example where a new-style class
+ results in a pickled string three times longer than that for a classic
+ class.
+
+ The solution was to invent a new pickle protocol. The
+ \function{pickle.dumps()} function has supported a text-or-binary flag
+ for a long time. In 2.3, this flag is redefined from a Boolean to an
+ integer; 0 is the old text-mode pickle format, 1 is the old binary
+ format, and now 2 is a new 2.3-specific format. (A new constant,
+ \constant{pickle.HIGHEST_PROTOCOL}, can be used to select the fanciest
+ protocol available.)
+
+ Unpickling is no longer considered a safe operation. 2.2's
+ \module{pickle} provided hooks for trying to prevent unsafe classes
+ from being unpickled (specifically, a
+ \member{__safe_for_unpickling__} attribute), but none of this code
+ was ever audited and therefore it's all been ripped out in 2.3. You
+ should not unpickle untrusted data in any version of Python.
+
+ To reduce the pickling overhead for new-style classes, a new interface
+ for customizing pickling was added using three special methods:
+ \method{__getstate__}, \method{__setstate__}, and
+ \method{__getnewargs__}. Consult \pep{307} for the full semantics
+ of these methods.
+
+ As a way to compress pickles yet further, it's now possible to use
+ integer codes instead of long strings to identify pickled classes.
+ The Python Software Foundation will maintain a list of standardized
+ codes; there's also a range of codes for private use. Currently no
+ codes have been specified.
+
+ \begin{seealso}
+
+ \seepep{307}{Extensions to the pickle protocol}{Written and implemented
+ by Guido van Rossum and Tim Peters.}
+
+ \end{seealso}
+
+ %======================================================================
\section{Extended Slices\label{section-slices}}