)]}'
{
  "log": [
    {
      "commit": "0ec9842b92a1375f78f8a78f24f289d08ae7086e",
      "tree": "efb7f0be6a5a8a79065e909e7fa9803e2378ca86",
      "parents": [
        "6f1e56ff62e8fceaca375e0afe1359458d2a6520"
      ],
      "author": {
        "name": "Pavel Labath",
        "email": "pavel@labath.sk",
        "time": "Fri Oct 23 21:58:55 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 13:02:52 2026 -0700"
      },
      "message": "[libc] Suppress GCC\u0027s \u003cmm_malloc.h\u003e in freestanding builds (#234863)\n\nUnlike Clang, GCC\u0027s \u003cxmmintrin.h\u003e (included via \u003cimmintrin.h\u003e)\nunconditionally includes \u003cmm_malloc.h\u003e even with -ffreestanding, which\nin turn includes \u003cstdlib.h\u003e.\n\nIn full-build mode, targets that use x86 intrinsics (such as op_x86.h)\ndon\u0027t declare a dependency on libc.include.stdlib (and they don\u0027t really\nneed it). If these targets are built before our stdlib.h header is\ngenerated, this will end up including the system stdlib.h -- and fail\nmiserably because of mixing of standard libraries. This can happen\nalready, but the problem gets more acute if we remove (#234150)\ntransitive full-header dependencies from the proxy headers (as it lets\nus build these targets much sooner).\n\nSince we don\u0027t use _mm_malloc or _mm_free, I\u0027m suppressing \u003cmm_malloc.h\u003e\nby defining its include guard (_MM_MALLOC_H_INCLUDED) on x86/x86_64 GCC\nfull builds.\n\nAssisted-by: Gemini\nGitOrigin-RevId: ffea91bfcff6ba858661698311c66dd8618527ce\n"
    },
    {
      "commit": "6f1e56ff62e8fceaca375e0afe1359458d2a6520",
      "tree": "e61ea3745b0b810d71ee7f492b1ba7c7200d96cb",
      "parents": [
        "64f28f00f94f1656b5a103741608b9adabee23b0"
      ],
      "author": {
        "name": "DylanFleming-arm",
        "email": "85629460+DylanFleming-arm@users.noreply.github.com",
        "time": "Fri Oct 23 20:05:58 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 12:14:08 2026 -0700"
      },
      "message": "[libc][mathvec] Add macro for vector PCS (#235009)\n\nAdds LIBC_VECTOR_PCS as a macro to mathvec, which allows target specific\nvector procedure call standards to be added as function attributes, such\nas aarch64_vector_pcs for AdvSIMD.\n\nGitOrigin-RevId: 7baaab1014df6741ebaad32952e26ce5d82f85e3\n"
    },
    {
      "commit": "64f28f00f94f1656b5a103741608b9adabee23b0",
      "tree": "ee922da4e6eaeaa84a1681add3ab19c0aae9e89c",
      "parents": [
        "20c323867ea8e484eebc366c304564a0ecaa23ac"
      ],
      "author": {
        "name": "Prabhu Rajasekaran",
        "email": "prabhukr@google.com",
        "time": "Fri Oct 23 11:43:19 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 11:47:48 2026 -0700"
      },
      "message": "[libc][uefi][NFC] Update file headers to the current format (#235032)\n\nReplace the legacy titled separator comments across the UEFI sources and\ntype headers with the Doxygen file header block. This brings the UEFI\nfiles in line with the current LLVM coding standards.\n\nGitOrigin-RevId: 11445be4b2e9573474a27335c7bcb8aa66e28323\n"
    },
    {
      "commit": "20c323867ea8e484eebc366c304564a0ecaa23ac",
      "tree": "1eb9d6d03f2dc169b8d04dcd3dda9f6e13e5cf41",
      "parents": [
        "0a4b7354e858eb5c00a01449db14e8567d7a6f3d"
      ],
      "author": {
        "name": "Prabhu Rajasekaran",
        "email": "prabhukr@google.com",
        "time": "Fri Oct 23 10:21:24 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 11:47:20 2026 -0700"
      },
      "message": "[libc][uefi] Fix the UEFI exit implementation (#234501)\n\nThe UEFI implementation of `internal::exit()` included a non-existent\n`config/uefi.h` header and referenced a global that only the startup\nobject defined, so the `uefi_util` object library never compiled once\nanything pulled it in.\n\nUse the `AppProperties` captured by `crt1` instead, and hand the exit\nstatus\nto the firmware as a proper `EFI_STATUS`: zero is `EFI_SUCCESS` and any\nother\nvalue is reported as `EFI_ABORTED` rather than being misinterpreted as\nan\nunrelated EFI status or warning code. Drop the unused duplicate globals\nfrom `crt1` accordingly.\n\nAssisted-by: Claude\nGitOrigin-RevId: 1cc8435442c4d7c654cbfdeec52689a80dfabef2\n"
    },
    {
      "commit": "0a4b7354e858eb5c00a01449db14e8567d7a6f3d",
      "tree": "3eff611c7ce789335bba19d4a0dfaba2cc083bf3",
      "parents": [
        "21ee52fc83246bf31ebd9e4861eec9314e4efbf2"
      ],
      "author": {
        "name": "Chen Miao",
        "email": "chenmiao.ku@gmail.com",
        "time": "Sat Oct 24 00:17:23 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 09:22:39 2026 -0700"
      },
      "message": "[libc][stdbit] Support compound literals in type-generic macros (#228721)\n\nCalls such as the following fail because the preprocessor treats the\ncomma in the initializer as a macro argument separator:\n\n``` c\nstruct PairUI { unsigned int first, second; };\nstdc_count_ones((struct PairUI){ 2U, 3U }.first);\n```\n\nUse variadic macros so `__VA_ARGS__` preserves all argument tokens,\nincluding the separating commas, reconstructing the original expression.\n\nFixes #81503.\n\nGitOrigin-RevId: ad2f9ea37af6213588a4289ab12fc2dfba8c5564\n"
    },
    {
      "commit": "21ee52fc83246bf31ebd9e4861eec9314e4efbf2",
      "tree": "28270e0adb9b3d1139e63a0018fa47247b470642",
      "parents": [
        "e183fa1c19bcf6237df35b338957a469a8399fbe"
      ],
      "author": {
        "name": "hulxv",
        "email": "hulxxv@gmail.com",
        "time": "Fri Oct 23 18:26:10 2026 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 08:40:08 2026 -0700"
      },
      "message": "[compiler-rt][builtins] libc-backed float16 extend/truncate builtins (#211882)\n\nadd libc-backed bfloat16 extend/truncate builtins\n\ndepends on:\n   - #209984\n\nPart of #197824\n\nGitOrigin-RevId: 421ef1fb76e9d66c2c781ebf045202bcb5489411\n"
    },
    {
      "commit": "e183fa1c19bcf6237df35b338957a469a8399fbe",
      "tree": "a1799075031ec0bef3f6b68b7e0840bd3d60193f",
      "parents": [
        "a466c5fb6a538c39941899645697764b1e184e23"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Fri Oct 23 10:56:42 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 08:02:22 2026 -0700"
      },
      "message": "[libc][cmake] Fold add_integration_test into add_libc_test and clean up test options. (#234712)\n\n- Add `INTEGRATION_TEST` to `LLVM_LIBC_OPTIONAL_ARGS` in\n`LibcParseArguments.cmake`.\n- Fold `add_integration_test` into `add_libc_test` / `create_libc_test`,\nkeeping `add_integration_test` as a thin convenience wrapper forwarding\n`INTEGRATION_TEST` and `FULL_BUILD_ONLY`.\n- Consolidate `_get_hermetic_test_compile_options_impl` and\n`_get_hermetic_test_compile_options` into\n`_get_common_test_compile_options_impl` and\n`_get_common_test_compile_options`, precomputing mode-aware defaults\nonce at module load time.\n- Precompute `LIBC_COMMON_TEST_LINK_OPTIONS` once via\n`_get_common_test_link_options_impl` and cleanly separate compile\noptions from link options across `create_libc_test` and\n`_link_libc_hermetic_test`, removing `_link_libc_overlay_test`.\n- Explicitly pass `LINK_OPTIONS -mno-wavefrontsize64` and `LINK_OPTIONS\n-mwavefrontsize64` alongside `COMPILE_OPTIONS` in\n`libc/test/integration/startup/gpu/CMakeLists.txt`.\n\nAssisted-by: Gemini\nGitOrigin-RevId: a7b347ec208ad35ca83ad1dd314bea9d0c6c844a\n"
    },
    {
      "commit": "a466c5fb6a538c39941899645697764b1e184e23",
      "tree": "8f208800e3188b10518c826244ef626b84f3cce8",
      "parents": [
        "8319abfa937e53267ebff5a61aa9017a907ac54c"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Fri Oct 23 22:36:36 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 07:42:26 2026 -0700"
      },
      "message": "[libc][math][c23] Fix signed zeros in `tanpif` and `tanpif16` (#230371)\n\nFixes\nhttps://github.com/llvm/llvm-project/pull/147192#issuecomment-5727303853.\n\n- Use shared integer and parity checks to return the correct zero sign\nfor integer inputs.\n- Add regression tests and update CMake and Bazel dependencies.\n\nref: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1946.pdf\nGitOrigin-RevId: 48f56e847fca82700dd4283de183ff0584acecca\n"
    },
    {
      "commit": "8319abfa937e53267ebff5a61aa9017a907ac54c",
      "tree": "a23c9ac7540b6b5fba81e07f2d17a9c9cf917c43",
      "parents": [
        "0ee18adc7fc72effbce640c9bef7e49ebaf16022"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jbailey@raspberryginger.com",
        "time": "Fri Oct 23 15:29:48 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 07:37:09 2026 -0700"
      },
      "message": "[libc][regex] Add bracket expressions and character ranges (#234895)\n\nImplement POSIX bracket expressions in parse_ere, compiling character\nlists, character ranges, and negated sets into canonical ByteSet nodes.\nIn POSIX regular expressions, bracket expressions support literal right\nbrackets when placed first, literal hyphens when placed at the start or\nend of a list, and character range endpoints. Negated bracket\nexpressions must exclude the NUL byte and exclude newlines when\nREG_NEWLINE is specified.\n\nAdd parse_bracket_expr and parse_coll_elem to parse single bytes,\nranges, and collating elements into a 256-bit bitset. This\nimplementation intentionally covers 8-bit byte values and US-ASCII\nranges, with multi-byte UTF-8 range compilation scheduled for a\nsubsequent patch. Enforce POSIX error reporting for unclosed brackets\n(REG_EBRACK), reversed or chained ranges (REG_ERANGE), and unknown\nmulti-character collating symbols outside the POSIX locale\n(REG_ECOLLATE). Guard POSIX character class prefixes with REG_BADPAT\nuntil subsequent class support lands.\n\nExternal compliance suites: Henry Spencer suite passes 116/456 (+45)\nboolean/error cases and 46/456 (+17) full-position cases; AT\u0026T testregex\npasses 71/395 (+17) ERE boolean/error cases and 71/465 (+17) overall\nboolean/error cases with 0 regressions.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 5232f9903b53a45a399a27c1692224290f62c2b3\n"
    },
    {
      "commit": "0ee18adc7fc72effbce640c9bef7e49ebaf16022",
      "tree": "9bed90bd61eb50f5651958e300713181d4b8d620",
      "parents": [
        "bdafa85a06ba1398b1fa8803b21f22c4ee75f76a"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jbailey@raspberryginger.com",
        "time": "Fri Oct 23 15:24:18 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 07:27:33 2026 -0700"
      },
      "message": "[libc] Trap on invalid expected and optional value() (#232812)\n\nStandard std::expected::value and std::optional::value throw an\nexception when no value is present, distinguishing them from unchecked\noperator* access. Because LLVM-libc compiles with -fno-exceptions,\ncpp::expected::value and cpp::optional::value previously behaved\nidentically to operator* and silently read the inactive union member on\nerror or empty states.\n\nGuard value() in both cpp::expected and cpp::optional with a !NDEBUG\ncheck that calls __builtin_trap() when a value is not present. Using\n__builtin_trap() directly avoids a circular header dependency between\nexpected.h, libc_assert.h, and the Linux syscall ErrorOr wrappers while\npreserving constexpr evaluation.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: caf5d0049bdf199ac50118d063c6e84bc9477f7a\n"
    },
    {
      "commit": "bdafa85a06ba1398b1fa8803b21f22c4ee75f76a",
      "tree": "18609502a12fec3ad75071a2e4a2f4608ce7154e",
      "parents": [
        "0e874e4dfcb4d5283b86b807d25248b65fff3652"
      ],
      "author": {
        "name": "Aman Maurya",
        "email": "amanmaurya9209@gmail.com",
        "time": "Fri Oct 23 15:54:35 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 03:27:51 2026 -0700"
      },
      "message": "[libc] Implement timer_getoverrun in time (#234839)\n\n### Summary\nImplement the standard POSIX function `timer_getoverrun` in `\u003ctime.h\u003e`.\n\n- Adds internal Linux syscall wrapper in\n`libc/src/__support/OSUtil/linux/syscall_wrappers/timer_getoverrun.h`.\n- Implements `timer_getoverrun` entrypoint in\n`libc/src/time/linux/timer_getoverrun.cpp`.\n- Declares `timer_getoverrun` in `libc/include/time.yaml`.\n- Registers entrypoints for Linux (`x86_64`, `aarch64`, `riscv`).\n- Adds unit test in `libc/test/src/time/timer_test.cpp`.\n\nImplementing `timer_getoverrun` finishes the POSIX timer API in LLVM\nlibc.\n\nFixes #234067.\n\nGitOrigin-RevId: 48c35e1861f64ff4e42197aa21380b635193e21e\n"
    },
    {
      "commit": "0e874e4dfcb4d5283b86b807d25248b65fff3652",
      "tree": "b0103307f1822f69ee108df248b1b29726682caf",
      "parents": [
        "0f10efff7f781f5ca0045f6be772b4f6a003f85a"
      ],
      "author": {
        "name": "Aman Maurya",
        "email": "amanmaurya9209@gmail.com",
        "time": "Fri Oct 23 14:55:16 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 02:38:06 2026 -0700"
      },
      "message": "[libc] Implement setresuid and setresgid in unistd (#234837)\n\n### Summary\nImplement the standard POSIX / Linux extension functions `setresuid` and\n`setresgid` in `\u003cunistd.h\u003e`.\n\n- Invokes existing internal `setresuid` and `setresgid` Linux syscall\nwrappers.\n- Adds entrypoints under `LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS`\nacross Linux target architectures (`aarch64`, `arm`, `riscv`, `x86_64`),\nmatching the design pattern established for credential-changing\n(`setxid`) entrypoints.\n- Adds `// TODO: Implement setxid propagation across threads.` comments.\n- Adds unit tests in `libc/test/src/unistd/` covering noop (`-1`),\nsetting current real/effective IDs, and unprivileged invalid ID\nbehavior.\n\nFixes #234694.\n\nGitOrigin-RevId: bf0660387fd17e3765d10c3820e68be8554cd7f5\n"
    },
    {
      "commit": "0f10efff7f781f5ca0045f6be772b4f6a003f85a",
      "tree": "1eeddbe8e51649c01b73f846f257ab7109234d99",
      "parents": [
        "cc2e396b4e33d25c0908c9c31315146b6d961c38"
      ],
      "author": {
        "name": "Aman Maurya",
        "email": "amanmaurya9209@gmail.com",
        "time": "Fri Oct 23 14:54:26 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 23 02:35:34 2026 -0700"
      },
      "message": "[libc] Implement sigismember in signal (#234838)\n\n### Summary\nImplement the standard POSIX function `sigismember` in `\u003csignal.h\u003e`.\n\n- Adds internal helper `signals::is_member` returning `ErrorOr\u003cint\u003e` in\n`libc/src/__support/OSUtil/linux/sigmask.h`.\n- Implements the `sigismember` public entrypoint in\n`libc/src/signal/linux/sigismember.cpp`.\n- Declares `sigismember` in `libc/include/signal.yaml` and\n`libc/utils/docgen/signal.yaml`.\n- Registers entrypoints for Linux (`x86_64`, `aarch64`, `riscv`).\n- Adds unit tests in `libc/test/src/signal/sigismember_test.cpp`.\n- Resolves existing TODO in `libc/test/src/ucontext/ucontext_test.cpp`\nby using `sigismember`.\n\nFixes #234066.\n\nGitOrigin-RevId: c70dfc1711bddd0aa7e3acff4224bc2a363092b9\n"
    },
    {
      "commit": "cc2e396b4e33d25c0908c9c31315146b6d961c38",
      "tree": "27455a45349c1e1ec2a211c512dce4a7a20c49a6",
      "parents": [
        "c2082ced182b31cd5e6348b0cd31f6540bdc59db"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jbailey@raspberryginger.com",
        "time": "Fri Oct 23 07:19:18 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 23:23:56 2026 -0700"
      },
      "message": "[libc][regex] Add Kleene star and canonical AST normalisation (#233980)\n\nAdd ExprKind::Star, ExprPool::make_star, and the Kleene star Brzozowski\nderivative rule D_c(R*) \u003d D_c(R) . R* to the internal regular expression\nengine. To guarantee that derivative state spaces stabilise into a\nfinite set of canonical AST nodes during Kleene star evaluation, enforce\nright-associative canonical form in ExprPool::make_concat and\nright-associated, ascending-ExprId, deduplicated canonical form in\nExprPool::make_alt.\n\nUpdate parse_ere to fold concatenated atoms right-to-left in fixed\n64-atom stack chunks so that right-associative concatenation stays O(1)\nper step without creating orphaned intermediate prefix nodes. Wire\ntrailing \u0027*\u0027 quantifiers on repeatable atoms and return REG_BADRPT for\nunpreceded, post-anchor, or doubled repetition operators.\n\nExternal compliance suites: Henry Spencer suite passes 71/456 (+19)\nboolean/error cases and 29/456 (+13) full-position cases; AT\u0026T testregex\npasses 54/395 (+14) ERE boolean/error cases and 54/465 (+14) overall\nboolean/error cases with 0 regressions.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 7550009a0c545bd052ca51ee0bb38b500dd05b24\n"
    },
    {
      "commit": "c2082ced182b31cd5e6348b0cd31f6540bdc59db",
      "tree": "9190bc691e6e9b99d4051c3de6bf8d5978b6a79c",
      "parents": [
        "f18baa3bd6888432558f7318355bdce74602dd10"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Fri Oct 23 13:04:38 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 22:12:54 2026 -0700"
      },
      "message": "[libc][NFC] Split out `is_{, odd_}integer` utility (#234288)\n\nRelates to\nhttps://github.com/llvm/llvm-project/pull/230371/changes#r4327614701.\n\nCommon FP utility like `is_integer` and `is_odd_integer` could be split\nout to reduce duplicate code.\n\nGitOrigin-RevId: 9e03b92211082b3b45f9c147bf12a380ee3cf13e\n"
    },
    {
      "commit": "f18baa3bd6888432558f7318355bdce74602dd10",
      "tree": "9412024cf7098c68503316bd6ef78a3d14f0dd15",
      "parents": [
        "dccd2f476a1c52bbbf6b200550e42e0cc351fc78"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Thu Oct 22 17:58:33 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 15:03:10 2026 -0700"
      },
      "message": "[libc][doc] Add 2026 talks, blog posts and publications. (#234767)\n\nGitOrigin-RevId: 00ad0d281f39165781c7ed658ac592768212f01e\n"
    },
    {
      "commit": "dccd2f476a1c52bbbf6b200550e42e0cc351fc78",
      "tree": "e7e319378f290cc25cb97e5b6bf1e11001127a0a",
      "parents": [
        "25643327cdb657aa1504fb25708796828030a3a4"
      ],
      "author": {
        "name": "sriramshastry",
        "email": "52648132+sriramshastry@users.noreply.github.com",
        "time": "Fri Oct 23 02:40:22 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 14:16:36 2026 -0700"
      },
      "message": "[libc][math] Short-circuit certain powf range errors (#223719)\n\n## Summary\n\nReplace the earlier monolithic powf optimization with a narrowly scoped\nsubnormal-base shortcut on top of the redesigned implementation from\n#226588. The existing shared exceptional handler already covers extreme\nexponents, so the old large-exponent shortcut is not retained.\n\nFor a nonzero subnormal base, its normalization shift proves\n`abs(x) \u003c 2^(-125-shift)`. For positive y, `y*(125+shift) \u003e\u003d 150` proves\nthe magnitude of the result is strictly below `2^-150`. Return through\nthe existing signed underflow helper, after special-input/domain/parity\nhandling. Use an exact double product where hardware double is available\nand an exact unsigned integer comparison otherwise.\n\nAdd smoke coverage for both evaluators and the default entry point,\nincluding directed rounding, negative odd-integer results, the\nhalf-minimum-\nsubnormal boundary, and threshold neighbors. No approximation\ncoefficients\nor accurate-pass logic are changed.\n\n## Base and Correctness\n\nThe replacement local commit is based on main at\n`02d06a29282cf23d3e566de1cff185fb5945a3f1`. The PR source diff is only\ntwo\nfiles and 53 additions.\n\nFresh checks against matching current-main sources:\n\n- Smoke tests: 18/18 passed.\n- Five local configurations: 8,144,640 records, zero mismatches.\n- AArch64 and POWER9-targeted double/float binaries under QEMU:\n  6,515,712 additional records, zero mismatches.\n- Total sampled comparisons: 14,660,352 records across nine\nconfigurations.\n- Comparisons check result bits, errno, and exception flags in all four\n  rounding modes, including pre-existing errno/exception state.\n- Thirty baseline/candidate cross compilations passed: AArch64 generic,\n  Cortex-A55, Neoverse-N1, Zen 3, POWER8/9/10, and float-only RISC-V.\n- An earlier exhaustive predicate comparison checked 192,937,984\n  significand/bound combinations with zero mismatches. The predicate is\n  unchanged; this is not exhaustive powf accuracy testing.\n\nResults were compared against upstream, not an MPFR oracle. Cross-target\nchecks cover compilation and QEMU correctness; PowerPC uses system fenv.\nThe performance results below are from x86-64 runs.\n\n## Performance and Review Status\n\nA standalone six-workload benchmark ran both versions on CPU 0 with the\nsame inputs and build flags, alternating baseline and patched runs for\n21 pairs per workload. The table reports median paired savings: positive\nmeans faster; negative means slower.\n\nTest setup: Intel Core Ultra 9 275HX, WSL. Frequency policy was left\nunchanged.\n\nFresh paired savings against the matching main baseline:\n\n| Workload | Generic Double | Native Double | Native Float |\n| --- | ---: | ---: | ---: |\n| Ordinary | +0.81% | -0.30% | -0.23% |\n| Normal-base underflow | -0.87% | +0.05% | +0.57% |\n| Subnormal-base underflow | +80.07% | +55.41% | +25.38% |\n| Subnormal shortcut miss | -1.67% | -1.16% | -1.10% |\n| Huge exponent | -0.24% | -0.02% | -1.13% |\n| Near one | -3.12% | +0.26% | +0.15% |\n\nReversing the generic link-object order gave -10.84% for ordinary inputs\nand -12.25% near one, while subnormal savings stayed at +79.99%.\nNormal-input\ntimings are sensitive to layout, and these slowdowns still need review.\n\nFocused attempts to address normal-input regressions were rejected:\noutlining improved some normal-input runs but slowed the existing fast\nsubnormal path by approximately 6.5-7%; inlining/alignment changes were\nunstable across link orders. None of those experiments is in this diff.\n\nThe subnormal workload improves substantially, but the normal-input\nregressions remain unresolved. The change is posted for review, not as a\nclaim of consistent gains across workloads or targets.\n\n## Historical Measurements\n\nThe initial PR reported these median savings before the upstream\nredesign:\n\n- Denormal range: 3.53 ns (2.01%).\n- Normal range: 53.13 ns (78.64%).\n- Close-exponent range: 2.95 ns (15.89%).\n\nThose used different PerfTest ranges, an earlier implementation, and\nthree\npaired runs. They are historical results, not current measurements and\nnot directly comparable to the new workloads.\n\nSigned-off-by: sriramshastry \u003csriramshastry@gmail.com\u003e\nGitOrigin-RevId: 8715d0af5f3467948028f4af14c21a70e9f6c952\n"
    },
    {
      "commit": "25643327cdb657aa1504fb25708796828030a3a4",
      "tree": "b9b19ddc77773a43316827c8b909bfa3bfebb2ce",
      "parents": [
        "b95a9396ca83f7254adc357fcbe427e4310df981"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Thu Oct 22 15:42:30 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 12:48:47 2026 -0700"
      },
      "message": "[libc][math] Optimize exp and share double-precision evaluation with exp2. (#233018)\n\n- Refactor double-precision exp to share most of the computations with\nexp2\n- Add support for `LIBC_MATH_HAS_SMALL_TABLES` and\n`LIBC_MATH_HAS_SKIP_ACCURATE_PASS`.\n\nAssisted by: Gemini is used for performance and code size analysis and\nrefactoring.\n\nGitOrigin-RevId: bb31003cf3b64adfa6b6673cbb8b8d0680b9a40b\n"
    },
    {
      "commit": "b95a9396ca83f7254adc357fcbe427e4310df981",
      "tree": "31201c648f4498cd11955fad52a08ea7a8ce1713",
      "parents": [
        "a822cba003927ab8fed2fa8e077a6022091631ab"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Thu Oct 22 15:42:21 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 12:48:20 2026 -0700"
      },
      "message": "[libc] Fix various MSVC compatibility issues. (#233984)\n\n- Some compatibility macros for attributes.\n- Use intrinsics for some inline asm and builtins not available in MSVC.\n- Update some macro detections.\n\nAssisted-by: Gemini\nGitOrigin-RevId: 1ca73f7a54e45410adcd31737f44884c0c118b1a\n"
    },
    {
      "commit": "a822cba003927ab8fed2fa8e077a6022091631ab",
      "tree": "7c122182bac7c1d0ba65779e1ddb4247ef932726",
      "parents": [
        "bfa8ae4981e042f9f6595b91e3153ac1ee0dfe3c"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jbailey@raspberryginger.com",
        "time": "Thu Oct 22 20:17:17 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 12:23:51 2026 -0700"
      },
      "message": "[libc] Add braces around empty body in pipe2 wrapper (#234723)\n\nGCC warns with -Wempty-body when LIBC_MSAN_UNPOISON expands to an empty\nbody inside an unbraced if statement. Enclose the macro invocation in\nbraces to resolve the buildbot compilation failure.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: f2726d0fae1f2b6090c5a1f5a89c1fa1b9cb5af2\n"
    },
    {
      "commit": "bfa8ae4981e042f9f6595b91e3153ac1ee0dfe3c",
      "tree": "9dc168f42f56aa7175cd863c35aa761f7ea3e781",
      "parents": [
        "0a476f0a8c7ea4ad6c4bc5ccd88a05dbd932c2ca"
      ],
      "author": {
        "name": "Reid Kleckner",
        "email": "rkleckner@nvidia.com",
        "time": "Thu Oct 22 10:17:20 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 10:23:05 2026 -0700"
      },
      "message": "[libc][docs] Finish MyST migration for selected libc docs (#233690)\n\nThis migrates the remaining llvm-libc doc files to markdown.\n\nThe main concern I have is that there are still 6 eval-rst blocks\nwrapping grid-tables, and native markdown tables have no way to\nrepresent the colspan and rowspan cells in those files. In the end, I\ndecided to send this off as is, since it should have no visible\ndifference, and we can eliminate eval-rst later.\n\nMigration notes from the agent:\n\n- Restored underscore anchor labels such as `libc_gpu_rpc` because\nrst2myst turned them into hyphenated names that other pages still\nreference.\n- Replaced Markdown links to Sphinx labels with `{ref}` roles because\nplain links did not resolve to the labelled pages.\n- Converted the flat grid tables in `headers/math/index.md` and\n`headers/complex.md` to pipe tables using the `{{ check }}` substitution\nbecause `|check|` is not defined inside `{eval-rst}` blocks.\n- Kept the grid tables with row or column spans in\n`headers/math/index.md`, `headers/math/log.md`, and `headers/stdfix.md`\ninside narrowly scoped `{eval-rst}` blocks because pipe tables and\nlist-tables cannot express spans. Replaced `|check|` in the `stdfix.md`\ntables with the check mark character, which matches the rendered\nsubstitution.\n- Restored the 57 `.. math::` blocks in `headers/math/log.md` as\n`{math}` fences and turned default-role math into `{math}` roles because\nrst2myst collapsed the multi-line equations and `$$` is not enabled.\n- Kept the unused `.. role:: green` and `\u003cstyle\u003e` block in\n`headers/math/index.md` because they were present in the source and\nremoving them is outside the scope of a markup migration.\n- Changed \"step a and step c\" to \"items 1 and 3\" in\n`headers/math/log.md` because Markdown has no alphabetic list markers,\nso the lettered steps became numbered.\n- Accepted single-backtick default-role text rendering as inline code\ninstead of italics in `headers/stdfix.md`, and empty table body cells\nrendering with slightly more height in `uefi/support.md`, because those\nare standard MyST rendering differences (visual diff 0.39% and 0.76%).\n- Accepted nested list items in the \"Edge cases\" list of\n`headers/math/log.md` now rendering inside their list items because the\noriginal reST indentation left them outside, contrary to the evident\nintent (visual diff 0.85%).\n\nTracking issue: #201242\nSee the [migration guide] for more information.\n\n[migration guide]:\nhttps://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines\n\nThis is a stacked PR based on #233687, which is a standalone commit that\nrenames *.rst -\u003e *.md before this PR lands for history preservation\npurposes.\n\nThis was prepared with rst2myst plus LLM-assisted cleanup.\n\nGitOrigin-RevId: bc0cbb451f3547634045c444e064727090cf69fa\n"
    },
    {
      "commit": "0a476f0a8c7ea4ad6c4bc5ccd88a05dbd932c2ca",
      "tree": "4af6144818c0dbd7af604e5440ae71d86acc9a31",
      "parents": [
        "cfe4a25d3c55e623fb9cfec864178e84a9c15fc6"
      ],
      "author": {
        "name": "Reid Kleckner",
        "email": "rkleckner@nvidia.com",
        "time": "Thu Oct 22 10:17:19 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 10:22:13 2026 -0700"
      },
      "message": "[libc][docs] Rename selected rst docs to md (#233687)\n\nTracking issue: #201242\nSee the [migration guide] for more information.\n\n[migration guide]:\nhttps://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines\n\nThis is the initial straight rename commit. It will probably break the\ndocs build, but it has to be a separate PR for blame preservation\npurposes.\n\nGitOrigin-RevId: f101137db0dc84e3db87ec41324e79d053cd9b9a\n"
    },
    {
      "commit": "cfe4a25d3c55e623fb9cfec864178e84a9c15fc6",
      "tree": "2f9621b4d613f32aaff0b680bf0d6da21f41b1cd",
      "parents": [
        "bce5aeed79baef4caaa6a76a04076250de30ec1d"
      ],
      "author": {
        "name": "Michael Jones",
        "email": "michaelrj@google.com",
        "time": "Thu Oct 22 10:12:43 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 10:17:45 2026 -0700"
      },
      "message": "[libc][docs] update docs before dev meeting (#234359)\n\nTweaking documentation on certain build configurations.\n\nGitOrigin-RevId: c41dd6bb2d26ef273d51a7fd69383b5a4857ff06\n"
    },
    {
      "commit": "bce5aeed79baef4caaa6a76a04076250de30ec1d",
      "tree": "03c646a41b4025f1d3f2456544f87b10a1ce397d",
      "parents": [
        "5339b013d941aa8d3df4cf949940806f7745a26e"
      ],
      "author": {
        "name": "Pavel Labath",
        "email": "pavel@labath.sk",
        "time": "Thu Oct 22 18:58:01 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 10:04:05 2026 -0700"
      },
      "message": "Revert \"[libc] Remove full header dependencies from proxy header targets\" (#234668)\n\nReverts llvm/llvm-project#234150 due to breakage on the\n[libc-x86_64-debian-gcc-fullbuild-dbg](https://lab.llvm.org/buildbot/#/builders/131)\nbot. The issue is that GCC\u0027s immintrin.h includes \u003cstdlib.h\u003e before\nwe\u0027ve built our own version, which means GCC ends up parsing the system\nheader, and tripping over inconsistent header state.\n\nI don\u0027t see an obvious fix, so reverting this for the time being.\n\nGitOrigin-RevId: e2c6a9124e96b7e66961707f5e70345757c16d00\n"
    },
    {
      "commit": "5339b013d941aa8d3df4cf949940806f7745a26e",
      "tree": "54962f69a37238b3a203b0ec8a2e9842316b0afb",
      "parents": [
        "a633ddb3a7f6b4a0e4d80f4d4bf423aeb1c0e7c8"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Thu Oct 22 12:43:45 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 09:47:54 2026 -0700"
      },
      "message": "[libc][cmake] Fix test suite names for execlp_test after #234465. (#234678)\n\nGitOrigin-RevId: 7ffa565121558cbc0dbee48e28b129e37e157d04\n"
    },
    {
      "commit": "a633ddb3a7f6b4a0e4d80f4d4bf423aeb1c0e7c8",
      "tree": "18358e2485acdb90043148cb88678ada0860fe8d",
      "parents": [
        "bad85837b760cc745309430659219aa689d08394"
      ],
      "author": {
        "name": "Aman Maurya",
        "email": "amanmaurya9209@gmail.com",
        "time": "Thu Oct 22 21:21:36 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 08:58:20 2026 -0700"
      },
      "message": "[libc] Deduplicate va_list to argv extraction using exec_with_arg_list (#234581)\n\nDeduplicate the `va_list` to `argv` VLA extraction logic across `execl`,\n`execle`, and `execlp` into a shared `internal::exec_with_arg_list`\nhelper in `libc/src/unistd/linux/exec_utils.h`.\n\nFollow-up to #232901 suggested by @labath.\n\nGitOrigin-RevId: 9bded32fa91eaec4598279bf4da33f1bdc66864a\n"
    },
    {
      "commit": "bad85837b760cc745309430659219aa689d08394",
      "tree": "68394797b25537e6f56b543daf78acd192fb7e60",
      "parents": [
        "b1ff575187133383e058e7149c2760dc544a1d97"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Thu Oct 22 11:46:33 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 08:52:50 2026 -0700"
      },
      "message": "[libc][cmake] Unify test suite creation and hierarchy in add_libc_testsuite. (#234465)\n\n- Expand `add_libc_testsuite` to unconditionally create `\u003csuite_name\u003e`\nand `\u003csuite_name\u003e-build` and wire them into `\u003cparent_suite\u003e` and\n`\u003cparent_suite\u003e-build` (defaulting to `libc-tests` unless `ROOT` or\n`PARENT \u003cparent_suite\u003e` is specified).\n- Remove lazy test suite creation.\n- Folding `add_libc_exhaustive_testsuite`,\n`add_libc_long_running_testsuite`, and `add_libc_integration_test_suite`\ninto `add_libc_testsuite`.\n- Consolidate `NO_RUN_POSTBUILD` and exhaustive suites into a single\n`BUILD_ONLY` option across `add_libc_testsuite` and `add_libc_test`,\nnaming executables `*.__build_only__` so Lit ignores them during\n`check-libc` while keeping `\u003cfq_target_name\u003e` runner targets for manual\ninvocation.\n- Migrate all test suite definitions across `libc/test/` and\n`libc/benchmarks/gpu/` to `add_libc_testsuite` and standardize suite\nnames on `libc-*-tests` and `libc-*-integration-tests`.\n\nAssisted-by: Gemini\nGitOrigin-RevId: a5a718d0bafb2126800b0ee0e5ea72355e3fd319\n"
    },
    {
      "commit": "b1ff575187133383e058e7149c2760dc544a1d97",
      "tree": "58196423f5b3e89a69fb71e8eb85f22c133d93cf",
      "parents": [
        "d98fae48a37d5dde46b0fc7f86fa8c1124c08fbc"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Thu Oct 22 23:44:22 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 08:49:39 2026 -0700"
      },
      "message": "[libc] Use a syscall wrapper for `epoll_ctl` (#234572)\n\nThis PR move `epoll_ctl` behind the centralized syscall wrappers,\nfollowing `libc/docs/dev/syscall_wrapper_refactor.md`.\n\nGitOrigin-RevId: 7ece04ab2e0df3e3547118553c05b1925723ceb0\n"
    },
    {
      "commit": "d98fae48a37d5dde46b0fc7f86fa8c1124c08fbc",
      "tree": "d9d5a03dafa1648a6f9faca6e3f2737e677f3b38",
      "parents": [
        "c68b28944aaa4b659464981fe59a2afa9606f093"
      ],
      "author": {
        "name": "Alexey Samsonov",
        "email": "vonosmas@gmail.com",
        "time": "Thu Oct 22 08:14:53 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 08:23:56 2026 -0700"
      },
      "message": "[libc] Expose sys/stat.h mode_t constants in fcntl.h (#234438)\n\nPer POSIX standard, `\u003cfcntl.h\u003e` should provide macro like: `S_IRWXU`\n\n```\nThe \u003cfcntl.h\u003e header shall define the symbolic constants for file modes\nfor use as values of mode_t as described in \u003csys/stat.h\u003e.`\n```\n\nDo this by including internal header with `sys/stat.h` macro values\ninside a similar\ninternal header providing `fcntl.h` macro values. Reflect this in CMake\ndependencies,\nand update unit tests to remove explicit inclusion (assuming that\nfcntl-macros would\nadditionally cover the values from sys-stat-macros).\n\nThis is the path of least resistance. Potentially, we can do a more\nexplicit and precise\ncontrols here - e.g. by extracting all mode_t related macro in a\ndedicated YAML file\n(used as a fragment in both sys/stat.h and fcntl.h) as well as a\ndedicated macro file.\n\nGitOrigin-RevId: 048f11860169fac7fe6d8443c25b4aaddf32b32f\n"
    },
    {
      "commit": "c68b28944aaa4b659464981fe59a2afa9606f093",
      "tree": "982f854bb00ecfc0df7fe125ab18faf318f6943a",
      "parents": [
        "32ff46b7beabf52b56a74f7e4ca7aa8f122ca1d8"
      ],
      "author": {
        "name": "Prabhu Rajasekaran",
        "email": "prabhukr@google.com",
        "time": "Thu Oct 22 06:10:33 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 06:17:15 2026 -0700"
      },
      "message": "[libc][cmake] Respect the configured optimization level for the Linux thread and TLS objects (#234382)\n\nThe `-O3` override on the Linux `thread` object dates from the old\napproach of reading the thread arguments off the new thread\u0027s stack,\nwhich #225384 removed; the `tls` objects copied the same pattern in\n#225418. Neither needs it anymore, so drop the overrides and use the\noptimization level configured by CMake.\n\nAssisted-by: Claude\nGitOrigin-RevId: 60f47a7aa5af49a5a590e6547b80cdd6036eb6b1\n"
    },
    {
      "commit": "32ff46b7beabf52b56a74f7e4ca7aa8f122ca1d8",
      "tree": "6423aeb72d1b7a19c77e7d7d7a9a28392da90d87",
      "parents": [
        "b739c7f6ea61e691c2f1ae338fcbb0218c391b58"
      ],
      "author": {
        "name": "DylanFleming-arm",
        "email": "85629460+DylanFleming-arm@users.noreply.github.com",
        "time": "Thu Oct 22 13:03:18 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 05:08:44 2026 -0700"
      },
      "message": "[libc][mathvec] Vectorise logf (#231190)\n\nReplaces loop over scalar logf with a fully vectorised implementation.\n\nGitOrigin-RevId: e57a96c8e358f266ba2c982e3fbcbba2abfb4304\n"
    },
    {
      "commit": "b739c7f6ea61e691c2f1ae338fcbb0218c391b58",
      "tree": "59eea54112b5d7ca31cb2382636ef654e86c10c7",
      "parents": [
        "34f819e75a2a9c182b86556adaf3314698097800"
      ],
      "author": {
        "name": "Aman Maurya",
        "email": "amanmaurya9209@gmail.com",
        "time": "Thu Oct 22 15:52:44 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 03:28:38 2026 -0700"
      },
      "message": "[libc] Implement execlp in unistd (#232901)\n\nImplement the standard POSIX function `execlp` in `\u003cunistd.h\u003e`.\n\nPart of #232374. Builds on #232008.\n\nAssisted by Antigravity and reviewed by Aman Maurya.\n\nGitOrigin-RevId: 9a91fc93564ff241da49c88ec7c427b48bebf30c\n"
    },
    {
      "commit": "34f819e75a2a9c182b86556adaf3314698097800",
      "tree": "c1ab71e6ced98db0ea50b1b76e7f46a514aa2558",
      "parents": [
        "07809892f6aa5dff7eb5f07941f6da961cddb7e7"
      ],
      "author": {
        "name": "Pavel Labath",
        "email": "pavel@labath.sk",
        "time": "Thu Oct 22 10:28:59 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 22 01:34:04 2026 -0700"
      },
      "message": "[libc] Remove full header dependencies from proxy header targets (#234150)\n\nIn full-build mode, the proxy headers in libc/hdr/types/ only include\nthe granular type headers (include/llvm-libc-types/*.h), not the top-\nlevel public headers (which are only included in overlay mode). Having\nFULL_BUILD_DEPENDS point at libc.include.\u003cheader\u003e was unnecessary and\nforced full header generation before building internal targets that only\nneeded a single type.\n\nSimilarly, the function proxy headers in libc/hdr/func/ only include\ninclude/__llvm-libc-common.h in full-build mode, so I\u0027ve replaced their\ndependency on libc.include.stdlib with libc.include.llvm_libc_common_h.\n\nRemoving these uncovered a few missing or broken dependencies that were\npreviously satisfied transitively:\n- atexithandler_t depended on the non-existent target\nlibc.include.llvm-libc-types.atexithandler_t instead of\nlibc.include.llvm-libc-types.__atexithandler_t (masked by\nlibc.include.stdlib)\n- hsearch_r.h directly included \u003csearch.h\u003e for struct hsearch_data\n(masked by the ACTION and ENTRY proxy headers), which I\u0027ve replaced with\nthe granular struct_hsearch_data.h header\n- faccessat_test, select_ui_test, and select_failure_test directly\nincluded \u003cfcntl.h\u003e and \u003csys/select.h\u003e without declaring dependencies on\nthem (masked by the mode_t and fd_set proxy headers), which I\u0027ve\nswitched to use the corresponding proxy headers\n\nAssisted-by: Gemini\nGitOrigin-RevId: a31ede812af71c660347413af1d55164c5dbde87\n"
    },
    {
      "commit": "07809892f6aa5dff7eb5f07941f6da961cddb7e7",
      "tree": "af67a647290cc75f18052060acf34c4125b277d6",
      "parents": [
        "5c7791dff597dc34471468b25707ae52b23086db"
      ],
      "author": {
        "name": "Sachin 🗲",
        "email": "s4chinjha@gmail.com",
        "time": "Thu Oct 22 07:16:58 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 21 18:52:41 2026 -0700"
      },
      "message": "[libc][docs] Rewrite remaining rst docs to md [2/2] (#233848)\n\nTracking issue:\n[#201242](https://github.com/llvm/llvm-project/issues/201242)\n\nSee the [migration\nguide](https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines)\n\nthis is the second part of migrating the remaining libc utility READMEs\nfrom rst to md\nthe content conversion is provided by this pr, following the rename in\nthe previous pr\n\nDepends on #233817\n\nthe first commit is from the base pr (rename), the second commit\ncontains the content conversion\n\nGitOrigin-RevId: 7021e2e7626d31f655020c2f566f1fe0ac99234a\n"
    },
    {
      "commit": "5c7791dff597dc34471468b25707ae52b23086db",
      "tree": "e56143ba8728cea8a5c042052f65d3a1ba7c96b1",
      "parents": [
        "c7660796614679f254eaab5c645aa2d42a5ce582"
      ],
      "author": {
        "name": "Prabhu Rajasekaran",
        "email": "prabhukr@google.com",
        "time": "Wed Oct 21 18:32:28 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 21 18:36:15 2026 -0700"
      },
      "message": "[libc][cmake] Respect the configured optimization level for tests (#234381)\n\nFollow up to #126322 and #233964 for the test side: the math and stdfix\ntests, `hash_test` and the MPFR/MPC wrappers still force `-O3`. Drop the\noverrides so they use the optimization level configured by CMake like\nthe rest of the library.\n\nAssisted-by: Claude\nGitOrigin-RevId: e21db61afd2e85b9da23906c82f4723e02f236ff\n"
    },
    {
      "commit": "c7660796614679f254eaab5c645aa2d42a5ce582",
      "tree": "90dc11e50dabd36d3b9ac4d514c9e88d6bbff1fd",
      "parents": [
        "889a429d39beeba37831797a2922ba2799d8d73a"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Wed Oct 21 17:48:31 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 21 14:52:03 2026 -0700"
      },
      "message": "[libc][cmake] Unify unit and hermetic test rules into add_libc_test (#233512)\n\n- Consolidate _add_libc_unittest and add_libc_hermetic into mode-aware\nadd_libc_test and create_libc_test rules using llvm_libc_parse_arguments\nand forward_arguments (#232089), keeping add_libc_unittest,\nadd_libc_hermetic, and add_fp_unittest as thin forwarding wrappers.\n- Replace separate libc-unit-tests and libc-hermetic-tests with unified\nlibc-tests and libc-tests-build targets.\n- Introduce add_libc_testsuite to create both \u003csuite\u003e and \u003csuite\u003e-build\ntargets wired into libc-tests and libc-tests-build.\n- Move add_fp_unittest into LLVMLibCTestRules.cmake via the FP_TEST\noption and rename MPFR/MPC helper libraries to follow standard libc\ntarget naming (libc.utils.MPCommon, libc.utils.MPFRWrapper,\nlibc.utils.MPCWrapper).\n- Streamline _add_libc_test_runner: replace $\u003cTARGET_FILE:...\u003e with\nconfigure-time binary paths, fast-path .params generation, and define\ntest runner targets directly via add_custom_target(... COMMAND ...\nJOB_POOL ...) instead of intermediate .cmd stamp rules.\n- Update docs and GPU benchmarks to use the unified test targets and\nrules.\n\nAssisted-by: Gemini\nGitOrigin-RevId: da846c671d18a7cba470c0a0a6d9947450ebbeee\n"
    },
    {
      "commit": "889a429d39beeba37831797a2922ba2799d8d73a",
      "tree": "9afff71896c034fbef0b7f4d3b6e460b2d6517bb",
      "parents": [
        "73c855571e286ade67fe85ba71c278de521301bd"
      ],
      "author": {
        "name": "Aman Maurya",
        "email": "amanmaurya9209@gmail.com",
        "time": "Wed Oct 21 23:56:47 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 21 11:33:47 2026 -0700"
      },
      "message": "[libc] Implement execvpe in unistd (#234071)\n\nImplement `execvpe` in `\u003cunistd.h\u003e` and share the common PATH resolution\nand execution loop with `execvp`.\n\nFixes #234065.\n\nLike `execvp`, `execvpe` duplicates the actions of the shell in\nsearching for an executable file if the specified filename does not\ncontain a slash (`/`), resolving against the directories in the caller\u0027s\n`PATH`. Unlike `execvp`, `execvpe` allows passing an explicit custom\nenvironment (`envp`) to the executed process image rather than using the\nglobal `environ`.\n\nPer POSIX.1-2024 and Linux specifications, `execvpe` searches for the\nprogram using the value of `PATH` from the caller\u0027s environment, not\nfrom the `envp` argument.\n\nChanges:\n- Add `exec_utils.h` containing common `internal::execvpe` logic, and\nrefactor both `execvp` and `execvpe` to use it.\n- Add `execvpe.h` and `linux/execvpe.cpp` entrypoint.\n- Register `execvpe` in `unistd.yaml` under GNU standards and in docgen.\n- Add entrypoints for x86_64, aarch64, and riscv.\n- Add integration tests under\n`libc/test/integration/src/unistd/execvpe_test.cpp`.\nGitOrigin-RevId: c8145b12498e6d34d11a69da289e92edc26462a8\n"
    },
    {
      "commit": "73c855571e286ade67fe85ba71c278de521301bd",
      "tree": "451019c5dbea5400538b2b0a06c0bc03e2f2bb5d",
      "parents": [
        "4da3345e3b4c3690ea4258f5f436f5a2061cd299"
      ],
      "author": {
        "name": "Pavel Labath",
        "email": "pavel@labath.sk",
        "time": "Wed Oct 21 19:16:44 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 21 10:37:45 2026 -0700"
      },
      "message": "[libc] Use sigmask utils in linux thread_exit (#234185)\n\nUse signals::block_all() instead of manually filling a sigset_t with\n0xff and calling rt_sigprocmask. Also drop the now unused includes and\nbuild dependencies.\n\nAssisted-by: Gemini\nGitOrigin-RevId: 762927e26ba131655d86c6dee334693cf81d5010\n"
    },
    {
      "commit": "4da3345e3b4c3690ea4258f5f436f5a2061cd299",
      "tree": "aa808152325269af4105b0100ce0338f16539d8f",
      "parents": [
        "117ffddd6034964baf9c98aa77e7697fdc6929c3"
      ],
      "author": {
        "name": "Pavel Labath",
        "email": "pavel@labath.sk",
        "time": "Wed Oct 21 18:50:10 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 21 09:59:50 2026 -0700"
      },
      "message": "[libc] Implement ether_ntoa and ether_ntoa_r (#233876)\n\nThis adds \u003cnet/ethernet.h\u003e (with struct ether_addr) and\n\u003cnetinet/ether.h\u003e (with ether_ntoa, ether_ntoa_r).\n\nA few implementation notes:\n- following glibc and musl (and the linux man page), octets \u003c 0x10 are\nformatted without a leading zero. This differs from some BSD\nimplementations.\n- like inet_ntoa (but unlike GLIBC), ether_ntoa uses a thread-local\nstatic buffer\n\nAssisted-by: Gemini\nGitOrigin-RevId: f05c112b2e455f62378de6d298b6798648a66941\n"
    },
    {
      "commit": "117ffddd6034964baf9c98aa77e7697fdc6929c3",
      "tree": "fe10426342d202e2b593c3aa1c84ac9018977aca",
      "parents": [
        "a6339512ebbadd3c662a0266182b081a6130cfa6"
      ],
      "author": {
        "name": "Michael Jones",
        "email": "michaelrj@google.com",
        "time": "Wed Oct 21 09:39:12 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 21 09:45:32 2026 -0700"
      },
      "message": "[libc] Fix gcc build for popen (#234041)\n\nThere were gcc failures after #232846 added popen/pclose. This PR fixes\nthem. Specifically gcc 12 didn\u0027t like the custom `delete` and was\nconfused by `MSAN_UNPOISON` expanding to nothing.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 09cc96a0fd4697819e9d20c9f99eadb4a8221cf6\n"
    },
    {
      "commit": "a6339512ebbadd3c662a0266182b081a6130cfa6",
      "tree": "ffb2fc5faa359711ea4d772b034da43cef3cec37",
      "parents": [
        "2b83cef710cfdfd305b9d1a918130f7fc85ab464"
      ],
      "author": {
        "name": "Alexey Samsonov",
        "email": "vonosmas@gmail.com",
        "time": "Wed Oct 21 09:26:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 21 09:38:46 2026 -0700"
      },
      "message": "[libc] Add sys/eventfd.h header and eventfd function. (#234028)\n\nAdd the Linux `\u003csys/eventfd.h\u003e` header to LLVM-libc. This header\nprovides an event\nwait/notify mechanism for user-space applications that relies on the\nkernel-controlled\ncounter. See https://man7.org/linux/man-pages/man2/eventfd.2.html for\nmore details.\n\nProvide the header on various Linux platforms. Implement the `eventfd()`\nAPI as a\nregular syscall wrapper. Don\u0027t add the GNU-specific `eventfd_t` and\n`eventfd_(read|write)`\nhelpers yet.\n\nAdd the unit test that validates the basic functionality (confirms that\nthe counter value can be `read` from the returned descriptor).\n\nAssisted by: Gemini\n\nGitOrigin-RevId: 1281047d41c09a63f75fc3f252c5f0e671cd1718\n"
    },
    {
      "commit": "2b83cef710cfdfd305b9d1a918130f7fc85ab464",
      "tree": "992b6f2c376a964f9a69cc79c8ac9b5ff852dfff",
      "parents": [
        "f4afd3d05719608ffa6852b511fa4b1893be5b64"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Wed Oct 21 20:35:23 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 21 05:45:12 2026 -0700"
      },
      "message": "[libc] Use a syscall wrapper for `getcpu` (#234157)\n\nThis PR move `getcpu` behind the centralized syscall wrappers, following\n`libc/docs/dev/syscall_wrapper_refactor.md`.\n\nGitOrigin-RevId: 4e49fc5562a5faa081dbf6e2a8bdaac85d1db2bc\n"
    },
    {
      "commit": "f4afd3d05719608ffa6852b511fa4b1893be5b64",
      "tree": "b80d3833a39c047d61cf482085af12225c86d50a",
      "parents": [
        "8ad1918f5d966c11312273c717e3781092aaeaf4"
      ],
      "author": {
        "name": "Pavel Labath",
        "email": "pavel@labath.sk",
        "time": "Wed Oct 21 11:20:15 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 21 02:29:48 2026 -0700"
      },
      "message": "Reland \"[libc] Implement cpp::unique_ptr utility\" (#233800)\n\nThis patch reapplies #206701 (reverted in #212644 due to failures on the\nasan bots). The asan failures (allocation mismatches) are fixed by\nchanging the test to use new(AllocChecker) for allocating memory.\n\nThe original commit message was:\n\nImplemented cpp::unique_ptr and cpp::default_delete in\nlibc/src/__support/CPP/unique_ptr.h for internal use within LLVM-libc.\n\n* Added cpp::default_delete and its array specialization.\n* Implemented cpp::unique_ptr with support for custom deleters and\n  array specialization.\n* Applied LIBC_TRIVIAL_ABI to unique_ptr and LIBC_NO_UNIQUE_ADDRESS to\nthe\n  deleter to enable empty member optimization and register-passing ABI.\n* Defined portable LIBC_NO_UNIQUE_ADDRESS and LIBC_TRIVIAL_ABI macros in\n  attributes.h.\n* Included is_assignable.h in type_traits.h to support conversion\n  assignment constraints.\n* Modernized template constraints using enable_if_t and\nis_convertible_v.\n* Added comprehensive unit tests in\nlibc/test/src/__support/CPP/unique_ptr_test.cpp, including coverage for\n  reset sequencing, custom deleters, and conversion constructors.\n\nThis is a simplified implementation with the following limitations:\n* No support for custom pointer types (hardcoded to T*).\n* No support for reference deleter types or array conversion.\n\nAdding this to LLVM libc because some things (like regex) require\ndynamic\nmemory allocation, and this will help with correct memory management.\n\nAssisted-by: Automated tooling, human reviewed.\n\n---------\n\nCo-authored-by: Jeff Bailey \u003cjbailey@raspberryginger.com\u003e\nGitOrigin-RevId: 1bb06d275e73291c19117e03e3406508fed88b7a\n"
    },
    {
      "commit": "8ad1918f5d966c11312273c717e3781092aaeaf4",
      "tree": "2881f17f54ae9c394867c1dfacf6cc6bc7445fd8",
      "parents": [
        "06b9b05957dad877611715e4568c3bbd4895fa75"
      ],
      "author": {
        "name": "Aman Maurya",
        "email": "amanmaurya9209@gmail.com",
        "time": "Wed Oct 21 13:11:29 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 21 00:49:51 2026 -0700"
      },
      "message": "[libc] Add 32-bit fallback syscall branches to UID/GID syscall wrappers (#233926)\n\nAdd 32-bit fallback branches (SYS_*32) to existing Linux syscall\nwrappers for:\n- setuid (SYS_setuid32)\n- setgid (SYS_setgid32)\n- setreuid (SYS_setreuid32)\n- setregid (SYS_setregid32)\n- getegid (SYS_getegid32)\n- lchown (SYS_lchown32)\n\nThis matches the pattern used in setgroups, setresuid, and setresgid on\n32-bit Linux architectures.\n\nFollow-up requested by @labath in #233088.\n\nGitOrigin-RevId: fed211c06757833650582eabd215a82dd4718cb6\n"
    },
    {
      "commit": "06b9b05957dad877611715e4568c3bbd4895fa75",
      "tree": "2b02170be28f2d86f3c81eb4b5a30729dbdd694d",
      "parents": [
        "3d1c49868555b6b2fd8c78c6e724c001a2b8698f"
      ],
      "author": {
        "name": "Michael Jones",
        "email": "michaelrj@google.com",
        "time": "Tue Oct 20 16:32:10 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 16:36:38 2026 -0700"
      },
      "message": "[libc] implement popen/pclose (#232846)\n\nThis is a deceptively complex set of functions. They need to have\ntheir own FILE subclass to track the PID of the child process and a list\nof other open files specifically for popen. I also ended up refactoring\n`system` since it shares the fork-and-shell mechanism. The POSIX\ndefinition is here:\nhttps://pubs.opengroup.org/onlinepubs/9799919799/functions/popen.html\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: c759b57a74deef4f1c1614715230ee7eef5c4a9a\n"
    },
    {
      "commit": "3d1c49868555b6b2fd8c78c6e724c001a2b8698f",
      "tree": "041884790e290b2e217704915e8e7365dabae4e9",
      "parents": [
        "b2ed85161173b2c607fa705d960ecda0f01a4eeb"
      ],
      "author": {
        "name": "Prabhu Rajasekaran",
        "email": "prabhukr@google.com",
        "time": "Tue Oct 20 16:23:08 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 16:28:42 2026 -0700"
      },
      "message": "[libc][cmake] Respect the configured optimization level for math and stdfix entrypoints (#233964)\n\n#126322 stopped the math entrypoints from forcing `-O3` so they use the\noptimization level configured by CMake. A few entrypoints were missed\n(`sinf16`) or added later with the old pattern (the `stdfix` `bits*`,\n`countls*`, `idiv*`, `*divi` and `divi*` functions). Drop those\nremaining overrides too.\n\nGitOrigin-RevId: d12b8d77140658a04d5090c97853e2242165747a\n"
    },
    {
      "commit": "b2ed85161173b2c607fa705d960ecda0f01a4eeb",
      "tree": "d608aefab877608799b6fc3d1dca7f50d419a379",
      "parents": [
        "2bec18dd5e98ea36a254f34164f66323f0b54a2f"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Tue Oct 20 16:17:53 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 13:25:26 2026 -0700"
      },
      "message": "[libc][math] Add integer-only implementation for exp2f. (#233177)\n\n- Correctly rounded to all rounding mode (statically).\n- Share core computations with expf integer-only static-rounding version\n- Optimize for code size.\n- Based on top of https://github.com/llvm/llvm-project/pull/233118\n\nAssisted-by: Gemini for analysis and refactoring.\nGitOrigin-RevId: 7be7bc433d53d42f7af83c9949cf6f65078602bb\n"
    },
    {
      "commit": "2bec18dd5e98ea36a254f34164f66323f0b54a2f",
      "tree": "fbb5df5e8f30d4a7d55d8ab1a089dbd913b6e5f5",
      "parents": [
        "9a2060be90ea83e8af76d321f279b2b0b915ad66"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Tue Oct 20 16:17:53 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 13:24:23 2026 -0700"
      },
      "message": "[libc][math] Optimize integer-only expf and factor out shared utilities. (#233118)\n\n- Optimize `expf_integer_eval` for both code size and performance.\n- Factor out the shared range reduction and `2^u` fixed point evaluation\nto be used by `exp2f` and `exp10f` integer-only versions.\n\nAssisted-by: Gemini for analysis and refactoring.\nGitOrigin-RevId: b8434423e8f098e9a8de3135e7ba8b741144d2ff\n"
    },
    {
      "commit": "9a2060be90ea83e8af76d321f279b2b0b915ad66",
      "tree": "9807be38b3349f03d387bb8836f827d4931b0b13",
      "parents": [
        "f42ce844605d9f45c718ce8b57e8706af853f361"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jbailey@raspberryginger.com",
        "time": "Tue Oct 20 20:18:37 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 12:22:04 2026 -0700"
      },
      "message": "[libc][regex] Add \u0027^\u0027 and \u0027$\u0027 anchors and line flags (#233780)\n\nBeginning-of-line (\u0027^\u0027) and end-of-line (\u0027$\u0027) assertions depend on the\nsurrounding fencepost context (string boundaries, newlines under\nREG_NEWLINE, and execution flags REG_NOTBOL and REG_NOTEOL) rather than\nconsuming input characters.\n\nAdd ExprKind::Anchor with AnchorKind bitmasks (ANCHOR_BOL and\nANCHOR_EOL) stored in Expr::anchor_mask, and pack a has_anchors bitfield\nalongside nullable so sizeof(Expr) remains 16 bytes and unanchored\nsubtrees keep O(1) nullability checks. Evaluate context-aware\nnullability at each fencepost in derivative and match, enable\nREG_NEWLINE in regcomp and REG_NOTBOL and REG_NOTEOL in regexec, and\nguard RegexInternal cleanup with cpp::scope_exit.\n\nAgainst the external compliance suites in REG_NOSUB mode, this passes\n52/456 tests (+31) in the Henry Spencer suite and 40/202 ERE tests (+15)\nin Glenn Fowler\u0027s AT\u0026T testregex basic.dat suite.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 46f82b5bf8b2ef1a318ee1f9f577ba56745afcb1\n"
    },
    {
      "commit": "f42ce844605d9f45c718ce8b57e8706af853f361",
      "tree": "c25a6596144ce0d8dbcd30c448ee2b81466286ad",
      "parents": [
        "841ecae36ab715d26a31ab1ad579a16c37be431b"
      ],
      "author": {
        "name": "Nathan Cornaud",
        "email": "ncornaud@gmail.com",
        "time": "Tue Oct 20 21:14:10 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 12:18:14 2026 -0700"
      },
      "message": "[libc][printf] Fix %s precision handling (#233098)\n\nThis fixes an issue where the string converter for `%s` attempts to\nretrieve the string length of the argument by climbing to the\nnull-terminator regardless of precision, even tho if a precision is\nspecified the null-terminator isn\u0027t mandatory.\n\nNow, the string length is calculated up to the null-terminator only if\nno precision is specified, otherwise the length calculation is capped up\nto the precision.\n\nA test is added for %s conversion with a specified precision, checking\nif it correctly formats a non-null-terminated input string when the\ninput contains at least the required number of characters.\n\nHowever, it is important to note that this test does not guarantee that\nthe out-of-bounds bug will not reoccur, as detecting it would require\nrunning the test under ASan, and the bug itself may not be reproducible\ndeterministically.\n\nFixes #230110  .\n\nGitOrigin-RevId: d585eb475e90bd53e4d760e1bf30f476ca65fa38\n"
    },
    {
      "commit": "841ecae36ab715d26a31ab1ad579a16c37be431b",
      "tree": "48c610455e1e5e9b98c3da31f7d24ca5cd495e91",
      "parents": [
        "ce41bcdf144f63ac12e06fa4da983b71528e7cc7"
      ],
      "author": {
        "name": "Prabhu Rajasekaran",
        "email": "prabhukr@google.com",
        "time": "Tue Oct 20 09:40:56 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 09:47:27 2026 -0700"
      },
      "message": "Revert \"[libc] Keep __restrict on the Cortex-M memcpy for MVE targets\" (#233903)\n\nReverts llvm/llvm-project#233575\n\nGitOrigin-RevId: a080750a1e8b5b93f7a93dd6df88ce9b1e3a4fe0\n"
    },
    {
      "commit": "ce41bcdf144f63ac12e06fa4da983b71528e7cc7",
      "tree": "8e739d9dd4b9f8807ef6a7e4b62da20bdb7c690e",
      "parents": [
        "4a4ad164bd7b79260dcdc345c8bbacf1cf033eda"
      ],
      "author": {
        "name": "Aman Maurya",
        "email": "amanmaurya9209@gmail.com",
        "time": "Tue Oct 20 20:30:18 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 08:09:16 2026 -0700"
      },
      "message": "[libc] Implement seteuid and setegid in unistd (#233088)\n\nImplement the standard POSIX functions `seteuid` and `setegid` in\n`\u003cunistd.h\u003e`.\n\nFixes #232380.\n\nAssisted by Antigravity and reviewed by Aman Maurya.\n\nGitOrigin-RevId: f68ff0be52cd2c42bbf89ed4bbb71ee1447e86c6\n"
    },
    {
      "commit": "4a4ad164bd7b79260dcdc345c8bbacf1cf033eda",
      "tree": "8a9069deb93ba39e911985f12af8346a03522cf5",
      "parents": [
        "15a63d3df179f39e320cba7f74d940c364bab057"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Tue Oct 20 10:27:06 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 07:34:52 2026 -0700"
      },
      "message": "[libc] Add floating-point bitwise operations to FPUtil. (#233168)\n\nAdd `fp_and`, `fp_or`, `fp_xor`, `fp_andnot`, and `fp_not` to\n`src/__support/FPUtil/fp_bitwise.h` to perform bitwise operations on\nfloating-point values directly in FP/SIMD registers when SSE2 or AArch64\nNEON is available, avoiding GPR round-trips.\n\nGitOrigin-RevId: d6d3ea45e4445d7c5adf7f58acae2962b9af2fd3\n"
    },
    {
      "commit": "15a63d3df179f39e320cba7f74d940c364bab057",
      "tree": "70c97293c18bb8c58fddf63b4b50f9e83a50ede5",
      "parents": [
        "df4781f20c3b8ef22e181caa7d2bf2514659e304"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jbailey@raspberryginger.com",
        "time": "Tue Oct 20 14:33:35 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 06:39:39 2026 -0700"
      },
      "message": "[libc] Add remaining \u003clibintl.h\u003e gettext stubs (#233838)\n\nAdded stateless stubs for dgettext, dgettext_l, dcgettext, dcgettext_l,\nngettext, ngettext_l, dngettext, dngettext_l, dcngettext, and\ndcngettext_l behind LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS,\ncompleting the 15 POSIX.1-2024 \u003clibintl.h\u003e entrypoints.\n\nIn the \"C\" locale, POSIX requires the dgettext and dcgettext families to\nreturn the input msgid pointer unchanged and the ngettext, dngettext,\nand dcngettext families to return msgid1 when n \u003d\u003d 1 and msgid2\notherwise, without modifying errno.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 20aa537f9e992f83e07a2a91a66309cdb0bdf689\n"
    },
    {
      "commit": "df4781f20c3b8ef22e181caa7d2bf2514659e304",
      "tree": "f49453e954d1cf9a6ad2a39e5959eb74b13c75d1",
      "parents": [
        "a6a235fc071cbb1724bddb0f3da249c0e62cdc90"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jbailey@raspberryginger.com",
        "time": "Tue Oct 20 13:42:13 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 05:50:41 2026 -0700"
      },
      "message": "[libc] Add gettext and gettext_l stubs (#233603)\n\nAdded stateless stubs for gettext and gettext_l behind\nLLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS. In the \"C\" locale, POSIX\nrequires the gettext family to return the input msgid pointer unchanged\nwithout modifying errno.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 9678fe791604788352fb1f1f0f8a878022e6aefc\n"
    },
    {
      "commit": "a6a235fc071cbb1724bddb0f3da249c0e62cdc90",
      "tree": "c319747e364d1a8fb4c64508b848ba5e19040d26",
      "parents": [
        "b1e551ed9bdea479b93418dffb2acd0831dd5f6c"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Tue Oct 20 20:05:05 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Oct 20 05:13:45 2026 -0700"
      },
      "message": "[libc] Use a syscall wrapper for `sched_get_priority_max` (#233792)\n\nThis PR move `sched_get_priority_max` behind the centralized syscall\nwrappers, following `libc/docs/dev/syscall_wrapper_refactor.md`.\n\nGitOrigin-RevId: 28c76abc6b1722c04fb19860049800c3b4572a5e\n"
    },
    {
      "commit": "b1e551ed9bdea479b93418dffb2acd0831dd5f6c",
      "tree": "510896c2b9832e6cf50cd5bba273f4f4de6bf2e0",
      "parents": [
        "be03bba7ee28a4e7f1733946c49ce27de73a5e69"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jbailey@raspberryginger.com",
        "time": "Tue Oct 20 07:52:37 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 19 23:58:30 2026 -0700"
      },
      "message": "[libc][regex] Add 256-bit ByteSet and \u0027.\u0027 wildcard (#233561)\n\nRepresenting wildcards and bracket expressions as a 256-way alternation\nof Literal nodes would exhaust ExprPool and blow up derivative step\ntime. At the same time, storing a 32-byte cpp::bitset\u003c256\u003e inline inside\nExpr would increase every AST node from 16 bytes to 40 bytes.\n\nAdd ExprKind::ByteSet backed by a deduplicated cpp::span\u003cByteSet\u003e\nside-table in ExprPool, keeping sizeof(Expr) at 16 bytes. Normalise\n0-bit and 1-bit sets in ExprPool::make_byte_set to EmptySet and Literal\nso single-byte character classes share the same canonical AST node as\nplain literals, and wire the \u0027.\u0027 wildcard in parse_ere and derivative.\nAlso simplify BucketProber and the ExprPool lazy-initialisation guards.\n\nAgainst the external compliance suites in REG_NOSUB mode, this passes\n21/456 tests (+1) in the Henry Spencer suite and 25/202 ERE tests (+3)\nin Glenn Fowler\u0027s AT\u0026T testregex basic.dat suite.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 4c407e843c975298b6892d50afd9e72cfb0cbe46\n"
    },
    {
      "commit": "be03bba7ee28a4e7f1733946c49ce27de73a5e69",
      "tree": "e0516a0936daf3a2caa51c69c56e99485be33924",
      "parents": [
        "4bae8fe559a9b0a035b170eaf7ed7988d3bf76ae"
      ],
      "author": {
        "name": "Prabhu Rajasekaran",
        "email": "prabhukr@google.com",
        "time": "Mon Oct 19 23:16:19 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 19 23:19:03 2026 -0700"
      },
      "message": "[libc] Keep __restrict on the Cortex-M memcpy for MVE targets (#233575)\n\nWith #226955 the SLP vectorizer versions the Cortex-M memcpy copy loops\nwith runtime alias checks on MVE targets (270 -\u003e 412 bytes on\nCortex-M55).\nKeeping __restrict on MVE targets lets it vectorize without versioning\n(222 bytes). Non-MVE targets are unchanged.\n\nFixes #233426\n\nGitOrigin-RevId: c3b7d6f983cc280f17d7d269b812d2fe83539f6a\n"
    },
    {
      "commit": "4bae8fe559a9b0a035b170eaf7ed7988d3bf76ae",
      "tree": "5bd8114af067a9f9347c04851db0bc5cf71e8fe8",
      "parents": [
        "a32a22dab44a476a8c177945636734a1fa41455a"
      ],
      "author": {
        "name": "Michael Jones",
        "email": "michaelrj@google.com",
        "time": "Mon Oct 19 10:51:43 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 19 10:59:39 2026 -0700"
      },
      "message": "[libc] implement execvp (#232008)\n\nSlightly more complex than a normal syscall wrapper. This also needs to\nsearch the PATH.\n\nDescribed by POSIX:\nhttps://pubs.opengroup.org/onlinepubs/9799919799/functions/exec.html\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: a83ae25f7d923614e33073879d3f5beea53e0592\n"
    },
    {
      "commit": "a32a22dab44a476a8c177945636734a1fa41455a",
      "tree": "325bed0cf299d159b3a1220304889898947f1d88",
      "parents": [
        "ad9f5905b09a95be72fd755d32856c43f993b220"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jbailey@raspberryginger.com",
        "time": "Mon Oct 19 16:47:12 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 19 08:53:16 2026 -0700"
      },
      "message": "[libc][regex] Add ERE literal parser and flag guards (#233045)\n\nIntroduce regex::parse_ere in\nlibc/src/__support/regex/regex_parser.{h,cpp} to parse Extended Regular\nExpression (ERE) literal sequences and backslash escape sequences into\nExprPool, returning REG_EESCAPE on a trailing backslash.\n\nTo avoid silently mis-matching patterns that use syntax or flags not yet\nwired up, return REG_BADPAT when regcomp or regexec receives\nunimplemented flags (BRE mode, REG_ICASE, REG_NEWLINE, REG_NOSPEC, or\nnon-zero eflags) or when parse_ere encounters unimplemented ERE\nmetacharacters or special escapes. Each metacharacter and flag will be\nenabled as its implementation lands.\n\nAgainst the external compliance suites in REG_NOSUB mode, this passes\n20/456 tests in the Henry Spencer suite (+8 new ERE escape tests; -55\nfalse-positive NOMATCH/BRE/flag passes removed by the REG_BADPAT guards)\nand 22/202 ERE tests in Glenn Fowler\u0027s AT\u0026T testregex basic.dat suite\n(+10 new ERE tests).\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: e33d0abccf654de354aeb4a8dcd8ef1778348515\n"
    },
    {
      "commit": "ad9f5905b09a95be72fd755d32856c43f993b220",
      "tree": "1be905227a12967240a198479c9e9dedf99bd76c",
      "parents": [
        "c66c6fe3fafad4c506c2db5aea6a1466db81b2f2"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Mon Oct 19 21:40:00 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 19 06:49:24 2026 -0700"
      },
      "message": "[libc] Use a syscall wrapper for `sched_get_priority_min` (#233409)\n\nThis PR move `sched_get_priority_min` behind the centralized syscall\nwrappers, following `libc/docs/dev/syscall_wrapper_refactor.md`.\n\nGitOrigin-RevId: 3546bc68b3b37d6554e13a84540845444ff5774f\n"
    },
    {
      "commit": "c66c6fe3fafad4c506c2db5aea6a1466db81b2f2",
      "tree": "0eb83313da7e3239cc3c3f44d740fe69e274291e",
      "parents": [
        "4249f09e15e07774d406f60f13bef301825c832c"
      ],
      "author": {
        "name": "Pavel Labath",
        "email": "pavel@labath.sk",
        "time": "Mon Oct 19 15:32:45 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 19 06:39:29 2026 -0700"
      },
      "message": "[libc] Move setxid entrypoints to experimental (#233416)\n\nPOSIX requires functions that change credentials (setuid, setgid,\nsetreuid, setregid, setgroups, initgroups) to affect all threads in a\nprocess. On Linux, the underlying kernel syscalls operate per-thread.\nPropagating these changes across all threads requires setxid signal\nmachinery, which we do not have yet.\n\nMove these entry points to experimental on Linux targets and add a TODO\nto their implementations.\n\nAssisted-by: Gemini\nGitOrigin-RevId: 90205f687276acf6e864d33424fec647173e05c9\n"
    },
    {
      "commit": "4249f09e15e07774d406f60f13bef301825c832c",
      "tree": "e3d66ad6600585e1bb15dde90eb23a8b4290f4ca",
      "parents": [
        "cc62dbf8e438287115896c7953b762a500fd93e8"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jbailey@raspberryginger.com",
        "time": "Mon Oct 19 13:14:04 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 19 05:18:05 2026 -0700"
      },
      "message": "[libc] Add bindtextdomain and bind_textdomain_codeset stubs (#232711)\n\nAdded stateless stubs for bindtextdomain and bind_textdomain_codeset\nbehind LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS. Both functions return\nnullptr without modifying errno when given a null or empty domain name,\nand return \"/usr/share/locale\" (for bindtextdomain) or nullptr (for\nbind_textdomain_codeset) when queried with a null setting argument.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 0270b3a868cd9b3557ebe52af29c423ffc398870\n"
    },
    {
      "commit": "cc62dbf8e438287115896c7953b762a500fd93e8",
      "tree": "b6fa26b7ffd521304ce86753cfeae885b5a0f0d0",
      "parents": [
        "07e76f1cb14ca1559abf89ce327d4e23686a8c96"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Mon Oct 19 19:23:35 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Oct 19 04:31:29 2026 -0700"
      },
      "message": "[libc] Use a syscall wrapper for `sched_getcpu` (#233011)\n\nThis PR move `sched_getcpu` behind the centralized syscall wrappers,\nfollowing `libc/docs/dev/syscall_wrapper_refactor.md`.\n\nGitOrigin-RevId: 22b9d12f9cc2cdb83ab2269c4cac2454c64c7c47\n"
    },
    {
      "commit": "07e76f1cb14ca1559abf89ce327d4e23686a8c96",
      "tree": "9abaa64227e22bbe023966f30dabfdc00ec428e0",
      "parents": [
        "441e70630da529006820e142d4d4250a407e0783"
      ],
      "author": {
        "name": "quic-k",
        "email": "kushpal@qti.qualcomm.com",
        "time": "Mon Oct 19 09:23:02 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Oct 18 20:56:25 2026 -0700"
      },
      "message": "[libc] Add Kushal Pal(quic-k) as the maintainer for Hexagon (#232009)\n\n@michaelrj-google @androm3da\nHexagon port for libc merged\nhttps://github.com/llvm/llvm-project/pull/217528\n\nSigned-off-by: Kushal Pal \u003ckushpal@qti.qualcomm.com\u003e\nCo-authored-by: Brian Cain \u003cbrian.cain@oss.qualcomm.com\u003e\nGitOrigin-RevId: 85f4557bfe2cf98fdfd0f1570803081643cc7859\n"
    },
    {
      "commit": "441e70630da529006820e142d4d4250a407e0783",
      "tree": "a2a6cb2f54a88c7439cbf0256ce9c234a450fdfe",
      "parents": [
        "ab34d484f25ff228d4b18e31fa4b8182f17d7c04"
      ],
      "author": {
        "name": "Prabhu Rajasekaran",
        "email": "prabhukr@google.com",
        "time": "Sun Oct 18 13:41:27 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Oct 18 13:46:44 2026 -0700"
      },
      "message": "[libc][math] Add float-only implementation of tanf (#233046)\n\nReorganize tanf in the same way as sinf and cosf (#226529):\nsrc/__support/math/tanf.h now selects the implementation, and\ntanf_\u003ctype\u003e_eval.h implements tanf with \u003ctype\u003e as the intermediate\ncomputational type. The existing implementation moves unchanged to\ntanf_double_eval.h.\n\nThe new float-only implementation in tanf_float_eval.h is selected\nunder the same conditions as sinf/cosf float_eval:\nLIBC_MATH_SKIP_ACCURATE_PASS, LIBC_MATH_SMALL_TABLES or\nLIBC_MATH_INTERMEDIATE_COMP_IN_FLOAT, and FMA. It reuses the float range\nreduction and the SIN_K_PI_OVER_8 table from sincosf_float_eval.h and\ncomputes:\n\n  tan(x) \u003d (sin_k + cos_k * tan(y)) / (cos_k - sin_k * tan(y)),\n\nwith x \u003d k * pi/8 + y, |y| \u003c\u003d pi/16, and tan(y) approximated by a\ndegree-9\nodd Taylor polynomial (relative truncation error \u003c 2^-30). Cancellation\ncan only happen when k \u003d 0 or 4 (mod 8), where sin_k or cos_k is exactly\nzero.\n\nWith this change, tanf no longer pulls in the double-precision\nlarge_range_reduction and the 512-byte SIN_K_PI_OVER_32 table when the\nfloat implementations are selected, so it shares the reduction tables\nwith sinf/cosf. For x86-64 with FMA and\nLIBC_MATH_SKIP_ACCURATE_PASS | LIBC_MATH_SMALL_TABLES |\nLIBC_MATH_INTERMEDIATE_COMP_IN_FLOAT, the tanf object goes from 1391 to\n1029 bytes standalone (288 bytes of which are tables shared with\nsinf/cosf).\n\nAccuracy: the maximum error of the float implementation, checked\nexhaustively in round-to-nearest mode against MPFR, is 3.37 ULP, which\nis\nwithin the 3.5 ULP bound used for sinf/cosf float_eval. The unit and\nexhaustive tests now exercise both implementations independently of the\nconfigured selector.\n\nAssisted-by: Gemini\nGitOrigin-RevId: 6dc0f5465be924fdd2ceaf9a6e995923aaabd03f\n"
    },
    {
      "commit": "ab34d484f25ff228d4b18e31fa4b8182f17d7c04",
      "tree": "a6979cd2d3a35afd07d7b4ea8bf5b14ee49fd402",
      "parents": [
        "1ca5cfe0a2cfd8a3853505a3800805f525890020"
      ],
      "author": {
        "name": "Aman Maurya",
        "email": "amanmaurya9209@gmail.com",
        "time": "Sun Oct 18 12:11:57 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat Oct 17 23:47:10 2026 -0700"
      },
      "message": "[libc][fuzzing] Re-enable math fuzzing with internal headers (#231744)\n\nRe-enable math fuzzing after header inclusion decoupling.\n\n- Replace `\u003cmath.h\u003e` with `\"hdr/math_function_macros.h\"` across math\nfuzzers and add CMake dependencies.\n- Re-enable `add_subdirectory(math)` in `libc/fuzzing/CMakeLists.txt`.\n- Forward `LINK_LIBRARIES` in `add_libc_fuzzer`.\n- Skip comparing unspecified `frexp` side-effects for NaN/Inf in\n`SingleInputSingleOutputDiff.h`.\n\nFixes #85680\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 3c2968bbb362ee1d4a9e701fd2d8c5d37993d497\n"
    },
    {
      "commit": "1ca5cfe0a2cfd8a3853505a3800805f525890020",
      "tree": "4a43c216e7627f2a409e902d6b37f005e4e29640",
      "parents": [
        "99121817a56fcfd030394a5d92ec60489a6a2400"
      ],
      "author": {
        "name": "Shivansh Chaudhary",
        "email": "chaudharyshivansh9@gmail.com",
        "time": "Sun Oct 18 08:25:47 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat Oct 17 20:02:38 2026 -0700"
      },
      "message": "[libc][NFC] Fix typo \u0027implemenation\u0027 in comments (#233089)\n\nFix the misspelling \"implemenation\" -\u003e \"implementation\" in comments in\n   libc/src/__support/mathvec/*.h and libc/src/string/string_length.h.\n   No functional change.\n\nGitOrigin-RevId: fee4778d35e9a4d1e76e527fbca24fbde050329f\n"
    },
    {
      "commit": "99121817a56fcfd030394a5d92ec60489a6a2400",
      "tree": "4d2d741a440c66c6b8d242b48168cbd1a472c462",
      "parents": [
        "fa2c05939d9d58ec9e144e80baf23fd918329830"
      ],
      "author": {
        "name": "Nikita Terentev",
        "email": "svet58585@mail.ru",
        "time": "Sat Oct 17 12:59:59 2026 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat Oct 17 03:10:51 2026 -0700"
      },
      "message": "[NFC][libc] Clean up unsequenced access warning (#232043)\n\nClose #217998.\n\n---------\n\nCo-authored-by: root \u003croot@Best-Komp.localdomain\u003e\nGitOrigin-RevId: 5f47feeedda059f88c30ca6f11109faa5ce5428c\n"
    },
    {
      "commit": "fa2c05939d9d58ec9e144e80baf23fd918329830",
      "tree": "5d69432fb24858002abe3c759f948f6bcb73a85b",
      "parents": [
        "43160eda38f826a6e46cd948e77825c2366966cc"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Fri Oct 16 14:59:54 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 16 12:07:33 2026 -0700"
      },
      "message": "[libc][math] Fix code size issues with sinf and cosf. (#232843)\n\n- Add missing \"optimization.h\" includes from sinf, cosf and sinf_test.\n- Move function-local arrays out to namespace.\n\nGitOrigin-RevId: c84fe9f5f6fdd79526baccfff0b3e5474063bd3a\n"
    },
    {
      "commit": "43160eda38f826a6e46cd948e77825c2366966cc",
      "tree": "3c03607d86b2b5941178ccdaea317674d5a315b2",
      "parents": [
        "8284cc0b30900694c4fc4692fc5ca014ec721faa"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Fri Oct 16 12:41:51 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 16 09:49:47 2026 -0700"
      },
      "message": "[libc][math] Optimize exp2 and refactor shared double-precision exp utilities. (#231041)\n\nRefactor double-precision `exp2` to improve latency, throughput, and\ncode\nsharing across `exp`, `exp2`, `exp10`, and `pow`, while adding support\nfor\n`LIBC_MATH_HAS_SMALL_TABLES` and `LIBC_MATH_HAS_SKIP_ACCURATE_PASS`.\n\nAlgorithm \u0026 implementation overview:\n- Fast path (`exp2_double_eval.h`, `exp_utils.h`):\n- Single-step range reduction `x \u003d k * 2^-N + dx` (`N \u003d 7` by default,\nor\n    `N \u003d 4` when `LIBC_MATH_HAS_SMALL_TABLES` is enabled) with\n    `hi \u003d k \u003e\u003e N`, `idx \u003d k \u0026 (2^N - 1)`, and `u \u003d dx * log(2)`.\n- Without FMA, use fixed-point splitting (`SPLIT_18` on `dx`,\n`LOG_2_HI_12`\non `log(2)`, and `SPLIT_22` on `EXP2_MID[idx]`) so `m_hi * (1 + u_hi)`\nis\nexact in `double` without needing Veltkamp splitting or `DoubleDouble`\n    multiplications.\n- Approximate `(exp(u) - 1 - u) / u^2` with a degree-3 minimax\npolynomial\n    evaluated with Estrin\u0027s scheme (`exp_poly`), and reconstruct\n    `2^(idx / 2^N) * exp(u)` followed by Ziv\u0027s rounding test.\n- Scale `2^hi * r` directly in vector registers (`scale_exp2`) using\nSSE2\n    and NEON integer additions on the exponent field to avoid\n    float-to-GPR-to-float round-trips.\n\n- Single-precision / skip-accurate-pass variant (`exp_double_utils.h`):\n- When `LIBC_MATH_HAS_SKIP_ACCURATE_PASS` is enabled, evaluate\n`exp2_eval`\npurely in `double` precision (~0.51 ULP error, \u003c\u003d 1 ULP in RN and \u003c\u003d 2\nULPs\n    in directed rounding modes).\n\n- 128-bit accurate path (`exp2_accurate_128.h`):\n- Replace the previous 2-step `DyadicFloat\u003c128\u003e` lookup tables (`2^-6`\nand\n`2^-12`) and degree-6 `DyadicFloat\u003c128\u003e` Taylor polynomial with a single\n16-entry `Frac128` lookup table (`EXP2_MID_FRAC128`, `2^(i/16)`) and a\ndegree-14 minimax polynomial (`EXP2_POLY_128`) in 128-bit fixed-point\n    arithmetic.\n- Provide `exp_accurate_128` and `exp2_df128` to be shared across\n`exp2`,\n    `exp`, `exp10`, and `pow`.\n\n- File organization \u0026 tests:\n- Split `double_eval::exp2` into\n`libc/src/__support/math/exp2_double_eval.h`\nso `double_eval::exp2` can be tested directly alongside `libc::exp2`.\n- Add a `LIBC_NOINLINE` wrapper around `double_eval::exp2` in unit and\nsmoke\n    tests to prevent excessive inlining into test functions.\n\nAssisted-by: Gemini was used for performance analysis, error bound\nverification, and refactoring.\nGitOrigin-RevId: aa845d04f5c1ef15b9bb24e3f2e64833085acde2\n"
    },
    {
      "commit": "8284cc0b30900694c4fc4692fc5ca014ec721faa",
      "tree": "ecab2555821818f071ede314917f9a0990c7a25d",
      "parents": [
        "7441b5b9fbec4c8fb54fda743f1df72c2b54bb81"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Fri Oct 16 11:49:32 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 16 09:48:33 2026 -0700"
      },
      "message": "[libc][math] Fix code size issues for powf_float_eval. (#232601)\n\n- Remove double and int64_t usage in powf_float_eval.\n- Use __builtin_roundeven* for ARMv8.\n- Reduce tables to 16-entry.\n- Add more support/guards for LIBC_MATH_HAS_NO_EXCEPT and\nLIBC_ATH_HAS_ASSUME_ROUND_NEAREST_ONLY.\n- Simplify check_exceptional cases.\n\nAssisted-by: Gemini for analysis.\nGitOrigin-RevId: 88fd7f873e305517954c27aef9da03bcb615a7f2\n"
    },
    {
      "commit": "7441b5b9fbec4c8fb54fda743f1df72c2b54bb81",
      "tree": "455d0b17adca5d3453dbae8ebe1745b227a1c353",
      "parents": [
        "8dc6703bbfdbd6ee83ecdf87fbb37194bb2bb362"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Fri Oct 16 11:48:45 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 16 08:54:25 2026 -0700"
      },
      "message": "[libc][math] Remove unneccessary checks and speedup for pow_fast under LIBC_MATH_HAS_SMALL_TABLES. (#232623)\n\nThis reduces code size by about 2.5 KB.\n\nGitOrigin-RevId: 7fdf0b189d31d6b056346f19b55b6c5b9438ec54\n"
    },
    {
      "commit": "8dc6703bbfdbd6ee83ecdf87fbb37194bb2bb362",
      "tree": "0b53b8be6225cd2570fd860d04e71331e6ead99d",
      "parents": [
        "979590b3155ad4e59109b2ba73d4b8f3f223b56e"
      ],
      "author": {
        "name": "Pavel Labath",
        "email": "pavel@labath.sk",
        "time": "Fri Oct 16 17:41:03 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 16 08:46:40 2026 -0700"
      },
      "message": "[libc] Add SCM_TIMESTAMP constants (#232688)\n\nThese are the control message types for SO_TIMESTAMP, SO_TIMESTAMPNS,\nand SO_TIMESTAMPING. On Linux, they are defined as aliases for their SO_\ncounterparts.\n\nAssisted-by: Gemini\nGitOrigin-RevId: a561104a8cb8d00019eca7b079526ae81d6c4214\n"
    },
    {
      "commit": "979590b3155ad4e59109b2ba73d4b8f3f223b56e",
      "tree": "4cc57f6221d9152713600faed494e03368dd892a",
      "parents": [
        "bc125bdc2c8de89193925540070a1b2e48b38f7e"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jbailey@raspberryginger.com",
        "time": "Fri Oct 16 16:35:39 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 16 08:41:59 2026 -0700"
      },
      "message": "[libc][regex] Wire regex entrypoints to ExprPool matcher (#232291)\n\nThe initial regcomp, regexec, and regfree stubs copied the raw pattern\nstring into a heap buffer and delegated matching to inline_strstr,\nleaving the hash-consed ExprPool arena unused by the public entrypoints.\nIn addition, POSIX requires regexec to be thread-safe across concurrent\ncallers sharing a compiled const regex_t handle, whereas lazy derivative\nevaluation interns new AST states into the pool at match time.\n\nReplace the string-copy stub with RegexInternal and a Brzozowski\nderivative matcher (derivative and match) backed by ExprPool. regcomp\ninitialises preg-\u003e__internal to nullptr before allocating RegexInternal\nso regfree is a safe no-op after a failed compilation, and folds the\npattern into the pool. regexec serialises lazy derivative interning on\nthe shared pool using SpinLock and cpp::lock_guard.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 69b6bcb22e95a0f751b442611953f27e43fa450f\n"
    },
    {
      "commit": "bc125bdc2c8de89193925540070a1b2e48b38f7e",
      "tree": "c60b1a65d20244122f56051d07176fea3e8d6fa1",
      "parents": [
        "e1cce82de85057e99269c6b4272e0e24f57ccf06"
      ],
      "author": {
        "name": "lntue",
        "email": "lntue@google.com",
        "time": "Fri Oct 16 11:32:53 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 16 08:39:05 2026 -0700"
      },
      "message": "[libc][cmake] Fix and enhance LibcParseArguments and add unified libc_log helper (#232089)\n\nThis patch fixes several bugs in `LibcParseArguments.cmake` and prepares\nthe common CMake argument parser, diagnostic logger, and CMake formatter\nfor unifying LLVM-libc\u0027s target and test build rules:\n\n1. Fix `LibcParseArguments.cmake`:\n- Fix `list(TRANSFORM ... PREPEND)` prefixes (`OVERLAY_` and\n`FULL_BUILD_`) so generated argument names match\n`${name_prefix}_OVERLAY_${argument}` and\n`${name_prefix}_FULL_BUILD_${argument}`.\n- Default `${name_prefix}_BUILD_MODE` to `\"FULL_BUILD\"` or `\"OVERLAY\"`\nfrom `LLVM_LIBC_FULL_BUILD` when not explicitly passed, and validate\nexplicit `BUILD_MODE` values.\n- Separate optional/single-value overrides (`set`) from multi-value list\nmerges (`list(APPEND)`).\n- Fix `forward_arguments` to append to `${output}` instead of the\nliteral variable `output`, include `LLVM_LIBC_COMMON_OPTIONAL_ARGS` and\n`LLVM_LIBC_COMMON_SINGLE_VALUE_ARGS`, and unset loop variables.\n- Expand `LLVM_LIBC_*_ARGS` with the remaining rule keywords (`PROXY`,\n`REDIRECTED`, `SKIPPED`, `NEED_MPFR_F80`, `BUILD_ONLY`, `EXHAUSTIVE`,\n`ROOT`, `PACKAGE_VARIANTS`, `DISPATCH_VARIANTS`, `PARENT`,\n`CREATE_TARGET`, `ADD_FLAGS`).\n\n2. Add unified `libc_log` diagnostic helper in `LLVMLibCRules.cmake`:\n- Support tiered `LIBC_CMAKE_VERBOSE_LOGGING` levels (`OFF`,\n`ON`/`BASIC`, `TARGETS`, `DEPS`) and optional regex target filtering via\n`LIBC_CMAKE_VERBOSE_TARGET_FILTER`.\n- Use a lightweight `macro(libc_log)` wrapper around `_libc_log_impl` so\ndisabled logging (`OFF`) short-circuits inline without function-scope\noverhead, and include `LibcParseArguments` from `LLVMLibCRules.cmake`.\n\n3. Update `libc/utils/cmake_format.py` and unit tests:\n- Teach `scan_dynamic_schemas()` to register `OVERLAY_\u003carg\u003e` and\n`FULL_BUILD_\u003carg\u003e` variants when scanning `LLVM_LIBC_*_ARGS` definitions\nand add a unit test in `cmake_format_test.py`.\n\nAssisted-by: Gemini\nGitOrigin-RevId: a66cb34be8e68cd9771eb8a6cd47ad53504745be\n"
    },
    {
      "commit": "e1cce82de85057e99269c6b4272e0e24f57ccf06",
      "tree": "ff6435871e2f777edef7602ebd2eb75cdb336ca6",
      "parents": [
        "0bd34c18c96a812e996e20c071858629b40522de"
      ],
      "author": {
        "name": "Pavel Labath",
        "email": "pavel@labath.sk",
        "time": "Fri Oct 16 16:09:10 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 16 07:17:18 2026 -0700"
      },
      "message": "[libc] Move linux signal mask helpers into OSUtil/sigmask.h (#232647)\n\nMove internal signal set and mask helpers (full_set, empty_set, add,\nremove, block_all, set_mask, etc.) out of signal_utils.h and into a new\nsrc/__support/OSUtil/linux/sigmask.h header under the signals namespace.\nThis allows other low-level OS utilities and entrypoints to manipulate\nsignal masks without pulling in signal_utils.h (defined under\nsrc/signal).\n\nThe rest of signal_utils.h should also move, but I\u0027m leaving that for a\nseparate PR (and a separate file) because the rest of the file has more\ndependencies (RwLock, vdso, __restore_rt), and interacts with more\ncomponents.\n\nAlong with the move:\n- fix full_set() on 32-bit systems: sigset_t{{-1UL}} only set the first\nword, leaving real-time signals unmasked. Now we loop over __signals.\n- rename the helpers to shorter names within the signals namespace\n(add_signal -\u003e add, delete_signal -\u003e remove, restore_signals -\u003e\nset_mask, etc.) and update existing callers in signal_utils,\nabort_utils, sigaddset, sigdelset, sigemptyset, and sigfillset.\n- add block and get_mask helpers and migrate call sites in\nsigsetjmp_epilogue and system.\n\nAssisted-by: Gemini\nGitOrigin-RevId: 5170cd8d92469ce76994825fcad4cde7162c32ff\n"
    },
    {
      "commit": "0bd34c18c96a812e996e20c071858629b40522de",
      "tree": "bf16779933780a9a0880f4af58b9e92ed95d7d4c",
      "parents": [
        "6b1cf8dc683dcffb4169020ccea9d28f7e1e97ce"
      ],
      "author": {
        "name": "Simon Tatham",
        "email": "simon.tatham@arm.com",
        "time": "Fri Oct 16 14:28:00 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 16 07:16:09 2026 -0700"
      },
      "message": "[libc][printf] Fix %e/%g formatting in float320 algorithm (#232721)\n\nCommit 509679cf9c9db71, updating arrays of char to a more general CharT,\nremoved a memset in the float320 code and replaced it with default\nzero-initialization of the containing object. But the memset was to\n`\u00270\u0027`, not to `0`, so this changed the output. Restored the correct\ninitialization, this time using a for loop so that it will work even if\nCharT is \u003e1 byte.\n\nGitOrigin-RevId: baec31b9cae924ecaffb04b0b1bc90f09c066444\n"
    },
    {
      "commit": "6b1cf8dc683dcffb4169020ccea9d28f7e1e97ce",
      "tree": "03b901e4ec37aec8c5df60fc20e3088f7bcc6e6d",
      "parents": [
        "ef52f0951023391f50b42598b7507cb1d8113477"
      ],
      "author": {
        "name": "Pavel Labath",
        "email": "pavel@labath.sk",
        "time": "Fri Oct 16 14:35:56 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 16 05:43:45 2026 -0700"
      },
      "message": "[libc] Block signals before a detached thread unmaps its stack (#232649)\n\nWhen a detached thread terminates, it cleans up its own resources in\nthread_exit(), which includes unmapping its stack with munmap(2).\nBetween the unmap and the final exit(2) syscall, the thread continues to\nexecute without a valid stack. If a signal is delivered to the thread\nduring this window, the kernel will attempt to set up a signal frame on\nthe unmapped stack, leading to a crash.\n\nTo prevent this, block all signals using rt_sigprocmask before calling\ncleanup_thread_resources().\n\nNo test case because this situation is pretty much impossible to\nreproduce deterministically -- even though it shows up regularly when\nrunning an application with thousands of threads and a SIGPROF-based\nprofiler.\n\nGitOrigin-RevId: 82911de74cb2702e530a5cf652b7f8782dc95410\n"
    },
    {
      "commit": "ef52f0951023391f50b42598b7507cb1d8113477",
      "tree": "61573f1130e4ddb7676cd8ffa452a0d8474efc35",
      "parents": [
        "c2e2a32e980c1cece6e0bc8e51c0a5de9a52ce3e"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Fri Oct 16 20:08:47 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 16 05:14:33 2026 -0700"
      },
      "message": "[libc] Use a syscall wrapper for `sched_getparam` (#232689)\n\nThis PR move `sched_getparam` behind the centralized syscall wrappers,\nfollowing `libc/docs/dev/syscall_wrapper_refactor.md`.\n\nGitOrigin-RevId: b5329c03eb8d8624fc9e40bc9c5505e0da4f5b40\n"
    },
    {
      "commit": "c2e2a32e980c1cece6e0bc8e51c0a5de9a52ce3e",
      "tree": "f300619db251444ab19d87f17da881d7d19f0b99",
      "parents": [
        "d64185159c3b1d74aed64d6bb2a8fd21106cee6e"
      ],
      "author": {
        "name": "Pavel Labath",
        "email": "pavel@labath.sk",
        "time": "Fri Oct 16 13:33:20 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Oct 16 04:35:59 2026 -0700"
      },
      "message": "[libc] Define IFNAMSIZ in net/if.h (#232664)\n\nAdd the IFNAMSIZ macro (4.2BSD) as an alias for IF_NAMESIZE (POSIX) in\nnet/if.h.\n\nI\u0027m also defining __UAPI_DEF_IF_IFNAMSIZ to 0 in our linux macro header\nto prevent \u003clinux/if.h\u003e from redefining the macro when included after\n\u003cnet/if.h\u003e.\n\nAssisted-by: Gemini\nGitOrigin-RevId: 748b1ae6606a93caa328a294403a772ab61ce6af\n"
    },
    {
      "commit": "d64185159c3b1d74aed64d6bb2a8fd21106cee6e",
      "tree": "4add600b4664d8f8f698ffc917c9c782575c7224",
      "parents": [
        "75488b6d370c3e3aed5f91ebc6da59a065b71240"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jbailey@raspberryginger.com",
        "time": "Fri Oct 16 07:13:08 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 15 23:15:39 2026 -0700"
      },
      "message": "[libc] Add \u003clibintl.h\u003e and textdomain stub (#232351)\n\nPOSIX.1-2024 standardises the \u003clibintl.h\u003e message translation\ninterfaces. Because LLVM-libc currently supports only the \"C\" locale,\nmessage catalog functions can be satisfied with stateless stubs that do\nnot access the filesystem.\n\nAdded the \u003clibintl.h\u003e header generation specification and the textdomain\nentrypoint behind LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS, returning\n\"messages\" when querying or resetting the domain and returning the input\ndomain name otherwise.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 636c61e9565b7d83368874dacc8c538481dbe9e1\n"
    },
    {
      "commit": "75488b6d370c3e3aed5f91ebc6da59a065b71240",
      "tree": "c0614f6be0a2b00c31f9803e4ac159901091e0d2",
      "parents": [
        "c908c1a732af5f98ca172682710bf6616601366f"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Fri Oct 16 13:59:09 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 15 23:02:49 2026 -0700"
      },
      "message": "[libc] Use a syscall wrapper for `sched_getscheduler` (#232597)\n\nThis PR move `sched_getscheduler` behind the centralized syscall\nwrappers, following `libc/docs/dev/syscall_wrapper_refactor.md`.\n\nGitOrigin-RevId: d35f28be3101d9899a91c86a543db700cf3d8f1c\n"
    },
    {
      "commit": "c908c1a732af5f98ca172682710bf6616601366f",
      "tree": "d5f32a2d51961fe0a01877cfa23fa1d271db54f8",
      "parents": [
        "da90e144218b05ed64c7bf40c7e377bd324796fa"
      ],
      "author": {
        "name": "Chen Miao",
        "email": "chenmiao.ku@gmail.com",
        "time": "Fri Oct 16 03:33:06 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 15 12:37:17 2026 -0700"
      },
      "message": "[libc][math] Use float-only evaluation in asinbf16 and acosbf16 (#228734)\n\nUpdate `asinbf16` and `acosbf16` to use a shared `float` polynomial\ninstead of the double-precision `asin_eval` helper. Reuse the polynomial\ncoefficients from `asinf16`.\n\nFor small `acosbf16` inputs, return pi/2 rounded to `bfloat16` before\nsquaring the input or evaluating the polynomial. This avoids spurious\nunderflow from intermediate products.\n\nRelated: #202079\nAssisted-by: GPT-6-Astra\nGitOrigin-RevId: e80745b3a83cf4ad104788df9d0b1e48312b3f63\n"
    },
    {
      "commit": "da90e144218b05ed64c7bf40c7e377bd324796fa",
      "tree": "eba6cc41f6bfe35492f614167fe040b027a1e42f",
      "parents": [
        "07d5a1c294d6fde2a434a28ebd9642d60e3346d7"
      ],
      "author": {
        "name": "pixl",
        "email": "planner.chisels.7j@icloud.com",
        "time": "Thu Oct 15 22:56:26 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 15 10:40:27 2026 -0700"
      },
      "message": "[libc][math][c++23] Add exp2bf16 math function (#230213)\n\nThis PR implements the `exp2bf16` C23 math function for the `BFloat16`\ntype, mirroring the\nexisting `expbf16` and `exp2f16` implementations.\n\nPlanned work:\n- [x] `libc/src/__support/math/exp2bf16.h` — core implementation\n- [x] `libc/src/math/exp2bf16.h` — public entrypoint declaration\n- [x] `libc/src/math/generic/exp2bf16.cpp` — entrypoint wrapper\n- [x] `libc/shared/math/exp2bf16.h` — shared-mode header\n- [x] Register in `libc/src/__support/math/CMakeLists.txt`,\n`libc/src/math/CMakeLists.txt`,\n      `libc/src/math/generic/CMakeLists.txt`\n- [x] Add entry to `entrypoints.txt` for supported targets\n- [x] Tests: `libc/test/src/math/exp2bf16_test.cpp` and\n      `libc/test/src/math/smoke/exp2bf16_test.cpp`\n\nOpened as a draft to track progress; commits will follow incrementally.\n\nGitOrigin-RevId: a49ef7ff0eafc6d9ca1e538e0a66ad0fb2489ec1\n"
    },
    {
      "commit": "07d5a1c294d6fde2a434a28ebd9642d60e3346d7",
      "tree": "d22846c31372a9deaca5a41963fe2eaa41b0e21f",
      "parents": [
        "c90173008fc21959faa2da703f2369b1d706bff9"
      ],
      "author": {
        "name": "Michael Jones",
        "email": "michaelrj@google.com",
        "time": "Thu Oct 15 10:07:21 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 15 10:16:24 2026 -0700"
      },
      "message": "[libc][NFC] fix fdopen_test comparisons (#232104)\n\nWhen possible it\u0027s better to use ASSERT_EQ/NE instead of ASSERT_TRUE.\nfdopen_test was using ASSERT_TRUE for some FILE* variables. This PR\nmoves them to ASSERT_RQ/NE.\n\nGitOrigin-RevId: 461d5701746c85db25dcd9884c401c4151086204\n"
    },
    {
      "commit": "c90173008fc21959faa2da703f2369b1d706bff9",
      "tree": "6c250abfb19a086cd70ec7008e8c4be0ada198b6",
      "parents": [
        "7b2387fabb39d0ec883b64859bd66ef26b7f09c3"
      ],
      "author": {
        "name": "Leandro Lacerda",
        "email": "leandrolcampos@yahoo.com.br",
        "time": "Thu Oct 15 13:50:57 2026 -0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 15 09:59:17 2026 -0700"
      },
      "message": "[libc][math] Add correctly rounded, float-only implementation of expf for GPUs (#231671)\n\nThis patch adds a GPU-oriented implementation of `expf`, correctly\nrounded for all inputs in round-to-nearest, ties-to-even mode. It uses\nfloat-only intermediate arithmetic and Horner evaluation, without lookup\ntables, a Ziv test, or separate fast and accurate paths.\n\nIt requires single-precision FMA.\n\n### Performance on NVIDIA GeForce RTX 5070 (Cycles/Call)\n\nResults were collected using a locally adapted `expf` benchmark based on\nthe GPU benchmark infrastructure in `libc/benchmarks/gpu`.\n\nTables report median cycles/call across five per-run means, with a\nper-thread batch size of `N \u003d 128`. Lower is better; the lowest value in\neach row is bold. `Relative` compares FloatEvalCrRn (this PR) with the\nfastest alternative in each row: “faster” means fewer cycles/call;\n“slower” means more.\n\n**Correctly rounded implementations in round-to-nearest, ties-to-even**\n\nBoth implementations are correctly rounded in this mode under the build\nconfiguration below.\n\n| Domain | DoubleEval | FloatEvalCrRn | Relative |\n|---|---:|---:|---|\n| CoreRange `[-10.0, 10.0]` | 532 | **212** | 2.51x faster |\n| Normal `[-87.3, 88.7]` | 540 | **212** | 2.55x faster |\n| Subnormal `[-103.0, -87.5]` | 626 | **212** | 2.95x faster |\n| Finite `[-103.0, 88.7]` | 627 | **212** | 2.96x faster |\n| Underflow `[-104.0, -103.0]` | 650 | **212** | 3.07x faster |\n| Overflow `[88.0, 89.0]` | 532 | **212** | 2.51x faster |\n\n**Float-only implementations**\n\nBoth use float-only intermediate arithmetic. FloatEval has no\ncorrect-rounding guarantee; FloatEvalCrRn is correctly rounded in\nround-to-nearest, ties-to-even.\n\n| Domain | FloatEval | FloatEvalCrRn | Relative |\n|---|---:|---:|---|\n| CoreRange `[-10.0, 10.0]` | **175** | 212 | 1.21x slower |\n| Normal `[-87.3, 88.7]` | **177** | 212 | 1.20x slower |\n| Subnormal `[-103.0, -87.5]` | 295 | **212** | 1.39x faster |\n| Finite `[-103.0, 88.7]` | 305 | **212** | 1.44x faster |\n| Underflow `[-104.0, -103.0]` | 310 | **212** | 1.46x faster |\n| Overflow `[88.0, 89.0]` | 222 | **212** | 1.05x faster |\n\n**GPU-oriented, correctly rounded implementations in round-to-nearest,\nties-to-even**\n\nAll three use float-only intermediate arithmetic.\n\nCoreMath128 and CoreMath1024 are Clang adaptations of the CUDA-enabled\nvariants from the CORE-MATH project\n[[link](https://gitlab.inria.fr/core-math/core-math/-/blob/as_expf_floatonly/src/binary32/exp/expf.c)].\nTheir main lookup tables contain 128 and 1024 entries, respectively.\nBoth use a fast path with a Ziv test and an accurate path when the test\nis inconclusive; both paths were enabled during benchmarking.\n\nFloatEvalCrRn uses a single approximation path, without lookup tables or\na Ziv test.\n\n| Domain | CoreMath128 | CoreMath1024 | FloatEvalCrRn | Relative |\n|---|---:|---:|---:|---|\n| CoreRange `[-10.0, 10.0]` | 251 | 364 | **212** | 1.18x faster |\n| Normal `[-87.3, 88.7]` | 253 | 362 | **212** | 1.19x faster |\n| Subnormal `[-103.0, -87.5]` | 254 | 367 | **212** | 1.20x faster |\n| Finite `[-103.0, 88.7]` | 303 | 474 | **212** | 1.43x faster |\n| Underflow `[-104.0, -103.0]` | 295 | 415 | **212** | 1.39x faster |\n| Overflow `[88.0, 89.0]` | 318 | 444 | **212** | 1.50x faster |\n\n**Environment and build configuration**\n\n- GPU: NVIDIA GeForce RTX 5070, Blackwell, compute capability 12.0\n(`sm_120`).\n- CUDA Toolkit: 13.4 (`ptxas` 13.4.92).\n- NVIDIA driver: 595.91.07.\n- Compiler: Clang 24.0.0git, revision\n`2d67f8878f55b5bcc6685f177aaa970c9dc7053a`.\n- Compilation: `-O3`, LTO (`-flto`), `-march\u003dsm_120`.\n- Math configuration in `libc/config/gpu/config.json`:\n`(LIBC_MATH_ASSUME_ROUND_NEAREST_ONLY |\nLIBC_MATH_INTERMEDIATE_COMP_IN_FLOAT | LIBC_MATH_NO_ERRNO |\nLIBC_MATH_NO_EXCEPT)`\n\n---------\n\nAssisted-by: Codex was used for performance analysis, code review, and\nimprovements to code comments.\n\n---------\n\nSigned-off-by: Leandro Augusto Lacerda Campos \u003cleandrolcampos@yahoo.com.br\u003e\nGitOrigin-RevId: 9dc80b90f8112ee0d371c46f65c12b012d453196\n"
    },
    {
      "commit": "7b2387fabb39d0ec883b64859bd66ef26b7f09c3",
      "tree": "4142fbf2632081ce09ea03b75125aeaa9c57b9e6",
      "parents": [
        "9c38878b5094584aa10c833e5ffc602541b25b9f"
      ],
      "author": {
        "name": "Alex Strelnikov",
        "email": "strel@google.com",
        "time": "Thu Oct 15 11:02:57 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 15 08:10:20 2026 -0700"
      },
      "message": "[libc] Add support for writing to wchar_t in printf_core/ converter functions. (#230246)\n\nThis is part of the ongoing work toward implementing wide-character\nprintf functions.\n\n* A `CharT` template type parameter is added where appropriate to the\nconverter functions.\n* The converter_test cases are extended to `TYPED_TEST`s covering both\n`char` and `wchar_t`.\n* Some new test cases are added for character and string conversion.\n* As a part of this change `BasicFormatSection\u003cT\u003e` is renamed back to\nsimply `FormatSection\u003cT\u003e`. (It was renamed in #222988 with\n`FormatSection` becoming an alias mainly to keep from changing a lot of\nlines in converter_test twice.)\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 509679cf9c9db718d5b476a93ccffbd27a3ab980\n"
    },
    {
      "commit": "9c38878b5094584aa10c833e5ffc602541b25b9f",
      "tree": "88bcebae997deed978daa3022ba655cf256c8119",
      "parents": [
        "8dff6c4f4581d292c8cba2db793473720d501883"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Thu Oct 15 21:48:30 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 15 06:53:28 2026 -0700"
      },
      "message": "[libc] Use a syscall wrapper for `sched_rr_get_interval` (#232310)\n\nThis PR move `sched_rr_get_interval` behind the centralized syscall\nwrappers, following `libc/docs/dev/syscall_wrapper_refactor.md`.\n\nGitOrigin-RevId: b43c0361f4942f5e9ce2ef01f0e5a33bafe28f69\n"
    },
    {
      "commit": "8dff6c4f4581d292c8cba2db793473720d501883",
      "tree": "5ee97a77dfdf52072d69f97f97b9c0f0a5b4a1ed",
      "parents": [
        "10a2f6b1f22bcbee0eb207c6965e6d69e19fa251"
      ],
      "author": {
        "name": "Aman Maurya",
        "email": "amanmaurya9209@gmail.com",
        "time": "Thu Oct 15 19:02:01 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 15 06:39:30 2026 -0700"
      },
      "message": "[libc] Implement fexecve in unistd (#231230)\n\nImplement the POSIX function `fexecve` in `\u003cunistd.h\u003e`.\n\nFixes #231206\n\nAssisted by Antigravity and reviewed by Aman Maurya.\n\nGitOrigin-RevId: 6ae56eaedb60d55c5a06c8b7eb01487b281eeebf\n"
    },
    {
      "commit": "10a2f6b1f22bcbee0eb207c6965e6d69e19fa251",
      "tree": "bc232fb845df7d02f3af466179197a33b5073d8b",
      "parents": [
        "4482cbad6a6d3e74c493eaf3091d5d9aa5663b08"
      ],
      "author": {
        "name": "Pavel Labath",
        "email": "pavel@labath.sk",
        "time": "Thu Oct 15 15:25:21 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 15 06:34:43 2026 -0700"
      },
      "message": "[libc] Make struct ifreq compatible with linux/if.h (#225793)\n\nWhen \u003clinux/if.h\u003e is included after \u003cnet/if.h\u003e, compilation fails for\nseveral reasons:\n- \u003clinux/libc-compat.h\u003e expects libc to coordinate using the\n  __UAPI_DEF_IF_IFREQ and __UAPI_DEF_IF_IFMAP macros. Because we didn\u0027t\n  define them, the kernel headers fell back to defining them as 1, which\n  caused \u003clinux/if.h\u003e to redefine struct ifreq.\n- \u003clinux/if.h\u003e defines field access macros (ifr_name, ifr_addr, etc.)\n  pointing to members of named ifr_ifrn and ifr_ifru unions. Our struct\n  ifreq used an anonymous union, so those defines broke member access.\n- Our struct ifreq omitted the `struct ifmap ifru_map` member. Besides\n  breaking the ifr_map macro from \u003clinux/if.h\u003e, this also made\n  sizeof(struct ifreq) 32 bytes instead of 40 on 64-bit Linux (as\n  struct ifmap is 24 bytes while all other union members are at most 16\n  bytes), mismatching the kernel ioctl ABI.\nTo fix this:\n- define `struct ifmap` and add it to `struct ifreq`\n- define `__UAPI_DEF_IF_IFMAP 0` and `__UAPI_DEF_IF_IFREQ 0` to prevent\n  the kernel header from redefining the structs\n- modify `struct ifreq` to use named ifr_ifrn and ifr_ifru unions and\n  define matching member macros. This is necessary because kernel\n  headers define the member macros even in the __UAPI_DEF_IF_IFREQ\u003d\u003d0\n  case.\n- add an include test in test/include/net/linux to verify that including\n  \u003clinux/if.h\u003e after \u003cnet/if.h\u003e works as expected and that the size and\n  alignment of both structs match the kernel definitions\n\nWhile in there, I also move the struct definition into a linux\nsubfolder, as the type is linux-specific.\n\nIt\u0027s worth noting that including the headers in the opposite direction\nis still broken, but that is also true for all other libc\nimplementations.\n\nAssisted-by: Gemini\nGitOrigin-RevId: ba09a4925b6ae89266d81a531fddfe1ad7d0b7f8\n"
    },
    {
      "commit": "4482cbad6a6d3e74c493eaf3091d5d9aa5663b08",
      "tree": "5f0d883ff1930d7528bc7e0cc524d78962a3895f",
      "parents": [
        "5879dd3181ad0a8382a59679f8f51517e42e9b24"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Thu Oct 15 20:39:55 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Oct 15 05:54:38 2026 -0700"
      },
      "message": "[libc] Use a syscall wrapper for `sched_setaffinity` (#232277)\n\nThis PR move `sched_setaffinity` behind the centralized syscall\nwrappers, following `libc/docs/dev/syscall_wrapper_refactor.md`.\n\nGitOrigin-RevId: a7be9f2038cd6ec221ad378c69a9a875ebfaa456\n"
    },
    {
      "commit": "5879dd3181ad0a8382a59679f8f51517e42e9b24",
      "tree": "1e6705772e7e9de26164c94a1d200c38f514393c",
      "parents": [
        "0e64c6f9b277038fee1b0444f223b4dbe873fa12"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Thu Oct 15 09:31:20 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 14 18:39:08 2026 -0700"
      },
      "message": "[libc] Use a syscall wrapper for `sched_setparam` (#231893)\n\nFollow up of https://github.com/llvm/llvm-project/pull/231865.\n\nThis PR move `sched_setparam` behind the centralized syscall wrappers,\nfollowing `libc/docs/dev/syscall_wrapper_refactor.md`.\n\nGitOrigin-RevId: cb5744ec42b487c29cfa47f359a22ddbbd52427a\n"
    },
    {
      "commit": "0e64c6f9b277038fee1b0444f223b4dbe873fa12",
      "tree": "fbf4e315c2c6bb36a0aae0754060d59966bbcabf",
      "parents": [
        "4aafb84f7d9bf38464d50f26a60e2ee1022bfdd7"
      ],
      "author": {
        "name": "jinge90",
        "email": "ge.jin@intel.com",
        "time": "Thu Oct 15 07:40:22 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 14 16:44:38 2026 -0700"
      },
      "message": "[libc][GPU] Directly build GPU libc file with name \u0027libc.bc\u0027 (#231755)\n\nGitOrigin-RevId: 59a6b711f9309609dbcae0167e65c2ca93290a41\n"
    },
    {
      "commit": "4aafb84f7d9bf38464d50f26a60e2ee1022bfdd7",
      "tree": "7e83ab3b5b80f2be2e95a47c9eb41e7aac20b0f1",
      "parents": [
        "009c58ddd21400154e3b6a8702b75cec89e30519"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jbailey@raspberryginger.com",
        "time": "Wed Oct 14 21:05:56 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 14 13:15:32 2026 -0700"
      },
      "message": "[libc][regex] Switch ExprPool to 32-bit ExprId and 16B Expr (#230687)\n\nRefactored the regex AST and ExprPool in libc/src/__support/regex/ to\nreduce per-pool memory overhead:\n\n* Replaced pointer-based AST references with 1-based 32-bit ExprId\nindices (with singleton IDs EMPTY_SET_ID \u003d 1 and EMPTY_STR_ID \u003d 2).\n* Compacted Expr to 16 bytes with a cached 32-bit hash and precomputed\nnullability flag.\n* Replaced the fixed 16,384-slot hash table and 256-node linked blocks\nwith a growable hash table starting at 64 slots (256 bytes) and 32-node\nblocks (512 bytes), allocated lazily on first intern so a\ndefault-constructed pool uses 0 heap bytes and initial allocation is 832\nbytes.\n* Migrated block and hash-table storage to cpp::array and cpp::span with\na BucketProber iterator range and centralized slot_at indexing.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: b23a6742756ace2543721739a7fe7591e4b9c6df\n"
    },
    {
      "commit": "009c58ddd21400154e3b6a8702b75cec89e30519",
      "tree": "2bd2731803cb69fca26856a64b96510c096b5402",
      "parents": [
        "5565731fbf17ce40d7a6e2dd8d02c1285619ee18"
      ],
      "author": {
        "name": "quic-k",
        "email": "kushpal@qti.qualcomm.com",
        "time": "Wed Oct 14 22:46:39 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 14 10:24:41 2026 -0700"
      },
      "message": "[libc] Add bare-metal Hexagon port (#217528)\n\nAdd support for llvm-libc on Hexagon bare-metal targets.\n\nRecognize the hexagon architecture in CMake.\nAdd the Hexagon bare-metal config: config.json, entrypoints.txt,\nheaders.txt. Add Hexagon startup code (crt1) with semihosting trap\nhandling. Add a Hexagon FEnvImpl and select it in FEnvImpl.h; define\nfenv_t for Hexagon. Add bare-metal signal macros and wire the bare-metal\ninclude path into signal-macros.h.\nmemory_size: detect signed addition overflow with a builtin instead of\nrelying on undefined behavior.\n\n---------\n\nSigned-off-by: Kushal Pal \u003ckushpal@qti.qualcomm.com\u003e\nGitOrigin-RevId: 835ca7527dfb1ecd52b19f5274a6c12f688853aa\n"
    },
    {
      "commit": "5565731fbf17ce40d7a6e2dd8d02c1285619ee18",
      "tree": "ee4cbb467ceb32503b777f0c1fe3279e4cae454e",
      "parents": [
        "9c9e191248f55e40102813c33b813f2415dd59b4"
      ],
      "author": {
        "name": "Michael Jones",
        "email": "michaelrj@google.com",
        "time": "Wed Oct 14 09:57:48 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 14 10:05:11 2026 -0700"
      },
      "message": "[libc] Fix mbstate proxy header dep (#231984)\n\nThe proxy header for mbstate_t listed the dependency on the\nllvm-libc-types definition as a regular `DEPENDS` and not a\n`FULL_BUILD_DEPENDS`. This PR move the dependency to the right category.\n\nGitOrigin-RevId: 93b33f7d4b16619dca5daa823d9e477d03278e2f\n"
    },
    {
      "commit": "9c9e191248f55e40102813c33b813f2415dd59b4",
      "tree": "f0a9eb9da60435d663d988f78175c97945470ebe",
      "parents": [
        "7d50e3c1c4b0a08a80d7ffcecebd63e4b08b14a0"
      ],
      "author": {
        "name": "Victor Campos",
        "email": "victor.campos@arm.com",
        "time": "Wed Oct 14 15:40:17 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 14 07:48:56 2026 -0700"
      },
      "message": "[libc] Add definition of EOVERFLOW to generic-error-number-macros.h (#231891)\n\nGitOrigin-RevId: 398dae59ab1a4fc1f4e1e2dd14ff39a5cd1f6af7\n"
    },
    {
      "commit": "7d50e3c1c4b0a08a80d7ffcecebd63e4b08b14a0",
      "tree": "98324a0b057d6339047fd47bfac36f8da59f86e8",
      "parents": [
        "4b4a9e68ddd8809a61090aaf45ddd724d8ef8f57"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Wed Oct 14 20:13:33 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 14 05:17:46 2026 -0700"
      },
      "message": "[libc] Use a syscall wrapper for `sched_setscheduler` (#231865)\n\nFollow up of https://github.com/llvm/llvm-project/pull/231512.\n\nThis PR move `sched_setscheduler` behind the centralized syscall\nwrappers, following `libc/docs/dev/syscall_wrapper_refactor.md`.\n\nGitOrigin-RevId: 5915ac987fae1333f5f30b7f74a6e823cc6fc22f\n"
    },
    {
      "commit": "4b4a9e68ddd8809a61090aaf45ddd724d8ef8f57",
      "tree": "6410de81183041da282720f557a78814847efcc4",
      "parents": [
        "0d970dd751495c57583f07b955a227874e95228f"
      ],
      "author": {
        "name": "Connector Switch",
        "email": "c8ef@outlook.com",
        "time": "Wed Oct 14 18:24:08 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Oct 14 03:27:23 2026 -0700"
      },
      "message": "[libc] Use a syscall wrapper for `sched_yield` (#231512)\n\nThis PR move `sched_yield` behind the centralized syscall wrappers,\nfollowing `libc/docs/dev/syscall_wrapper_refactor.md`.\n\nGitOrigin-RevId: 696892fe01096ae2c8789cf96d3a46c0f425be1f\n"
    }
  ],
  "next": "0d970dd751495c57583f07b955a227874e95228f"
}
