layout: page released: true apache: true title: 10.3.0 date: 2022-06-03 summary: > Release v10.3.0
artifact-root: “https://www.apache.org/dyn/closer.lua/incubator/nuttx/10.3.0” checksum-root: “https://downloads.apache.org/incubator/nuttx/10.3.0” key-file: “https://downloads.apache.org/incubator/nuttx/KEYS”
source-os-dist: - “apache-nuttx-10.3.0-incubating.tar.gz” source-app-dist: - “apache-nuttx-apps-10.3.0-incubating.tar.gz”
{% include JB/setup %}
#5503 Replece clock_gettime with clock_systime_timespec if suitable
#5721 Remove the unnecessary code from nx_start
#5681 Simplify and unify fcntl with FIOCLEX and FIONCLEX
#5082 compile/flags: add FRAME_POINTER into Toolchain.defs
#5199 file_operations: get back C89 compatible initializer
#5065 reanme CONFIG_USER_ENTRYPOINT to CONFIG_INIT_ENTRYPOINT
#5399 Add CONFIG_NDEBUG Kconfig to control NDEBUG definition
#5347 register_driver: fix driver modes accross the code
#5509 libc.csv: Add pthread_setname_np and pthread_getname_np
#5364 libc.csv: Add more symbols
#4971 audio: audio_comp.c: capbility should use collections
#5072 graphics: vncserver: Implement vsync
#5058 graphics: vncserver: Fix buffer overflow
#5132 graphics: vnc: Decouple VNC server from NX graphic stack
#4998 system: note dump: add CONFIG_SCHED_INSTRUMENTATION_SWITCH
#5435 wireless: bluetooth: fix build break if NET_6LOWPAN enabled
#5487 binfmt: Decouple builtin from binfs file system
#4667 binfmt: Remove umm_initialize from elf_load
#5351 binfmt: elf.c: Fix syslog formats for ELF64
#5522 binfmt: Fix binfmt for BUILD_KERNEL & ADDRENV
#4689 binfmt: remove the specified prefix from target variables
#5229 binfmt: coredump: remove the block fragmentation
#5409 libc: stdlib: Compile lib_openpty.c without checking CONFIG_SERIAL_TERMIOS
#5600 libc: Imx6 thumb
#5474 libc: posix_openpty should use the absolute path(“dev/ptmx”)
#5508 libc: sim: Rename arch_setjmp[64].S to arch_setjmp_x86[_64].S
#4829 libc: Make perror work without CONFIG_FILE_STREAM
#4779 libc: wqueue Correct time calculation in work_p…
#4756 libc: machine: xtensa: add xtensa libc implement
#4752 libc Move lib_filesem.c, lib_stream.c and lib_streamsem.c to libc/stdio
#5288 libc: misc: lib_execinfo.c: fix bad memory access
#5290 libc: backtrace_malloc change sprintf to snprintf
#5381 libc: sim: arch_elf64.c: Implement R_X86_64_PC64
#4870 libc: add interface to support output stream as buffer style
#4861 libc: pthread: Implement pthread_atfork
#4992 libc: Move stream implementation from libs/libc/stdio to libs/libc/stream
#4768 libc: machine: add config LIBC_ARCH_MEMCHR
#4855 libc: psignal: Output the message to STDERR_FILENO instead STDOUT_FILENO
#4853 libc: hex2bin: Handle the line ending(\r, \n and \r\n) dynamically
#5690 libc: gettext: Support the plural format
#5692 libc: stdio: Fix bug when CONFIG_LIBC_NUMBERED_ARGS is enabled
#5465 libc: chdir:“PWD” should save absolute path
#4994 libc: textdomain: Fix error behaviour
#5039 libc: lzfcompress: add lzf compress stream
#4859 libc: getdelim: Remove KERNEL check since it shouldn't be called inside kernel
#4944 libc: getopt: Move struct getopt_s to include/nuttx/tls.h
#4881 libc: Update include/nuttx/input/x11_keysymdef.h to the latest version
#5126 libc: math: fix fmod family operation
#5125 libc: math: fix log and logf calculations on ARMv7 (and maybe others)
#5170 libc: pthread:pthread_barrierinit sem use pri_none
#2063 libc: Fix libcxx for sim/macOS
#5269 libc: Fix a few libcxx build issues for sim/macOS
#5202 libc: libcxx-mini: operator new will assert when alloc failed.
#5180 libc: pthread: restore pthread mutex default protocol POSIX compatibility
#5549 libc: pthread: add the kernel stack allocation for ADDRENV=y and BUILD_KERNEL
#4978 libc: Add getprogname function
#5004 libc: unistd: getopt: Use argc to end parsing
#5017 libc: Enable terminal api regardless of CONFIG_SERIAL_TERMIOS setting
#5053 libc: symtab: optimize the find speed by bisection
#5096 libc: Add backtrace_symbols[_fd] functions
#4874 libc: stdoutstream: restore the output method to fputc()
#5564 libc: machine: Implement ARM aeabi_xxx API called by clang
#5398 libc: Implement posix_openpt
#4962 libc: allsyms: Load all symbols for debugging
#4909 libc: Add mknod implementation
#4894 libc: misc: add err.c to libc
#4893 libc: str: add strlcat to libc
#5575 libc: sched: task_setcanceltype: fix function name in comment
#4828 libc: stdio: Handle 64bits off_t correctly
#4804 libc: netdb: fix access within misaligned address error
#4725 libc: Improve the netdb config consistency
#4985 libc: Remove CEVA tl420/tl421 support on Nuttx
#5036 libc: net: Implement getifaddrs and freeifaddrs
#5519 libc: Fix -Werror=nonnull-compare and -Werror=format-truncation=
#5629 libc: fix up_tls_info define for BUILD_KERNEL
#5307 libc: bug patch for frexpf function
#5107 libc: Ensure that sethostname null terminates the hostname correctly
#5479 libdsp: lib_observer: add nolinear fluxlink observer
#5483 libdsp: improvements for lib_observer.c
#5563 libdsp: minor improvements and support for fixed16 observers
#5527 libnx: handle the bad message correctly
#5321 libxx: uclibxx: add patch use overload constructor of filebuf & ostream
#4747 Revert “libc: Implement fesetround & fegetround for arm”
#4739 Revert "lib/netdb: Change the default NETDB_DNSCLIENT_NAMESIZE to NAM…
#5459 mm: mm_heap: add mm_foreach to run handler for every memory node
#5504 mm: handle take mm sem in IRQ
#4765 mm: fix realloc overwrite memcpy when use a new block
#4759 mm: do kmm_checkcorruption in IRQ when TCB_FLAG_DEBUG_CHECK set
#5532 mm: fix gran_alloc() array index range checking
#5548 mm: fix #if condition of g_mmheap for BUILD_KERNEL and ADDRENV
#5539 mm: handle take mm sem in IRQ
#5585 mm: Add memory dump function when enable CONFIG_DEBUG_MM
#5417 pthread: Add len argument to pthread_getname_np
#4798 sched: Reduce the default preallocated buffer when DEFAULT_SMALL=y
#5632 sched: group: Fix dataabort when exiting task or pthread if ARCH_ADDR_ENV=y
#5658 sched: group: Simplify the allocation and deallocation logic
#5649 Revert “sched: Don't duplicate caller file handler when creating kernel thread”
#5543 sched: Mark pthread as non-cancelable to avoid additional calls to pthread_exit()
#5583 sched: note:add switch and dump instrumentation
#5416 sched: Disable pthread by default when DEFAULT_SMALL is enabled
#5015 sched: add holder in sem_trywait
#5264 sched: Define SMP_NCPUS to 1 in no SMP case
#4803 sched: signal: add spinlock to g_sigfreeaction
#4799 sched: Disable message queue by default when DEFAULT_SMALL equals y
#4772 sched: vfork: allocate tls_info_s instead task_info_s from stack
#4931 sched: sched_waitpid:delete debugassert
#4863 sched: Move g_tcbinfo to include/nuttx/sched.h
#5331 sched: critmonitor: remove the assertion if counter == 0
#5098 sched: backtrace: Dump the complete stack regardless the depth
#5185 sched: Remove CONFIG_ prefix from SCHED_HPWORK
#4666 sched: Remove pidhash_s and move ticks to tcb_s
#4676 sched: Check g_pidhash[hash_ndx] isn't NULL before access pid field in nxsched_get_tcb
#5545 sched: clock: Remove CLOCK_MONOTONIC option from Kconfig
#5464 sched: tcbinfo: Fix warning by discarded qualifiers
#5455 sched: mqueue: remove unused leave_cancellation_point
#5456 sched: module: remove redundant unlock
#5392 sched: Remove SDCLONE_DISABLE option and config
#4858 sched: watchdog: remove tick check in wd_timer
#5018 sched: init/nx_start.c: fix compile break when CONIFG_TASK_NAME_SIZE=0
#4999 sched: sched_note: change uint32_t nbi_module into uint8_t array
#4989 sched: fix bug in the function nxsched_resume_scheduler
#4958 sched: signal: Introduce a private spinlock in sig_action.c
#4954 sched: dumpstack: raise the stack dump level to emergency
#4953 sched: semaphore: fix race condition for timed wait
#4913 sched: Move argv from tcb_s to task_info_s
#5368 sched: idle: remove heap & stack check in idle thread
#4782 sched: sem: remove limitation of irq context when do sem_trywait
#4972 sched: wqueue: update wqueue to support using wqueue before wqueue start
#5266 sched: IDLE thread will not boost up when IDLE hold sem
#5540 sched: semaphore: fix corner case sem_waitirq assert crash
#4682 sched: cpuload: fix crash because of the member of g_pidhash is NULL
#5171 sched: semphore: release all semphores' holder that the task held when exit
#5063 sched: wqueue: fix NO leave_critical_section() when only CONFIG_SCHED_HPWORK
Compatibility Concerns Renamed Kconfigs
PR-5065 has renamed the following Kconfigs:
CONFIG_USER_ENTRYPOINT -> CONFIG_INIT_ENTRYPOINT CONFIG_USERMAIN_STACKSIZE -> CONFIG_INIT_STACKSIZE
These are the non-“CONFIG_”-prefixed names:
USER_ENTRYPOINT -> INIT_ENTRYPOINT USERMAIN_STACKSIZE -> INIT_STACKSIZE
All in-tree boards have been updated.
NuttX users developing their own out-of-tree boards need to update all references to the above names as well.
See PR-5065, git commits 4bc7b8c802cd42bd2c3d98f4fd11207d2dd50de4, 632716dc7ad04f7cad48c5787f5c0b500cbee296, and 036d98a06ba873318061380b876b838f7ffa64fb.
Changes to Build System
PR-5496 has refactored the separate Unix and Windows handling of the build variable ARCHSCRIPT so that each board's Make.defs will not need logic like this:
ifeq ($(CONFIG_CYGWIN_WINTOOL),y) ARCHSCRIPT = -T “${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)tfm-ns.ld}” else ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)tfm-ns.ld endif
And can instead append the variable just one, like this:
ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)tfm-ns.ld
Note the assignment is changed to append (from “=” to “+=”) and removal of “-T”.
All boards in the NuttX tree have been updated.
NuttX users developing their own custom boards will need to update their board's scripts/Make.defs file as shown above.
See PR-5496, git commit 855534deef50e1e9c957eb32a7b15497d1bfd34a.
PR-5712 has refactored board common logic. BOARD_SAMV7_COMMON and BOARD_STM32_COMMON options are removed and a new ARCH_BOARD_COMMON is introduced.
All in-tree boards have been updated.
NuttX users developing their own out-of-tree boards need to replace “CONFIG_BOARD_SAMV7_COMMON=y” and “CONFIG_BOARD_STM32_COMMON=y” to “CONFIG_ARCH_BOARD_COMMON=y” in defconfig files. Also for some out-of-tree boards the compilation may fail with next error messages:
make[2]: *** No rule to make target ‘libboard.a’. Stop. Makefile:139: recipe for target ‘board/libboard.a’ failed make[1]: *** [board/libboard.a] Error 2 tools/Unix.mk:509: recipe for target ‘nuttx’ failed
In this case the out-of-tree board actually relies on in-tree boards common folder structure. To overcome the build error there are two possible options:
Add “CONFIG_ARCH_BOARD_COMMON=y” to defconfig file (this will restore parity with previous NuttX release) Rename “src/Make.defs” → “src/Makefile” in out-of-tree board directory and append “include $(TOPDIR)/boards/Board.mk” to “src/Makefile”. Refactored Arch Headers
PR-5720 has refactored architectural headers affecting all ARM platforms: arm_arch.h has been removed and its contents merged into arm_internal.h. Previously, most low-level modules in arch/arm/* and boards/arm/* needed to include both headers. Following the refactor, only arm_internal.h is needed.
All boards in the NuttX tree have been updated.
NuttX users developing their own custom boards will need to remove any #include “arm_arch.h” and (if necessary), #include “arm_internal.h” instead.
See PR-5720, git commit 54e630e14d7e32d6f81ae79d4e5df3d2fa787ef0.