)]}'
{
  "log": [
    {
      "commit": "0dcbf44487dc1327e4932521e18a0e797dbfaf00",
      "tree": "422c41eb828821dd5f4b911a6187a37ab7669447",
      "parents": [
        "a68a64928c0a09c47231e4b9314826be98c37466"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Sun Oct 18 16:38:01 2026 -0300"
      },
      "committer": {
        "name": "Alin Jerpelea",
        "email": "alin.jerpelea@sony.com",
        "time": "Wed Oct 21 13:19:16 2026 +0100"
      },
      "message": "Documentation: document the wifibridge save and clear commands.\n\nDescribe how wifibridge keeps its configuration across resets, where it is\nstored and what is kept, with CONFIG_NETUTILS_WIFIBRIDGE_PERSIST.\n\nAssisted-by: Claude Code:claude-sonnet-5-5\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "a68a64928c0a09c47231e4b9314826be98c37466",
      "tree": "19b56e3c8dba06e96d1c59f2c77b49a85182a116",
      "parents": [
        "63b64d801718a6b93fb1a4fa4098b6a2fb9ff69f"
      ],
      "author": {
        "name": "chao an",
        "email": "anchao.archer@bytedance.com",
        "time": "Wed Oct 21 13:27:32 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 19:28:58 2026 +0800"
      },
      "message": "net/pkt: allocate send callback before queueing IOB\n\npkt_sendmsg() queued the prepared IOB before allocating the send callback.\nIf the callback allocation then failed, the error path still freed the IOB\neven though ownership had already moved to the connection write queue.\n\nAllocate the callback before enqueueing the IOB.  This keeps the IOB owned\nby the local error path until all resources required to notify the driver\nare available, avoiding an invalid free of a queued buffer when callback\nallocation fails.\n\nSigned-off-by: chao an \u003canchao.archer@bytedance.com\u003e\n"
    },
    {
      "commit": "63b64d801718a6b93fb1a4fa4098b6a2fb9ff69f",
      "tree": "5a89549f60f7de3ae42f347c00f5cd61e3bc42dc",
      "parents": [
        "c22cd2c76f284fb4c52f37e31c0dcee81dbb3931"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Tue Oct 20 21:52:29 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 19:28:25 2026 +0800"
      },
      "message": "Documentation/drivers: document the SMPS driver and the LM51772\n\nAdd two pages to the power-related drivers: the SMPS upper half, with its\napplication interface, the sequence that the upper half requires before the\nconverter starts, and the open and close behavior of the lower half; and the\nTI LM51772 lower half, with the board interface (lm51772_config_s, the\nregister list and the absolute maximum ratings), the start and stop\nsequence, the mapping of STATUS_BYTE to the SMPS faults, notes on the\nhardware connections that change the behavior of the controller, and an\nexample of the registration in a board.\n\nThe HTML was built with Sphinx 6.2.1 and the new pages build without\nwarnings.\n\nAssisted-by: Claude Code:claude-sonnet-5-5\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "c22cd2c76f284fb4c52f37e31c0dcee81dbb3931",
      "tree": "8688dc3f9366639291b2fa54e216356ba2102d9e",
      "parents": [
        "40eb6bc7894faec60d4e56bc3c4b24f97e9f18ff"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Tue Oct 20 21:06:27 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 19:28:25 2026 +0800"
      },
      "message": "drivers/power: add a TI LM51772 buck-boost SMPS driver\n\nAdd a lower-half driver for the Texas Instruments LM51772 buck-boost\ncontroller, controlled over I2C, on top of the common SMPS interface\n(nuttx/power/smps.h).\n\nThe converter regulates a constant output voltage (SMPS_OPMODE_CV, the\nonly mode) with an output current limit.  The controller is enabled\nthrough a board callback (the EN/UVLO pin) and configured on the first\nPWRIOC_START: the register list of the board is written, the step of the\noutput voltage is read back from MFR_SPECIFIC_D8, and the output target\nand the current limit are applied before the power stage is turned on\n(CONV_EN and CONV_EN2).  PWRIOC_STOP stops switching and discharges the\noutput, and the last close disables the controller.  Faults come from\nSTATUS_BYTE.\n\nThe board describes the hardware in lm51772_config_s: the I2C bus,\nfrequency and address, the output sense resistor, the enable callback,\nthe registers written at start (the register bit fields are in\nlm51772.h) and optional absolute maximum ratings: minimum and maximum\noutput voltage, output current and output power.  The limits and the\nparameters set through the SMPS interface are refused when they exceed\nthe ratings, including a v_out * i_out above the power rating.\n\nsmps.h now includes nuttx/mutex.h, which it already needs for the close\nlock.\n\nTested on an LM51772 on a custom STM32G4 board, with a 24 V input, no\nload and a 400 kHz I2C bus: repeated start and stop at 9, 12, 15, 20 and\n24 V without a power cycle, readback of the configured registers and of\nSTATUS_BYTE, refusal of voltage, current and power above the ratings, and\na start with a controller that does not answer (the error is returned by\nPWRIOC_START and the controller is left disabled).  With the input\nlowered, VIN_UV is reported as SMPS_FAULT_OTHER and the state becomes\nSMPS_STATE_FAULT; the output stopped at about 6.7 V and came back at about\n8 V (VDET set to 6.9 V falling and 8.0 V rising), and VIN_UV stays latched\nuntil the faults are cleaned.  Not tested: load (regulation, current limit,\nhiccup protection), an overcurrent fault, I2C failure with the converter\nrunning and the input overvoltage protection.\n\nAssisted-by: Claude Code:claude-sonnet-5-5\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "40eb6bc7894faec60d4e56bc3c4b24f97e9f18ff",
      "tree": "b46542ead56f0f2bc85cc93ac4e47754e13f73d7",
      "parents": [
        "d748a3647a6ff88cf35cb8dafb730b7badde5220"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Tue Oct 20 06:08:53 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 19:28:25 2026 +0800"
      },
      "message": "drivers/power: fix the open count of the SMPS driver\n\nsmps_open() stored the open count only on the first open, so a second\nopen left it at 1 and the first close that followed took the count to\nzero and called the lower half shutdown, while another descriptor was\nstill open.  Store the count on every open.\n\nAlso return the result of the first-open setup instead of always\nreturning OK, so that a failing lower half setup is seen by the caller.\n\nAlso add the blank line after the declaration that nxstyle reports in the\nsame function.\n\nFound while running a LM51772 on an STM32G4: a monitoring program that\nopened and closed the device switched the converter off.  With the fix\nthe converter keeps running across other opens and closes.\n\nAssisted-by: Claude Code:claude-sonnet-5-5\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "d748a3647a6ff88cf35cb8dafb730b7badde5220",
      "tree": "0683d6fa25b7fe807433426f15ec13eeab106a1f",
      "parents": [
        "0be74ca5454241ffaae95f371fdb145a183561fd"
      ],
      "author": {
        "name": "chao an",
        "email": "anchao.archer@bytedance.com",
        "time": "Wed Oct 21 13:21:46 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 15:45:15 2026 +0800"
      },
      "message": "fs/hostfs: close host fd on append seek failure\n\nhostfs_open() opens the host file before seeking to the end for O_APPEND\nmode.  If the seek fails, the error path freed the hostfs file structure\nbut did not close the already-opened host file descriptor.\n\nRoute the append seek failure through a cleanup path that closes the host\nfile descriptor before freeing the hostfs file structure.\n\nSigned-off-by: chao an \u003canchao.archer@bytedance.com\u003e\n"
    },
    {
      "commit": "0be74ca5454241ffaae95f371fdb145a183561fd",
      "tree": "37548d40f1b220d76d7365fd9b06548cbebe67d0",
      "parents": [
        "a16dbf2100e6a1484a59cb41826034d01834b36d"
      ],
      "author": {
        "name": "chao an",
        "email": "anchao.archer@bytedance.com",
        "time": "Wed Oct 21 13:17:06 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 15:44:45 2026 +0800"
      },
      "message": "net/socket: fix recvfrom kernel copyout length\n\nIn kernel builds, recvfrom() receives data into a temporary kernel buffer\nbefore copying the result back to the user buffer.  The old code copied\nthe full requested length regardless of how many bytes were actually\nreceived, which could copy uninitialized bytes from the kernel buffer on\nshort receives.\n\nOnly copy data back when bytes were received, and limit the copyout size\nto the number of bytes returned by psock_recvfrom().  Also avoid copying\nthe source address back to user space when the receive operation failed.\n\nSigned-off-by: chao an \u003canchao.archer@bytedance.com\u003e\n"
    },
    {
      "commit": "a16dbf2100e6a1484a59cb41826034d01834b36d",
      "tree": "880279cba5c0107e98a4ab3cca0f0adc5ec72638",
      "parents": [
        "87e653fbb409ba172403c6170d763581d2dc244c"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 12 01:04:30 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 11:06:53 2026 +0800"
      },
      "message": "arch/arm64: Keep the TLS info address of a thread in TPIDR_EL0.\n\nUser code found the TLS info of the running thread by rounding the stack\npointer down to the TLS stack alignment.  Code that runs on another\nstack, such as a context made by makecontext() or a coroutine, got\nanother address, and libc read garbage as its stream list, errno and\npthread keys: the first printf() could fault in the kernel.\n\nThe kernel now sets TPIDR_EL0 of each thread to the base of its stack\nallocation, where the TLS info is, and saves and restores it with the\nother registers (in the context slot that was reserved).  A forked\nchild gets the address of its own stack, and a signal handler keeps\nthe thread\u0027s value.  arm64_jump_to_user() stores it too: the thread\nhas used its initial context area as kernel stack before it enters\nuser mode.  User code reads TPIDR_EL0 through up_tls_info().\n\nThe kernel does not use up_tls_info(), so tls_get_info() is now always\nbuilt: the kernel side of a flat build still calls it.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "87e653fbb409ba172403c6170d763581d2dc244c",
      "tree": "b8fb2443e367968704602ac5a6e2d5b1b67014f2",
      "parents": [
        "f731eaf729613328cee1996e332ecc37f1c17edf"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 22:16:50 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 11:06:53 2026 +0800"
      },
      "message": "Revert \"arm64: cache TLS info pointer in TPIDR_EL0\"\n\nThis reverts commit 5cfe424bc3f84c30b56cb3b67230462d1e1d140f.\n\nThe commit defines up_tls_info() as a read of TPIDR_EL0 also for the\nkernel, so tls_get_info() in the kernel takes the TLS info from a\nregister that user code can write.  In a protected or a kernel build,\nthe kernel then writes errno to an address that user code selects: a\ntest program that points TPIDR_EL0 to a copy of its TLS info and calls\nopen() on a missing file sees the kernel write ENOENT into the copy\n(\"kernel wrote errno through the user TPIDR_EL0 YES\" on\nqemu-armv8a:knsh).  With CONFIG_TLS_NCLEANUP \u003e 0, tls_cleanup_push()\nalso writes a callback and its argument there.\n\nThe commit also writes stack_alloc_ptr to TPIDR_EL0 at each context\nswitch, so a value that user code writes is lost.\n\nThe revert keeps the blank line that the commit added in\narm64_cpustart.c, which nxstyle needs.\n\nThe next commit keeps TPIDR_EL0 per thread in the context instead, and\nonly user code reads it.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "f731eaf729613328cee1996e332ecc37f1c17edf",
      "tree": "407b410643c88bb92969f7862b139d36f30b8588",
      "parents": [
        "83f2650a95ded7b9b9ce01db03398fdddb6f0ca1"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 01:49:35 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 10:54:11 2026 +0800"
      },
      "message": "libc/stdio: Let remove() remove a directory after unlink() fails with EPERM.\n\nremove() calls unlink() first, and calls rmdir() only when unlink()\nfails with EISDIR.  POSIX also lets unlink() of a directory fail with\nEPERM, and v9fs on a macOS host does that.  Then remove() of an empty\ndirectory failed.\n\nAlso call rmdir() after EPERM.  If rmdir() then fails with ENOTDIR, the\npath is not a directory: keep the errno of unlink().\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "83f2650a95ded7b9b9ce01db03398fdddb6f0ca1",
      "tree": "d724a1fc478c47a26492b98dfe1bfd5f6c501739",
      "parents": [
        "85edf8c9877eb76468cc4435541c1c1e06cdf1c9"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 01:49:33 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 10:54:11 2026 +0800"
      },
      "message": "include/sys/stat.h: Define UTIME_OMIT for C++ too.\n\nCommit 545a93301ba removed UTIME_OMIT from C++, because libc++ uses\nutimensat() when UTIME_OMIT is defined, and NuttX did not have\nutimensat() at that time.  That commit says to revert it when\nutimensat() is available.\n\nutimensat() is in libc now (lib_utimensat.c), and the VFS handles\nUTIME_OMIT and UTIME_NOW.  Define UTIME_OMIT for C++ again.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "85edf8c9877eb76468cc4435541c1c1e06cdf1c9",
      "tree": "e0bbb7a1113d80afb27189cdb747a59a28a7f9d7",
      "parents": [
        "53818d5a7ef1f19a553b9f9a569d7e06365b6172"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 01:49:33 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 10:54:11 2026 +0800"
      },
      "message": "include/unistd.h: Define _POSIX_MONOTONIC_CLOCK and _POSIX_CLOCK_SELECTION.\n\nNuttX supports CLOCK_MONOTONIC, clock_nanosleep() and\npthread_condattr_setclock().  sysconf(_SC_MONOTONIC_CLOCK) returns 1, and\nDocumentation/standards/posix.rst marks both options as supported.  But\n\u003cunistd.h\u003e did not define the two option macros, so a program that\nchecks them at compile time did not use the monotonic clock.  Also,\nsysconf(_SC_CLOCK_SELECTION) failed with ENOSYS.\n\nDefine _POSIX_MONOTONIC_CLOCK and _POSIX_CLOCK_SELECTION to\n_POSIX_VERSION, as the other supported options.  sysconf() returns these\nvalues for _SC_MONOTONIC_CLOCK and _SC_CLOCK_SELECTION.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "53818d5a7ef1f19a553b9f9a569d7e06365b6172",
      "tree": "6b8444e91da3d8c9be3122f05f36dbb31b24b127",
      "parents": [
        "1e6d30aaee997166fd5ca69da45d6d1030d7b489"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 01:49:32 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 10:54:11 2026 +0800"
      },
      "message": "include/pthread.h: Make the \u003csched.h\u003e symbols visible.\n\nPOSIX says that the inclusion of \u003cpthread.h\u003e makes the symbols of\n\u003csched.h\u003e and \u003ctime.h\u003e visible.  NuttX included only \u003ctime.h\u003e.  A\nprogram that includes only \u003cpthread.h\u003e and calls sched_yield() or uses\nSCHED_FIFO did not compile.\n\nInclude \u003csched.h\u003e in \u003cpthread.h\u003e.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "1e6d30aaee997166fd5ca69da45d6d1030d7b489",
      "tree": "918bb372d38ae409a06ce12b85ebe1e0791b0eef",
      "parents": [
        "8439284bf25fc376e764e4ff73d1ee36d5d509f8"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 17:38:53 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 10:05:23 2026 +0800"
      },
      "message": "Documentation: Describe CH_STAT_NOFOLLOW for the chstat() method.\n\nlchown(), lchmod() and lutimens() now set CH_STAT_NOFOLLOW in the flags\nof the chstat() method of a file system.  Say what it means.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "8439284bf25fc376e764e4ff73d1ee36d5d509f8",
      "tree": "e6211ea6107468f6086850c6915d6766437f9cdc",
      "parents": [
        "2f0df1b5d1b53bce4a34a23f55dabe1218ad8c59"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 17:38:53 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 10:05:23 2026 +0800"
      },
      "message": "arch/sim: Honour CH_STAT_NOFOLLOW in host_chstat().\n\nhost_chstat() called chmod(), chown() and utimensat() without\nAT_SYMLINK_NOFOLLOW, so lchown(), lchmod() and lutimens() on a hostfs\nmount changed the file that the link points to.  Add\nNUTTX_CH_STAT_NOFOLLOW and use fchmodat(), fchownat() and utimensat()\nwith AT_SYMLINK_NOFOLLOW when it is set.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "2f0df1b5d1b53bce4a34a23f55dabe1218ad8c59",
      "tree": "996169a176c897765a168ce54bd266c2ee977715",
      "parents": [
        "f5cff1cbd66f39d76310098117829062caa0f413"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 17:38:52 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 10:05:23 2026 +0800"
      },
      "message": "fs/rpmsgfs: Honour CH_STAT_NOFOLLOW in the chstat request.\n\nThe server called chmod(), chown() and utimens() for every chstat\nrequest, so lchown(), lchmod() and lutimens() on an rpmsgfs mount\nchanged the file that the link points to.  Call lchmod(), lchown() and\nlutimens() when the client sets CH_STAT_NOFOLLOW.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "f5cff1cbd66f39d76310098117829062caa0f413",
      "tree": "4487a01a12d9e9490e9daaa29e680d1a26fe6d02",
      "parents": [
        "3173a0c2cba9996009d07cfdd55b71d9eefdbb4c"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 17:38:52 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 10:05:23 2026 +0800"
      },
      "message": "fs: Let lchown(), lchmod() and lutimens() change the link on a mount point.\n\nOn a mount point, chstat_recursive() calls the chstat() method of the\nfile system with the same flags for chown() and for lchown().  The file\nsystem cannot know that it must not follow the symbolic link.  So\nlchown(), lchmod() and lutimens() (and fchownat(), fchmodat() and\nutimensat() with AT_SYMLINK_NOFOLLOW) changed the file that the link\npoints to, and left the link as it was.\n\nAdd the flag CH_STAT_NOFOLLOW.  chstat_recursive() sets it when the\ncaller does not resolve the link.  V9FS walks to the link without\nfollowing it when the flag is set, as its lstat() does.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "3173a0c2cba9996009d07cfdd55b71d9eefdbb4c",
      "tree": "0c79b44a48ee2ac7232686190af9bc8d8fb9c83c",
      "parents": [
        "5e303d3cd2f68d3d62a1a3a67101dbdb01ee608e"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 02:03:58 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 10:03:45 2026 +0800"
      },
      "message": "fs/romfs: Do not read outside of the volume.\n\nROMFS takes the offsets of file headers, hard link targets and names\nfrom the image, and romfs_devcacheread() did not check them.  In XIP\nmode it added the offset to the image address, so a damaged image\ngave a bad pointer and the kernel stopped with a load exception.  For\nexample, an image with no entries puts the root directory at the end\nof the volume.  The mount then reads the data after the image and\nfollows it as a hard link.\n\nromfs_devcacheread() now returns -EIO if the 16-byte chunk at the\noffset is not fully in the volume.  The mount or the lookup then fails\nand the system continues.  romfs_datastart() already does the same\ncheck.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "5e303d3cd2f68d3d62a1a3a67101dbdb01ee608e",
      "tree": "ef4340b83527d3d0e0f10777fd19559811c1222e",
      "parents": [
        "1738e6fdf1c7a72ff27541f7c0018f4a903746f1"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 02:03:21 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 10:03:45 2026 +0800"
      },
      "message": "fs/romfs: Fix the nxstyle error in fs_romfsutil.c.\n\nPut the body of a while loop on its own line in braces.  This error\nis older than the next change.  This change does not change the code.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "1738e6fdf1c7a72ff27541f7c0018f4a903746f1",
      "tree": "b5c377ac87383184610ead93ec8dd1babd6b91f4",
      "parents": [
        "f9e367e154a6b308c4e18190bfee5525dae295af"
      ],
      "author": {
        "name": "Sarthak Pandey",
        "email": "sarthakpandey5667@gmail.com",
        "time": "Tue Oct 20 09:53:28 2026 +0530"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 01:44:51 2026 +0800"
      },
      "message": "sys/types.h: move CONFIG_INIT_ENTRYPOINT declaration out of sys/types.h\n\nCommit 321105a changed the prototype of main() in crt0.c to\nint main(int argc, char *argv[], char *envp[]).\n\nWhen CONFIG_INIT_ENTRYPOINT\u003d\"main\" (the default), include/sys/types.h\ndeclared int main(int argc, FAR char *argv[]), which conflicts with the\n3-argument declaration in crt0.c during compilation:\n\nerror: conflicting types for \u0027main\u0027; have \u0027int(int, char **, char **)\u0027\nnote: previous declaration of \u0027main\u0027 with type \u0027int(int, char **)\u0027\n\nFurthermore, sys/types.h is a POSIX type header and should not declare\napplication entry points, which pollutes the global namespace.\n\nThis commit moves the prototype declaration of CONFIG_INIT_ENTRYPOINT\nfrom include/sys/types.h to sched/init/nx_bringup.c (for flat builds)\nand include/nuttx/userspace.h (for protected builds) where the entry\npoint is actually referenced.\n\nFixes: #20823\nSigned-off-by: Sarthak Pandey \u003csarthakpandey5667@gmail.com\u003e\n"
    },
    {
      "commit": "f9e367e154a6b308c4e18190bfee5525dae295af",
      "tree": "76c38fb7158e09999ee14ac5fa3ccfd206b4559d",
      "parents": [
        "b50ec8ec6b914006e68103439657cd743bfdeda3"
      ],
      "author": {
        "name": "chao an",
        "email": "anchao.archer@bytedance.com",
        "time": "Tue Oct 20 14:57:21 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 01:43:04 2026 +0800"
      },
      "message": "arch/arm/ra8m1: advertise ARMv8-M cache support\n\nRA8M1 is based on the Cortex-M85 core and the chip header already defines the\nARMv8-M instruction and data cache line sizes used by the cache maintenance\nhelpers.  However, the RA8M1 family Kconfig did not advertise the generic\nARMv8-M cache capabilities, so the common ARMv8-M I-Cache and D-Cache options\nwere not naturally exposed for this target.\n\nSelect ARMV8M_HAVE_ICACHE and ARMV8M_HAVE_DCACHE from RA8M1_FAMILY to make the\nexisting ARMv8-M cache configuration options available to RA8M1 boards.  This\nkeeps the chip capability declaration aligned with the existing RA8M1 cache\nline size definitions and the generic ARMv8-M cache implementation.\n\nSigned-off-by: chao an \u003canchao.archer@bytedance.com\u003e\n"
    },
    {
      "commit": "b50ec8ec6b914006e68103439657cd743bfdeda3",
      "tree": "5c40303941eb750d1a10e28135b570bc00a0e338",
      "parents": [
        "30e4e269ddb4b54074c0880ea236e7ce3fed85c0"
      ],
      "author": {
        "name": "chao an",
        "email": "anchao.archer@bytedance.com",
        "time": "Tue Oct 20 14:56:07 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 01:42:33 2026 +0800"
      },
      "message": "cmake/armv8-m: add PACBTI build flags\n\nThe Make-based ARMv8-M toolchain configuration already appends the PACBTI\narchitecture extension and enables standard branch protection when\nCONFIG_ARM_PACBTI is selected.  The CMake path, however, only handled DSP,\nMVE, FPU and CMSE flags, so CMake builds did not get the same PACBTI code\ngeneration options.\n\nAdd the missing CMake handling for CONFIG_ARM_PACBTI by appending +pacbti to\nthe ARMv8-M architecture extension string and passing\n-mbranch-protection\u003dstandard to the compiler.  This keeps the CMake and Make\nbuild paths aligned for Cortex-M85 and other ARMv8-M targets that expose the\nPACBTI capability.\n\nSigned-off-by: chao an \u003canchao.archer@bytedance.com\u003e\n"
    },
    {
      "commit": "30e4e269ddb4b54074c0880ea236e7ce3fed85c0",
      "tree": "3814b8ac79bc530212506514602544dbcdb0cedb",
      "parents": [
        "629c85c5950fe371c83fd613da3da6d1b9a1e8a5"
      ],
      "author": {
        "name": "chao an",
        "email": "anchao.archer@bytedance.com",
        "time": "Tue Oct 20 14:49:25 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 01:30:38 2026 +0800"
      },
      "message": "arch/arm: advertise Cortex-M85 MVE and PACBTI support\n\nCortex-M85 is an Armv8.1-M Mainline core that can provide the M-Profile\nVector Extension and Pointer Authentication/Branch Target Identification.\nNuttX already has generic Kconfig symbols for these architectural\ncapabilities, and the ARMv8-M toolchain logic uses them to expose the\ncorresponding compiler options and user-visible PACBTI switch.\n\nSelect ARM_HAVE_MVE and ARM_HAVE_PACBTI from ARCH_CORTEXM85 so Cortex-M85\nports can see and enable the matching architecture features without each\nchip family having to duplicate the core capability declaration.\n\nSigned-off-by: chao an \u003canchao.archer@bytedance.com\u003e\n"
    },
    {
      "commit": "629c85c5950fe371c83fd613da3da6d1b9a1e8a5",
      "tree": "2ba968141c5b1761c67410c1f23e4ac0c3b85847",
      "parents": [
        "edffbe32f2b943629b9b0d9e17f02e567b7ecef0"
      ],
      "author": {
        "name": "Peter Barada",
        "email": "peter.barada@gmail.com",
        "time": "Sun Oct 18 10:00:08 2026 -0400"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 21 00:52:48 2026 +0800"
      },
      "message": "boards/arm/stm32h7: Add stm32h7s8-dk Ethernet support\n\nAdd jumbo-xip configuraiton that enables ethernet.\nAdd STM32_ETH_MDIO GPIO Kconfig option which enables GPIO emulation of\nSMA clause-22 communication with PHY; required when JP6 is in default\npoition. If GPIO emulation is not enabled, JP6 must be in alternate\nposition to allow SMA communication with LAN8742A PHY via ETHMAC.\n\nSigned-off-by Peter Barada \u003cpeter.barada@gmail.com\u003e\n"
    },
    {
      "commit": "edffbe32f2b943629b9b0d9e17f02e567b7ecef0",
      "tree": "2be0feac2eb95a93c33f1ef489d1b24712b82065",
      "parents": [
        "05920ae3e3d1d1763cd4b2cc97b6bd4cc3cfde94"
      ],
      "author": {
        "name": "chao an",
        "email": "anchao.archer@bytedance.com",
        "time": "Tue Oct 20 13:19:04 2026 +0800"
      },
      "committer": {
        "name": "Michal Lenc",
        "email": "michallenc@seznam.cz",
        "time": "Tue Oct 20 15:32:22 2026 +0100"
      },
      "message": "sched/signal: disable POSIX timers with all signals\n\nCONFIG_DISABLE_ALL_SIGNALS removes the signal subsystem, but the\ncurrent POSIX timer implementation still depends on signal based\nnotification.\n\ntimer_create() defaults a NULL sigevent to SIGEV_SIGNAL with SIGALRM,\nand timer expiration is delivered through nxsig_notification() with\nSI_TIMER.  Keeping POSIX timers enabled while all signal support is\nremoved therefore leaves timer APIs wired to notification machinery that\nis intentionally unavailable.\n\nSelect DISABLE_POSIX_TIMERS from DISABLE_ALL_SIGNALS so the Kconfig\nstate matches the no-signal configuration semantics and dependent timer\ncode is consistently omitted.  This also avoids requiring each\nno-signal defconfig to disable POSIX timers manually.\n\nSigned-off-by: chao an \u003canchao.archer@bytedance.com\u003e\n"
    },
    {
      "commit": "05920ae3e3d1d1763cd4b2cc97b6bd4cc3cfde94",
      "tree": "793cd9dfeef90bdc86587f39a22df6b83b4c546e",
      "parents": [
        "aa86cb99193cab52538c974ff8879edb7057dce2"
      ],
      "author": {
        "name": "yangjianqing",
        "email": "yangjianqing@xiaomi.com",
        "time": "Mon Mar 02 16:42:30 2026 +0800"
      },
      "committer": {
        "name": "archer",
        "email": "magicdcps@hotmail.com",
        "time": "Tue Oct 20 20:39:10 2026 +0800"
      },
      "message": "sim/usrsock: add TCP socket option support in host usrsock\n\nAdd TCP-level socket option mapping (TCP_NODELAY, TCP_KEEPIDLE,\nTCP_KEEPINTVL, TCP_KEEPCNT, TCP_MAXSEG, TCP_CORK) to the sim\nhost usrsock implementation.\n\nSigned-off-by: yangjianqing \u003cyangjianqing@xiaomi.com\u003e\n"
    },
    {
      "commit": "aa86cb99193cab52538c974ff8879edb7057dce2",
      "tree": "24ad3596b7bb5cda4ec5d801b1b998e812bdd19e",
      "parents": [
        "548c7bccfa61b9e02be39a65c7b285ebdf16312b"
      ],
      "author": {
        "name": "dongjiuzhu1",
        "email": "dongjiuzhu1@xiaomi.com",
        "time": "Mon Jan 12 11:36:02 2026 +0800"
      },
      "committer": {
        "name": "archer",
        "email": "magicdcps@hotmail.com",
        "time": "Tue Oct 20 20:39:10 2026 +0800"
      },
      "message": "sys/socket: adjust SO_RCVTIMEO/SO_SENDTIMEO\n\nto avoid s_options overflow\n\nSigned-off-by: dongjiuzhu1 \u003cdongjiuzhu1@xiaomi.com\u003e\n"
    },
    {
      "commit": "548c7bccfa61b9e02be39a65c7b285ebdf16312b",
      "tree": "381ca36cd4504cbf1d409864a5c9d31ed63ffb90",
      "parents": [
        "09f0300894fc06eccce1fcd299a47985efd58383"
      ],
      "author": {
        "name": "dongjiuzhu1",
        "email": "dongjiuzhu1@xiaomi.com",
        "time": "Tue Jan 06 15:57:45 2026 +0800"
      },
      "committer": {
        "name": "archer",
        "email": "magicdcps@hotmail.com",
        "time": "Tue Oct 20 20:39:10 2026 +0800"
      },
      "message": "sim/usrsock: align socket option with sys/socket.h\n\nnew socket option definition introduced by commit:\nI254b84e871012361c56f26f356ce27c0f740785f\n\nSigned-off-by: dongjiuzhu1 \u003cdongjiuzhu1@xiaomi.com\u003e\n"
    },
    {
      "commit": "09f0300894fc06eccce1fcd299a47985efd58383",
      "tree": "3746d35fed122f7038351d8374395837cfc563ee",
      "parents": [
        "14f2daaa2d3ae8f51979fd839a74de83ff03a751"
      ],
      "author": {
        "name": "dongjiuzhu1",
        "email": "dongjiuzhu1@xiaomi.com",
        "time": "Wed Dec 03 17:54:39 2025 +0800"
      },
      "committer": {
        "name": "archer",
        "email": "magicdcps@hotmail.com",
        "time": "Tue Oct 20 20:39:10 2026 +0800"
      },
      "message": "net: adjust the option sort of level SOL_SOCKET\n\nAdjust the order of all options where the level is SOL_SOCKET. If an\noption occupies a bit in socket_conn_s:s_options, place it at the front.\nThis is to save bits for options of other levels and prevent the 32-bit\noverflow of socket_conn_s:s_options.\n\nThe definition of many options for other levels uses _SO_PROTOCOL as the\nbase value. If _SO_PROTOCOL is relatively small, more bits will be left\nfor options of other levels. Before adjustment, there were 16 bits\navailable; after adjustment, this number has increased to 23 bits.\n\nSigned-off-by: dongjiuzhu1 \u003cdongjiuzhu1@xiaomi.com\u003e\n"
    },
    {
      "commit": "14f2daaa2d3ae8f51979fd839a74de83ff03a751",
      "tree": "6afd794309cdb72ca2a017447f1e9905633e4e24",
      "parents": [
        "77c36150c2a3dc4e614d1d58e6bb364db6315267"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Mon Oct 19 11:41:21 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 09:14:22 2026 -0300"
      },
      "message": "arch/arm/src/common/stm32: fix WWDG time left in WDIOC_GETSTATUS\n\nstm32_getstatus() returned the time elapsed since the last keepalive as\ntimeleft. The counter runs from T_RESET | reload down to T_MAX, where\nthe reset is generated, so the time left is the ticks above T_MAX\nscaled by the timeout. The debug print also showed the flags instead\nof the time left.\n\nMeasured on NUCLEO-H533RE and NUCLEO-C562RE with a 98 ms timeout fed\nevery 25 ms: timeleft read 0..39 ms before the fix.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "77c36150c2a3dc4e614d1d58e6bb364db6315267",
      "tree": "d03163fc4bd3d68bb40a1cab6598fcf2c5477bc9",
      "parents": [
        "206d82440e72cad269f0d1456f54b96a508f0e00"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Sun Oct 11 16:27:36 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 09:14:22 2026 -0300"
      },
      "message": "arch/arm: enable IWDG and WWDG on all STM32 families\n\nSelect the watchdog IP version on the families without watchdog\nsupport so the common IWDG and WWDG drivers can be used there too. The\nversions are taken from the reference SVD files and the ST CMSIS\ndevice headers (the STM32L5 SVD file places WWDG WDGTB at bit 7, the\nCMSIS header at bit 11):\n\n- STM32_HAVE_IP_WDG_V2: STM32L5, STM32WB, STM32WL5\n- STM32_HAVE_IP_WDG_V3: STM32C5, STM32N6, STM32U3\n\nThe WWDG clock is enabled by the RCC initialization on STM32C5,\nSTM32N6, STM32U3 and STM32WL5, and the missing STM32N6 WWDG base\naddress and RCC bits, the STM32C5/STM32U3 LSI prototypes and the\nSTM32_LSI_FREQUENCY of the N6, U3 and WL5 boards are added.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "206d82440e72cad269f0d1456f54b96a508f0e00",
      "tree": "e3ac7d0ca2035c438cd4669c016b0f5d2be6bda0",
      "parents": [
        "e1352a25e6bac5ba2d6b16e47b4082af148ec38b"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Sun Oct 11 16:25:13 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 09:14:22 2026 -0300"
      },
      "message": "arch/arm: enable WWDG clock on STM32C0 and STM32G0\n\nThe WWDG driver expects the RCC initialization to enable the WWDG\nclock, but STM32C0 and STM32G0 never set WWDGEN, so the WWDG was not\nclocked. Enable it with CONFIG_STM32_WWDG (RCC_APBENR1 bit 11).\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "e1352a25e6bac5ba2d6b16e47b4082af148ec38b",
      "tree": "48fe92007256aa6a4d19bd8f406df18a7cd49647",
      "parents": [
        "ecf46578888b15464bc49b3a447bbb56f868e470"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Sat Oct 10 21:07:42 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 09:14:22 2026 -0300"
      },
      "message": "arch/arm/src/common/stm32: unify watchdog drivers\n\nUse one IWDG and one WWDG driver for all STM32 families and remove the\nCortex-M0 and STM32H5 copies and the unused STM32H7/STM32L4 register\nheaders.\n\nThe watchdog register layout differs in two fields only, so the\nhardware is now described by three IP versions taken from the reference\nSVD files instead of the core type, replacing STM32_HAVE_IP_WDG_M0_V1\nand STM32_HAVE_IP_WDG_M3M4_V1:\n\n- STM32_HAVE_IP_WDG_V1: IWDG PR[2:0], WWDG WDGTB[1:0] at bit 7\n  (F0, F1, F2, F3, F4, F7, L0, L1, L4)\n- STM32_HAVE_IP_WDG_V2: IWDG PR[2:0], WWDG WDGTB[2:0] at bit 11\n  (C0, G0, G4, H7)\n- STM32_HAVE_IP_WDG_V3: IWDG PR[3:0], WWDG WDGTB[2:0] at bit 11\n  (H5, H7RS, U0, U5)\n\nThis fixes the WWDG timer base field on STM32C0, STM32G0, STM32G4 and\nSTM32U0, which was programmed at bit 7 instead of bit 11, and the IWDG\nwindow register offset. The drivers now build on STM32F7, STM32U5 and\nSTM32H7RS too.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "ecf46578888b15464bc49b3a447bbb56f868e470",
      "tree": "2568dd96935a0b95a3723766e0f70b7561fbde1e",
      "parents": [
        "9c3c8fc2f356926ef9943fa6334f255fb116709f"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Wed Jul 15 20:03:48 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 09:14:22 2026 -0300"
      },
      "message": "arch/arm/src/stm32: unify IWDG and WWDG drivers into common/stm32\n\nRetire the H7 IWDG/WWDG and L4 IWDG copies in favor of\ncommon/stm32/stm32_iwdg_m3m4_v1.c / stm32_wwdg_m3m4_v1.c. The only\ndelta left was naming style, the DBGMCU freeze-in-debug write is\nalready shared through the unified DBGMCU header.\n\nPlumbing: the common WDG register header aliases the H7 IWDG1/WWDG1\ninstance names; l4 hardware/stm32l4_wdg.h is renamed to stm32_wdg.h\nand the L4/H7 stm32_wdg.h source facades are dropped in favor of the\ncommon one. The common IWDG/WWDG build gates move out of the\nSTM32_COMMON_LEGACY block so H7/L4 reach them.\n\nBuilt with IWDG+WWDG+JTAG forced on: nucleo-h743zi, nucleo-l476rg,\nnucleo-l496zg (make and CMake), nucleo-g474re and stm32f4discovery.\nstm32f103-minimum fails on a pre-existing\nmissing STM32_LSI_FREQUENCY in board.h, unrelated to this change.\nVerified .config equivalence on 18 configs.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "9c3c8fc2f356926ef9943fa6334f255fb116709f",
      "tree": "8451aab7589713af58256fef15b277dda5a9d61c",
      "parents": [
        "d0886af95dc1bba6c6db7495a48c68ba9182937f"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Sat Oct 10 22:24:53 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 09:14:22 2026 -0300"
      },
      "message": "arch/arm/src/common/stm32: unify DBGMCU register definitions\n\nUse one DBGMCU register header for all STM32 families and remove the\nSTM32F7, STM32H5, STM32H7, STM32L4, STM32L5 and STM32U5 copies and the\ncommon Cortex-M0 and M3/M4 variants.\n\nThe DBGMCU layout is described by IP versions taken from the reference\nSVD files:\n\n- STM32_HAVE_IP_DBGMCU_V1: freeze bits in CR (F1)\n- STM32_HAVE_IP_DBGMCU_V2: APB1 and APB2 freeze registers\n  (F2, F3, F4, F7, L1)\n- STM32_HAVE_IP_DBGMCU_V3: APB1 and APB2 freeze registers at\n  0x40015800 (C0, F0, G0, L0, U0)\n- STM32_HAVE_IP_DBGMCU_V4: APB1L, APB1H and APB2 freeze registers\n  (G4, L4, L5)\n- STM32_HAVE_IP_DBGMCU_V5: V4 plus APB3 freeze register\n  (C5, H5, U3, U5)\n- STM32_HAVE_IP_DBGMCU_V6: CPU1 APB1L, APB1H and APB2 freeze registers\n  (WB, WL5)\n- STM32_HAVE_IP_DBGMCU_V7: APB1L, APB1H, APB2, APB3 and APB4 freeze\n  registers (H7, H7RS)\n- STM32_HAVE_IP_DBGMCU_V8: APB1L, APB2 and APB4 freeze registers (N6)\n\nEvery version defines the same freeze names, STM32_DBGMCU_\u003cP\u003e_FZ for\nthe register and DBGMCU_\u003cP\u003e_STOP for the bit, so the tickless, IWDG,\nWWDG and FOC drivers no longer depend on the register layout. The\nSTM32_DBGMCU_HAVE_TIM_FZ_* options are not needed anymore.\n\nThis also fixes the watchdog freeze with JTAG enabled: the common\nCortex-M0 and M3/M4 IWDG/WWDG drivers wrote the F1 DBGMCU_CR bit on\nevery family other than F2/F3/F4/L1 (wrong register on G4, undefined\nmacros on Cortex-M0), and the STM32H7 IWDG driver used APB4 freeze\nmacros that did not exist in the tree.\n\nSTM32C5, STM32F37xx, STM32F7, STM32H5, STM32L5, STM32N6, STM32U3,\nSTM32U5, STM32WB and STM32WL5 now select a DBGMCU IP version, so the\ntickless timer and the watchdogs are frozen in debug mode on these\nchips too. The STM32U5 LPTIM freeze bits are taken from the SVD instead\nof the STM32L5 values.\n\nstm32_dumpgpio_m3m4_v1.c is now built for the GPIO IP it implements\ninstead of the removed DBGMCU options.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "d0886af95dc1bba6c6db7495a48c68ba9182937f",
      "tree": "019ca9cb34d6bf22860c48cda5d239733cee27c3",
      "parents": [
        "fcb4df8391a36e1e9554805071ad8d13bcc6678b"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 14:21:35 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 07:48:34 2026 -0300"
      },
      "message": "cmake: Link a loadable module through the compiler driver with LTO.\n\nWith LTO, arm, arm64 and risc-v set CMAKE_LD to gcc, and\nnuttx_add_application() links a loadable module with it.  Two parts of\nthat link were wrong, so no module could be built or loaded.\n\nThe ELF link options of arm64 (--gc-sections, -Bstatic), risc-v\n(--oformat) and arm (-Bstatic, and --unresolved-symbols and\n--emit-relocs with CONFIG_PIC) are linker options.  gcc does not know\nthem and stops with \"unrecognized command-line option \u0027--gc-sections\u0027\".\nGive them with -Wl, when CMAKE_LD is gcc, as arm already did for\n--gc-sections.  An FDPIC module of arm is linked by the FDPIC linker, so\nits options stay as they are.\n\nThe module objects and crt0 were compiled with -flto, and the partial\nlink (-r) keeps only LTO data, which the loader cannot use.  When the\nlink mixes LTO and other objects, gcc compiles the LTO objects without\nthe options of the target, and an arm link stops with \"uses VFP\nregister arguments, ... does not\".  Compile the objects of a loadable\nmodule and STARTUP_OBJS (crt0) with ${NO_LTO} when LTO is on.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "fcb4df8391a36e1e9554805071ad8d13bcc6678b",
      "tree": "9cdaca8d238b1fa7d8d5eabf086d182aa25b932a",
      "parents": [
        "18a0893838a1a22fe9417e9be8c1ebc3c35f93d2"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 15:45:52 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 07:48:01 2026 -0300"
      },
      "message": "cmake: Keep gcc-ar when LTO is enabled after the first configure.\n\nCMake saves CMAKE_AR and CMAKE_RANLIB of the first configure in\nCMakeFiles/\u003cversion\u003e/CMake\u003cLANG\u003eCompiler.cmake.  On each later\nconfigure, CMake reads this file after the toolchain file, so the saved\ntools replace the tools that the toolchain file selects.\n\nThe arm, arm64 and risc-v GCC toolchain files select gcc-ar only when\nLTO is on.  arm and risc-v also select gcc-ranlib only with LTO.  When\nLTO is enabled in an existing build directory, for example with\nmenuconfig or kconfig-tweak, the archive rules keep the plain ar and\nranlib.  These tools load the LTO plugin only if the toolchain installs\nit in lib/bfd-plugins, and the Arm GNU toolchain does not.  Then the\narchive index has no symbols of the LTO objects, and the linker takes no\nmember from the libraries.  An arm link warns \"cannot find entry symbol\n__start\" and writes an empty nuttx, or stops with undefined references\nfrom the assembly start-up code.  arm64 always runs gcc-ranlib, which\nwrites a correct index.\n\nPut the tools that the toolchain file selects in the archive rules,\ninstead of the \u003cCMAKE_AR\u003e and \u003cCMAKE_RANLIB\u003e placeholders.  The\ntoolchain file runs on each configure, after .config is read, so the\nrules follow the current LTO options.  A first configure gives the same\nrules as before.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "18a0893838a1a22fe9417e9be8c1ebc3c35f93d2",
      "tree": "3640a520dd6725d255881bcd2b72d9ef9a2fc567",
      "parents": [
        "a44a93f9b6bdd952dbcc942e982cf6028de8d4bc"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 11:52:55 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 07:47:26 2026 -0300"
      },
      "message": "libs/libc/libc.csv: Export the environment functions.\n\ncrt0 passes the environment to main() as its third argument, so every\nELF program refers to get_environ_ptr().  The system symbol table\n(CONFIG_EXECFUNCS_SYSTEM_SYMTAB), which libc.csv generates, did not have\nit, so no ELF program could be loaded with that table:\n\n  libelf_symvalue: ERROR: SHN_UNDEF: Exported symbol \"get_environ_ptr\"\n  not found\n\nAdd get_environ_ptr() and the other functions of the environment:\nclearenv(), getenv(), putenv(), secure_getenv(), setenv() and\nunsetenv(), with the condition that builds them.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "a44a93f9b6bdd952dbcc942e982cf6028de8d4bc",
      "tree": "cbc86fbdef128668e4bd97de4052adc1145d0927",
      "parents": [
        "71b585b4b5c0c579624d0d855ca9482c89c0db57"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 10:02:20 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 07:46:57 2026 -0300"
      },
      "message": "Documentation: Describe TLS, constructors and section placement in NXFLAT.\n\nAdd two limitations to the NXFLAT page: a module can use __thread and\nthread_local variables only with emulated TLS, and nothing runs the\nstatic constructors and destructors of a module.  ldnxflat refuses a\nmodule with native TLS sections or with an .init_array or .fini_array.\n\nAlso say that ldnxflat places the sections itself, so a section that the\nlinker script does not name does not overlap another one.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "71b585b4b5c0c579624d0d855ca9482c89c0db57",
      "tree": "79ad2b222bb1cab36545ae65c465b44ff176dd1f",
      "parents": [
        "5fe956734a6bab013c7abcc2dbe185773c569dd2"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 10:02:06 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 07:46:57 2026 -0300"
      },
      "message": "tools/nxflat/testsuite.sh: Show the message of a failed conversion.\n\nWhen ldnxflat failed, the report showed the first line of its output\nthat holds \"error\".  ldnxflat does not write that word, so the reason\ncolumn stayed empty.  Show the first line of the output instead.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "5fe956734a6bab013c7abcc2dbe185773c569dd2",
      "tree": "35acdaf4ce41965734a766915d99c11b080fae04",
      "parents": [
        "9bd1780df968d74404400cd152d5b9d1e9565b50"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 10:01:50 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 07:46:57 2026 -0300"
      },
      "message": "tools/nxflat/ldnxflat: Refuse native TLS with a clear message.\n\nA toolchain with native TLS, such as Arm GNU 15.3 for arm-none-eabi,\nputs __thread variables in .tdata and .tbss and reaches them with\n__tls_get_addr() and R_ARM_TLS_GD32.  NXFLAT has no thread pointer and\nno TLS relocations, so such a module cannot work.  ldnxflat refused it\nonly at the first TLS relocation, with \"arm relocation 104 at I-Space\n00000118 is not handled\", which does not say why.\n\nRefuse a module with a TLS section and say what to do: build it with a\ntoolchain that emulates TLS.  There, __thread compiles into calls to\n__emutls_get_address(), which the module imports like any other\nfunction.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "9bd1780df968d74404400cd152d5b9d1e9565b50",
      "tree": "453fd7cdc6960426d696d0e489070cd28500654a",
      "parents": [
        "e4b2ef038fe75f7ed83c7dab02baeaab1739d253"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 10:13:28 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 07:46:57 2026 -0300"
      },
      "message": "tools/nxflat/ldnxflat: Place the sections without the linker script.\n\nld -r keeps each member of a section group as a section of its own, and\nthe NXFLAT linker scripts do not place it.  It stays at address zero, on\ntop of .text or .data, and the sections that the script places after it\nmove.  C++ puts inline functions and template instances in COMDAT\ngroups, so many C++ modules have such sections.\n\nFor example, the emutls control objects of a static thread_local member\nof a class template are in two groups.  ld put them at D-Space address 0\nand .bss at 0x10, so all three overlapped .data.  ldnxflat copied one\nover the other with no message.  exec() then failed with ENOENT: the\nloader read the name of the first import as \"flat_abi_v2\".\n\nPlace the sections in ldnxflat: in the order of the section headers, each\nat its alignment, the data of D-Space before its .bss.  A relocatable ELF\nobject gives symbols and relocations as offsets in their section, so\nnothing else changes.  The modules of apps/examples/nxflat convert to the\nsame bytes as before.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "e4b2ef038fe75f7ed83c7dab02baeaab1739d253",
      "tree": "3d2c8f056ceb236f2c3486892eb08a0ccd6bf220",
      "parents": [
        "d22a859a97f532758f654c7f75da4224563a0d9d"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 10:12:51 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 07:46:57 2026 -0300"
      },
      "message": "tools/nxflat/ldnxflat: Refuse static constructors and destructors.\n\nAn NXFLAT module starts at its main() and has no start-up code, so\nnothing runs its .init_array, .fini_array or .preinit_array.  The NXFLAT\nlinker scripts do not place these sections either.  ld leaves them at\naddress zero, on top of .data, and ldnxflat copied them there.\n\nhello++3 of apps/examples/nxflat is an example.  Its .init_array is at\nD-Space address 0, and its .bss starts at 4, inside .data.  The\nconstructor pointer overwrites the first word of .data, the static\nvariables share their addresses with initialized data, and the\nconstructor never runs.\n\nRefuse such a module and name the section.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "d22a859a97f532758f654c7f75da4224563a0d9d",
      "tree": "f07bd1d410bd49a4be9ad6fa02980ffeeb9f5cca",
      "parents": [
        "4381d999f042ba22bf95a06126b06858e21a5c86"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 10:21:42 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 07:46:17 2026 -0300"
      },
      "message": "Documentation/testing: Describe how CI skips merged dependencies.\n\nSay that Build and the memory report skip a depends-on PR that is\nalready merged into the checkout, that they fail on a depends-on PR\nthat is closed without merge, and what the comment shows.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "4381d999f042ba22bf95a06126b06858e21a5c86",
      "tree": "8fd07e5b88ae56b2df78ef4af1f47a33c845b90a",
      "parents": [
        "e29a0b2262c39442414815d15ad4cc7a0355db99"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 10:21:41 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Oct 20 07:46:17 2026 -0300"
      },
      "message": ".github/workflows: Skip depends-on PRs that are already merged.\n\nWhen a depends-on PR is merged, its commits are in master. Build and\nthe memory report then cherry-pick the PR head again, the cherry-pick\nis empty or conflicts, and Fetch-Source fails. The author must remove\nthe depends-on line and start CI again.\n\nRead the state of each dependency with the GitHub API. If the PR is\nmerged and its merge commit is in the checkout, skip the PR. Apply\nopen PRs, PRs merged into a different branch, and PRs whose merge\ncommit is not in the checkout as before. If the API call fails, apply\nthe dependency as before.\n\nA PR that is closed without merge is now an error: CI does not apply\nit, and the step fails with \"closed without merge; remove it from\ndepends-on or reopen it\". Before, CI applied such a PR silently.\n\nThe report marks a skipped dependency with \"merged\": true. A failure\nreport marks a closed dependency with \"closed\": true and the error\ncode dependency_closed. The comment shows \"already merged, skipped\",\n\"closed without merge\", and the reason for the failure.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "e29a0b2262c39442414815d15ad4cc7a0355db99",
      "tree": "651f894bbb1cdc2bc4074dc5eb340b7f7d041720",
      "parents": [
        "1f79593291eb52ef250799d93285f91679fb2e2f"
      ],
      "author": {
        "name": "satoru akita",
        "email": "wwlap24@gmail.com",
        "time": "Mon Oct 19 22:28:07 2026 +0900"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Oct 20 16:51:00 2026 +0800"
      },
      "message": "boards/spresense: Add the nxdoom configuration.\n\nAdd a configuration that plays NXDoom on a Spresense with an ILI9340\ndisplay attached to the extension board, and describe it in the board\ndocumentation.\n\n* The display is used as a frame buffer through LCD_FRAMEBUFFER, at\n  320x240 in landscape.\n* The keys are read from the serial console (GAMES_NXDOOM_UARTKBD).\n* The WAD file lives in the on-board SPI flash, which is mounted at\n  /mnt/spif and filled over the console with rz.\n* The board has 1.5 MB of RAM, so the screen wipe is disabled and the\n  render buffer is placed in .bss.\n* The console UART receive buffer is raised from 256 bytes to 8 KB,\n  because the default overruns while rz writes to the flash.\n\nThe board page describes the whole procedure: getting a WAD file,\nsending it with rz, checking its size and starting the game.\n\nThis depends on the GAMES_NXDOOM_UARTKBD option added to nuttx-apps by a\nseparate pull request. GAMES_NXDOOM_NOWIPE is already in nuttx-apps.\n\nTested with the one-level Squashware IWAD.\n\nAssisted-by: Claude:claude-sonnet-5-5\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nSigned-off-by: satoru akita \u003cwwlap24@gmail.com\u003e\n"
    },
    {
      "commit": "1f79593291eb52ef250799d93285f91679fb2e2f",
      "tree": "e33f0313245221032536f34628d246120e77747b",
      "parents": [
        "f479de022ef3f281e01dbc248b1a199693a907e1"
      ],
      "author": {
        "name": "satoru akita",
        "email": "wwlap24@gmail.com",
        "time": "Mon Oct 19 22:28:07 2026 +0900"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Oct 20 16:51:00 2026 +0800"
      },
      "message": "Documentation/nxdoom: Describe reading the keys from a serial terminal.\n\nDocument GAMES_NXDOOM_UARTKBD, which lets a board without a keyboard\ndriver read the keys from a serial terminal, with the key bindings and\nthe 250 ms release of each key.\n\nThe option is added to nuttx-apps by a separate pull request.\n\nAssisted-by: Claude:claude-sonnet-5-5\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nSigned-off-by: satoru akita \u003cwwlap24@gmail.com\u003e\n"
    },
    {
      "commit": "f479de022ef3f281e01dbc248b1a199693a907e1",
      "tree": "33cd5e3292d71d67cc80cac655da45a69a1d3782",
      "parents": [
        "fa4e298e0fb2d1692c39207a3c851cc796fb6cad"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 16:53:19 2026 +0200"
      },
      "committer": {
        "name": "archer",
        "email": "magicdcps@hotmail.com",
        "time": "Tue Oct 20 13:30:33 2026 +0800"
      },
      "message": "cmake: Remove an old link before file(CREATE_LINK).\n\nnuttx_create_symlink() sets policy CMP0205 to NEW.  With this policy,\nfile(CREATE_LINK) in CMake 4.3.0 and 4.3.1 removes an existing\ndestination that is a directory recursively, also when the destination\nis a symbolic link to a directory.  The removal follows the link: it\ndeletes the files in the source tree, and then it fails on the link\nwith \"existing path cannot be removed: Not a directory\".\n\nA reconfigure creates the board links again.  Thus on these CMake\nversions each reconfigure deletes all files in boards/.../\u003cboard\u003e/src\n(the link arch/\u003carch\u003e/src/board/board) and in boards/\u003carch\u003e/\u003cchip\u003e/drivers\n(the link drivers/platform), and the configuration fails.  The libcxx,\nlibcxxabi, uClibc++ and libmcs include links have the same problem.\n\nRemove an existing link with file(REMOVE) first.  file(REMOVE) removes\nthe link, not its target.  CMake 4.3.2 has the same fix in\nfile(CREATE_LINK) (CMake issue #27747).  A destination that is a copy\n(Windows, or COPY_ON_ERROR) is not a link, so its behavior does not\nchange.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "fa4e298e0fb2d1692c39207a3c851cc796fb6cad",
      "tree": "a1675e53db858496e90b1a9319123ec3b5b3a308",
      "parents": [
        "7e652be44d2a04a88201cab91f089aab3448552b"
      ],
      "author": {
        "name": "Junbo Zheng",
        "email": "zhengjunbo1@xiaomi.com",
        "time": "Sun Oct 18 00:49:38 2026 +0800"
      },
      "committer": {
        "name": "archer",
        "email": "magicdcps@hotmail.com",
        "time": "Tue Oct 20 11:26:14 2026 +0800"
      },
      "message": "sched/signal: fix missing EINTR when nxsig_clockwait is interrupted\n\nnxsig_clockwait() always returned OK after being awakened, so\nnanosleep(), clock_nanosleep() and sleep() reported success when\ninterrupted by a caught, unblocked signal instead of -1/EINTR, and\nthe remaining time in *rmtp was invisible to retry loops.\n\nInstall a sigunbinfo buffer in nxsig_clockwait() when the caller did\nnot provide one (only nxsig_timedwait() does), then report -EINTR if\nthe wake came from a real signal and -ECANCELED on cancellation.\n\nThe new sigunbinfo accesses are guarded by\nCONFIG_DISABLE_ALL_SIGNALS, matching the guard around\nstruct tcb_s::sigunbinfo in include/nuttx/sched.h: signal-disabled\nconfigurations keep the previous behavior unchanged.\n\nTesting: built and verified on the NuttX simulator (host:\nUbuntu 22.04):\n\n  cmake -B build -DBOARD_CONFIG\u003dsim:nsh\n  cmake --build build -j$(nproc)\n  ./build/nuttx\n\nWith a temporary test in examples/hello that installs a SIGUSR1\nhandler, spawns a task sending SIGUSR1 after 0.5 s, then calls\nnanosleep(3s, \u0026rem):\n\nBefore:\n  nanosleep ret\u003d0 errno\u003d0 (handler fired, rem\u003d2.500000000)\nAfter:\n  nanosleep ret\u003d-1 errno\u003dEINTR (handler fired, rem\u003d2.500000000)\n\nPlain nanosleep(0.2s) still returns 0 and sigtimedwait(0.2s) still\ntimes out with EAGAIN, so the timedwait path is unaffected.\n\nAssisted-by: Claude Code (glm-5.3) \u003cclaude@anthropic.com\u003e\nSigned-off-by: Junbo Zheng \u003czhengjunbo1@xiaomi.com\u003e\n"
    },
    {
      "commit": "7e652be44d2a04a88201cab91f089aab3448552b",
      "tree": "97e11e4f15ad286a35d15ef8eb06bdc50c5b8af9",
      "parents": [
        "6b8c87e4a985a59449edeb74f286ea70a0f1dd7f"
      ],
      "author": {
        "name": "Swatantra Yadav",
        "email": "maverickswatantra@gmail.com",
        "time": "Sun Oct 18 18:48:27 2026 +0530"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:51:34 2026 -0300"
      },
      "message": "arch/arm: remove undefined CONFIG_SPI_DMAPRIO references\n\nAs identified in issue #11932, CONFIG_SPI_DMAPRIO was an artifact cloned\nfrom the SDIO driver into STM32 SPI in 2012, but was never defined in\nany Kconfig file. Subsequent ARM SPI drivers (STM32 variants and AT32)\ncopied the block verbatim, leaving dead #if defined(CONFIG_SPI_DMAPRIO)\nchecks and dead #error \"Illegal value for CONFIG_SPI_DMAPRIO\"\ndirectives.\n\nBecause CONFIG_SPI_DMAPRIO was never defined in Kconfig, drivers always\nfell back to the default DMA priorities (e.g., DMA_CCR_PRIMED or\nDMA_SCR_PRILO).\n\nThis patch removes the dead #if checks and dead #error directives across\nall 14 affected SPI and I2S driver files, directly assigning the\nappropriate default DMA priority. Also fixes a missing closing\nparenthesis in stm32wl5_spi.c.\n\nFixes #11932.\n\nSigned-off-by: Swatantra Yadav \u003cmaverickswatantra@gmail.com\u003e\n"
    },
    {
      "commit": "6b8c87e4a985a59449edeb74f286ea70a0f1dd7f",
      "tree": "322588f074dcec3b03ebd1d4ac859c334105295a",
      "parents": [
        "2dca52671db85c5287cdc6b64573287ca75e174f"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Mon Oct 19 06:20:25 2026 -0300"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:50:37 2026 -0300"
      },
      "message": "arch/arm/stm32: enable the ADC internal channels on STM32G4.\n\nadc_common_cfg() cleared ADC_CCR.VREFEN/TSEN/VBATEN on every ADC\nconfiguration and nothing set them again, so VREFINT, the temperature\nsensor and VBAT/3 read as disabled inputs on the IPv2 ADC (G4).\n\nScan the regular and injected channel lists and set the CCR bits needed\nby the internal channels, as the L4, H5 and H7 drivers do, then wait for\nthe start-up time.  G4 mapping: VREFINT on channel 18 (ADC1, ADC3, ADC4),\ntemperature sensor on 16 (ADC1) and VBAT/3 on 17 (ADC1, ADC3).  Other\nIPv2 chips keep the previous behavior.\n\nAssisted-by: Claude Code:claude-sonnet-5-5\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "2dca52671db85c5287cdc6b64573287ca75e174f",
      "tree": "8166457614eabcb38ac6d8341d508eec09fc9301",
      "parents": [
        "d355989aa754f1b7024c1afacd772b27271fe682"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Mon Oct 19 12:32:59 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:49:58 2026 -0300"
      },
      "message": "arch/arm/src/common/stm32: clear the SysTick current value on ARMv6-M\n\nThe current value register survives a system reset, so the first\nSysTick period ran for the leftover count: up to 350 ms at 48 MHz on\nNUCLEO-C092RC, with the system clock standing still and every usleep()\nstretched. Clear it before enabling the counter.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "d355989aa754f1b7024c1afacd772b27271fe682",
      "tree": "191b47c26ea5f0520edb132e0ec798671a105b54",
      "parents": [
        "daa5b75e65227221e11d7052ac08ed2b3dc55a38"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Mon Oct 19 12:40:31 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: do not acknowledge a frame with a CRC error\n\nThe receive interrupt filtered the frame and sent the ACK without\nchecking CRCSTATUS. A frame received with a CRC error was acknowledged\nand then dropped in the RX work, so the sender took it as delivered: an\nindirect data frame extracted with MLME-POLL was lost in about 1 of 125\npolls on channel 15. Drop it before the ACK and re-enable RX, as for a\nfiltered frame. The unacknowledged indirect frame now stays pending and\nis extracted by the next poll (IEEE 802.15.4-2011 5.1.6.4.3). The Nordic\nnrf_802154 driver also sends the ACK only after CRCOK.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "daa5b75e65227221e11d7052ac08ed2b3dc55a38",
      "tree": "70d2e39ff543329f3c380cd24d7f42a767ebc5b5",
      "parents": [
        "67b7fb00c560a51acb1ce8368769544ded1422be"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Mon Oct 19 11:53:44 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: ignore a stale IEEE 802.15.4 timer interrupt\n\nThe timer is stopped from the radio interrupt and from the radio work,\nfor example when the ACK arrives before the ACK wait timeout.\nnrf52_radioi8_tim_stop() did not clear the compare event, and the timer\ninterrupt handler ran the handler of the current channel whenever it\nwas called. An interrupt raised before the stop reached the default case\nand asserted; on the nRF5340 net core this stopped a MAC test. Clear\nthe event when stopping, and run the channel handler from the interrupt\nonly if a timer is set and its compare event fired.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "67b7fb00c560a51acb1ce8368769544ded1422be",
      "tree": "517edb7589e8ddc27126f69b3cb2e758b04b38da",
      "parents": [
        "773737a3a8cac96e366a0ac8a526dab4f9c7172e"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Mon Oct 19 11:28:38 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: do not start a transmission during the ACK TX\n\nThe ACK of a received frame is sent from the interrupt handler. A CSMA\ntransaction polled from the MAC, or a no CSMA transaction that waited\nfor the CSMA transaction, could be set up and triggered while that ACK\nwas on air: norm_setup() overwrote the radio state and a zero backoff\nrestarted the radio. The sender then received an empty frame with a CRC\nerror instead of the ACK and retransmitted, and the replies to\nfragmented 6LoWPAN datagrams were lost in 15 to 28% of the cases.\nStart such a transaction when the ACK TX is done, as txdelayed() does.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "773737a3a8cac96e366a0ac8a526dab4f9c7172e",
      "tree": "2174a5609421bad8b13095d6adc2fe602d32675d",
      "parents": [
        "abccc6626ffaa4d9645af8848dee96abbd087303"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Sat Oct 17 12:31:28 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: restart an active receiver on a channel change\n\nSetting the channel only wrote FREQUENCY. A receiver that was already\nenabled kept receiving on the previous channel, so a coordinator that\nwas in RX when its channel was set did not receive the association\nrequests and the devices got NO_ACK on every channel except the reset\ndefault. Restart RX after the channel change when it is active, as the\nNordic nrf_802154 driver does on a channel update.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "abccc6626ffaa4d9645af8848dee96abbd087303",
      "tree": "ef4dcd25acae6633e55f6b3ff355d6a87ca87a2d",
      "parents": [
        "fba2ac1360145d473b99c3cc5ba7dcf731192144"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 18:56:27 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: default extended address from FICR\n\nThe extended address was all zeros on every node. Build a unique default\nfrom the Nordic OUI and the FICR device identifier, as the Zephyr nRF5\n802.15.4 driver does (IEEE 802.15.4-2011 4.1, macExtendedAddress).\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "fba2ac1360145d473b99c3cc5ba7dcf731192144",
      "tree": "31b2ed973055ec9a4b42a29e2356361c42e054ff",
      "parents": [
        "546e68eb6abca7a24aa5b6fad17e96e87ecd2ff3"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 18:56:26 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: fix CCA mode selection\n\n~ on the 1-bit use_ed field is always non-zero, so energy detection\ncombined with carrier sense selected carrier sense only.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "546e68eb6abca7a24aa5b6fad17e96e87ecd2ff3",
      "tree": "ae94e9fe5dc5d360cbdfa9be92e9583aac1c65b8",
      "parents": [
        "ac75328e122bd4b3fb0a2076cc80663a5230abc8"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 18:56:25 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: fix frame header parsing\n\nThe frame parse used for the Frame Pending field of the data request ACK\nskipped the source PAN ID whenever PAN ID Compression was set. IEEE\n802.15.4-2011 5.2.1.1.5 applies it only when both addresses are\npresent.\n\nThe frame filter compared the destination extended address octets as\nreceived with the stored address. The MAC stores eaddr[0] as the most\nsignificant octet and sends the least significant octet first, so frames\nto an extended address other than all zeros or all ones were dropped.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "ac75328e122bd4b3fb0a2076cc80663a5230abc8",
      "tree": "75e803d76a80bc6546e7db2a8ff32cd09481ed41",
      "parents": [
        "1aef6c901adc8cd75ba7ea219b115f02d02d1cf3"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 17:11:02 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: fix ACK handling\n\nWhile waiting for an ACK, nrf52_radioi8_state_rx() skips the frame\nfilter but still sent an ACK for every received frame with the AR field\nset, also for frames addressed to other devices. Any received frame with\na length of 5 was taken as the ACK, without checking the frame type, the\nFCS or the sequence number, and any other frame ended the wait with\nNO_ACK and left the ACK wait timer running.\n\nIgnore frames that are not a valid ACK and keep waiting\n(IEEE 802.15.4-2011 5.1.6.2), and fail the attempt on an ACK with\nanother sequence number (5.1.6.4.3).\n\nThe ACK wait was 44 symbols. 6.4.3 defines macAckWaitDuration as\naUnitBackoffPeriod + aTurnaroundTime + phySHRDuration +\nceiling(6 * phySymbolsPerOctet), 54 symbols for the 2.4 GHz O-QPSK PHY.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "1aef6c901adc8cd75ba7ea219b115f02d02d1cf3",
      "tree": "172e40717120640a9bf5180c96d82d1cd5782deb",
      "parents": [
        "8fe7aa84267d5c29b72c619c2319096697437e5b"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 17:11:00 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: fix the TX state handling\n\n- With unslotted CSMA-CA the RADIO interrupt is raised on PHYEND and on\n  CCABUSY. nrf52_radioi8_state_tx() ran the TX done path first for both,\n  so a busy channel started the ACK wait timer or queued the TX done\n  work although no frame was sent. The retry after CCABUSY triggered\n  CCA again without SHORTS and INTEN, which the interrupt handler clears\n  on entry.\n- When CSMA-CA gave up, nrf52_radioi8_work_busy() confirmed\n  txdelayed_desc instead of csma_desc and left csma_busy set, so no\n  other CSMA transaction was taken from the MAC. The interrupt handler\n  left waitack set for the frame that was not sent and restored RX, so\n  received frames were dropped as not being the ACK until the work ran.\n- nrf52_radioi8_work_tx() and nrf52_radioi8_work_rx() enabled RX after\n  the next CSMA transaction was armed. RX enable sets SHORTS, INTEN,\n  PACKETPTR and the state for RX, so the armed transaction was replaced\n  by RX. RX is now enabled only when the radio is disabled, and the MAC\n  is polled for the next CSMA transaction after a completed or failed\n  one.\n- nrf52_radioi8_txdelayed() set txdelayed_busy and returned -EBUSY when\n  a CSMA transaction was in progress. The MAC does not check the return\n  value, so the frame, for example the data frame sent after a data\n  request, was neither sent nor confirmed. It is now kept pending and\n  started when the CSMA transaction is done, and txdelayed_busy and the\n  ACK TX state are checked with interrupts disabled, since the ACK TX\n  interrupt starts a busy transaction.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "8fe7aa84267d5c29b72c619c2319096697437e5b",
      "tree": "7c0aca00267ea3e7b6ca2a791ad06bcacdc01ca2",
      "parents": [
        "72e97e1f4afa8244731067a50651ea4d62ab8d29"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 16:07:41 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: follow the CSMA-CA algorithm\n\nIEEE 802.15.4-2011 5.1.1.4 (Figure 11):\n- NB counts up. It was decremented, wrapped from 0 to 255 and ended the\n  algorithm with a channel access failure on the first busy CCA.\n- NB is zero and BE is macMinBE before each transmission attempt. A\n  retransmission after a missing ACK kept the values of the previous\n  attempt.\n- The random backoff is 0 to 2^BE - 1 backoff periods (also\n  IEEE 802.15.4-2006 7.5.1.4), it was 0 to 2^BE - 2.\n\nThe default macMaxCSMABackoffs is 4 (Table 52), the driver used 1.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "72e97e1f4afa8244731067a50651ea4d62ab8d29",
      "tree": "dd7e1526cdd5c940fd57d7a65f248050e60cd483",
      "parents": [
        "2f7433c582038af09212d4cf88bc722e6fa07c70"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 14:05:59 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: do not block the work queue waiting for an IOB\n\nnrf52_radioi8_work_rx() runs on the HP work queue and used the blocking\niob_alloc(). When no IOB was free the whole HP work queue stopped, so\nthe MAC stopped too. Drop the received frame instead.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "2f7433c582038af09212d4cf88bc722e6fa07c70",
      "tree": "a46504132abae11b7ce9f4e67c662c24e2682a4d",
      "parents": [
        "fe32cd0f649ec510a392e4b0d45489b5466fcca2"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 11:31:11 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: fix the IEEE 802.15.4 trace dump format\n\nclock_t is int64_t, so printing the timestamp with %lu shifted the\nfollowing arguments and printed garbage.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "fe32cd0f649ec510a392e4b0d45489b5466fcca2",
      "tree": "ca151d296db3ea0103ffd3495c34708cba7419f8",
      "parents": [
        "59352d0ed570f75ff7453eac7f89f3651243f1e1"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 11:11:05 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: fix energy detection\n\nEDCNT is the number of 8-symbol ED iterations minus one (the Nordic\nnrf_802154 driver writes the iteration count minus one), but the driver\nwrote the requested number of symbols into it, so every ED measurement\nlasted 8 times longer than requested: an ED scan of 2 channels took\n32.2 s instead of 5.2 s.\n\nED is started by the READY event, but TASKS_RXEN has no effect while\nthe radio is already receiving, so an ED scan on a node with RX enabled\nnever completed and blocked the MAC. Disable the radio first and\nrestore RX when the scan is finished.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "59352d0ed570f75ff7453eac7f89f3651243f1e1",
      "tree": "3b8d95612d448e0af3ff420754efb0e0730706f8",
      "parents": [
        "3d4e12a3a6795284e48ab7c9bd5d47bed9ecffb3"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 11:06:08 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: do not overwrite own address with the coordinator address\n\nSetting the coordinator short or extended address wrote the device\u0027s\nown address, so after association the radio filtered out the frames\nsent to this device. Store the coordinator address separately.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "3d4e12a3a6795284e48ab7c9bd5d47bed9ecffb3",
      "tree": "b0becd08dfca6e13515db3bf9ee7430e22f768ed",
      "parents": [
        "69227863fa0161a23a3a8109e346a1d966d85a6d"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 11:00:26 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: include the headers nrf52_ieee802154_radio.c uses\n\nrand() and the IRQ functions were only declared through nrf52_utils.h.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "69227863fa0161a23a3a8109e346a1d966d85a6d",
      "tree": "83693e9ad233182786291dd19243833586e9e44c",
      "parents": [
        "9938e06e08c87b898fd0e5027a9f47182b382051"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 10:54:28 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: fix RADIO register and lower-half macro definitions\n\nFix the CRCCNF LEN_1 typo, the SKIPADDR IEEE 802.15.4 value, the DAP\nregister address and the DATAWHITEIV width, and the argument names of\nNRF52_RADIO_TIFSSET and NRF52_RADIO_WHITESET. Of these, the code uses\nonly the DATAWHITEIV width.\n\nThe register dump printed DAB6 and DAP6 in place of DAB7 and DAP7.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "9938e06e08c87b898fd0e5027a9f47182b382051",
      "tree": "c1f0f35e84d21e8119de7a382e6bc2ad01e7d465",
      "parents": [
        "283724359b406d842a9b48fc38264803b27f73fe"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 11:12:01 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:53 2026 -0300"
      },
      "message": "arch/arm/nrf52: fix nxstyle errors\n\nFix the indentation of leave_critical_section() in\nnrf52_radioi8_isr_rtc() and replace the micro sign in two TIFS comments\nof nrf52_radio.h with \"us\".\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "283724359b406d842a9b48fc38264803b27f73fe",
      "tree": "04c5a8fa8d9dfa1e895a83db1d7880d89c504523",
      "parents": [
        "56d279538e75fb58cc2f4d2b52855caa4a2096ce"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 11:38:14 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:23 2026 -0300"
      },
      "message": "boards/nrf54lm20-dk: add IEEE 802.15.4 MAC and 6LoWPAN configurations\n\nRegister the radio as /dev/ieee0 and wpan0 and add the ieee802154_mac\nconfiguration with i8sak and the ieee802154_6lowpan configuration with\nthe udp and nettest examples. The configurations use a dedicated\ninterrupt stack: without it nsh_main used its whole 2000 byte stack\nunder radio traffic. CONFIG_IOB_THROTTLE is 2 in the MAC configuration:\n/dev/ieee0 does not keep unread frames in the last two IOBs, which the\nMAC needs to receive commands and to transmit.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "56d279538e75fb58cc2f4d2b52855caa4a2096ce",
      "tree": "7e8974aeb3084a8cbf2036092c09ff8ed1183408",
      "parents": [
        "1bf7d7362db2d4ad1cb78b3875b54b3f61d8d549"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 11:38:14 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:23 2026 -0300"
      },
      "message": "arch/arm/nrf54l: add IEEE 802.15.4 radio support\n\nPort the nRF53 RADIO and IEEE 802.15.4 drivers to nRF54L. The RADIO\nregister layout is new, there is no POWER register so the radio is\nreset with SOFTRESET, and MLTPAN-6 is applied when the IEEE 802.15.4\nmode is selected. Superframe support is not available yet because\nnRF54L has no RTC.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "1bf7d7362db2d4ad1cb78b3875b54b3f61d8d549",
      "tree": "4ca9def1de3d60dc535e64fad4325e8a53d72bf9",
      "parents": [
        "a97212081f8862d6df329b1019bef7a52f27b255"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 11:13:12 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:23 2026 -0300"
      },
      "message": "boards/nrf5340-dk: add IEEE 802.15.4 MAC and 6LoWPAN configurations\n\nRegister the net core radio as /dev/ieee0 and wpan0 and add the\nieee802154_mac_cpunet configuration with i8sak and the\nieee802154_6lowpan_cpunet configuration with the udp and nettest\nexamples. TIMER0 is used by the radio, so /dev/timer0 is not registered\nwhen the radio is enabled. CONFIG_IOB_THROTTLE is 2 in the MAC\nconfiguration: /dev/ieee0 does not keep unread frames in the last two\nIOBs, which the MAC needs to receive commands and to transmit.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "a97212081f8862d6df329b1019bef7a52f27b255",
      "tree": "5974d26db8a9887b9198d53dda7255a2beae45ee",
      "parents": [
        "05d975469952853918466031a853137b3dde8f57"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 16 11:13:12 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 18:48:23 2026 -0300"
      },
      "message": "arch/arm/nrf53: add IEEE 802.15.4 radio support for the net core\n\nPort the nRF52 RADIO and IEEE 802.15.4 drivers to the nRF5340 network\ncore. The RADIO trims are copied from FICR after the radio is powered on\n(errata 158) and errata 117 is applied when the IEEE 802.15.4 mode is\nselected.\n\nAssisted-by: Claude Code\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "05d975469952853918466031a853137b3dde8f57",
      "tree": "db52a8090d97a9f3e3726d35c81fd8882ba775c3",
      "parents": [
        "88dc0c461cbc0fd5e004e2e5de7ce1dc7fc77cf2"
      ],
      "author": {
        "name": "Brijesh Thakkar",
        "email": "brijeshthakkariitian5126@gmail.com",
        "time": "Sun Oct 18 03:11:07 2026 +0530"
      },
      "committer": {
        "name": "Michal Lenc",
        "email": "michallenc@seznam.cz",
        "time": "Mon Oct 19 21:06:51 2026 +0100"
      },
      "message": "arch/sim: pass no-pie through the gcc driver in CMake.\n\nPass -no-pie through the gcc driver instead of forwarding it as\n-Wl,-no-pie. fd907e6ef4 (\"sim: pass no-pie through gcc driver\") already\ndid this for the Make build; the CMake build still used -Wl,-no-pie.\n\n-Wl,-no-pie bypasses the driver, so the driver still sets up a PIE\nlink: it passes -pie and uses Scrt1.o and crtbeginS.o, and only then\nhands -no-pie to ld. On gcc 10 / binutils 2.34 ld then searches for\nlibgcc_s.a only, which Ubuntu does not ship, and the link fails:\n\n  /usr/bin/ld: cannot find -lgcc_s\n  /usr/bin/ld: cannot find -lgcc_s\n  collect2: error: ld returned 1 exit status\n\n-lgcc_s is reported twice because the gcc driver puts it on the link\nline both before and after -lc. libgcc-s1 and libgcc-10-dev being\ninstalled makes no difference. A plain hello.c linked with\n-Wl,-no-pie fails the same way while -no-pie links fine.\n\nReproduced on ubuntu:20.04 with gcc 10.5.0-1ubuntu1~20.04 and CMake\n4.4: configure aborts in the compiler check, because the test program\nis linked with -Wl,-no-pie. Fixed with this patch: configure, build and\nboot of sim:nsh all work.\n\nAssisted-by: Claude:claude-sonnet-5-5\nSigned-off-by: Brijesh Thakkar \u003cbrijeshthakkariitian5126@gmail.com\u003e\n"
    },
    {
      "commit": "88dc0c461cbc0fd5e004e2e5de7ce1dc7fc77cf2",
      "tree": "aff1b762b57ac3656e021d7399e5c4c5339495ce",
      "parents": [
        "ba7f7a56552835bc4388b53d34730b1723d4b839"
      ],
      "author": {
        "name": "Brijesh Thakkar",
        "email": "brijeshthakkariitian5126@gmail.com",
        "time": "Sun Oct 18 03:11:07 2026 +0530"
      },
      "committer": {
        "name": "Michal Lenc",
        "email": "michallenc@seznam.cz",
        "time": "Mon Oct 19 21:06:51 2026 +0100"
      },
      "message": "arch/sim: resolve host symbols eagerly on Linux in CMake.\n\nThe Make build got -Wl,-z,now in ad182bcb4b (\"sim: resolve host symbols\neagerly on Linux\"), but the CMake build never did. Add it to the sim\nlink options under the same condition (a Linux host).\n\nWithout it, the first call to a host function through the PLT goes\nthrough the lazy binder. up_irq_save() is such a call: it runs from\nhost_allocheap() at the very start of nx_start(), with simulated\ninterrupts masked, and _dl_fixup() faults once the binary is linked\nnon-PIE:\n\n  #0  _dl_fixup (...) at ./elf/dl-runtime.c:162\n  #1  _dl_runtime_resolve_xsavec () at ../sysdeps/x86_64/dl-trampoline.h:98\n  #2  up_irq_save () at sim/posix/sim_hostirq.c:98\n  #3  host_allocheap (size\u003d67108864, exec\u003dfalse) at sim/posix/sim_hostmemory.c:71\n\nThe sim then dies with SIGSEGV before NSH starts. Running the same\nbinary with LD_BIND_NOW\u003d1 boots fine, which confirms that lazy binding\nis the trigger.\n\nCMake sim:nsh from current master still boots on gcc 15 (Ubuntu 26.04),\nbut the next patch, which passes -no-pie through the gcc driver,\nreproduces the crash there without this change, so this goes first.\n\nThe Make build is not affected since it already links with -z now.\n\nAssisted-by: Claude:claude-sonnet-5-5\nSigned-off-by: Brijesh Thakkar \u003cbrijeshthakkariitian5126@gmail.com\u003e\n"
    },
    {
      "commit": "ba7f7a56552835bc4388b53d34730b1723d4b839",
      "tree": "12bd70bd087cfc0db5e1cea01885a5e44d8f4c97",
      "parents": [
        "5e79a954603bd36614025016dd36d78be7a60835"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Sun Oct 18 15:04:02 2026 -0300"
      },
      "committer": {
        "name": "Michal Lenc",
        "email": "michallenc@seznam.cz",
        "time": "Mon Oct 19 21:04:37 2026 +0100"
      },
      "message": "arch/mips/pic32mz: add an option for the Ethernet MAC address.\n\nThe PIC32MZ-W1 has no factory programmed station address, so the\nEthernet interface came up with 00:00:00:00:00:00 and the address had to\nbe assigned from user space (ifconfig eth0 hw ...) before it could carry\nany traffic.\n\nAdd PIC32MZ_ETH_MACADDR to give the interface a fixed address at\nregistration.  The default of zero keeps the current behavior: the\naddress programmed at reset, or one assigned later with SIOCSIFHWADDR.\n\nAssisted-by: Claude Code:claude-sonnet-5-5\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "5e79a954603bd36614025016dd36d78be7a60835",
      "tree": "075eb14fbdb0d083bb7297b692a19694a7122365",
      "parents": [
        "f617bc5100e28c917e03712e6a61bc68d046f864"
      ],
      "author": {
        "name": "Vinicius May",
        "email": "vmay.sweden@gmail.com",
        "time": "Mon Oct 12 19:22:00 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 15:28:34 2026 -0300"
      },
      "message": "Documentation: remove statements about work that is not merged yet.\n\nTwo paragraphs of the front page and one sentence of os/index, added in\nf6ecf80ebb, describe the larger version of that change, before its\nscope was reduced during review.\n\nThe front page and os/index say each subsystem is described once, but\nreference/os/{smp,shm,paging} are still there, so those topics have two\npages. The front page also says board pages and tags are checked\nagainst the source tree and the build fails when they disagree; that\ncheck is not in master.\n\nRemove them, and change \"Four ideas\" to \"Two ideas\" on the front page\nto match what is left. They can come back with the changes that make\nthem true.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Vinicius May \u003cvmay.sweden@gmail.com\u003e\n"
    },
    {
      "commit": "f617bc5100e28c917e03712e6a61bc68d046f864",
      "tree": "2ebeef20ba98b94cacb95defc035b52a0a9de1b5",
      "parents": [
        "df099c09c7ea304667e068476947b1ac1a62647a"
      ],
      "author": {
        "name": "Vinicius May",
        "email": "vmay.sweden@gmail.com",
        "time": "Mon Oct 12 19:19:33 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 15:28:34 2026 -0300"
      },
      "message": "Documentation: check os/scheduling/index.rst against the code.\n\nI went through the scheduling page and its two figures again and checked\nevery statement against current master. This fixes what was wrong,\nrewrites the introduction in my own words, and adds what a reader was\nmissing.\n\nFixes:\n- PENDING is used only without CONFIG_SMP. With SMP, a thread that\n  becomes ready under sched_lock() stays in the ready-to-run list. A\n  ready thread can also move to PENDING when the lock holder lowers its\n  own priority, as sched_yield() does.\n- Strict priority holds per CPU. Under CONFIG_SMP a lower-priority\n  thread can run on another CPU, and the affinity mask can make a CPU\n  skip a higher-priority thread; and the switch to a thread made ready\n  by an interrupt handler happens when the interrupt returns.\n- Sporadic: the lost budget comes back half a period after the thread\n  stopped (preempted or blocked), not one period after it was used, and\n  the budget may be at most half the period.\n- Smaller fixes: the event and message queue states exist only under\n  their Kconfig options; SCHED_OTHER at CONFIG_RR_INTERVAL 0 changes\n  only the priority; SCHED_BATCH and SCHED_IDLE do appear elsewhere\n  (release notes), so the page now says \"source code\"; the page no\n  longer calls sched_lock() and sched_setaffinity() NuttX-specific.\n- task_states.svg: task_activate() does not exist, the function is\n  nxtask_activate(); the wake-up arrow now ends at the ready-to-run\n  group, because a woken thread can also go straight to RUNNING or to\n  PENDING.\n- policies.svg: a SCHED_FIFO thread also gives up the CPU when it\n  yields.\n\nAdditions: what the scheduler and the TCB are, and the three kinds of\nthread; the priority range (a higher number is a higher priority) and\nthe four ways a priority changes (the application, the sporadic policy,\ninheritance and protect); the default behaviour of round robin, with an\nexample, and of sporadic, which no thread uses unless it is asked for;\nthe life of a thread in text; the ready-to-run and WAIT_* states by\nname; FIFO and RR spelled out; the sporadic fields step by step; that\nsched_lock() nests and is not a lock for shared data; how the CPU set of\na thread is chosen.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Vinicius May \u003cvmay.sweden@gmail.com\u003e\n"
    },
    {
      "commit": "df099c09c7ea304667e068476947b1ac1a62647a",
      "tree": "e93ea769ceabd4648eb84075d1c7832e9addadb1",
      "parents": [
        "de136c450b9f16dc0a7c1345de60d4a36513f706"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 00:12:50 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Oct 20 00:52:25 2026 +0800"
      },
      "message": "libs/libc: Apply the file mode creation mask in mkfifo().\n\nPOSIX: mkfifo() clears the bits of the file mode creation mask in the\npermissions of the new FIFO.  mkfifo() gave the mode to nx_mkfifo()\nunchanged, so a FIFO had the permissions 0666 after umask(077) and\nmkfifo(path, 0666).  mknod() with S_IFIFO calls mkfifo() and had the\nsame problem.\n\nmkfifo() now clears the bits of getumask() in the mode.  The reference\ndocumentation said that the mode is ignored.  NuttX keeps the mode\nwith CONFIG_PSEUDOFS_ATTRIBUTES, so the documentation now says that.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "de136c450b9f16dc0a7c1345de60d4a36513f706",
      "tree": "9ea6facdc6b4fe188fa27cbd5b14d49547603e81",
      "parents": [
        "5cfe424bc3f84c30b56cb3b67230462d1e1d140f"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 00:22:08 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Oct 20 00:52:13 2026 +0800"
      },
      "message": "fs/hostfs: Fix the host paths in hostfs_rename().\n\nCommit 86193c95caee changed the two path buffers of hostfs_rename() from\narrays to pointers, but kept sizeof() as the buffer size.  sizeof() of a\npointer is 4 or 8, so strlcpy() kept only the first characters of the\nhost root directory.  rename() on hostfs then failed with ENOENT, or\nchanged a different host path.\n\nhostfs_rename() now makes both paths with hostfs_mkpath() and the size\nHOSTFS_MAX_PATH, as the other hostfs functions do.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "5cfe424bc3f84c30b56cb3b67230462d1e1d140f",
      "tree": "186c55d5705466b26dc4daea61654296df9cc86b",
      "parents": [
        "c7cba680a10a735317bb2cddb6a12914a55e8d58"
      ],
      "author": {
        "name": "hujun5",
        "email": "hujun5@xiaomi.com",
        "time": "Mon Oct 19 08:03:34 2026 +0800"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 12:37:42 2026 -0300"
      },
      "message": "arm64: cache TLS info pointer in TPIDR_EL0\n\nUse TPIDR_EL0 to hold the current task\u0027s stack allocation pointer so that TLS information can be accessed without a global lookup. Initialize the register during primary and secondary CPU boot, and update it after interrupt and syscall context switches.\n\nSigned-off-by: hujun5 \u003chujun5@xiaomi.com\u003e\n"
    },
    {
      "commit": "c7cba680a10a735317bb2cddb6a12914a55e8d58",
      "tree": "7dcc3f2e03675607833381968a3c57d21e41332b",
      "parents": [
        "13ceae9eae182a8f6557c85f684a394a1fed73f4"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 00:03:36 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 19 21:14:16 2026 +0800"
      },
      "message": "fs/vfs: Return EINVAL when rename() moves a directory below itself.\n\nrename() must fail with EINVAL when the new path is below the old\ndirectory.  mountptrename() checked this only when the new path\nexisted.  When it did not exist, the file system got the request, and\ntmpfs moved the directory into itself.  pseudorename() did not check it\nat all and moved a pseudo directory into itself.  In both cases\nrename() returned 0, and the directory could no longer be found.\n\nmountptrename() now does this check for every directory, before it\nlooks for the new path.  pseudorename() does it before it changes the\ninode tree.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "13ceae9eae182a8f6557c85f684a394a1fed73f4",
      "tree": "b67cd049b97f37cc294c403af70abb88cf3a9539",
      "parents": [
        "e0a3baf73c347ebe4fe7ff150a0b507bd52f5239"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 00:02:58 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 19 21:14:16 2026 +0800"
      },
      "message": "fs/vfs: Let the file system replace the target of rename().\n\nWhen the new path existed on a mounted volume, mountptrename() removed\nit and then called the rename method of the file system.  Between the\ntwo calls, another task could find no file at the new path.  POSIX\nrequires that the new path always refers to the old file or to the new\nfile.\n\nmountptrename() now calls the rename method first.  v9fs, hostfs, NFS,\nlittlefs, rpmsgfs and tmpfs replace the target in one step.  If the\nrename method fails, mountptrename() removes the target and calls the\nrename method again, as before.  FAT, SMARTFS, SPIFFS, mnemofs and\nuserfs use this second path.  If the removal fails, rename() returns\nthe error of the first rename call.\n\nThe pseudo file system path holds the inode tree lock for the whole\noperation and does not change.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "e0a3baf73c347ebe4fe7ff150a0b507bd52f5239",
      "tree": "e78be4e2849470819007e4bad6b2d6f625ea946d",
      "parents": [
        "d661061c1d05bc7407d0e115ad64a95edceba848"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 00:02:57 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 19 21:14:16 2026 +0800"
      },
      "message": "fs/userfs: Return EEXIST from rename() when the new path exists.\n\nThe user file system server receives the rename request.  The server\ncan be any program, and it does not have to replace an existing entry\nwith the new name.  The VFS removed such an entry before the rename, so\nthe servers did not have to do it.\n\nuserfs_rename() now asks the server for the status of the new path.  If\nthe path exists, it returns EEXIST.  The VFS can then remove the entry\nand call rename() again, as before.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "d661061c1d05bc7407d0e115ad64a95edceba848",
      "tree": "9cc6008618b67f15cfc0defd01de4b935d1daa10",
      "parents": [
        "0a3d7e56a7036f3f1b2448e7eab43f43864a3d1b"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 00:02:57 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 19 21:14:16 2026 +0800"
      },
      "message": "fs/mnemofs: Return EEXIST from rename() when the new path exists.\n\nmfs_dir_rename() adds a directory entry with the new name.  It does not\nlook for an entry that already has this name.  The VFS removed such an\nentry before the rename, so this was not visible.\n\nmnemofs_rename() now returns EEXIST when the new path exists.  The VFS\ncan then remove the entry and call rename() again.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "0a3d7e56a7036f3f1b2448e7eab43f43864a3d1b",
      "tree": "7211938a6edce37c8bbbb7fa7c1fcb0b48d59739",
      "parents": [
        "86cd4da877dfd570295cf8f74b2db9c674e2c38d"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 19 00:02:57 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 19 21:14:16 2026 +0800"
      },
      "message": "fs/tmpfs: Replace an existing entry in rename().\n\ntmpfs_rename() returned EEXIST when an entry with the new name existed.\nThe VFS then had to remove that entry before the rename, so another\ntask could find no entry at the new path between the two operations.\n\ntmpfs_rename() now replaces the entry in one step, under the file system\nlock.  The entry refers to the renamed object, then the old entry is\nremoved.  An open file that is replaced stays until its last close.  A\ndirectory replaces only an empty directory that is not open; otherwise\nthe rename fails with ENOTEMPTY or EBUSY.  A file cannot replace a\ndirectory (EISDIR), and a directory cannot replace a file (ENOTDIR).\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "86cd4da877dfd570295cf8f74b2db9c674e2c38d",
      "tree": "84dc25dd0d4289bac632ed047b0017f8e74c188c",
      "parents": [
        "074b7dd375c03a8536f95d7c49f65e516c6d5eb9"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Oct 18 23:51:15 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 19 21:14:16 2026 +0800"
      },
      "message": "fs/tmpfs: Fix the indentation that nxstyle reports.\n\nnxstyle reports bad alignment and missing blank lines in fs_tmpfs.c.\nThese errors are older than the next change.  This commit changes only\nwhite space.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "074b7dd375c03a8536f95d7c49f65e516c6d5eb9",
      "tree": "29301282e8af672fa176d59ef9ac109f27e0611d",
      "parents": [
        "b6dab5121a3f76120a43fe5ef2484e04a4154db8"
      ],
      "author": {
        "name": "Sarthak Pandey",
        "email": "sarthak@email.com",
        "time": "Mon Oct 19 01:53:39 2026 +0530"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 19 20:59:36 2026 +0800"
      },
      "message": "Documentation/platforms: use full board names in Supported Platforms\n\nUpdate board index.rst titles to follow \u0027\u003cmanufacturer\u003e \u003cboard name\u003e\u0027\nformat instead of raw directory names from boards/.\n\nFixes #11078\n\nSigned-off-by: Sarthak Pandey \u003csarthak@email.com\u003e\n"
    },
    {
      "commit": "b6dab5121a3f76120a43fe5ef2484e04a4154db8",
      "tree": "93241544b0613d3722f018bb8c9d2012286cc377",
      "parents": [
        "1698592874954b551ee5867dee2c544977685fb5"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 12 18:06:38 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 09:19:43 2026 -0300"
      },
      "message": "binfmt: Do not make the exec caller a child of the new image.\n\nexec_swap() gives the new image the pid of the caller and reverses the\nparent-child relationship: the caller becomes a child of the new\nimage, and the caller then exits.  The new image got SIGCHLD and a\nchild status for a process that it did not create.  wait() in a\nprogram that a shell started with fork() and exec() returned that pid\ninstead of failing with ECHILD, and the SIGCHLD interrupted its system\ncalls.\n\nGive the caller no parent and remove its status from the new image.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "1698592874954b551ee5867dee2c544977685fb5",
      "tree": "2c7b7ac775307a6da0a3c6a7db27d9309dc93274",
      "parents": [
        "439f658351c94b8e5eb97f0da8e57ed0213c0ace"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Oct 18 20:07:18 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 09:03:20 2026 -0300"
      },
      "message": "Documentation: Describe getrlimit(), setrlimit() and the resource limits.\n\nSay which resource limits NuttX enforces, what they do, that a new task\ngets the limits of its creator, and document getrlimit() and\nsetrlimit().\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "439f658351c94b8e5eb97f0da8e57ed0213c0ace",
      "tree": "fc3ad45c16e0901794b6e714f6eb80f6808eda23",
      "parents": [
        "a6d583afb4118e504bead6f9a390f24ce1899b2f"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Oct 18 20:06:23 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 09:03:20 2026 -0300"
      },
      "message": "libc, sched, binfmt: Use RLIMIT_STACK for the default stack size.\n\nA process could not choose the default stack size of the threads and\nprograms that it starts: it was always CONFIG_PTHREAD_STACK_DEFAULT for\na thread and CONFIG_ELF_STACKSIZE for a program.\n\nWhen the RLIMIT_STACK soft limit is set, it is the default stack size of\na new thread (pthread_attr_init() and pthread_create() without\nattributes) and the stack size of a new ELF program that does not set\nnx_stacksize, as on Linux.  lib_get_stacksize() gives this size; it keeps\nthe value between PTHREAD_STACK_MIN and the largest stack that a task can\nhave (TLS_MAXSTACK with CONFIG_TLS_ALIGNED).  Without a limit, the\ndefaults do not change.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "a6d583afb4118e504bead6f9a390f24ce1899b2f",
      "tree": "f3d82f27d89ddfcf5c1d4beb1cd4eaaf73588075",
      "parents": [
        "cc48013050c2fdd0c76503505b18bb4590511fb7"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Oct 18 20:06:19 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 09:03:20 2026 -0300"
      },
      "message": "fs/inode: Enforce RLIMIT_NOFILE for new file descriptors.\n\nA process could open files up to OPEN_MAX, whatever its RLIMIT_NOFILE\nsoft limit was.\n\nA new file descriptor must now be below the soft limit of the process,\nas POSIX says: open(), dup() and fcntl(F_DUPFD) fail with EMFILE when\nthe lowest free descriptor is at or above it (F_DUPFD with EINVAL when\nthe lowest descriptor that it may use is already at or above it), and\ndup2() and dup3() fail with EBADF for a target at or above it.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "cc48013050c2fdd0c76503505b18bb4590511fb7",
      "tree": "e34db86bc0481d1018c3d2a720f753dd5df49a0d",
      "parents": [
        "621122e93c8c0e38aeda5a6f1912c5e9a0d49248"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Oct 18 20:06:04 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 09:03:20 2026 -0300"
      },
      "message": "sched/group: Keep resource limits per process.\n\nsetrlimit() kept nothing and returned OK, and getrlimit() returned fixed\nvalues.  So a limit that a program or a shell set had no effect.\n\nKeep RLIMIT_STACK and RLIMIT_NOFILE in the task group, and make\ngetrlimit() and setrlimit() system calls that read and write them, as\nthe limits must not be in memory that the process can change.  A new\nprocess gets the limits of its parent.  The defaults are no stack limit\nand OPEN_MAX open files.  setrlimit() fails with EINVAL for a resource\nthat NuttX does not enforce, or for a soft limit above the hard limit,\nand with EPERM when an unprivileged process raises a hard limit or when\nthe limit of open files is above OPEN_MAX.  getrlimit() reports the\nresources that NuttX does not limit as RLIM_INFINITY.\nsysconf(_SC_OPEN_MAX) returns the RLIMIT_NOFILE soft limit, as POSIX\nsays.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "621122e93c8c0e38aeda5a6f1912c5e9a0d49248",
      "tree": "dd9d63389ea2b9c6246f03f578c25d84bbad356e",
      "parents": [
        "9308e7871972d21deae8cd1b6a1cc2cca262ece7"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Oct 18 00:16:44 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 08:53:40 2026 -0300"
      },
      "message": "Documentation: Describe the execute permission check of programs.\n\nThe file permission page did not say when NuttX checks the execute\npermission of a program.\n\nDescribe CONFIG_BINFMT_CHECKEXEC, its rule, and where the mode comes\nfrom.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "9308e7871972d21deae8cd1b6a1cc2cca262ece7",
      "tree": "dbe6843f474c07449b0f3894f0dc1abc535faabb",
      "parents": [
        "8b4833c3530408d225564752d7400429e1694e53"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Oct 18 00:16:44 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 08:53:40 2026 -0300"
      },
      "message": "binfmt: Check the execute permission in every binary format.\n\nThe ELF, NXFLAT and builtin loaders checked the execute permission only\nwith CONFIG_SCHED_USER_IDENTITY, and the script loader did not check it\nat all.  Without user identities, NuttX started any file that a loader\nrecognized, whatever its mode.\n\nAdd CONFIG_BINFMT_CHECKEXEC, which is the default with\nCONFIG_SCHED_USER_IDENTITY.  Each loader then checks the mode of the\nfile that it already opened, so no extra lookup is needed: the ELF and\nNXFLAT loaders, the builtin loader with the mode of the builtin table,\nand the script loader, which now checks the script too; its interpreter\nis checked by its own loader.  A file without execute permission gives\nEACCES.  Without user identities, any execute bit is enough, as for\nroot.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "8b4833c3530408d225564752d7400429e1694e53",
      "tree": "bdc4d36f5551e44b11ff8ce227b06fecb49fa37a",
      "parents": [
        "302f2cf062909caa8284a261db7f781a5d20074a"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Oct 18 17:27:28 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 08:53:18 2026 -0300"
      },
      "message": "Documentation: An ignored signal does not wake a wait.\n\nThe signals guide said that any signal wakes a wait with EINTR.  Say\nthat a signal that is ignored is discarded and does not wake a wait, so\na program must install a handler for a signal that should wake it.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "302f2cf062909caa8284a261db7f781a5d20074a",
      "tree": "dadef63168b54620cebb0dbb5723bb908c8ceb72",
      "parents": [
        "bbc5da952840f849e338ae94013ebd8ada50f465"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Oct 18 17:27:28 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 08:53:18 2026 -0300"
      },
      "message": "sched/signal: Discard a signal that is ignored.\n\nnxsig_tcbdispatch() woke a task that waited on a semaphore or a message\nqueue with EINTR for any unmasked signal, also for one that is ignored,\nas SIGCHLD and SIGWINCH are by default.  So a read() from a pipe failed\nwith EINTR when a child of the reader exited.  It also ended\nnanosleep(), pause() and sigsuspend() early.  POSIX discards an ignored\nsignal: it does not interrupt a function.\n\nDiscard an unmasked signal without an action that is sent to a user\ntask or thread: the task is not woken, and the signal is not added to\nthe pending signals, also not during a system call.  A masked signal is\npended as before.  A task that waits for signals is woken by an ignored\nsignal only when the signal is in its wait set, as for sigwaitinfo()\nand sigtimedwait().  A program that wants a signal to interrupt a\nblocking call must install a handler for it.  Kernel threads are not\naffected: the OS wakes them with signals that have no action.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "bbc5da952840f849e338ae94013ebd8ada50f465",
      "tree": "70b23e3218658f63aeed41f0e1c78f87f586fe9e",
      "parents": [
        "7fe245e7bfef8ad4a47de56256ecc45c8454a915"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Oct 18 00:17:56 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 08:50:19 2026 -0300"
      },
      "message": "libs/libc/unistd: Check X_OK in access().\n\naccess() ignored X_OK: it returned 0 for a file without execute\npermission.  Also, a successful W_OK check returned before the other\nbits were checked.\n\nCheck X_OK with the real user and group IDs, as POSIX requires: root\nneeds any execute bit, another user needs the owner, group or other\nexecute bit that applies to it.  Without CONFIG_SCHED_USER_IDENTITY,\nany execute bit is enough.  Check W_OK and X_OK one after the other.  A\ndirectory is still always accessible.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "7fe245e7bfef8ad4a47de56256ecc45c8454a915",
      "tree": "252835dc9bcd5ed25f9e6764285e755782d1f8aa",
      "parents": [
        "f21fe243218c1c263479c067861bb461f5192b55"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 12 01:58:28 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 06:10:41 2026 -0300"
      },
      "message": "libs/libc/stdlib: Call the atexit functions before the TLS destructors.\n\nexit() and quick_exit() ran the destructors of the thread-specific\ndata first.  An exit function that used thread-specific data, or a\n__thread variable, which emulated TLS keeps there, then saw the data\nof a new thread: a program that held a lock and recorded it in a\n__thread flag locked it again from its exit function and failed with\nEDEADLK.\n\nCall the exit functions first, while the data of the thread is still\nvalid.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "f21fe243218c1c263479c067861bb461f5192b55",
      "tree": "dc1e8532da682def7f119fefaacec16b3307de76",
      "parents": [
        "40230a1e31484347db1c874b090a07397f54033f"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Oct 18 23:02:18 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 19 06:10:18 2026 -0300"
      },
      "message": "boards: Use the popen() of libc instead of system/popen.\n\nlibc now has popen(), pclose(), dpopen() and dpclose() when CONFIG_PIPES,\nCONFIG_LIBC_EXECFUNCS and CONFIG_SCHED_WAITPID are set.  The apps copy\nin system/popen is not needed any more.\n\nDisable CONFIG_SYSTEM_POPEN in the 15 configurations that enabled it.\nEnable CONFIG_SCHED_WAITPID, which CONFIG_SYSTEM_POPEN selected, and\nCONFIG_LIBC_EXECFUNCS where they did not have it.  Their users of\npopen() (the fastboot shell command, the popen example) stay enabled.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    }
  ],
  "next": "40230a1e31484347db1c874b090a07397f54033f"
}
