[libc-commits] [libc] [libc][docgen] simplify posix links (PR #119595)

Nick Desaulniers via libc-commits libc-commits at lists.llvm.org
Thu Dec 12 10:49:01 PST 2024


https://github.com/nickdesaulniers updated https://github.com/llvm/llvm-project/pull/119595

>From fd35f88d5f556d85f855408ee2fa22efbbb939f3 Mon Sep 17 00:00:00 2001
From: Nick Desaulniers <ndesaulniers at google.com>
Date: Wed, 11 Dec 2024 09:22:29 -0800
Subject: [PATCH 1/5] [libc][docgen] simplify posix links

Usually posix functions have individual doc pages, and each header has its own
list of required macro definitions. Use a simpler key of "in-latest-posix" to
signal that the URL convention can be followed.

Add support for a "removed-in-posix-2008" key which will link to the 2004 docs
for functions like bcmp, bcopy, bzero, index, and rindex from strings.h.
---
 libc/utils/docgen/docgen.py | 28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/libc/utils/docgen/docgen.py b/libc/utils/docgen/docgen.py
index 20716c0996ef86..2f772875f2b703 100755
--- a/libc/utils/docgen/docgen.py
+++ b/libc/utils/docgen/docgen.py
@@ -52,8 +52,12 @@ def check_api(header: Header, api: Dict):
     :param api: docgen json file contents parsed into a dict
     """
     errors = []
-    cdef = "c-definition"
-    pdef = "posix-definition"
+    # We require entries to have at least one of these.
+    possible_keys = [
+        "c-definition",
+        "in-latest-posix",
+        "removed-in-posix-2008",
+    ]
 
     # Validate macros
     if "macros" in api:
@@ -66,8 +70,8 @@ def check_api(header: Header, api: Dict):
         macros = api["macros"]
 
         for name, obj in macros.items():
-            if not (cdef in obj or pdef in obj):
-                err = f'error: Macro {name} does not contain at least one required property: "{cdef}" or "{pdef}"'
+            if (not any(k in obj.keys() for k in possible_keys)):
+                err = f'error: Macro {name} does not contain at least one required property: {possible_keys}'
                 errors.append(err)
 
     # Validate functions
@@ -80,8 +84,8 @@ def check_api(header: Header, api: Dict):
 
         fns = api["functions"]
         for name, obj in fns.items():
-            if not (cdef in obj or pdef in obj):
-                err = f'error: function {name} does not contain at least one required property: "{cdef}" or "{pdef}"'
+          if (not any(k in obj.keys() for k in possible_keys)):
+                err = f'error: function {name} does not contain at least one required property: {possible_keys}'
                 errors.append(err)
 
     if errors:
@@ -104,7 +108,7 @@ def print_tbl_dir(name):
   * - {name}
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section"""
+    - POSIX Docs"""
     )
 
 
@@ -128,8 +132,10 @@ def print_functions_rst(header: Header, functions: Dict):
         else:
             print("    -")
 
-        if "posix-definition" in functions[name]:
-            print(f'    - {functions[name]["posix-definition"]}')
+        if "in-latest-posix" in functions[name]:
+            print(f'    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/{name}.html>`__')
+        elif "removed-in-posix-2008" in functions[name]:
+            print(f'    - `removed in POSIX.1-2008 <https://pubs.opengroup.org/onlinepubs/007904875/functions/{name}.html>`__')
         else:
             print("    -")
 
@@ -154,8 +160,8 @@ def print_macros_rst(header: Header, macros: Dict):
         else:
             print("    -")
 
-        if "posix-definition" in macros[name]:
-            print(f'    - {macros[name]["posix-definition"]}')
+        if "in-latest-posix" in macros[name]:
+            print(f'    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/{header.name}.html>`__')
         else:
             print("    -")
     print()

>From d244a026a3d7fd68dc8b5ec2223a6e358381e26a Mon Sep 17 00:00:00 2001
From: Nick Desaulniers <ndesaulniers at google.com>
Date: Wed, 11 Dec 2024 09:27:42 -0800
Subject: [PATCH 2/5] update keys

---
 libc/utils/docgen/assert.json   |   3 +-
 libc/utils/docgen/ctype.json    |  85 +++++++++++++++++----
 libc/utils/docgen/errno.json    |  12 ++-
 libc/utils/docgen/fenv.json     |  68 +++++++++++------
 libc/utils/docgen/float.json    | 114 ++++++++++++++++++----------
 libc/utils/docgen/inttypes.json |  18 +++--
 libc/utils/docgen/locale.json   |  39 ++++++++--
 libc/utils/docgen/setjmp.json   |  12 ++-
 libc/utils/docgen/signal.json   |  90 +++++++++++-----------
 libc/utils/docgen/stdlib.json   | 129 +++++++++++++++++++++-----------
 libc/utils/docgen/string.json   |  87 ++++++++++++++-------
 libc/utils/docgen/strings.json  |  24 +++---
 libc/utils/docgen/threads.json  |  84 ++++++++++++++-------
 libc/utils/docgen/uchar.json    |  12 ++-
 14 files changed, 521 insertions(+), 256 deletions(-)

diff --git a/libc/utils/docgen/assert.json b/libc/utils/docgen/assert.json
index 28ec12028ef675..ed9249cf426a54 100644
--- a/libc/utils/docgen/assert.json
+++ b/libc/utils/docgen/assert.json
@@ -4,7 +4,8 @@
       "c-definition": "7.2.1"
     },
     "assert": {
-      "c-definition": "7.2.1"
+      "c-definition": "7.2.1",
+      "in-latest-posix": ""
     }
   }
 }
diff --git a/libc/utils/docgen/ctype.json b/libc/utils/docgen/ctype.json
index af97e4bbbc0a27..7c6137570760fe 100644
--- a/libc/utils/docgen/ctype.json
+++ b/libc/utils/docgen/ctype.json
@@ -1,47 +1,102 @@
 {
   "functions": {
     "isalnum": {
-      "c-definition": "7.4.1.1"
+      "c-definition": "7.4.1.1",
+      "in-latest-posix": ""
+    },
+    "isalnum_l": {
+      "in-latest-posix": ""
     },
     "isalpha": {
-      "c-definition": "7.4.1.2"
+      "c-definition": "7.4.1.2",
+      "in-latest-posix": ""
+    },
+    "isalpha_l": {
+      "in-latest-posix": ""
     },
     "isblank": {
-      "c-definition": "7.4.1.3"
+      "c-definition": "7.4.1.3",
+      "in-latest-posix": ""
+    },
+    "isblank_l": {
+      "in-latest-posix": ""
     },
     "iscntrl": {
-      "c-definition": "7.4.1.4"
+      "c-definition": "7.4.1.4",
+      "in-latest-posix": ""
+    },
+    "iscntrl_l": {
+      "in-latest-posix": ""
     },
     "isdigit": {
-      "c-definition": "7.4.1.5"
+      "c-definition": "7.4.1.5",
+      "in-latest-posix": ""
+    },
+    "isdigit_l": {
+      "in-latest-posix": ""
     },
     "isgraph": {
-      "c-definition": "7.4.1.6"
+      "c-definition": "7.4.1.6",
+      "in-latest-posix": ""
+    },
+    "isgraph_l": {
+      "in-latest-posix": ""
     },
     "islower": {
-      "c-definition": "7.4.1.7"
+      "c-definition": "7.4.1.7",
+      "in-latest-posix": ""
+    },
+    "islower_l": {
+      "in-latest-posix": ""
     },
     "isprint": {
-      "c-definition": "7.4.1.8"
+      "c-definition": "7.4.1.8",
+      "in-latest-posix": ""
+    },
+    "isprint_l": {
+      "in-latest-posix": ""
     },
     "ispunct": {
-      "c-definition": "7.4.1.9"
+      "c-definition": "7.4.1.9",
+      "in-latest-posix": ""
+    },
+    "ispunct_l": {
+      "in-latest-posix": ""
     },
     "isspace": {
-      "c-definition": "7.4.1.10"
+      "c-definition": "7.4.1.10",
+      "in-latest-posix": ""
+    },
+    "isspace_l": {
+      "in-latest-posix": ""
     },
     "isupper": {
-      "c-definition": "7.4.1.11"
+      "c-definition": "7.4.1.11",
+      "in-latest-posix": ""
+    },
+    "isupper_l": {
+      "in-latest-posix": ""
     },
     "isxdigit": {
-      "c-definition": "7.4.1.12"
+      "c-definition": "7.4.1.12",
+      "in-latest-posix": ""
+    },
+    "isxdigit_l": {
+      "in-latest-posix": ""
     },
     "tolower" : {
-      "c-definition": "7.4.2.1"
+      "c-definition": "7.4.2.1",
+      "in-latest-posix": ""
+    },
+    "tolower_l" : {
+      "in-latest-posix": ""
     },
     "toupper": {
-      "c-definition": "7.4.2.2"
+      "c-definition": "7.4.2.2",
+      "in-latest-posix": ""
+    },
+    "toupper_l": {
+      "in-latest-posix": ""
     }
   }
 }
-
diff --git a/libc/utils/docgen/errno.json b/libc/utils/docgen/errno.json
index aface8e42b495f..7f13e06ac3285e 100644
--- a/libc/utils/docgen/errno.json
+++ b/libc/utils/docgen/errno.json
@@ -1,16 +1,20 @@
 {
   "macros": {
     "EDOM": {
-      "c-definition": "7.5"
+      "c-definition": "7.5",
+      "in-latest-posix": ""
     },
     "EILSEQ": {
-      "c-definition": "7.5"
+      "c-definition": "7.5",
+      "in-latest-posix": ""
     },
     "ERANGE": {
-      "c-definition": "7.5"
+      "c-definition": "7.5",
+      "in-latest-posix": ""
     },
     "errno": {
-      "c-definition": "7.5"
+      "c-definition": "7.5",
+      "in-latest-posix": ""
     }
   }
 }
diff --git a/libc/utils/docgen/fenv.json b/libc/utils/docgen/fenv.json
index 788b196c053bcc..cf58d70ebcf1eb 100644
--- a/libc/utils/docgen/fenv.json
+++ b/libc/utils/docgen/fenv.json
@@ -4,40 +4,50 @@
       "c-definition": "7.6.5"
     },
     "FE_DIVBYZERO": {
-      "c-definition": "7.6.9"
+      "c-definition": "7.6.9",
+      "in-latest-posix": ""
     },
     "FE_INEXACT": {
-      "c-definition": "7.6.9"
+      "c-definition": "7.6.9",
+      "in-latest-posix": ""
     },
     "FE_INVALID": {
-      "c-definition": "7.6.9"
+      "c-definition": "7.6.9",
+      "in-latest-posix": ""
     },
     "FE_OVERFLOW": {
-      "c-definition": "7.6.9"
+      "c-definition": "7.6.9",
+      "in-latest-posix": ""
     },
     "FE_UNDERFLOW": {
-      "c-definition": "7.6.9"
+      "c-definition": "7.6.9",
+      "in-latest-posix": ""
     },
     "FE_ALL_EXCEPT": {
-      "c-definition": "7.6.12"
+      "c-definition": "7.6.12",
+      "in-latest-posix": ""
     },
     "FE_DFL_MODE": {
       "c-definition": "7.6.11"
     },
-    "FE_DOWNARD": {
-      "c-definition": "7.6.13"
+    "FE_DOWNWARD": {
+      "c-definition": "7.6.13",
+      "in-latest-posix": ""
     },
     "FE_TONEAREST": {
-      "c-definition": "7.6.13"
+      "c-definition": "7.6.13",
+      "in-latest-posix": ""
     },
     "FE_TONEARESTFROMZERO": {
       "c-definition": "7.6.13"
     },
     "FE_TOWARDZERO": {
-      "c-definition": "7.6.13"
+      "c-definition": "7.6.13",
+      "in-latest-posix": ""
     },
     "FE_UPWARD": {
-      "c-definition": "7.6.13"
+      "c-definition": "7.6.13",
+      "in-latest-posix": ""
     },
     "FE_DEC_DOWNWARD": {
       "c-definition": "7.6.14"
@@ -55,36 +65,43 @@
       "c-definition": "7.6.14"
     },
     "FE_DFL_ENV": {
-      "c-definition": "7.6.17"
+      "c-definition": "7.6.17",
+      "in-latest-posix": ""
     }
   },
   "functions": {
     "feclearexcept": {
-      "c-definition": "7.6.4.1"
+      "c-definition": "7.6.4.1",
+      "in-latest-posix": ""
     },
     "fegetexceptflag": {
-      "c-definition": "7.6.4.2"
+      "c-definition": "7.6.4.2",
+      "in-latest-posix": ""
     },
     "feraiseexcept": {
-      "c-definition": "7.6.4.3"
+      "c-definition": "7.6.4.3",
+      "in-latest-posix": ""
     },
     "fesetexcept": {
       "c-definition": "7.6.4.4"
     },
     "fesetexceptflag": {
-      "c-definition": "7.6.4.5"
+      "c-definition": "7.6.4.5",
+      "in-latest-posix": ""
     },
     "fetestexceptflag": {
       "c-definition": "7.6.4.6"
     },
     "fetestexcept": {
-      "c-definition": "7.6.4.7"
+      "c-definition": "7.6.4.7",
+      "in-latest-posix": ""
     },
     "fegetmode": {
       "c-definition": "7.6.5.1"
     },
     "fegetround": {
-      "c-definition": "7.6.5.2"
+      "c-definition": "7.6.5.2",
+      "in-latest-posix": ""
     },
     "fe_dec_getround": {
       "c-definition": "7.6.5.3"
@@ -93,22 +110,27 @@
       "c-definition": "7.6.5.4"
     },
     "fesetround": {
-      "c-definition": "7.6.5.5"
+      "c-definition": "7.6.5.5",
+      "in-latest-posix": ""
     },
     "fe_dec_setround": {
       "c-definition": "7.6.5.6"
     },
     "fegetenv": {
-      "c-definition": "7.6.6.1"
+      "c-definition": "7.6.6.1",
+      "in-latest-posix": ""
     },
     "feholdexcept": {
-      "c-definition": "7.6.6.2"
+      "c-definition": "7.6.6.2",
+      "in-latest-posix": ""
     },
     "fesetenv": {
-      "c-definition": "7.6.6.3"
+      "c-definition": "7.6.6.3",
+      "in-latest-posix": ""
     },
     "feupdateenv": {
-      "c-definition": "7.6.6.4"
+      "c-definition": "7.6.6.4",
+      "in-latest-posix": ""
     }
   }
 }
diff --git a/libc/utils/docgen/float.json b/libc/utils/docgen/float.json
index a906cbf4fa754b..87746193b29d46 100644
--- a/libc/utils/docgen/float.json
+++ b/libc/utils/docgen/float.json
@@ -4,25 +4,32 @@
       "c-definition": "7.7"
     },
     "FLT_EVAL_METHOD" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_ROUNDS" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_EVAL_METHOD" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_HAS_SUBNORM" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "DBL_HAS_SUBNORM" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "LDBL_HAS_SUBNORM" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_RADIX" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_MANT_DIG" : {
       "c-definition": "5.3.5.3.3"
@@ -34,16 +41,20 @@
       "c-definition": "5.3.5.3.3"
     },
     "FLT_DECIMAL_DIG" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "DBL_DECIMAL_DIG" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "LDBL_DECIMAL_DIG" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "DECIMAL_DIG" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_IS_IEC_60559" : {
       "c-definition": "5.3.5.3.3"
@@ -55,58 +66,76 @@
       "c-definition": "5.3.5.3.3"
     },
     "FLT_DIG" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "DBL_DIG" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "LDBL_DIG" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_MIN_EXP" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "DBL_MIN_EXP" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "LDBL_MIN_EXP" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_MIN_10_EXP" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "DBL_MIN_10_EXP" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "LDBL_MIN_10_EXP" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_MAX_EXP" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "DBL_MAX_EXP" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "LDBL_MAX_EXP" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_MAX_10_EXP" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "DBL_MAX_10_EXP" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "LDBL_MAX_10_EXP" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_MAX" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "DBL_MAX" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "LDBL_MAX" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_NORM_MAX" : {
       "c-definition": "5.3.5.3.3"
@@ -118,22 +147,28 @@
       "c-definition": "5.3.5.3.3"
     },
     "FLT_EPSILON" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "DBL_EPSILON" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "LDBL_EPSILON" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_MIN" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "DBL_MIN" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "LDBL_MIN" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "FLT_SNAN" : {
       "c-definition": "5.3.5.3.3"
@@ -145,13 +180,16 @@
       "c-definition": "5.3.5.3.3"
     },
     "FLT_TRUE_MIN" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "DBL_TRUE_MIN" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "LDBL_TRUE_MIN" : {
-      "c-definition": "5.3.5.3.3"
+      "c-definition": "5.3.5.3.3",
+      "in-latest-posix": ""
     },
     "INFINITY" : {
       "c-definition": "5.3.5.3.3"
diff --git a/libc/utils/docgen/inttypes.json b/libc/utils/docgen/inttypes.json
index 001f15f27e6382..4c20d3d5cf3c01 100644
--- a/libc/utils/docgen/inttypes.json
+++ b/libc/utils/docgen/inttypes.json
@@ -1,22 +1,28 @@
 {
   "functions": {
     "imaxabs": {
-      "c-definition": "7.8.2.1"
+      "c-definition": "7.8.2.1",
+      "in-latest-posix": ""
     },
     "imaxdiv": {
-      "c-definition": "7.8.2.2"
+      "c-definition": "7.8.2.2",
+      "in-latest-posix": ""
     },
     "strtoimax": {
-      "c-definition": "7.8.2.3"
+      "c-definition": "7.8.2.3",
+      "in-latest-posix": ""
     },
     "strtoumax": {
-      "c-definition": "7.8.2.3"
+      "c-definition": "7.8.2.3",
+      "in-latest-posix": ""
     },
     "wcstoimax": {
-      "c-definition": "7.8.2.4"
+      "c-definition": "7.8.2.4",
+      "in-latest-posix": ""
     },
     "wcstoumax": {
-      "c-definition": "7.8.2.4"
+      "c-definition": "7.8.2.4",
+      "in-latest-posix": ""
     }
   }
 }
diff --git a/libc/utils/docgen/locale.json b/libc/utils/docgen/locale.json
index 89329f9aae5b0f..9af8156f5467d2 100644
--- a/libc/utils/docgen/locale.json
+++ b/libc/utils/docgen/locale.json
@@ -1,30 +1,53 @@
 {
   "macros": {
     "LC_ALL": {
-      "c-definition": "7.11"
+      "c-definition": "7.11",
+      "in-latest-posix": ""
     },
     "LC_COLLATE": {
-      "c-definition": "7.11"
+      "c-definition": "7.11",
+      "in-latest-posix": ""
     },
     "LC_CTYPE": {
-      "c-definition": "7.11"
+      "c-definition": "7.11",
+      "in-latest-posix": ""
     },
     "LC_MONETARY": {
-      "c-definition": "7.11"
+      "c-definition": "7.11",
+      "in-latest-posix": ""
     },
     "LC_NUMERIC": {
-      "c-definition": "7.11"
+      "c-definition": "7.11",
+      "in-latest-posix": ""
     },
     "LC_TIME": {
-      "c-definition": "7.11"
+      "c-definition": "7.11",
+      "in-latest-posix": ""
     }
   },
   "functions": {
     "setlocale": {
-      "c-definition": "7.11.1.1"
+      "c-definition": "7.11.1.1",
+      "in-latest-posix": ""
     },
     "localeconv": {
-      "c-definition": "7.11.2.1"
+      "c-definition": "7.11.2.1",
+      "in-latest-posix": ""
+    },
+    "duplocale": {
+      "in-latest-posix": ""
+    },
+    "freelocale": {
+      "in-latest-posix": ""
+    },
+    "getlocalename_l": {
+      "in-latest-posix": ""
+    },
+    "newlocale": {
+      "in-latest-posix": ""
+    },
+    "uselocale": {
+      "in-latest-posix": ""
     }
   }
 }
diff --git a/libc/utils/docgen/setjmp.json b/libc/utils/docgen/setjmp.json
index 0b9a4e65da4f6a..22bc81b223fa4a 100644
--- a/libc/utils/docgen/setjmp.json
+++ b/libc/utils/docgen/setjmp.json
@@ -6,10 +6,18 @@
   },
   "functions": {
     "setjmp": {
-      "c-definition": "7.13.1.1"
+      "c-definition": "7.13.1.1",
+      "in-latest-posix": ""
     },
     "longjmp": {
-      "c-definition": "7.13.2.1"
+      "c-definition": "7.13.2.1",
+      "in-latest-posix": ""
+    },
+    "sigsetjmp": {
+      "in-latest-posix": ""
+    },
+    "siglongjmp": {
+      "in-latest-posix": ""
     }
   }
 }
diff --git a/libc/utils/docgen/signal.json b/libc/utils/docgen/signal.json
index ec83144da8576b..1a8bd94268db10 100644
--- a/libc/utils/docgen/signal.json
+++ b/libc/utils/docgen/signal.json
@@ -2,151 +2,151 @@
   "macros": {
     "SIG_DFL": {
       "c-definition": "7.14.3",
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIG_ERR": {
       "c-definition": "7.14.3",
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIG_HOLD": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIG_IGN": {
       "c-definition": "7.14.3",
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGRTMIN": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGRTMAX": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGABRT": {
       "c-definition": "7.14.3",
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGALRM": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGBUS": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGCHLD": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGCONT": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGFPE": {
       "c-definition": "7.14.3",
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGHUP": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGILL": {
       "c-definition": "7.14.3",
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGINT": {
       "c-definition": "7.14.3",
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGKILL": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGPIPE": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGPIPE": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGQUIT": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGSEGV": {
       "c-definition": "7.14.3",
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGSTOP": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGTERM": {
       "c-definition": "7.14.3",
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGTSTP": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGTTIN": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGTTOU": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGUSR1": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGUSR2": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGPOLL": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGPROF": {
-    "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGSYS": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGTRAP": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGURG": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGVTALRM": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGXCPU": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     },
     "SIGXFSZ": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html"
+      "in-latest-posix": ""
     }
   },
   "functions": {
     "signal": {
       "c-definition": "7.14.1.1",
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/signal.html"
+      "in-latest-posix": ""
     },
     "raise": {
       "c-definition": "7.14.2.1",
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/raise.html"
+      "in-latest-posix": ""
     },
     "kill": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/kill.html"
+      "in-latest-posix": ""
     },
     "sigaction": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigaction.html"
+      "in-latest-posix": ""
     },
     "sigaddset": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigaddset.html"
+      "in-latest-posix": ""
     },
     "sigaltstack": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigaltstack.html"
+      "in-latest-posix": ""
     },
     "sigdelset": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigdelset.html"
+      "in-latest-posix": ""
     },
     "sigemptyset": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigemptyset.html"
+      "in-latest-posix": ""
     },
     "sigfillset": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigfillset.html"
+      "in-latest-posix": ""
     },
     "sigprocmask": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigprocmask.html"
+      "in-latest-posix": ""
     }
   }
 }
diff --git a/libc/utils/docgen/stdlib.json b/libc/utils/docgen/stdlib.json
index 0ca508110c0f18..cd8706471d76db 100644
--- a/libc/utils/docgen/stdlib.json
+++ b/libc/utils/docgen/stdlib.json
@@ -4,30 +4,38 @@
       "c-definition": "7.24"
     },
     "EXIT_FAILURE": {
-      "c-definition": "7.24"
+      "c-definition": "7.24",
+      "in-latest-posix": ""
     },
     "EXIT_SUCCESS": {
-      "c-definition": "7.24"
+      "c-definition": "7.24",
+      "in-latest-posix": ""
     },
     "RAND_MAX": {
-      "c-definition": "7.24"
+      "c-definition": "7.24",
+      "in-latest-posix": ""
     },
     "MB_CUR_MAX": {
-      "c-definition": "7.24"
+      "c-definition": "7.24",
+      "in-latest-posix": ""
     }
   },
   "functions": {
     "atof": {
-      "c-definition": "7.24.1.1"
+      "c-definition": "7.24.1.1",
+      "in-latest-posix": ""
     },
     "atoi": {
-      "c-definition": "7.24.1.2"
+      "c-definition": "7.24.1.2",
+      "in-latest-posix": ""
     },
     "atol": {
-      "c-definition": "7.24.1.2"
+      "c-definition": "7.24.1.2",
+      "in-latest-posix": ""
     },
     "atoll": {
-      "c-definition": "7.24.1.2"
+      "c-definition": "7.24.1.2",
+      "in-latest-posix": ""
     },
     "strfromd": {
       "c-definition": "7.24.1.3"
@@ -48,13 +56,16 @@
       "c-definition": "7.24.1.4"
     },
     "strtod": {
-      "c-definition": "7.24.1.5"
+      "c-definition": "7.24.1.5",
+      "in-latest-posix": ""
     },
     "strtof": {
-      "c-definition": "7.24.1.5"
+      "c-definition": "7.24.1.5",
+      "in-latest-posix": ""
     },
     "strtold": {
-      "c-definition": "7.24.1.5"
+      "c-definition": "7.24.1.5",
+      "in-latest-posix": ""
     },
     "strtod32": {
       "c-definition": "7.24.1.6"
@@ -66,31 +77,40 @@
       "c-definition": "7.24.1.6"
     },
     "strtol": {
-      "c-definition": "7.24.1.7"
+      "c-definition": "7.24.1.7",
+      "in-latest-posix": ""
     },
     "strtoll": {
-      "c-definition": "7.24.1.7"
+      "c-definition": "7.24.1.7",
+      "in-latest-posix": ""
     },
     "strtoul": {
-      "c-definition": "7.24.1.7"
+      "c-definition": "7.24.1.7",
+      "in-latest-posix": ""
     },
     "strtoull": {
-      "c-definition": "7.24.1.7"
+      "c-definition": "7.24.1.7",
+      "in-latest-posix": ""
     },
     "rand": {
-      "c-definition": "7.24.2.1"
+      "c-definition": "7.24.2.1",
+      "in-latest-posix": ""
     },
     "srand": {
-      "c-definition": "7.24.2.2"
+      "c-definition": "7.24.2.2",
+      "in-latest-posix": ""
     },
     "aligned_alloc": {
-      "c-definition": "7.24.3.1"
+      "c-definition": "7.24.3.1",
+      "in-latest-posix": ""
     },
     "calloc": {
-      "c-definition": "7.24.3.2"
+      "c-definition": "7.24.3.2",
+      "in-latest-posix": ""
     },
     "free": {
-      "c-definition": "7.24.3.3"
+      "c-definition": "7.24.3.3",
+      "in-latest-posix": ""
     },
     "free_sized": {
       "c-definition": "7.24.3.4"
@@ -99,73 +119,96 @@
       "c-definition": "7.24.3.5"
     },
     "malloc": {
-      "c-definition": "7.24.3.6"
+      "c-definition": "7.24.3.6",
+      "in-latest-posix": ""
     },
     "realloc": {
-      "c-definition": "7.24.3.7"
+      "c-definition": "7.24.3.7",
+      "in-latest-posix": ""
     },
     "abort": {
-      "c-definition": "7.24.4.1"
+      "c-definition": "7.24.4.1",
+      "in-latest-posix": ""
     },
     "atexit": {
-      "c-definition": "7.24.4.2"
+      "c-definition": "7.24.4.2",
+      "in-latest-posix": ""
     },
     "at_quick_exit": {
-      "c-definition": "7.24.4.3"
+      "c-definition": "7.24.4.3",
+      "in-latest-posix": ""
     },
     "exit": {
-      "c-definition": "7.24.4.4"
+      "c-definition": "7.24.4.4",
+      "in-latest-posix": ""
     },
     "_Exit": {
-      "c-definition": "7.24.4.5"
+      "c-definition": "7.24.4.5",
+      "in-latest-posix": ""
     },
     "getenv": {
-      "c-definition": "7.24.4.6"
+      "c-definition": "7.24.4.6",
+      "in-latest-posix": ""
     },
     "quick_exit": {
-      "c-definition": "7.24.4.7"
+      "c-definition": "7.24.4.7",
+      "in-latest-posix": ""
     },
     "system": {
-      "c-definition": "7.24.4.8"
+      "c-definition": "7.24.4.8",
+      "in-latest-posix": ""
     },
     "bsearch": {
-      "c-definition": "7.24.5.1"
+      "c-definition": "7.24.5.1",
+      "in-latest-posix": ""
     },
     "qsort": {
-      "c-definition": "7.24.5.2"
+      "c-definition": "7.24.5.2",
+      "in-latest-posix": ""
     },
     "abs": {
-      "c-definition": "7.24.6.1"
+      "c-definition": "7.24.6.1",
+      "in-latest-posix": ""
     },
     "labs": {
-      "c-definition": "7.24.6.1"
+      "c-definition": "7.24.6.1",
+      "in-latest-posix": ""
     },
     "llabs": {
-      "c-definition": "7.24.6.1"
+      "c-definition": "7.24.6.1",
+      "in-latest-posix": ""
     },
     "div": {
-      "c-definition": "7.24.6.2"
+      "c-definition": "7.24.6.2",
+      "in-latest-posix": ""
     },
     "ldiv": {
-      "c-definition": "7.24.6.2"
+      "c-definition": "7.24.6.2",
+      "in-latest-posix": ""
     },
     "lldiv": {
-      "c-definition": "7.24.6.2"
+      "c-definition": "7.24.6.2",
+      "in-latest-posix": ""
     },
     "mblen": {
-      "c-definition": "7.24.7.1"
+      "c-definition": "7.24.7.1",
+      "in-latest-posix": ""
     },
     "mbtowc": {
-      "c-definition": "7.24.7.2"
+      "c-definition": "7.24.7.2",
+      "in-latest-posix": ""
     },
     "wctomb": {
-      "c-definition": "7.24.7.3"
+      "c-definition": "7.24.7.3",
+      "in-latest-posix": ""
     },
     "mbstowcs": {
-      "c-definition": "7.24.8.1"
+      "c-definition": "7.24.8.1",
+      "in-latest-posix": ""
     },
     "wcstombs": {
-      "c-definition": "7.24.8.2"
+      "c-definition": "7.24.8.2",
+      "in-latest-posix": ""
     },
     "memalignment": {
       "c-definition": "7.24.9.1"
diff --git a/libc/utils/docgen/string.json b/libc/utils/docgen/string.json
index d3fd9daf186a1d..f31c8e8b812623 100644
--- a/libc/utils/docgen/string.json
+++ b/libc/utils/docgen/string.json
@@ -6,94 +6,125 @@
   },
   "functions": {
     "memcpy": {
-      "c-definition": "7.26.2.1"
+      "c-definition": "7.26.2.1",
+      "in-latest-posix": ""
     },
     "memccpy": {
-      "c-definition": "7.26.2.2"
+      "c-definition": "7.26.2.2",
+      "in-latest-posix": ""
     },
     "mempcpy": {
       "c-definition": "TODO: glibc extension"
     },
     "memmove": {
-      "c-definition": "7.26.2.3"
+      "c-definition": "7.26.2.3",
+      "in-latest-posix": ""
     },
     "strcpy": {
-      "c-definition": "7.26.2.4"
+      "c-definition": "7.26.2.4",
+      "in-latest-posix": ""
     },
     "strncpy": {
-      "c-definition": "7.26.2.5"
+      "c-definition": "7.26.2.5",
+      "in-latest-posix": ""
     },
     "stpcpy": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/stpcpy.html"
+      "in-latest-posix": ""
     },
     "stpncpy": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/stpncpy.html"
+      "in-latest-posix": ""
     },
     "strdup": {
-      "c-definition": "7.26.2.6"
+      "c-definition": "7.26.2.6",
+      "in-latest-posix": ""
     },
     "strndup": {
-      "c-definition": "7.26.2.7"
+      "c-definition": "7.26.2.7",
+      "in-latest-posix": ""
     },
     "strcat": {
-      "c-definition": "7.26.3.1"
+      "c-definition": "7.26.3.1",
+      "in-latest-posix": ""
     },
     "strncat": {
-      "c-definition": "7.26.3.2"
+      "c-definition": "7.26.3.2",
+      "in-latest-posix": ""
     },
     "memcmp": {
-      "c-definition": "7.26.4.1"
+      "c-definition": "7.26.4.1",
+      "in-latest-posix": ""
     },
     "strcmp": {
-      "c-definition": "7.26.4.2"
+      "c-definition": "7.26.4.2",
+      "in-latest-posix": ""
     },
     "strcoll": {
-      "c-definition": "7.26.4.3"
+      "c-definition": "7.26.4.3",
+      "in-latest-posix": ""
+    },
+    "strcoll_l": {
+      "in-latest-posix": ""
     },
     "strncmp": {
-      "c-definition": "7.26.4.4"
+      "c-definition": "7.26.4.4",
+      "in-latest-posix": ""
     },
     "strxfrm": {
-      "c-definition": "7.26.4.5"
+      "c-definition": "7.26.4.5",
+      "in-latest-posix": ""
+    },
+    "strxfrm_l": {
+      "in-latest-posix": ""
     },
     "memchr": {
-      "c-definition": "7.26.5.2"
+      "c-definition": "7.26.5.2",
+      "in-latest-posix": ""
     },
     "strchr": {
-      "c-definition": "7.26.5.3"
+      "c-definition": "7.26.5.3",
+      "in-latest-posix": ""
     },
     "strcspn": {
-      "c-definition": "7.26.5.4"
+      "c-definition": "7.26.5.4",
+      "in-latest-posix": ""
     },
     "strpbrk": {
-      "c-definition": "7.26.5.5"
+      "c-definition": "7.26.5.5",
+      "in-latest-posix": ""
     },
     "strrchr": {
-      "c-definition": "7.26.5.6"
+      "c-definition": "7.26.5.6",
+      "in-latest-posix": ""
     },
     "strspn": {
-      "c-definition": "7.26.5.7"
+      "c-definition": "7.26.5.7",
+      "in-latest-posix": ""
     },
     "strstr": {
-      "c-definition": "7.26.5.8"
+      "c-definition": "7.26.5.8",
+      "in-latest-posix": ""
     },
     "strtok": {
-      "c-definition": "7.26.5.9"
+      "c-definition": "7.26.5.9",
+      "in-latest-posix": ""
     },
     "strtok_r": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtok_r.html"
+      "in-latest-posix": ""
     },
     "memset": {
-      "c-definition": "7.26.6.1"
+      "c-definition": "7.26.6.1",
+      "in-latest-posix": ""
     },
     "memset_explicit": {
       "c-definition": "7.26.6.2"
     },
     "strerror": {
-      "c-definition": "7.26.6.3"
+      "c-definition": "7.26.6.3",
+      "in-latest-posix": ""
     },
     "strlen": {
-      "c-definition": "7.26.6.4"
+      "c-definition": "7.26.6.4",
+      "in-latest-posix": ""
     }
   }
 }
diff --git a/libc/utils/docgen/strings.json b/libc/utils/docgen/strings.json
index 5274745f5f50d9..c1c579a13dbdfa 100644
--- a/libc/utils/docgen/strings.json
+++ b/libc/utils/docgen/strings.json
@@ -1,40 +1,40 @@
 {
   "functions": {
     "bzero": {
-      "posix-definition": "removed in POSIX.1-2008"
+      "removed-in-posix-2008": ""
     },
     "bcmp": {
-      "posix-definition": "removed in POSIX.1-2008"
+      "removed-in-posix-2008": ""
     },
     "bcopy": {
-      "posix-definition": "removed in POSIX.1-2008"
+      "removed-in-posix-2008": ""
     },
     "ffs": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/ffs.html"
+      "in-latest-posix": ""
     },
     "ffsl": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/ffsl.html"
+      "in-latest-posix": ""
     },
     "ffsll": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/ffsll.html"
+      "in-latest-posix": ""
     },
     "index": {
-      "posix-definition": "removed in POSIX.1-2008"
+      "removed-in-posix-2008": ""
     },
     "rindex": {
-      "posix-definition": "removed in POSIX.1-2008"
+      "removed-in-posix-2008": ""
     },
     "strcasecmp": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncasecmp.html"
+      "in-latest-posix": ""
     },
     "strcasecmp_l": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncasecmp.html"
+      "in-latest-posix": ""
     },
     "strncasecmp": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncasecmp.html"
+      "in-latest-posix": ""
     },
     "strncasecmp_l": {
-      "posix-definition": "https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncasecmp.html"
+      "in-latest-posix": ""
     }
   }
 }
diff --git a/libc/utils/docgen/threads.json b/libc/utils/docgen/threads.json
index 62c5ff881e42ee..3043d148a011f1 100644
--- a/libc/utils/docgen/threads.json
+++ b/libc/utils/docgen/threads.json
@@ -4,87 +4,117 @@
       "c-definition": "7.28.1"
     },
     "ONCE_FLAG_INIT": {
-      "c-definition": "7.28.1"
+      "c-definition": "7.28.1",
+      "in-latest-posix": ""
     },
     "TSS_DTOR_ITERATIONS": {
-      "c-definition": "7.28.1"
+      "c-definition": "7.28.1",
+      "in-latest-posix": ""
+    },
+    "thread_local": {
+      "in-latest-posix": ""
     }
   },
   "functions": {
     "call_once": {
-      "c-definition": "7.28.2.1"
+      "c-definition": "7.28.2.1",
+      "in-latest-posix": ""
     },
     "cnd_broadcast": {
-      "c-definition": "7.28.3.1"
+      "c-definition": "7.28.3.1",
+      "in-latest-posix": ""
     },
     "cnd_destroy": {
-      "c-definition": "7.28.3.2"
+      "c-definition": "7.28.3.2",
+      "in-latest-posix": ""
     },
     "cnd_init": {
-      "c-definition": "7.28.3.3"
+      "c-definition": "7.28.3.3",
+      "in-latest-posix": ""
     },
     "cnd_signal": {
-      "c-definition": "7.28.3.4"
+      "c-definition": "7.28.3.4",
+      "in-latest-posix": ""
     },
     "cnd_timedwait": {
-      "c-definition": "7.28.3.5"
+      "c-definition": "7.28.3.5",
+      "in-latest-posix": ""
     },
     "cnd_wait": {
-      "c-definition": "7.28.3.6"
+      "c-definition": "7.28.3.6",
+      "in-latest-posix": ""
     },
     "mtx_destroy": {
-      "c-definition": "7.28.4.2"
+      "c-definition": "7.28.4.2",
+      "in-latest-posix": ""
     },
     "mtx_init": {
-      "c-definition": "7.28.4.3"
+      "c-definition": "7.28.4.3",
+      "in-latest-posix": ""
     },
     "mtx_lock": {
-      "c-definition": "7.28.4.4"
+      "c-definition": "7.28.4.4",
+      "in-latest-posix": ""
     },
     "mtx_timedlock": {
-      "c-definition": "7.28.4.5"
+      "c-definition": "7.28.4.5",
+      "in-latest-posix": ""
     },
     "mtx_trylock": {
-      "c-definition": "7.28.4.6"
+      "c-definition": "7.28.4.6",
+      "in-latest-posix": ""
     },
     "mtx_unlock": {
-      "c-definition": "7.28.4.7"
+      "c-definition": "7.28.4.7",
+      "in-latest-posix": ""
     },
     "thrd_create": {
-      "c-definition": "7.28.5.1"
+      "c-definition": "7.28.5.1",
+      "in-latest-posix": ""
     },
     "thrd_current": {
-      "c-definition": "7.28.5.2"
+      "c-definition": "7.28.5.2",
+      "in-latest-posix": ""
     },
     "thrd_detach": {
-      "c-definition": "7.28.5.3"
+      "c-definition": "7.28.5.3",
+      "in-latest-posix": ""
     },
     "thrd_equal": {
-      "c-definition": "7.28.5.4"
+      "c-definition": "7.28.5.4",
+      "in-latest-posix": ""
     },
     "thrd_exit": {
-      "c-definition": "7.28.5.5"
+      "c-definition": "7.28.5.5",
+      "in-latest-posix": ""
     },
     "thrd_join": {
-      "c-definition": "7.28.5.6"
+      "c-definition": "7.28.5.6",
+      "in-latest-posix": ""
     },
     "thrd_sleep": {
-      "c-definition": "7.28.5.7"
+      "c-definition": "7.28.5.7",
+      "in-latest-posix": ""
     },
     "thrd_yield": {
-      "c-definition": "7.28.5.8"
+      "c-definition": "7.28.5.8",
+      "in-latest-posix": ""
     },
     "tss_create": {
-      "c-definition": "7.28.6.1"
+      "c-definition": "7.28.6.1",
+      "in-latest-posix": ""
     },
     "tss_delete": {
-      "c-definition": "7.28.6.2"
+      "c-definition": "7.28.6.2",
+      "in-latest-posix": ""
     },
     "tss_get": {
-      "c-definition": "7.28.6.3"
+      "c-definition": "7.28.6.3",
+      "in-latest-posix": ""
     },
     "tss_set": {
-      "c-definition": "7.28.6.4"
+      "c-definition": "7.28.6.4",
+      "in-latest-posix": ""
     }
   }
 }
diff --git a/libc/utils/docgen/uchar.json b/libc/utils/docgen/uchar.json
index c7a8764657da60..e4537873d36a5a 100644
--- a/libc/utils/docgen/uchar.json
+++ b/libc/utils/docgen/uchar.json
@@ -12,16 +12,20 @@
       "c-definition": "7.30.2.3"
     },
     "mbrtoc16": {
-      "c-definition": "7.30.2.4"
+      "c-definition": "7.30.2.4",
+      "in-latest-posix": ""
     },
     "c16rtomb": {
-      "c-definition": "7.30.2.5"
+      "c-definition": "7.30.2.5",
+      "in-latest-posix": ""
     },
     "mbrtoc32": {
-      "c-definition": "7.30.2.6"
+      "c-definition": "7.30.2.6",
+      "in-latest-posix": ""
     },
     "c32rtomb": {
-      "c-definition": "7.30.2.7"
+      "c-definition": "7.30.2.7",
+      "in-latest-posix": ""
     }
   }
 }

>From 8d456902ccd093e06ef81fc87f1d7b5ddfb09da3 Mon Sep 17 00:00:00 2001
From: Nick Desaulniers <ndesaulniers at google.com>
Date: Wed, 11 Dec 2024 09:32:25 -0800
Subject: [PATCH 3/5] update rst files

---
 libc/docs/headers/assert.rst   |  4 +-
 libc/docs/headers/ctype.rst    | 58 ++++++++++++++++++++-
 libc/docs/headers/errno.rst    | 10 ++--
 libc/docs/headers/fenv.rst     | 52 +++++++++----------
 libc/docs/headers/float.rst    | 76 ++++++++++++++--------------
 libc/docs/headers/inttypes.rst | 14 +++---
 libc/docs/headers/locale.rst   | 36 ++++++++++---
 libc/docs/headers/signal.rst   | 92 +++++++++++++++++-----------------
 libc/docs/headers/stdlib.rst   | 90 ++++++++++++++++-----------------
 libc/docs/headers/string.rst   | 64 ++++++++++++-----------
 libc/docs/headers/strings.rst  | 26 +++++-----
 libc/docs/headers/threads.rst  | 62 ++++++++++++-----------
 libc/docs/headers/uchar.rst    | 12 ++---
 libc/docs/headers/wchar.rst    |  4 +-
 libc/docs/headers/wctype.rst   |  2 +-
 15 files changed, 345 insertions(+), 257 deletions(-)

diff --git a/libc/docs/headers/assert.rst b/libc/docs/headers/assert.rst
index 06ea27966de1ae..682170755ba43f 100644
--- a/libc/docs/headers/assert.rst
+++ b/libc/docs/headers/assert.rst
@@ -15,7 +15,7 @@ Macros
   * - Macro
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - __STDC_VERSION_ASSERT_H__
     - |check|
     - 7.2.1
@@ -23,5 +23,5 @@ Macros
   * - assert
     -
     - 7.2.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/assert.h.html>`__
 
diff --git a/libc/docs/headers/ctype.rst b/libc/docs/headers/ctype.rst
index e506830809f795..9b5b1574fd274d 100644
--- a/libc/docs/headers/ctype.rst
+++ b/libc/docs/headers/ctype.rst
@@ -15,60 +15,116 @@ Functions
   * - Function
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - isalnum
     - |check|
     - 7.4.1.1
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isalnum.html>`__
+  * - isalnum_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isalnum_l.html>`__
   * - isalpha
     - |check|
     - 7.4.1.2
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isalpha.html>`__
+  * - isalpha_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isalpha_l.html>`__
   * - isblank
     - |check|
     - 7.4.1.3
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isblank.html>`__
+  * - isblank_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isblank_l.html>`__
   * - iscntrl
     - |check|
     - 7.4.1.4
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/iscntrl.html>`__
+  * - iscntrl_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/iscntrl_l.html>`__
   * - isdigit
     - |check|
     - 7.4.1.5
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isdigit.html>`__
+  * - isdigit_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isdigit_l.html>`__
   * - isgraph
     - |check|
     - 7.4.1.6
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isgraph.html>`__
+  * - isgraph_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isgraph_l.html>`__
   * - islower
     - |check|
     - 7.4.1.7
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/islower.html>`__
+  * - islower_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/islower_l.html>`__
   * - isprint
     - |check|
     - 7.4.1.8
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isprint.html>`__
+  * - isprint_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isprint_l.html>`__
   * - ispunct
     - |check|
     - 7.4.1.9
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/ispunct.html>`__
+  * - ispunct_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/ispunct_l.html>`__
   * - isspace
     - |check|
     - 7.4.1.10
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isspace.html>`__
+  * - isspace_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isspace_l.html>`__
   * - isupper
     - |check|
     - 7.4.1.11
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isupper.html>`__
+  * - isupper_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isupper_l.html>`__
   * - isxdigit
     - |check|
     - 7.4.1.12
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isxdigit.html>`__
+  * - isxdigit_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/isxdigit_l.html>`__
   * - tolower
     - |check|
     - 7.4.2.1
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/tolower.html>`__
+  * - tolower_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/tolower_l.html>`__
   * - toupper
     - |check|
     - 7.4.2.2
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/toupper.html>`__
+  * - toupper_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/toupper_l.html>`__
diff --git a/libc/docs/headers/errno.rst b/libc/docs/headers/errno.rst
index f25aae4f23b2c7..b2b2e62728e1a4 100644
--- a/libc/docs/headers/errno.rst
+++ b/libc/docs/headers/errno.rst
@@ -15,21 +15,21 @@ Macros
   * - Macro
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - EDOM
     -
     - 7.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/errno.h.html>`__
   * - EILSEQ
     -
     - 7.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/errno.h.html>`__
   * - ERANGE
     -
     - 7.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/errno.h.html>`__
   * - errno
     -
     - 7.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/errno.h.html>`__
 
diff --git a/libc/docs/headers/fenv.rst b/libc/docs/headers/fenv.rst
index 374b46ef57be0a..d0e3c5dda6d006 100644
--- a/libc/docs/headers/fenv.rst
+++ b/libc/docs/headers/fenv.rst
@@ -15,11 +15,11 @@ Macros
   * - Macro
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - FE_ALL_EXCEPT
     - |check|
     - 7.6.12
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fenv.h.html>`__
   * - FE_DEC_DOWNWARD
     -
     - 7.6.14
@@ -43,7 +43,7 @@ Macros
   * - FE_DFL_ENV
     - |check|
     - 7.6.17
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fenv.h.html>`__
   * - FE_DFL_MODE
     -
     - 7.6.11
@@ -51,27 +51,27 @@ Macros
   * - FE_DIVBYZERO
     - |check|
     - 7.6.9
-    -
-  * - FE_DOWNARD
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fenv.h.html>`__
+  * - FE_DOWNWARD
+    - |check|
     - 7.6.13
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fenv.h.html>`__
   * - FE_INEXACT
     - |check|
     - 7.6.9
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fenv.h.html>`__
   * - FE_INVALID
     - |check|
     - 7.6.9
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fenv.h.html>`__
   * - FE_OVERFLOW
     - |check|
     - 7.6.9
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fenv.h.html>`__
   * - FE_TONEAREST
     - |check|
     - 7.6.13
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fenv.h.html>`__
   * - FE_TONEARESTFROMZERO
     -
     - 7.6.13
@@ -79,15 +79,15 @@ Macros
   * - FE_TOWARDZERO
     - |check|
     - 7.6.13
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fenv.h.html>`__
   * - FE_UNDERFLOW
     - |check|
     - 7.6.9
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fenv.h.html>`__
   * - FE_UPWARD
     - |check|
     - 7.6.13
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/fenv.h.html>`__
   * - __STDC_VERSION_FENV_H__
     -
     - 7.6.5
@@ -104,7 +104,7 @@ Functions
   * - Function
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - fe_dec_getround
     -
     - 7.6.5.3
@@ -116,15 +116,15 @@ Functions
   * - feclearexcept
     - |check|
     - 7.6.4.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/feclearexcept.html>`__
   * - fegetenv
     - |check|
     - 7.6.6.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/fegetenv.html>`__
   * - fegetexceptflag
     - |check|
     - 7.6.4.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/fegetexceptflag.html>`__
   * - fegetmode
     -
     - 7.6.5.1
@@ -132,19 +132,19 @@ Functions
   * - fegetround
     - |check|
     - 7.6.5.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/fegetround.html>`__
   * - feholdexcept
     - |check|
     - 7.6.6.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/feholdexcept.html>`__
   * - feraiseexcept
     - |check|
     - 7.6.4.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/feraiseexcept.html>`__
   * - fesetenv
     - |check|
     - 7.6.6.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/fesetenv.html>`__
   * - fesetexcept
     - |check|
     - 7.6.4.4
@@ -152,7 +152,7 @@ Functions
   * - fesetexceptflag
     - |check|
     - 7.6.4.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/fesetexceptflag.html>`__
   * - fesetmode
     -
     - 7.6.5.4
@@ -160,11 +160,11 @@ Functions
   * - fesetround
     - |check|
     - 7.6.5.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/fesetround.html>`__
   * - fetestexcept
     - |check|
     - 7.6.4.7
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/fetestexcept.html>`__
   * - fetestexceptflag
     - |check|
     - 7.6.4.6
@@ -172,4 +172,4 @@ Functions
   * - feupdateenv
     - |check|
     - 7.6.6.4
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/feupdateenv.html>`__
diff --git a/libc/docs/headers/float.rst b/libc/docs/headers/float.rst
index b603867fcef9ca..8ef0f3a05020ce 100644
--- a/libc/docs/headers/float.rst
+++ b/libc/docs/headers/float.rst
@@ -15,23 +15,23 @@ Macros
   * - Macro
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - DBL_DECIMAL_DIG
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - DBL_DIG
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - DBL_EPSILON
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - DBL_HAS_SUBNORM
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - DBL_IS_IEC_60559
     -
     - 5.3.5.3.3
@@ -43,27 +43,27 @@ Macros
   * - DBL_MAX
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - DBL_MAX_10_EXP
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - DBL_MAX_EXP
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - DBL_MIN
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - DBL_MIN_10_EXP
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - DBL_MIN_EXP
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - DBL_NORM_MAX
     -
     - 5.3.5.3.3
@@ -75,31 +75,31 @@ Macros
   * - DBL_TRUE_MIN
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - DECIMAL_DIG
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_DECIMAL_DIG
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_DIG
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_EPSILON
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_EVAL_METHOD
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_HAS_SUBNORM
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_IS_IEC_60559
     -
     - 5.3.5.3.3
@@ -111,27 +111,27 @@ Macros
   * - FLT_MAX
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_MAX_10_EXP
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_MAX_EXP
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_MIN
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_MIN_10_EXP
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_MIN_EXP
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_NORM_MAX
     -
     - 5.3.5.3.3
@@ -139,11 +139,11 @@ Macros
   * - FLT_RADIX
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_ROUNDS
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - FLT_SNAN
     -
     - 5.3.5.3.3
@@ -151,7 +151,7 @@ Macros
   * - FLT_TRUE_MIN
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - INFINITY
     -
     - 5.3.5.3.3
@@ -159,19 +159,19 @@ Macros
   * - LDBL_DECIMAL_DIG
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - LDBL_DIG
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - LDBL_EPSILON
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - LDBL_HAS_SUBNORM
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - LDBL_IS_IEC_60559
     -
     - 5.3.5.3.3
@@ -183,27 +183,27 @@ Macros
   * - LDBL_MAX
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - LDBL_MAX_10_EXP
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - LDBL_MAX_EXP
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - LDBL_MIN
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - LDBL_MIN_10_EXP
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - LDBL_MIN_EXP
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - LDBL_NORM_MAX
     -
     - 5.3.5.3.3
@@ -215,7 +215,7 @@ Macros
   * - LDBL_TRUE_MIN
     - |check|
     - 5.3.5.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/float.h.html>`__
   * - NAN
     -
     - 5.3.5.3.3
diff --git a/libc/docs/headers/inttypes.rst b/libc/docs/headers/inttypes.rst
index f43c80f095c6a8..9269b40f242a6c 100644
--- a/libc/docs/headers/inttypes.rst
+++ b/libc/docs/headers/inttypes.rst
@@ -15,28 +15,28 @@ Functions
   * - Function
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - imaxabs
     - |check|
     - 7.8.2.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/imaxabs.html>`__
   * - imaxdiv
     - |check|
     - 7.8.2.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/imaxdiv.html>`__
   * - strtoimax
     - |check|
     - 7.8.2.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtoimax.html>`__
   * - strtoumax
     - |check|
     - 7.8.2.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtoumax.html>`__
   * - wcstoimax
     -
     - 7.8.2.4
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstoimax.html>`__
   * - wcstoumax
     -
     - 7.8.2.4
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstoumax.html>`__
diff --git a/libc/docs/headers/locale.rst b/libc/docs/headers/locale.rst
index 2d5525bd3f2f9a..c97d1f63b1f0ce 100644
--- a/libc/docs/headers/locale.rst
+++ b/libc/docs/headers/locale.rst
@@ -15,31 +15,31 @@ Macros
   * - Macro
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - LC_ALL
     - |check|
     - 7.11
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/locale.h.html>`__
   * - LC_COLLATE
     - |check|
     - 7.11
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/locale.h.html>`__
   * - LC_CTYPE
     - |check|
     - 7.11
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/locale.h.html>`__
   * - LC_MONETARY
     - |check|
     - 7.11
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/locale.h.html>`__
   * - LC_NUMERIC
     - |check|
     - 7.11
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/locale.h.html>`__
   * - LC_TIME
     - |check|
     - 7.11
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/locale.h.html>`__
 
 Functions
 =========
@@ -52,12 +52,32 @@ Functions
   * - Function
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
+  * - duplocale
+    - |check|
+    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/duplocale.html>`__
+  * - freelocale
+    - |check|
+    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/freelocale.html>`__
+  * - getlocalename_l
+    -
+    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/getlocalename_l.html>`__
   * - localeconv
     - |check|
     - 7.11.2.1
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/localeconv.html>`__
+  * - newlocale
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/newlocale.html>`__
   * - setlocale
     - |check|
     - 7.11.1.1
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/setlocale.html>`__
+  * - uselocale
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/uselocale.html>`__
diff --git a/libc/docs/headers/signal.rst b/libc/docs/headers/signal.rst
index b59ae093423574..4f51f611c9fe79 100644
--- a/libc/docs/headers/signal.rst
+++ b/libc/docs/headers/signal.rst
@@ -15,143 +15,143 @@ Macros
   * - Macro
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - SIGABRT
     - |check|
     - 7.14.3
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGALRM
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGBUS
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGCHLD
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGCONT
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGFPE
     - |check|
     - 7.14.3
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGHUP
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGILL
     - |check|
     - 7.14.3
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGINT
     - |check|
     - 7.14.3
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGKILL
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGPIPE
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGPOLL
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGPROF
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGQUIT
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGRTMAX
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGRTMIN
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGSEGV
     - |check|
     - 7.14.3
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGSTOP
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGSYS
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGTERM
     - |check|
     - 7.14.3
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGTRAP
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGTSTP
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGTTIN
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGTTOU
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGURG
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGUSR1
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGUSR2
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGVTALRM
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGXCPU
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIGXFSZ
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIG_DFL
     - |check|
     - 7.14.3
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIG_ERR
     - |check|
     - 7.14.3
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIG_HOLD
     -
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
   * - SIG_IGN
     - |check|
     - 7.14.3
-    - https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/signal.h.html>`__
 
 Functions
 =========
@@ -164,44 +164,44 @@ Functions
   * - Function
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - kill
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/kill.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/kill.html>`__
   * - raise
     - |check|
     - 7.14.2.1
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/raise.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/raise.html>`__
   * - sigaction
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigaction.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigaction.html>`__
   * - sigaddset
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigaddset.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigaddset.html>`__
   * - sigaltstack
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigaltstack.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigaltstack.html>`__
   * - sigdelset
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigdelset.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigdelset.html>`__
   * - sigemptyset
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigemptyset.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigemptyset.html>`__
   * - sigfillset
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigfillset.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigfillset.html>`__
   * - signal
     - |check|
     - 7.14.1.1
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/signal.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/signal.html>`__
   * - sigprocmask
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigprocmask.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigprocmask.html>`__
diff --git a/libc/docs/headers/stdlib.rst b/libc/docs/headers/stdlib.rst
index 139d9b4a922281..4151f2934c9404 100644
--- a/libc/docs/headers/stdlib.rst
+++ b/libc/docs/headers/stdlib.rst
@@ -15,23 +15,23 @@ Macros
   * - Macro
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - EXIT_FAILURE
     - |check|
     - 7.24
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stdlib.h.html>`__
   * - EXIT_SUCCESS
     - |check|
     - 7.24
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stdlib.h.html>`__
   * - MB_CUR_MAX
     - |check|
     - 7.24
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stdlib.h.html>`__
   * - RAND_MAX
     - |check|
     - 7.24
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stdlib.h.html>`__
   * - __STDC_VERSION_STDLIB_H__
     -
     - 7.24
@@ -48,67 +48,67 @@ Functions
   * - Function
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - _Exit
     - |check|
     - 7.24.4.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/_Exit.html>`__
   * - abort
     - |check|
     - 7.24.4.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/abort.html>`__
   * - abs
     - |check|
     - 7.24.6.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/abs.html>`__
   * - aligned_alloc
     - |check|
     - 7.24.3.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/aligned_alloc.html>`__
   * - at_quick_exit
     - |check|
     - 7.24.4.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/at_quick_exit.html>`__
   * - atexit
     - |check|
     - 7.24.4.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/atexit.html>`__
   * - atof
     - |check|
     - 7.24.1.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/atof.html>`__
   * - atoi
     - |check|
     - 7.24.1.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/atoi.html>`__
   * - atol
     - |check|
     - 7.24.1.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/atol.html>`__
   * - atoll
     - |check|
     - 7.24.1.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/atoll.html>`__
   * - bsearch
     - |check|
     - 7.24.5.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/bsearch.html>`__
   * - calloc
     - |check|
     - 7.24.3.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/calloc.html>`__
   * - div
     - |check|
     - 7.24.6.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/div.html>`__
   * - exit
     - |check|
     - 7.24.4.4
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/exit.html>`__
   * - free
     - |check|
     - 7.24.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/free.html>`__
   * - free_aligned_sized
     -
     - 7.24.3.5
@@ -120,39 +120,39 @@ Functions
   * - getenv
     - |check|
     - 7.24.4.6
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/getenv.html>`__
   * - labs
     - |check|
     - 7.24.6.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/labs.html>`__
   * - ldiv
     - |check|
     - 7.24.6.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/ldiv.html>`__
   * - llabs
     - |check|
     - 7.24.6.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/llabs.html>`__
   * - lldiv
     - |check|
     - 7.24.6.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/lldiv.html>`__
   * - malloc
     - |check|
     - 7.24.3.6
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/malloc.html>`__
   * - mblen
     -
     - 7.24.7.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/mblen.html>`__
   * - mbstowcs
     -
     - 7.24.8.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbstowcs.html>`__
   * - mbtowc
     -
     - 7.24.7.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbtowc.html>`__
   * - memalignment
     -
     - 7.24.9.1
@@ -160,23 +160,23 @@ Functions
   * - qsort
     - |check|
     - 7.24.5.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/qsort.html>`__
   * - quick_exit
     - |check|
     - 7.24.4.7
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/quick_exit.html>`__
   * - rand
     - |check|
     - 7.24.2.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/rand.html>`__
   * - realloc
     - |check|
     - 7.24.3.7
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/realloc.html>`__
   * - srand
     - |check|
     - 7.24.2.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/srand.html>`__
   * - strfromd
     - |check|
     - 7.24.1.3
@@ -204,7 +204,7 @@ Functions
   * - strtod
     - |check|
     - 7.24.1.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtod.html>`__
   * - strtod128
     -
     - 7.24.1.6
@@ -220,36 +220,36 @@ Functions
   * - strtof
     - |check|
     - 7.24.1.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtof.html>`__
   * - strtol
     - |check|
     - 7.24.1.7
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtol.html>`__
   * - strtold
     - |check|
     - 7.24.1.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtold.html>`__
   * - strtoll
     - |check|
     - 7.24.1.7
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtoll.html>`__
   * - strtoul
     - |check|
     - 7.24.1.7
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtoul.html>`__
   * - strtoull
     - |check|
     - 7.24.1.7
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtoull.html>`__
   * - system
     - |check|
     - 7.24.4.8
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/system.html>`__
   * - wcstombs
     -
     - 7.24.8.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcstombs.html>`__
   * - wctomb
     -
     - 7.24.7.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/wctomb.html>`__
diff --git a/libc/docs/headers/string.rst b/libc/docs/headers/string.rst
index 55f779c830ea87..2665ed8ca17e69 100644
--- a/libc/docs/headers/string.rst
+++ b/libc/docs/headers/string.rst
@@ -15,7 +15,7 @@ Macros
   * - Macro
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - __STDC_VERSION_STRING_H__
     -
     - 7.26.1
@@ -32,27 +32,27 @@ Functions
   * - Function
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - memccpy
     - |check|
     - 7.26.2.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/memccpy.html>`__
   * - memchr
     - |check|
     - 7.26.5.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/memchr.html>`__
   * - memcmp
     - |check|
     - 7.26.4.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/memcmp.html>`__
   * - memcpy
     - |check|
     - 7.26.2.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/memcpy.html>`__
   * - memmove
     - |check|
     - 7.26.2.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/memmove.html>`__
   * - mempcpy
     - |check|
     - TODO: glibc extension
@@ -60,7 +60,7 @@ Functions
   * - memset
     - |check|
     - 7.26.6.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/memset.html>`__
   * - memset_explicit
     - |check|
     - 7.26.6.2
@@ -68,88 +68,96 @@ Functions
   * - stpcpy
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/stpcpy.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/stpcpy.html>`__
   * - stpncpy
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/stpncpy.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/stpncpy.html>`__
   * - strcat
     - |check|
     - 7.26.3.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcat.html>`__
   * - strchr
     - |check|
     - 7.26.5.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strchr.html>`__
   * - strcmp
     - |check|
     - 7.26.4.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcmp.html>`__
   * - strcoll
     - |check|
     - 7.26.4.3
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcoll.html>`__
+  * - strcoll_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcoll_l.html>`__
   * - strcpy
     - |check|
     - 7.26.2.4
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcpy.html>`__
   * - strcspn
     - |check|
     - 7.26.5.4
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcspn.html>`__
   * - strdup
     - |check|
     - 7.26.2.6
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strdup.html>`__
   * - strerror
     - |check|
     - 7.26.6.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strerror.html>`__
   * - strlen
     - |check|
     - 7.26.6.4
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strlen.html>`__
   * - strncat
     - |check|
     - 7.26.3.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncat.html>`__
   * - strncmp
     - |check|
     - 7.26.4.4
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncmp.html>`__
   * - strncpy
     - |check|
     - 7.26.2.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncpy.html>`__
   * - strndup
     - |check|
     - 7.26.2.7
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strndup.html>`__
   * - strpbrk
     - |check|
     - 7.26.5.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strpbrk.html>`__
   * - strrchr
     - |check|
     - 7.26.5.6
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strrchr.html>`__
   * - strspn
     - |check|
     - 7.26.5.7
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strspn.html>`__
   * - strstr
     - |check|
     - 7.26.5.8
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strstr.html>`__
   * - strtok
     - |check|
     - 7.26.5.9
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtok.html>`__
   * - strtok_r
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtok_r.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strtok_r.html>`__
   * - strxfrm
     - |check|
     - 7.26.4.5
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strxfrm.html>`__
+  * - strxfrm_l
+    - |check|
     -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strxfrm_l.html>`__
diff --git a/libc/docs/headers/strings.rst b/libc/docs/headers/strings.rst
index b5935d2683d089..effd667cd5219f 100644
--- a/libc/docs/headers/strings.rst
+++ b/libc/docs/headers/strings.rst
@@ -15,52 +15,52 @@ Functions
   * - Function
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - bcmp
     - |check|
     -
-    - removed in POSIX.1-2008
+    - `removed in POSIX.1-2008 <https://pubs.opengroup.org/onlinepubs/007904875/functions/bcmp.html>`__
   * - bcopy
     - |check|
     -
-    - removed in POSIX.1-2008
+    - `removed in POSIX.1-2008 <https://pubs.opengroup.org/onlinepubs/007904875/functions/bcopy.html>`__
   * - bzero
     - |check|
     -
-    - removed in POSIX.1-2008
+    - `removed in POSIX.1-2008 <https://pubs.opengroup.org/onlinepubs/007904875/functions/bzero.html>`__
   * - ffs
     -
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/ffs.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/ffs.html>`__
   * - ffsl
     -
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/ffsl.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/ffsl.html>`__
   * - ffsll
     -
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/ffsll.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/ffsll.html>`__
   * - index
     - |check|
     -
-    - removed in POSIX.1-2008
+    - `removed in POSIX.1-2008 <https://pubs.opengroup.org/onlinepubs/007904875/functions/index.html>`__
   * - rindex
     - |check|
     -
-    - removed in POSIX.1-2008
+    - `removed in POSIX.1-2008 <https://pubs.opengroup.org/onlinepubs/007904875/functions/rindex.html>`__
   * - strcasecmp
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncasecmp.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcasecmp.html>`__
   * - strcasecmp_l
     -
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncasecmp.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcasecmp_l.html>`__
   * - strncasecmp
     - |check|
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncasecmp.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncasecmp.html>`__
   * - strncasecmp_l
     -
     -
-    - https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncasecmp.html
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/strncasecmp_l.html>`__
diff --git a/libc/docs/headers/threads.rst b/libc/docs/headers/threads.rst
index be313c6013b8da..c2837b8c3591cf 100644
--- a/libc/docs/headers/threads.rst
+++ b/libc/docs/headers/threads.rst
@@ -15,19 +15,23 @@ Macros
   * - Macro
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - ONCE_FLAG_INIT
     -
     - 7.28.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/threads.h.html>`__
   * - TSS_DTOR_ITERATIONS
     -
     - 7.28.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/threads.h.html>`__
   * - __STDC_NO_THREADS__
     -
     - 7.28.1
     -
+  * - thread_local
+    -
+    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/threads.h.html>`__
 
 Functions
 =========
@@ -40,104 +44,104 @@ Functions
   * - Function
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - call_once
     - |check|
     - 7.28.2.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/call_once.html>`__
   * - cnd_broadcast
     - |check|
     - 7.28.3.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/cnd_broadcast.html>`__
   * - cnd_destroy
     - |check|
     - 7.28.3.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/cnd_destroy.html>`__
   * - cnd_init
     - |check|
     - 7.28.3.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/cnd_init.html>`__
   * - cnd_signal
     - |check|
     - 7.28.3.4
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/cnd_signal.html>`__
   * - cnd_timedwait
     -
     - 7.28.3.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/cnd_timedwait.html>`__
   * - cnd_wait
     - |check|
     - 7.28.3.6
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/cnd_wait.html>`__
   * - mtx_destroy
     - |check|
     - 7.28.4.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/mtx_destroy.html>`__
   * - mtx_init
     - |check|
     - 7.28.4.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/mtx_init.html>`__
   * - mtx_lock
     - |check|
     - 7.28.4.4
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/mtx_lock.html>`__
   * - mtx_timedlock
     -
     - 7.28.4.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/mtx_timedlock.html>`__
   * - mtx_trylock
     -
     - 7.28.4.6
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/mtx_trylock.html>`__
   * - mtx_unlock
     - |check|
     - 7.28.4.7
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/mtx_unlock.html>`__
   * - thrd_create
     - |check|
     - 7.28.5.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_create.html>`__
   * - thrd_current
     - |check|
     - 7.28.5.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_current.html>`__
   * - thrd_detach
     - |check|
     - 7.28.5.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_detach.html>`__
   * - thrd_equal
     - |check|
     - 7.28.5.4
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_equal.html>`__
   * - thrd_exit
     - |check|
     - 7.28.5.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_exit.html>`__
   * - thrd_join
     - |check|
     - 7.28.5.6
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_join.html>`__
   * - thrd_sleep
     -
     - 7.28.5.7
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_sleep.html>`__
   * - thrd_yield
     -
     - 7.28.5.8
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/thrd_yield.html>`__
   * - tss_create
     - |check|
     - 7.28.6.1
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/tss_create.html>`__
   * - tss_delete
     - |check|
     - 7.28.6.2
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/tss_delete.html>`__
   * - tss_get
     - |check|
     - 7.28.6.3
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/tss_get.html>`__
   * - tss_set
     - |check|
     - 7.28.6.4
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/tss_set.html>`__
diff --git a/libc/docs/headers/uchar.rst b/libc/docs/headers/uchar.rst
index 4645109c8c3785..abb684bf9ae0e2 100644
--- a/libc/docs/headers/uchar.rst
+++ b/libc/docs/headers/uchar.rst
@@ -15,7 +15,7 @@ Macros
   * - Macro
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - __STDC_VERSION_UCHAR_H__
     -
     - 7.30.1
@@ -32,15 +32,15 @@ Functions
   * - Function
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - c16rtomb
     -
     - 7.30.2.5
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/c16rtomb.html>`__
   * - c32rtomb
     -
     - 7.30.2.7
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/c32rtomb.html>`__
   * - c8rtomb
     -
     - 7.30.2.3
@@ -48,11 +48,11 @@ Functions
   * - mbrtoc16
     -
     - 7.30.2.4
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbrtoc16.html>`__
   * - mbrtoc32
     -
     - 7.30.2.6
-    -
+    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbrtoc32.html>`__
   * - mbrtoc8
     -
     - 7.30.2.2
diff --git a/libc/docs/headers/wchar.rst b/libc/docs/headers/wchar.rst
index ce2be3389a2ec2..89a1e7b3fe660a 100644
--- a/libc/docs/headers/wchar.rst
+++ b/libc/docs/headers/wchar.rst
@@ -15,7 +15,7 @@ Macros
   * - Macro
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - WEOF
     - |check|
     - 7.31.1
@@ -36,7 +36,7 @@ Functions
   * - Function
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - btowc
     - |check|
     - 7.31.6.2.1
diff --git a/libc/docs/headers/wctype.rst b/libc/docs/headers/wctype.rst
index 48096c3e25804b..076db04f183e9e 100644
--- a/libc/docs/headers/wctype.rst
+++ b/libc/docs/headers/wctype.rst
@@ -15,7 +15,7 @@ Functions
   * - Function
     - Implemented
     - C23 Standard Section
-    - POSIX.1-2024 Standard Section
+    - POSIX Docs
   * - iswalnum
     -
     - 7.32.2.1.1

>From 1d0e17d08d6c7bc5b856fbe9327314f05026ee03 Mon Sep 17 00:00:00 2001
From: Nick Desaulniers <ndesaulniers at google.com>
Date: Wed, 11 Dec 2024 09:41:06 -0800
Subject: [PATCH 4/5] apply formatter diff

---
 libc/utils/docgen/docgen.py | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/libc/utils/docgen/docgen.py b/libc/utils/docgen/docgen.py
index 2f772875f2b703..dda51f0f7e69f2 100755
--- a/libc/utils/docgen/docgen.py
+++ b/libc/utils/docgen/docgen.py
@@ -70,8 +70,8 @@ def check_api(header: Header, api: Dict):
         macros = api["macros"]
 
         for name, obj in macros.items():
-            if (not any(k in obj.keys() for k in possible_keys)):
-                err = f'error: Macro {name} does not contain at least one required property: {possible_keys}'
+            if not any(k in obj.keys() for k in possible_keys):
+                err = f"error: Macro {name} does not contain at least one required property: {possible_keys}"
                 errors.append(err)
 
     # Validate functions
@@ -84,8 +84,8 @@ def check_api(header: Header, api: Dict):
 
         fns = api["functions"]
         for name, obj in fns.items():
-          if (not any(k in obj.keys() for k in possible_keys)):
-                err = f'error: function {name} does not contain at least one required property: {possible_keys}'
+            if not any(k in obj.keys() for k in possible_keys):
+                err = f"error: function {name} does not contain at least one required property: {possible_keys}"
                 errors.append(err)
 
     if errors:
@@ -133,9 +133,13 @@ def print_functions_rst(header: Header, functions: Dict):
             print("    -")
 
         if "in-latest-posix" in functions[name]:
-            print(f'    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/{name}.html>`__')
+            print(
+                f"    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/functions/{name}.html>`__"
+            )
         elif "removed-in-posix-2008" in functions[name]:
-            print(f'    - `removed in POSIX.1-2008 <https://pubs.opengroup.org/onlinepubs/007904875/functions/{name}.html>`__')
+            print(
+                f"    - `removed in POSIX.1-2008 <https://pubs.opengroup.org/onlinepubs/007904875/functions/{name}.html>`__"
+            )
         else:
             print("    -")
 
@@ -161,7 +165,9 @@ def print_macros_rst(header: Header, macros: Dict):
             print("    -")
 
         if "in-latest-posix" in macros[name]:
-            print(f'    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/{header.name}.html>`__')
+            print(
+                f"    - `POSIX.1-2024 <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/{header.name}.html>`__"
+            )
         else:
             print("    -")
     print()

>From c595532ecbb747116944cc8500bf7a8a9389e3a6 Mon Sep 17 00:00:00 2001
From: Nick Desaulniers <ndesaulniers at google.com>
Date: Thu, 12 Dec 2024 10:44:40 -0800
Subject: [PATCH 5/5] prefer k in obj over k in obj.keys()

---
 libc/utils/docgen/docgen.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libc/utils/docgen/docgen.py b/libc/utils/docgen/docgen.py
index dda51f0f7e69f2..5355dff3e2a6d9 100755
--- a/libc/utils/docgen/docgen.py
+++ b/libc/utils/docgen/docgen.py
@@ -70,7 +70,7 @@ def check_api(header: Header, api: Dict):
         macros = api["macros"]
 
         for name, obj in macros.items():
-            if not any(k in obj.keys() for k in possible_keys):
+            if not any(k in obj for k in possible_keys):
                 err = f"error: Macro {name} does not contain at least one required property: {possible_keys}"
                 errors.append(err)
 
@@ -84,7 +84,7 @@ def check_api(header: Header, api: Dict):
 
         fns = api["functions"]
         for name, obj in fns.items():
-            if not any(k in obj.keys() for k in possible_keys):
+            if not any(k in obj for k in possible_keys):
                 err = f"error: function {name} does not contain at least one required property: {possible_keys}"
                 errors.append(err)
 



More information about the libc-commits mailing list