[Python-checkins] python/dist/src/Misc SpecialBuilds.txt,1.7,1.8

tim_one@users.sourceforge.net tim_one@users.sourceforge.net
Wed, 10 Jul 2002 17:24:00 -0700


Update of /cvsroot/python/python/dist/src/Misc
In directory usw-pr-cvs1:/tmp/cvs-serv20407/python/Misc

Modified Files:
	SpecialBuilds.txt 
Log Message:
Recorded the introduction release for each gimmick, as best I was able to
reconstruct that info.
Filled out some sketchy explanations of pragmatics.


Index: SpecialBuilds.txt
===================================================================
RCS file: /cvsroot/python/python/dist/src/Misc/SpecialBuilds.txt,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** SpecialBuilds.txt	11 Jul 2002 00:02:52 -0000	1.7
--- SpecialBuilds.txt	11 Jul 2002 00:23:58 -0000	1.8
***************
*** 3,7 ****
  
  ---------------------------------------------------------------------------
! Py_REF_DEBUG
  
  Turn on aggregate reference counting.  This arranges that extern
--- 3,8 ----
  
  ---------------------------------------------------------------------------
! Py_REF_DEBUG                                              introduced in 1.4
!                                                  named REF_DEBUG before 1.4
  
  Turn on aggregate reference counting.  This arranges that extern
***************
*** 29,33 ****
      Before 2.3, Py_TRACE_REFS was required to enable this function.
  ---------------------------------------------------------------------------
! Py_TRACE_REFS
  
  Turn on heavy reference debugging.  This is major surgery.  Every PyObject
--- 30,35 ----
      Before 2.3, Py_TRACE_REFS was required to enable this function.
  ---------------------------------------------------------------------------
! Py_TRACE_REFS                                             introduced in 1.4
!                                                 named TRACE_REFS before 1.4
  
  Turn on heavy reference debugging.  This is major surgery.  Every PyObject
***************
*** 59,63 ****
      all still-live heap objects.
  ---------------------------------------------------------------------------
! PYMALLOC_DEBUG
  
  When pymalloc is enabled (WITH_PYMALLOC is defined), calls to the PyObject_
--- 61,65 ----
      all still-live heap objects.
  ---------------------------------------------------------------------------
! PYMALLOC_DEBUG                                            introduced in 2.3
  
  When pymalloc is enabled (WITH_PYMALLOC is defined), calls to the PyObject_
***************
*** 91,100 ****
      Copies of FORBIDDENBYTE.  Used to catch under- writes and reads.
  p[0:N]
!     The requested memory, filled with copies of CLEANBYTE.
!     Used to catch reference to uninitialized memory.
      When a realloc-like function is called requesting a larger memory
      block, the new excess bytes are also filled with CLEANBYTE.
      When a free-like function is called, these are overwritten with
!     DEADBYTE, to catch reference to free()ed memory.  When a realloc-
      like function is called requesting a smaller memory block, the excess
      old bytes are also filled with DEADBYTE.
--- 93,102 ----
      Copies of FORBIDDENBYTE.  Used to catch under- writes and reads.
  p[0:N]
!     The requested memory, filled with copies of CLEANBYTE, used to catch
!     reference to uninitialized memory.
      When a realloc-like function is called requesting a larger memory
      block, the new excess bytes are also filled with CLEANBYTE.
      When a free-like function is called, these are overwritten with
!     DEADBYTE, to catch reference to freed memory.  When a realloc-
      like function is called requesting a smaller memory block, the excess
      old bytes are also filled with DEADBYTE.
***************
*** 111,117 ****
      is incremented, and exists so you can set such a breakpoint easily.
  
! A malloc-like or free-like function first checks that the FORBIDDENBYTEs
  at each end are intact.  If they've been altered, diagnostic output is
! written to stderr, and the program is aborted by Py_FatalError().
  
  Note that PYMALLOC_DEBUG requires WITH_PYMALLOC.
--- 113,124 ----
      is incremented, and exists so you can set such a breakpoint easily.
  
! A realloc-like or free-like function first checks that the FORBIDDENBYTEs
  at each end are intact.  If they've been altered, diagnostic output is
! written to stderr, and the program is aborted via Py_FatalError().  The
! other main failure mode is provoking a memory error when a program
! reads up one of the special bit patterns and tries to use it as an address.
! If you get in a debugger then and look at the object, you're likely
! to see that it's entirely filled with 0xDB (meaning freed memory is
! getting used) or 0xCB (meaning uninitialized memory is getting used).
  
  Note that PYMALLOC_DEBUG requires WITH_PYMALLOC.
***************
*** 124,128 ****
      by Py_Finalize().
  ---------------------------------------------------------------------------
! Py_DEBUG
  
  This is what is generally meant by "a debug build" of Python.
--- 131,136 ----
      by Py_Finalize().
  ---------------------------------------------------------------------------
! Py_DEBUG                                                  introduced in 1.5
!                                                      named DEBUG before 1.5
  
  This is what is generally meant by "a debug build" of Python.
***************
*** 133,137 ****
  sanity checks inside "#ifdef Py_DEBUG" blocks.
  ---------------------------------------------------------------------------
! COUNT_ALLOCS
  
  Each type object grows three new members:
--- 141,145 ----
  sanity checks inside "#ifdef Py_DEBUG" blocks.
  ---------------------------------------------------------------------------
! COUNT_ALLOCS                                            introduced in 0.9.9
  
  Each type object grows three new members: