Issue #27895:  Spelling fixes (Contributed by Ville Skyttä).
diff --git a/Modules/_ctypes/ctypes.h b/Modules/_ctypes/ctypes.h
index 0d3f724..f2df5c0 100644
--- a/Modules/_ctypes/ctypes.h
+++ b/Modules/_ctypes/ctypes.h
@@ -238,7 +238,7 @@
  StgDictObject function to a generic one.
 
  Currently, PyCFuncPtr types have 'converters' and 'checker' entries in their
- type dict.  They are only used to cache attributes from other entries, whihc
+ type dict.  They are only used to cache attributes from other entries, which
  is wrong.
 
  One use case is the .value attribute that all simple types have.  But some
diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c
index 986c10b..ff57614 100644
--- a/Modules/_hashopenssl.c
+++ b/Modules/_hashopenssl.c
@@ -771,7 +771,7 @@
 /*
  *  This macro generates constructor function definitions for specific
  *  hash algorithms.  These constructors are much faster than calling
- *  the generic one passing it a python string and are noticably
+ *  the generic one passing it a python string and are noticeably
  *  faster than calling a python new() wrapper.  Thats important for
  *  code that wants to make hashes of a bunch of small strings.
  */
diff --git a/Modules/_io/iobase.c b/Modules/_io/iobase.c
index 212b0dd..57541a8 100644
--- a/Modules/_io/iobase.c
+++ b/Modules/_io/iobase.c
@@ -90,7 +90,7 @@
     return NULL;
 }
 
-/* Positionning */
+/* Positioning */
 
 PyDoc_STRVAR(iobase_seek_doc,
     "Change stream position.\n"
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index 3810e94..81f5b1d 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -3781,7 +3781,7 @@
 {
     PyThreadState *tstate = PyThreadState_GET();
 
-    /* substract one to ignore the frame of the get_recursion_depth() call */
+    /* subtract one to ignore the frame of the get_recursion_depth() call */
     return PyLong_FromLong(tstate->recursion_depth - 1);
 }
 
diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c
index 968181c..0219559 100644
--- a/Modules/_threadmodule.c
+++ b/Modules/_threadmodule.c
@@ -45,7 +45,7 @@
 /* Helper to acquire an interruptible lock with a timeout.  If the lock acquire
  * is interrupted, signal handlers are run, and if they raise an exception,
  * PY_LOCK_INTR is returned.  Otherwise, PY_LOCK_ACQUIRED or PY_LOCK_FAILURE
- * are returned, depending on whether the lock can be acquired withing the
+ * are returned, depending on whether the lock can be acquired within the
  * timeout.
  */
 static PyLockStatus
diff --git a/Modules/_tracemalloc.c b/Modules/_tracemalloc.c
index 796ac0f..65bf7a3 100644
--- a/Modules/_tracemalloc.c
+++ b/Modules/_tracemalloc.c
@@ -516,7 +516,7 @@
 
         if (tracemalloc_add_trace(ptr2, new_size) < 0) {
             /* Memory allocation failed. The error cannot be reported to
-               the caller, because realloc() may already have shrinked the
+               the caller, because realloc() may already have shrunk the
                memory block and so removed bytes.
 
                This case is very unlikely: a hash entry has just been
diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c
index 7ebf8e8..b945bd6 100644
--- a/Modules/mathmodule.c
+++ b/Modules/mathmodule.c
@@ -1274,7 +1274,7 @@
 
 /* Divide-and-conquer factorial algorithm
  *
- * Based on the formula and psuedo-code provided at:
+ * Based on the formula and pseudo-code provided at:
  * http://www.luschny.de/math/factorial/binarysplitfact.html
  *
  * Faster algorithms exist, but they're more complicated and depend on
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index b34981c..d059617 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -6538,7 +6538,7 @@
     PyModule_AddIntConstant(m, "SOMAXCONN", 5); /* Common value */
 #endif
 
-    /* Ancilliary message types */
+    /* Ancillary message types */
 #ifdef  SCM_RIGHTS
     PyModule_AddIntMacro(m, SCM_RIGHTS);
 #endif
diff --git a/Modules/zipimport.c b/Modules/zipimport.c
index e840271..6d5c68a 100644
--- a/Modules/zipimport.c
+++ b/Modules/zipimport.c
@@ -1315,7 +1315,7 @@
     return code;
 }
 
-/* Replace any occurances of "\r\n?" in the input string with "\n".
+/* Replace any occurrences of "\r\n?" in the input string with "\n".
    This converts DOS and Mac line endings to Unix line endings.
    Also append a trailing "\n" to be compatible with
    PyParser_SimpleParseFile(). Returns a new reference. */