Kill execfile(), use exec() instead
diff --git a/Misc/NEWS b/Misc/NEWS
index 09d1302..b5a67db 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -152,7 +152,7 @@
   backticks (ie, `x`), <>
 
 - Removed these Python builtins:
-  apply(), callable(), coerce(), file(), reduce(), reload()
+  apply(), callable(), coerce(), execfile(), file(), reduce(), reload()
 
 - Removed these Python methods:
   {}.has_key
diff --git a/Misc/Vim/python.vim b/Misc/Vim/python.vim
index 3886931..130b699 100644
--- a/Misc/Vim/python.vim
+++ b/Misc/Vim/python.vim
@@ -66,10 +66,10 @@
   syn keyword pythonBuiltin    __import__ abs all any basestring bool
   syn keyword pythonBuiltin    buffer callable chr classmethod cmp
   syn keyword pythonBuiltin    complex copyright credits delattr dict
-  syn keyword pythonBuiltin    dir divmod enumerate eval execfile exit file
+  syn keyword pythonBuiltin    dir divmod enumerate eval exec exit
   syn keyword pythonBuiltin    filter float frozenset getattr globals hasattr
   syn keyword pythonBuiltin    hash help hex id int isinstance
-  syn keyword pythonBuiltin    issubclass iter len license list locals long map
+  syn keyword pythonBuiltin    issubclass iter len license list locals map
   syn keyword pythonBuiltin    max min object oct open ord pow property quit
   syn keyword pythonBuiltin    range reload repr reversed round
   syn keyword pythonBuiltin    set setattr slice sorted staticmethod str sum
diff --git a/Misc/cheatsheet b/Misc/cheatsheet
index 3d34471..c530442 100644
--- a/Misc/cheatsheet
+++ b/Misc/cheatsheet
@@ -282,11 +282,10 @@
 
 Numeric types
 
-Floats, integers and long integers.
+Floats and integers.
 
     Floats are implemented with C doubles.
-    Integers are implemented with C longs.
-    Long integers have unlimited size (only limit is system resources)
+    Integers have unlimited size (only limit is system resources)
 
 Operators on all numeric types
 
@@ -294,7 +293,6 @@
  Operation                    Result
 abs(x)       the absolute value of x
 int(x)       x converted to integer
-long(x)      x converted to long integer
 float(x)     x converted to floating point
 -x           x negated
 +x           x unchanged
@@ -306,7 +304,7 @@
 divmod(x, y) the tuple (x/y, x%y)
 x ** y       x to the power y (the same as pow(x, y))
 
-Bit operators on integers and long integers
+Bit operators on integers
 
               Bit operators
 Operation             >Result
@@ -948,9 +946,6 @@
 eval(s[, globals[,  Eval string s in (optional) globals, locals contexts.s must
 locals]])           have no NUL's or newlines. s can also be acode object.
                     Example: x = 1; incr_x = eval('x + 1')
-execfile(file[,     Executes a file without creating a new module, unlike
-globals[, locals]]) import.
-file()              Synonym for open().
 filter(function,    Constructs a list from those elements of sequence for which
 sequence)           function returns true. function takes one parameter.
 float(x)            Converts a number or a string to floating point.
@@ -977,9 +972,6 @@
 list(sequence)      Converts sequence into a list. If already a list,returns a
                     copy of it.
 locals()            Returns a dictionary containing current local variables.
-                    Converts a number or a string to a long integer. Optional
-long(x[, base])     base paramenter specifies base from which to convert string
-                    values.
                     Applies function to every item of list and returns a listof
 map(function, list, the results. If additional arguments are passed,function
 ...)                must take that many arguments and it is givento function on
@@ -1167,7 +1159,7 @@
         s^=o      =  __ixor__(s,o)        s|=o       =  __ior__(s,o)
         s<<=o     =  __ilshift__(s,o)     s>>=o      =  __irshift__(s,o)
         Conversions
-        int(s)    =  __int__(s)           long(s)    =  __long__(s)
+        int(s)    =  __int__(s)
         float(s)  =  __float__(s)         complex(s)    =  __complex__(s)
         oct(s)    =  __oct__(s)           hex(s)     =  __hex__(s)
         Right-hand-side equivalents for all binary operators exist;
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index 55ba602..5d9af67 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -380,7 +380,7 @@
 			  "bool" "buffer" "callable" "chr" "classmethod"
 			  "cmp" "compile" "complex" "copyright"
 			  "delattr" "dict" "dir" "divmod"
-			  "enumerate" "eval" "execfile" "exit" "file"
+			  "enumerate" "eval" "exit" "file"
 			  "filter" "float" "getattr" "globals" "hasattr"
 			  "hash" "hex" "id" "int"
 			  "isinstance" "issubclass" "iter" "len" "license"
@@ -1262,7 +1262,7 @@
 
 ;; Python subprocess utilities and filters
 (defun py-execute-file (proc filename)
-  "Send to Python interpreter process PROC \"execfile('FILENAME')\".
+  "Send to Python interpreter process PROC \"exec(open('FILENAME').read())\".
 Make that process's buffer visible and force display.  Also make
 comint believe the user typed this string so that
 `kill-output-from-shell' does The Right Thing."
@@ -1270,7 +1270,7 @@
 	(procbuf (process-buffer proc))
 ;	(comint-scroll-to-bottom-on-output t)
 	(msg (format "## working on region in file %s...\n" filename))
-	(cmd (format "execfile(r'%s')\n" filename)))
+	(cmd (format "exec(open(r'%s').read())\n" filename)))
     (unwind-protect
 	(save-excursion
 	  (set-buffer procbuf)
@@ -1606,7 +1606,7 @@
 non-nil, specifies to run the command asynchronously in its own
 buffer.
 
-If the Python interpreter shell is running, the region is execfile()'d
+If the Python interpreter shell is running, the region is exec()'d
 in that shell.  If you try to execute regions too quickly,
 `python-mode' will queue them up and execute them one at a time when
 it sees a `>>> ' prompt from Python.  Each time this happens, the
@@ -1731,7 +1731,7 @@
 If the file has already been imported, then do reload instead to get
 the latest version.
 
-If the file's name does not end in \".py\", then do execfile instead.
+If the file's name does not end in \".py\", then do exec instead.
 
 If the current buffer is not visiting a file, do `py-execute-buffer'
 instead.
@@ -1768,7 +1768,7 @@
 			 (file-name-nondirectory file))))
                  (format "if globals().has_key('%s'):\n    reload(%s)\nelse:\n    import %s\n"
                          f f f))
-             (format "execfile(r'%s')\n" file))
+             (format "exec(open(r'%s'))\n" file))
            async))
       ;; else
       (py-execute-buffer async))))