merge heads
diff --git a/Doc/c-api/sys.rst b/Doc/c-api/sys.rst
index 252bd1a..9760dca 100644
--- a/Doc/c-api/sys.rst
+++ b/Doc/c-api/sys.rst
@@ -61,12 +61,6 @@
    Return the object *name* from the :mod:`sys` module or *NULL* if it does
    not exist, without setting an exception.
 
-.. c:function:: FILE *PySys_GetFile(char *name, FILE *def)
-
-   Return the :c:type:`FILE*` associated with the object *name* in the
-   :mod:`sys` module, or *def* if *name* is not in the module or is not associated
-   with a :c:type:`FILE*`.
-
 .. c:function:: int PySys_SetObject(char *name, PyObject *v)
 
    Set *name* in the :mod:`sys` module to *v* unless *v* is *NULL*, in which
diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat
index c7d7bd1..b5dde33 100644
--- a/Doc/data/refcounts.dat
+++ b/Doc/data/refcounts.dat
@@ -1310,10 +1310,6 @@
 PySys_AddXOption:void:::
 PySys_AddXOption:const wchar_t*:s::
 
-PySys_GetFile:FILE*:::
-PySys_GetFile:char*:name::
-PySys_GetFile:FILE*:def::
-
 PySys_GetObject:PyObject*::0:
 PySys_GetObject:char*:name::
 
diff --git a/Doc/extending/embedding.rst b/Doc/extending/embedding.rst
index d004d24..ccbe681 100644
--- a/Doc/extending/embedding.rst
+++ b/Doc/extending/embedding.rst
@@ -58,6 +58,7 @@
    int
    main(int argc, char *argv[])
    {
+     Py_SetProgramName(argv[0]);  /* optional but recommended */
      Py_Initialize();
      PyRun_SimpleString("from time import time,ctime\n"
                         "print('Today is', ctime(time()))\n");
@@ -65,14 +66,18 @@
      return 0;
    }
 
-The above code first initializes the Python interpreter with
-:c:func:`Py_Initialize`, followed by the execution of a hard-coded Python script
-that print the date and time.  Afterwards, the :c:func:`Py_Finalize` call shuts
-the interpreter down, followed by the end of the program.  In a real program,
-you may want to get the Python script from another source, perhaps a text-editor
-routine, a file, or a database.  Getting the Python code from a file can better
-be done by using the :c:func:`PyRun_SimpleFile` function, which saves you the
-trouble of allocating memory space and loading the file contents.
+Function :c:func:`Py_SetProgramName` should be called before
+:c:func:`Py_Initialize` to inform the interpreter about paths to
+Python run-time libraries.  Next initialize the Python interpreter
+with :c:func:`Py_Initialize`, followed by the execution of a
+hard-coded Python script that prints the date and time.  Afterwards,
+the :c:func:`Py_Finalize` call shuts the interpreter down, followed by
+the end of the program.  In a real program, you may want to get the
+Python script from another source, perhaps a text-editor routine, a
+file, or a database.  Getting the Python code from a file can better
+be done by using the :c:func:`PyRun_SimpleFile` function, which saves
+you the trouble of allocating memory space and loading the file
+contents.
 
 
 .. _lower-level-embedding:
diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst
index 3c602c8..3887ee1 100644
--- a/Doc/library/ctypes.rst
+++ b/Doc/library/ctypes.rst
@@ -1155,8 +1155,8 @@
 Surprises
 ^^^^^^^^^
 
-There are some edges in :mod:`ctypes` where you may be expect something else than
-what actually happens.
+There are some edges in :mod:`ctypes` where you might expect something other
+than what actually happens.
 
 Consider the following example::
 
diff --git a/Misc/NEWS b/Misc/NEWS
index bd6cd80..44f5864 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -61,6 +61,8 @@
 - Issue #15368: An issue that caused bytecode generation to be
   non-deterministic when using randomized hashing (-R) has been fixed.
 
+- Issue #16369: Global PyTypeObjects not initialized with PyType_Ready(...).
+
 - Issue #15020: The program name used to search for Python's path is now
   "python3" under Unix, not "python".
 
diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c
index 314bafd..54c1343 100644
--- a/Modules/_collectionsmodule.c
+++ b/Modules/_collectionsmodule.c
@@ -1019,7 +1019,7 @@
 };
 
 PyDoc_STRVAR(deque_doc,
-"deque(iterable[, maxlen]) --> deque object\n\
+"deque([iterable[, maxlen]]) --> deque object\n\
 \n\
 Build an ordered collection with optimized access from its endpoints.");