Merge tag 'v3.7.0a3'
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 8e0647f..3511dcf 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -50,4 +50,8 @@
 **/*functools*                @ncoghlan @rhettinger
 **/*decimal*                  @rhettinger @skrah
 
+**/*dataclasses*              @ericvsmith
+
 **/*idlelib*                  @terryjreedy
+
+**/*typing*                   @gvanrossum @ilevkivskyi
diff --git a/Include/internal/pystate.h b/Include/internal/pystate.h
index b933421..6b527fb 100644
--- a/Include/internal/pystate.h
+++ b/Include/internal/pystate.h
@@ -54,23 +54,8 @@
     wchar_t *home;
 } _PyPathConfig;
 
-#ifdef MS_WINDOWS
-#define _PyPathConfig_INIT \
-    {.program_full_path = NULL, \
-     .prefix = NULL, \
-     .dll_path = NULL, \
-     .module_search_path = NULL, \
-     .program_name = NULL, \
-     .home = NULL}
-#else
-#define _PyPathConfig_INIT \
-    {.program_full_path = NULL, \
-     .prefix = NULL, \
-     .exec_prefix = NULL, \
-     .module_search_path = NULL, \
-     .program_name = NULL, \
-     .home = NULL}
-#endif
+#define _PyPathConfig_INIT {.module_search_path = NULL}
+/* Note: _PyPathConfig_INIT sets other fields to 0/NULL */
 
 PyAPI_DATA(_PyPathConfig) _Py_path_config;
 
@@ -116,6 +101,7 @@
 } _PyRuntimeState;
 
 #define _PyRuntimeState_INIT {.initialized = 0, .core_initialized = 0}
+/* Note: _PyRuntimeState_INIT sets other fields to 0/NULL */
 
 PyAPI_DATA(_PyRuntimeState) _PyRuntime;
 PyAPI_FUNC(_PyInitError) _PyRuntimeState_Init(_PyRuntimeState *);
diff --git a/Include/pystate.h b/Include/pystate.h
index 1d8aab6..cf45b05 100644
--- a/Include/pystate.h
+++ b/Include/pystate.h
@@ -38,19 +38,8 @@
     int show_alloc_count;   /* -X showalloccount */
 } _PyCoreConfig;
 
-#define _PyCoreConfig_INIT \
-    (_PyCoreConfig){\
-     .ignore_environment = 0, \
-     .use_hash_seed = -1, \
-     .hash_seed = 0, \
-     ._disable_importlib = 0, \
-     .allocator = NULL, \
-     .dev_mode = 0, \
-     .faulthandler = 0, \
-     .tracemalloc = 0, \
-     .import_time = 0, \
-     .show_ref_count = 0, \
-     .show_alloc_count = 0}
+#define _PyCoreConfig_INIT (_PyCoreConfig){.use_hash_seed = -1}
+/* Note: _PyCoreConfig_INIT sets other fields to 0/NULL */
 
 /* Placeholders while working on the new configuration API
  *
@@ -69,11 +58,8 @@
 } _PyMainInterpreterConfig;
 
 #define _PyMainInterpreterConfig_INIT \
-    (_PyMainInterpreterConfig){\
-     .install_signal_handlers = -1, \
-     .module_search_path_env = NULL, \
-     .home = NULL, \
-     .program_name = NULL}
+    (_PyMainInterpreterConfig){.install_signal_handlers = -1}
+/* Note: _PyMainInterpreterConfig_INIT sets other fields to 0/NULL */
 
 typedef struct _is {
 
diff --git a/Modules/main.c b/Modules/main.c
index 4095259..e2ca72c 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -160,7 +160,7 @@
 
 
 static void
-pymain_run_statup(PyCompilerFlags *cf)
+pymain_run_startup(PyCompilerFlags *cf)
 {
     char *startup = Py_GETENV("PYTHONSTARTUP");
     if (startup == NULL || startup[0] == '\0') {
@@ -367,8 +367,6 @@
 
 /* Main program */
 
-/*TODO: Add arg processing to PEP 432 as a new configuration setup API
- */
 typedef struct {
     size_t len;
     wchar_t **options;
@@ -949,8 +947,6 @@
  *
  * Replaces previous call to Py_Initialize()
  *
- * TODO: Move environment queries (etc) into Py_ReadConfig
- *
  * Return 0 on success.
  * Set pymain->err and return -1 on error.
  */
@@ -1121,10 +1117,9 @@
 
     if (cmdline->filename == NULL && pymain->stdin_is_interactive) {
         Py_InspectFlag = 0; /* do exit on SystemExit */
-        pymain_run_statup(&pymain->cf);
+        pymain_run_startup(&pymain->cf);
         pymain_run_interactive_hook();
     }
-    /* XXX */
 
     if (pymain->main_importer_path != NULL) {
         pymain->status = pymain_run_main_from_importer(pymain);
@@ -1162,7 +1157,7 @@
 
     Py_InspectFlag = 0;
     pymain_run_interactive_hook();
-    /* XXX */
+
     int res = PyRun_AnyFileFlags(stdin, "<stdin>", &pymain->cf);
     pymain->status = (res != 0);
 }
@@ -1630,7 +1625,6 @@
     }
 
     pymain->core_config._disable_importlib = 0;
-    /* TODO: Moar config options! */
     pymain->config.install_signal_handlers = 1;
 
     orig_argc = pymain->argc;           /* For Py_GetArgcArgv() */
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 523397f..b615c79 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -606,10 +606,6 @@
  * safe to call without calling Py_Initialize first)
  */
 
-/* TODO: Progressively move functionality from Py_BeginInitialization to
- * Py_ReadConfig and Py_EndInitialization
- */
-
 _PyInitError
 _Py_InitializeCore(const _PyCoreConfig *config)
 {
@@ -881,10 +877,9 @@
         return _Py_INIT_OK();
     }
 
-    /* TODO: Report exceptions rather than fatal errors below here */
-
-    if (_PyTime_Init() < 0)
+    if (_PyTime_Init() < 0) {
         return _Py_INIT_ERR("can't initialize time");
+    }
 
     /* GetPath may initialize state that _PySys_EndInit locks
        in, and so has to be called first. */