Use unicode and remove support for some uses of str8.
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 17f5b59..22a57ea 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -40,7 +40,7 @@
 	}
 	func = PyTuple_GET_ITEM(args, 0); /* Better be callable */
 	name = PyTuple_GET_ITEM(args, 1);
-	if ((!PyString_Check(name) && !PyUnicode_Check(name))) {
+	if (!PyUnicode_Check(name)) {
 		PyErr_SetString(PyExc_TypeError,
 				"__build_class__: name is not a string");
 		return NULL;
@@ -631,8 +631,7 @@
 	}
 	else if (locals == Py_None)
 		locals = globals;
-	if (!PyString_Check(prog) &&
-	    !PyUnicode_Check(prog) &&
+	if (!PyUnicode_Check(prog) &&
 	    !PyCode_Check(prog)) {
 		PyErr_Format(PyExc_TypeError,
 			"exec() arg 1 must be a string, file, or code "
@@ -695,23 +694,15 @@
 static PyObject *
 builtin_getattr(PyObject *self, PyObject *args)
 {
-	PyObject *v, *result, *dflt = NULL, *release = NULL;
+	PyObject *v, *result, *dflt = NULL;
 	PyObject *name;
 
 	if (!PyArg_UnpackTuple(args, "getattr", 2, 3, &v, &name, &dflt))
 		return NULL;
 
-	if (PyString_Check(name)) {
-		release = PyString_AsDecodedObject(name, NULL, NULL);
-		if (!release)
-			return NULL;
-		name = release;
-	}
-
 	if (!PyUnicode_Check(name)) {
 		PyErr_SetString(PyExc_TypeError,
 				"getattr(): attribute name must be string");
-		Py_XDECREF(release);
 		return NULL;
 	}
 	result = PyObject_GetAttr(v, name);
@@ -722,7 +713,6 @@
 		Py_INCREF(dflt);
 		result = dflt;
 	}
-	Py_XDECREF(release);
 	return result;
 }
 
@@ -1221,17 +1211,15 @@
 	if (file == NULL || file == Py_None)
 		file = PySys_GetObject("stdout");
 
-	if (sep && sep != Py_None && !PyString_Check(sep) &&
-	    !PyUnicode_Check(sep)) {
+	if (sep && sep != Py_None && !PyUnicode_Check(sep)) {
 		PyErr_Format(PyExc_TypeError,
-			     "sep must be None, str or unicode, not %.200s",
+			     "sep must be None or a string, not %.200s",
 			     sep->ob_type->tp_name);
 		return NULL;
 	}
-	if (end && end != Py_None && !PyString_Check(end) &&
-	    !PyUnicode_Check(end)) {
+	if (end && end != Py_None && !PyUnicode_Check(end)) {
 		PyErr_Format(PyExc_TypeError,
-			     "end must be None, str or unicode, not %.200s",
+			     "end must be None or a string, not %.200s",
 			     end->ob_type->tp_name);
 		return NULL;
 	}
@@ -1383,7 +1371,7 @@
 				result = NULL;
 			}
 			else {
-				result = PyString_FromStringAndSize(s, len-1);
+				result = PyUnicode_FromStringAndSize(s, len-1);
 			}
 		}
 		PyMem_FREE(s);