Document the new semantics for setting and deleting a function's
__dict__ attribute.  Deleting it, or setting it to a non-dictionary
result in a TypeError.  Note that getting it the first time magically
initializes it to an empty dict so that func.__dict__ will always
appear to be a dictionary (never None).

Closes SF bug #446645.
diff --git a/Misc/NEWS b/Misc/NEWS
index 97cb96e..e487041 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -15,6 +15,12 @@
   now use the Python warning framework (which makes it possible to
   write filters for these warnings).
 
+- A function's __dict__ (aka func_dict) will now always be a
+  dictionary.  It used to be possible to delete it or set it to None,
+  but now both actions raise TypeErrors.  It is still legal to set it
+  to a dictionary object.  Getting func.__dict__ before any attributes
+  have been assigned now returns an empty dictionary instead of None.
+
 Library
 
 - New class Differ and new functions ndiff() and restore() in difflib.py.