Rename 'getset' to 'property'.
diff --git a/Include/descrobject.h b/Include/descrobject.h
index 03543ae..a868310 100644
--- a/Include/descrobject.h
+++ b/Include/descrobject.h
@@ -32,4 +32,4 @@
 extern DL_IMPORT(PyObject *) PyWrapper_New(PyObject *, PyObject *);
 
 
-extern DL_IMPORT(PyTypeObject) PyGetSet_Type;
+extern DL_IMPORT(PyTypeObject) PyProperty_Type;
diff --git a/Lib/test/test_binop.py b/Lib/test/test_binop.py
index 7eded9a..c64e3a8 100644
--- a/Lib/test/test_binop.py
+++ b/Lib/test/test_binop.py
@@ -48,12 +48,12 @@
     def _get_num(self):
         """Accessor function for read-only 'num' attribute of Rat."""
         return self.__num
-    num = getset(_get_num, None)
+    num = property(_get_num, None)
 
     def _get_den(self):
         """Accessor function for read-only 'den' attribute of Rat."""
         return self.__den
-    den = getset(_get_den, None)
+    den = property(_get_den, None)
 
     def __repr__(self):
         """Convert a Rat to an string resembling a Rat constructor call."""
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index dd411ac..f0f121b 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -578,8 +578,8 @@
             return "E" + self.__super.meth()
     verify(E().meth() == "EBCA")
 
-    class autogetset(type):
-        # Automatically create getset attributes when methods
+    class autoproperty(type):
+        # Automatically create property attributes when methods
         # named _get_x and/or _set_x are found
         def __new__(metaclass, name, bases, dict):
             hits = {}
@@ -595,11 +595,11 @@
                     set = val
                     hits[key] = get, set
             for key, (get, set) in hits.iteritems():
-                dict[key] = getset(get, set)
-            return super(autogetset, metaclass).__new__(metaclass,
+                dict[key] = property(get, set)
+            return super(autoproperty, metaclass).__new__(metaclass,
                                                         name, bases, dict)
     class A:
-        __metaclass__ = autogetset
+        __metaclass__ = autoproperty
         def _get_x(self):
             return -self.__x
         def _set_x(self, x):
@@ -610,7 +610,7 @@
     verify(a.x == 12)
     verify(a._A__x == -12)
 
-    class multimetaclass(autogetset, autosuper):
+    class multimetaclass(autoproperty, autosuper):
         # Merge of multiple cooperating metaclasses
         pass
     class A:
@@ -1274,8 +1274,8 @@
     verify(r() is None)
     del r
 
-def getsets():
-    if verbose: print "Testing getset..."
+def properties():
+    if verbose: print "Testing property..."
     class C(object):
         def getx(self):
             return self.__x
@@ -1283,7 +1283,7 @@
             self.__x = value
         def delx(self):
             del self.__x
-        x = getset(getx, setx, delx)
+        x = property(getx, setx, delx)
     a = C()
     verify(not hasattr(a, "x"))
     a.x = 42
@@ -1445,7 +1445,7 @@
     methods()
     specials()
     weakrefs()
-    getsets()
+    properties()
     supers()
     inherits()
 
diff --git a/Lib/test/test_descrtut.py b/Lib/test/test_descrtut.py
index 121eed5..3847d66 100644
--- a/Lib/test/test_descrtut.py
+++ b/Lib/test/test_descrtut.py
@@ -315,7 +315,7 @@
 Attributes defined by get/set methods
 
 
-    >>> class getset(object):
+    >>> class property(object):
     ...
     ...     def __init__(self, get, set=None):
     ...         self.__get = get
@@ -344,7 +344,7 @@
     ...         if x < 0: x = 0
     ...         self.__x = x
     ...
-    ...     x = getset(getx, setx)
+    ...     x = property(getx, setx)
 
 Here's a small demonstration:
 
@@ -357,11 +357,11 @@
     0
     >>>
 
-Hmm -- getset is builtin now, so let's try it that way too.
+Hmm -- property is builtin now, so let's try it that way too.
 
-    >>> del getset  # unmask the builtin
-    >>> getset
-    <type 'getset'>
+    >>> del property  # unmask the builtin
+    >>> property
+    <type 'property'>
 
     >>> class C(object):
     ...     def __init__(self):
@@ -371,7 +371,7 @@
     ...     def setx(self, x):
     ...         if x < 0: x = 0
     ...         self.__x = x
-    ...     x = getset(getx, setx)
+    ...     x = property(getx, setx)
 
 
     >>> a = C()
diff --git a/Objects/descrobject.c b/Objects/descrobject.c
index 0324ac2..e5b08c3 100644
--- a/Objects/descrobject.c
+++ b/Objects/descrobject.c
@@ -840,10 +840,10 @@
 }
 
 
-/* A built-in 'getset' type */
+/* A built-in 'property' type */
 
 /*
-    class getset(object):
+    class property(object):
 
 	def __init__(self, get=None, set=None):
 	    self.__get = get
@@ -867,12 +867,12 @@
 	PyObject *get;
 	PyObject *set;
 	PyObject *del;
-} getsetobject;
+} propertyobject;
 
 static void
-getset_dealloc(PyObject *self)
+property_dealloc(PyObject *self)
 {
-	getsetobject *gs = (getsetobject *)self;
+	propertyobject *gs = (propertyobject *)self;
 
 	Py_XDECREF(gs->get);
 	Py_XDECREF(gs->set);
@@ -881,9 +881,9 @@
 }
 
 static PyObject *
-getset_descr_get(PyObject *self, PyObject *obj, PyObject *type)
+property_descr_get(PyObject *self, PyObject *obj, PyObject *type)
 {
-	getsetobject *gs = (getsetobject *)self;
+	propertyobject *gs = (propertyobject *)self;
 
 	if (gs->get == NULL) {
 		PyErr_SetString(PyExc_AttributeError, "unreadable attribute");
@@ -897,9 +897,9 @@
 }
 
 static int
-getset_descr_set(PyObject *self, PyObject *obj, PyObject *value)
+property_descr_set(PyObject *self, PyObject *obj, PyObject *value)
 {
-	getsetobject *gs = (getsetobject *)self;
+	propertyobject *gs = (propertyobject *)self;
 	PyObject *func, *res;
 
 	if (value == NULL)
@@ -924,12 +924,12 @@
 }
 
 static int
-getset_init(PyObject *self, PyObject *args, PyObject *kwds)
+property_init(PyObject *self, PyObject *args, PyObject *kwds)
 {
 	PyObject *get = NULL, *set = NULL, *del = NULL;
-	getsetobject *gs = (getsetobject *)self;
+	propertyobject *gs = (propertyobject *)self;
 
-	if (!PyArg_ParseTuple(args, "|OOO:getset", &get, &set, &del))
+	if (!PyArg_ParseTuple(args, "|OOO:property", &get, &set, &del))
 		return -1;
 	if (get == Py_None)
 		get = NULL;
@@ -944,23 +944,23 @@
 	return 0;
 }
 
-static char getset_doc[] =
-"getset([getfunc[, setfunc[, delfunc]]]) -> getset attribute\n"
+static char property_doc[] =
+"property([getfunc[, setfunc[, delfunc]]]) -> property attribute\n"
 "Typical use to define a managed attribute x of C instances:\n"
 "class C(object):\n"
 "    def getx(self): return self.__x\n"
 "    def setx(self, value): self.__x = value\n"
 "    def delx(self): del self.__x\n"
-"    x = getset(getx, setx, delx)";
+"    x = property(getx, setx, delx)";
 
-PyTypeObject PyGetSet_Type = {
+PyTypeObject PyProperty_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0,					/* ob_size */
-	"getset",				/* tp_name */
-	sizeof(getsetobject),			/* tp_basicsize */
+	"property",				/* tp_name */
+	sizeof(propertyobject),			/* tp_basicsize */
 	0,					/* tp_itemsize */
 	/* methods */
-	getset_dealloc,		 		/* tp_dealloc */
+	property_dealloc,	 		/* tp_dealloc */
 	0,					/* tp_print */
 	0,					/* tp_getattr */
 	0,					/* tp_setattr */
@@ -976,7 +976,7 @@
 	0,					/* tp_setattro */
 	0,					/* tp_as_buffer */
 	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
- 	getset_doc,				/* tp_doc */
+ 	property_doc,				/* tp_doc */
  	0,					/* tp_traverse */
  	0,					/* tp_clear */
 	0,					/* tp_richcompare */
@@ -988,10 +988,10 @@
 	0,					/* tp_getset */
 	0,					/* tp_base */
 	0,					/* tp_dict */
-	getset_descr_get,			/* tp_descr_get */
-	getset_descr_set,			/* tp_descr_set */
+	property_descr_get,			/* tp_descr_get */
+	property_descr_set,			/* tp_descr_set */
 	0,					/* tp_dictoffset */
-	getset_init,				/* tp_init */
+	property_init,				/* tp_init */
 	PyType_GenericAlloc,			/* tp_alloc */
 	PyType_GenericNew,			/* tp_new */
 	_PyObject_Del,				/* tp_free */
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 55c71d3..2d8c024 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -1869,8 +1869,8 @@
 	if (PyDict_SetItemString(dict, "float",
 				 (PyObject *) &PyFloat_Type) < 0)
 		return NULL;
-	if (PyDict_SetItemString(dict, "getset",
-				 (PyObject *) &PyGetSet_Type) < 0)
+	if (PyDict_SetItemString(dict, "property",
+				 (PyObject *) &PyProperty_Type) < 0)
 		return NULL;
 	if (PyDict_SetItemString(dict, "int", (PyObject *) &PyInt_Type) < 0)
 		return NULL;