Vladimir Marangozov's long-awaited malloc restructuring.
For more comments, read the patches@python.org archives.
For documentation read the comments in mymalloc.h and objimpl.h.

(This is not exactly what Vladimir posted to the patches list; I've
made a few changes, and Vladimir sent me a fix in private email for a
problem that only occurs in debug mode.  I'm also holding back on his
change to main.c, which seems unnecessary to me.)
diff --git a/Modules/_sre.c b/Modules/_sre.c
index 9eec035..47b80c5 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -848,7 +848,7 @@
                           &PyString_Type, &code, &groups, &groupindex))
 		return NULL;
 
-	self = PyObject_NEW(PatternObject, &Pattern_Type);
+	self = PyObject_New(PatternObject, &Pattern_Type);
 	if (self == NULL)
 		return NULL;
 
@@ -886,7 +886,7 @@
 	if (status > 0) {
 
 		/* create match object (with room for extra group marks) */
-		match = PyObject_NEW_VAR(MatchObject, &Match_Type, 2*pattern->groups);
+		match = PyObject_NewVar(MatchObject, &Match_Type, 2*pattern->groups);
 		if (match == NULL)
 			return NULL;
 
@@ -1002,7 +1002,7 @@
 	Py_XDECREF(self->code);
 	Py_XDECREF(self->pattern);
 	Py_XDECREF(self->groupindex);
-	PyMem_DEL(self);
+	PyObject_Del(self);
 }
 
 static PyObject*
@@ -1163,7 +1163,7 @@
 {
 	Py_XDECREF(self->string);
 	Py_DECREF(self->pattern);
-	PyMem_DEL(self);
+	PyObject_Del(self);
 }
 
 static PyObject*