DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
Work In Progress
Work In Progress
What's New In This Release
Major Changes to Core OS
New Features
#2820 arch, boards, drivers, include, sched, wireless: Change spinlock APIs.
#2885 Ensure the kernel component don't call userspace API
#2324 audio: libsamplerate: add initial audio Sample Rate Converter
Bug Fixes
#2627 OS internal function should indicate the error by return negative value
#2980 include: Add iso646.h for alternative spellings
#3115 libc: time: localtime: fix race condition
#3253 libc pthread: Fix pthread_rwlock_init return error
#2938 libs: misc: Remove critical section in lib_filesem.c for SMP
#2865 libc: :machine:risc-v:unifying elf relocation code
#2675 libc: Add placement new and new[] function
#2451 libc: pthread_mutexattr_getprotocol: modify prototype
#2326 libc: Enhance getopt function
#2407 libc: machine: arch: Support armv8-m relocation
#2509 libc: net: implement ether_aton/ether_aton_r
#2530 libc: Implement posix_fallocate
#2604 libc: Add b64_ntop and b64_pton implementation
#2534 libc: Implement getppid
#2574 libc: dumpbuffer: dump buffer enhancement
#2585 libc: netdb: Move hostbuffer out of the stack
#2630 libc: net: implement socketpair
#2741 libc: unistd/fpathconf: enhance fpathconf
#2742 libc: pthread/cond: enhance pthread_cond_destroy
#2881 libc: Move stack check stuff from libc/stdlib/ to libc/assert/
#3170 libc: Move getopt() variables into TLS
#3272 libc: Implement getopt_long() and getopt_long_only()
#2076 libc: math: Make this friendly with libcxx
#2855 libs: Remove the duplicated _NX_ and _MQ_ macro
#2693 libxx: use built-in __aeabi_atexit() if LIBSUPCXX is enabled
#3268 libdsp/fixed16: add open-loop handler
#3244 libdsp: Improvements for libdsp and support for fixed16 libdsp implementation
#3121 mm/heap: Move semaphore related declaration to private header
#3086 mm: improve the memory manager modularity and reduce the information explosion
#2906 mm: umm_heap: valloc: support valloc (LEGACY)
#3159 mm: mm_heap: Remove critical section in mm_sem.c
#2942 mtd: progmem: Add up_progmem_read callback guarded by ARCH_HAVE_PROGMEM_READ
#2849 mqueue: Add _MQ_OPEN, _MQ_CLOSE and _MQ_UNLINK macro
#2071 pollnotify: we should send poll events before semaphore incrementes.
#2492 procfs: make array const to reduce memory use
#3123 sched: pthread: Remove a redundant critical section in pthread_condclockwait.c
#3080 sched: semaphore: Remove a redundant critical section in nxsem
#2960 sched: signal: sigdeliver: fix system block when kill signal to idle in SMP
#1922 sched: nxtask_start should call entry point directly for kernel thread
#2229 sched/sched/sched_waitid.c: Allow WNOHANG
#3111 sched: Sporadic scheduler: Fix time calculation and compile errors when assertions are enabled:
#2261 sched/timer: add support of CLOCK_MONOTONIC
#2455 sched/sched/sched_waitpid.c: Discard the correct child entry
#2487 sched: clock/time: add CLOCK_BOOTTIME definition
#2517 sched: spinlock: Introduce SP_WFE() and SP_SEV()
#2518 sched: Don't forward gettid to getpid directly
#2602 sched: Add include/sys/poll.h
#2719 sched/task: setup the scheduling policy to task
#2872 sched: pthread: Fix pthread cmdline issue
#2043 sched: Add SCHED_INSTRUMENTATION_HIRES support
#2044 sched: Add note_syscall args support
#2631 sched: mqueue: simplify the mqueue reailize
#2981 sched: Remove all group id related stuff
#2204 sched: irq: Fix enter_critical_section() in an irq handler for SMP
#3196 sched/signal: Implement SA_NODEFER
#2176 syscall/syscall.csv: Increase number of arguments for prctl()
#3033 unistd: Fix getpriority not handling invalid input value
Major Changes to the Build System
New Features
#2824 build/esp32: Create Flash size configuration and a new DOWNLOAD make target
#2107 build: Makefile should reference CONFIG_HOST_xxx
Bug Fixes
#3017 tools: esp32: Config.mk: Revert part of "Don't abort make when QEMU script fails"
#2882 tools: esp32: refine the QEMU image generation.
#2729 tools: esp32: backtrace.gdbscript: Add comments
#2673 tools: esp32: add a gdb script to show backtrace
#2679 tools: esp32: btdecode.sh: Script to decode the Xtensa backtrace.
#2895 tools: esp32: fix warnings from ShellCheck
#3012 tools: esp32xx: Few fixes/improvements to the post build scripts
#2803 tools: esp32: Remove some duplicated output
#2701 tools: gdbinit: add support for reporting total and used stack size
#3094 tools: version.sh: Fix PATCH including extra version
#2982 tools: nxstyle: Verify relative path in the file header
#3004 tools: esp32XX: Delete the Makefile that downloads IDF.
#2930 tools: version.sh: If the version is not available, use 0.0.0
Architectural Support
New Architecture Support
ARM
#2042 Fix interrupt stack handlings for ARM SMP
STM32
#2177 FLASH waiting cycles are configured based on HCLK.
#2985 stm32 Ethernet hardening
S32K1XX
#2900 s32k1xx: Support ramfunc
RP2040
#3002 arm/rp2040: SPI driver DMA transfer support
#2952 arm/rp2040: Add I2C driver support
#2916a rm/rp2040: Raspberry Pi Pico SMP support
NRF52
#2189 nrf52_spi: support unconnected MISO/MOSI pins
STM32H7
#3207 usbhost: Add usb host tracing strings to stm32h7
#2994 stm32h7: Allow custom clock configuration to use stdclockconfig
#2955 stm32h7:Add DBGMCU missing from master
Risc-V
#3006 esp32-c3: Adds timer driver
#2991 risc-v/bl602: Add wifi and ble support
#2901 esp32c3: Add system reset.
#2870 Support for ESP32-C3 GPIO Driver
#2965 ESP32XX: Add more flash options to esptool
Xtensa
#3003 ESP32: Re-organise the different heap regions
#2999 esp32: Add WPA2 Enterprise and WPA3 support
#3015 xtensa hostfs: Make host_stat populate st_size
#2939 xtensa/esp32: Refactor ESP32 WiFi driver to support station and softAP coexistence
#2947 esp32_ummap: write back spiram cache before calling Cache_Flush
#2965 ESP32XX: Add more flash options to esptool
#2983 esp32: Extract memory layout definitions to a separate header
#2979 xtensa/esp32: Add support for I2C tracing
IMXRT
#2929 iMXRT: changes to FlexCAN driver support
Simulator
New Features
#2129 add "nimble" config, to test nimBLE on top of bthcisock
#3152 add dlsym to nuttx-names.in
#2164 add LVGL configuration which uses the X11 framebuffer and mouse
#3093 add heap policy and asan logic to support mm debug on sim platform
#2619 hci: reuse the reserved fields of hci buffer
#2696 hcitty: add hcitty adapter
#2158 linux I2C bus support in sim
#2579 make it conditional with FS_FAT
#2599 names: add writev/readv into name list
#3478 refactor signal handling
#2130 rpproxy/rpserver: force use 'CONFIG_SIM_M32' for 64bit system.
#2198 support LCD emulation over X11; correctly decouple LCD/FB from X11/NX
#2690 support sim vfork
Driver Support
Bug Fixes
#2850 audio: Introduce a driver-specific spinlock to cxd56.c
#2950 audio: pcm_decode: add RAW format support
#2070 bluetooth: support HCI/L2CAP sockets, support HCI RAW channel
#3110 can: Add CAN FD flags to CAN header
#2490 leds: ws2812: make frequency selection more flexible
#2208 lcd: add optional putarea()/getarea() operations
#2142 note: Add task name record for task trace
#2146 pipes: nx_pipe syscall takes three params, also use nx_close
#2315 sensors: add common circular buffer management
#2215 sensors: add new feature about sensor driver model
#2039 sensors: add unified management for sensor
#2715 sensors: bmp280: convert to sensor interface (and minor sensor change)
#2907 sensors: driver model update
#3000 sensors: fakesensor support batch
#2369 sensors: support custom types of sensor
#2318 sensors: update l3gd20 sensor driver with new sensor driver model
#2698 syslog: Added color output to syslog.
#2621 syslog: Added formatted timestamps in syslog.
#3050 syslog: Added support for multiple syslog channels.
#3020 syslog: add option to prefix process name
#2697 syslog: Added printing of log priority in syslog
#2692 syslog: Prepend Process ID to syslog message
#2710 syslog: Re-arranged syslog fields.
#3226 syslog: Added multi device support in syslog_device.
#2961 syslog_rpmsg: fix system crash when open CONFIG_SCHED_HAVE_PARENT
#3201 timers: rtc/rpmsg: support server and client to set time each other
#2691 wireless: bluetooth: add more hci event definitions
#2201 wireless: gs2200m: Add function to get IWNWID / IWFREQ / IWSENS information
#2175 wireless: gs2200m: Check disassociation from AP and enable rejoin
New Driver Support
#2429 audio: add simple wm8994 codec driver
#2282 audio: cxd56: add initial audio SRC implementation
#2301analog: support for MAX1161X family of I2C 12 bit ADC chips
#2736 console: Add generic support to LWL Console
#2628 efuse: Add generic efuse driver for NuttX
#2166 lcd: Add LCD character driver: allows interacting with LCD directly from userspace
#3230 motor: add generic upper-half driver for Field Oriented Control (FOC)
#1936 note: Add task trace support
#2216 rc: support infrared remote control
#2829 sensor: add fakesensor driver
#3474 sensors: Adds driver for hyt271 sensore module
#1989 sensors: Support fxos8700cq motion I2C sensor
#2091 usbdev: add Android Debug Bridge driver
Drivers With Significant Improvements
Board Support
Significant Improvements
New Board Support
Boards With Significant Improvements
File System
Bug Fixes
#3105 fs/epoll: correct the return value of epoll_ctl(2)
#2956 fs/mount: fix mount cmd break out when meet stat error
#3042 fs: vfs : Do some adjustments for epoll
#2317 fs: flashback to release all file descriptors in group to increase debugging time.
#2540 fs: Skip call fs_checkfd if fd < 3 in fs_fdopen
#3137 fs/littlefs: Suppport the duplication function
#2724 fs/tmpfs: Iterate the entry reversely in readdir
#2852 fs: Merge fs_poll into poll_fdsetup
#3060 fs: find_blockdriver: Don't ferr() on MTDs
#3070 fs/mmap: Return EACCES for incompatible file descriptors
#3069 fs/mmap: Clarify MAP_PRIVATE dependency on CONFIG_FS_RAMMAP
#2861 fs: change geometry sizes from size_t to uint32_t
Significant Improvements
#2598 fs/epoll: add asynchronous epoll control support
#3045 fs: Allocate file/socket dynamically
#2841 fs: procfs meminfo improvements
#2957 fs: mqueue: add poll support
#3212 fs/lfs: Update version to 2.4.0
Networking
Applications
Improvements
#2414 net: tcp: implement the fast retransmit
#3257 net: tcp: support bind the same port with different domain
#2548 net: tcp: optimize TCP handshake performance
#3113 net: usrsock: add send multi-elements support
#2899 net: socket: Unify socket into file system to avoid the code duplication
#2695 netpacket: if_addr: add interface address header
#3081 tcp_send_buffered.c: improve tcp write buffering
#3025 net: Add sendmsg and recvmsg to syscall list
#2417 net: wireless: add country code control support
#2964 net: socket_rpmsg: add socket rpmsg support
#2415 net: gmp: add MULTICAST_TTL support
Bug Fixes
#2257 net: callback: remove the assert check of conn instance
#3043 net: local: Remove local_send.c since nobody use it now
#3221 net: tcp: tcp_send_buffered.c: Fix non-blocking I/O
#3100 net: tcp: correct the port byte order
#3106 net: if: remove the macro expansion of the public structure
#3104 net: dev: check the available address further
#3101 net: arp: add timeout to avoid infinite send wait
#2489 net: tcp: send the ACK in time after obtain ahead buffer from iobs
#3099 net: tcp: dup: do not start the tcp monitor if unestablished
#3103 net: tcp: reset the connection ref count before tcp_free()
#2688 net: Remove duplicate forward references
#2911 net: fix a few DP83848C and DP83825I constants
#2978 telnet: fix crash about telnet client connect
#3254 net: arp: Fix arp
#2959 net: socket: move si_send/recv into sendmsg/recvmsg
#2869 netdb.h: Add NI_MAXHOST and NI_MAXSERV
#3037 Revert "net: tcp: Add DEBUGASSERT() in psock_tcp_send()"
Security Issues Fixed In This Release
Compatibility Concerns
Changes to Build System
Change CFLAGS, CPPFLAGS, CXXFLAGS, and AFLAGS from Recursive to Simple Assignment
PR-1890 (commit 2caf3a69e3d60ec550980f7ba897c732e7a39df7) attempts to speed up compilation time for concurrent builds by changing assignment to makefile variables CFLAGS, CPPFLAGS, CXXFLAGS, and AFLAGS from recursive (=) to simple (:=). This causes these compile options to be expanded only once during the build.
If you are using NuttX on a custom board not in the NuttX repository, you may want to make a similar change to your Make.defs files. Change these recursive assignments:
CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) AFLAGS = $(CFLAGS) -D__ASSEMBLY__
to simple assignments:
CFLAGS := $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) AFLAGS := $(CFLAGS) -D__ASSEMBLY__
Not Necessary to Define __NuttX__ in Make.defs
PR-2192 (commit 9208176f600d0d04446531909bf05710716a5ee4) refactors definition of the __NuttX__ preprocessor symbol to tools/Config.mk, so it is no longer necessary to define it in each board's Make.defs file.
If you are using NuttX on a custom board not in the NuttX repository, you may want to make a similar change to your Make.defs files.
Remove lines like this:
ARCHDEFINES = -D__NuttX__
Or remove -D__NuttX__ from lines like this:
CXXFLAGS += $(ARCHDEFINES) $(EXTRAFLAGS) -pipe -std=c++11 -D__NuttX__
Known Problems In This Release
More Information
How to Download
Release artifacts for all current and past NuttX releases can be downloaded at:
How to Clone the Git Repository
The Apache NuttX project uses Git SCM as its version control system.
There are two primary repositories:
- nuttx - The real time operating system itself.
- apps - Optional applications and example programs for the operating system. You can use this repository or make your own custom one.
The main "Single Source of Truth" repositories are hosted by the ASF:
- https://gitbox.apache.org/repos/asf?p=incubator-nuttx.git
- https://gitbox.apache.org/repos/asf?p=incubator-nuttx-apps.git
These are synchronized with repositories hosted at GitHub:
How to Contact the Community
The main forum for project communication, to ask a question, get involved, or contribute to NuttX, is our mailing list, dev@nuttx.apache.org. The list is publicly archived and searchable at https://lists.apache.org/list.html?dev@nuttx.apache.org. For more information, see NuttX Community.
Enthusiastic Contributors Welcome!
NuttX is a free open-source project. If you'd like to participate, whether it's to enhance documentation (even these release notes) or dive into the nitty gritty of some low-level drivers, please join us! You can join the conversation at our dev mailing list by emailing dev-subscribe@nuttx.apache.org. The mailing list is open to the public and archived. You can browse older messages at https://lists.apache.org/list.html?dev@nuttx.apache.org.