openvela trunk-5.5
[ English | 简体中文 ]
Overview
This openvela trunk-5.5 release brings comprehensive enhancements and improvements across the kernel, connectivity, multimedia, graphics, runtime framework, and developer tools. More importantly, this release open-sources openvela's first lightweight native AI Agent engine, and adds the open-sourced QuickApp Feature framework runtime core library & tools, as well as the QuickJS lightweight JavaScript engine.
Table of Contents
New Feature Details
Kernel (NuttX)
Architecture Support
- Continued improvements across multiple architectures: ARM Cortex-M / Cortex-A / Cortex-R, ARM64, RISC-V, Xtensa, x86_64, TriCore, SPARC
- ARMv8-R enhancements: UDIV instruction, Monitor-mode interrupt vectors, TEE jump optimization
- TriCore Tasking toolchain C++ build support
- QEMU ARMv8-A / ARMv8-R board-level enhancements and improvements
Drivers
- RPTUN / RPMsg: IVShmem fixes, BMP mode, UART port optimization
- Virtio: virtio-snd audio, virtio-crypto encryption, virtio-mmio optimization and enhancements
- V4L2 M2M video framework
- ALSA audio adaptation enhancements
Scheduler
- Signal-handling refactor:
CONFIG_DISABLE_SIGNALSsupport - SMP scheduling: spinlock double-unlock fix, priority scheduling optimization
- POSIX compliance:
pthread_condAPI,mq_openpath restrictions,abort()implementation - Per-CPU variable optimization
Networking
- VSock: virtio vsock support with sockif implementation
- IPv4 / IPv6 forwarding and input processing fixes
- Netdev locking, IGMP, VLAN, netlink route
- TCP close fix
File System
- LROFS: truncate, create, copy file content optimization
- GPT partition support
- FATFS UTF-8 optimization
- Procfs pressure monitoring
Memory Management
- Mempool multi-pool manager, dynamic pool configuration optimization
- KASAN detection enhancements
Libraries
- libc: scanf, printf, strtol bug fixes and enhancements
- libelf:
modlibrenamed tolibelf - libcxx / libcxxabi: C++ initialization flow optimization
Tools
- nxgdb debugging enhancements
- CMake build optimization
- syscall generation tool supports
const union
Bluetooth
- AVRCP version update with support for richer operation commands
- GATT caching mechanism, significantly improving connection speed
- Support for custom BLE Security Levels
- Enhanced SPP, HID, A2DP, HFP, SPP and other protocols, improving compatibility and resolving known issues
- Fixed other known issues, enhancing subsystem stability
Connectivity Framework
Telephony
- TAPI sub-modules gain callback functions across the board
- Modem upgrade operation support
Network
- Fixed callback leak issues
- Fixed MQTTS certificate issue
- Fixed resumable download issue
Multimedia
Player
- Media player core refactor
- Audio focus management optimization
- Streaming playback enhancements
- Multi-core cross-CPU communication support
Recorder
- Recorder framework optimization, parameter passing fixes
Media Graph
- Media processing graph engine update
media_uv_triggerasynchronous interface- Asynchronous detection callback
FFmpeg Upgraded to 7.x
- Version upgrade: FFmpeg 5.x → 7.x
Graphics & Animation
New Features
- Animation system: Added
LV_ANIM_USE_FLOATconfig that extends start/end/cur/path_cb types fromint32_ttofloat; added easing parameters (ease param), animation-complete callback, and frame-interval smoothing - Vector rendering (VG_Lite): Added border side rendering, tiled image support, stroke path cache and path upload modes, GPU utilization query interface, font cache reference counting, dynamic parameter print control
- Image compatibility: Added compatibility decoding for LVGL V8 legacy
.bin/.rleimage formats (automatically converts V8 header to V9) - Image decoding: JPEG now fully supports orientation and CMYK; JPEG/PNG decoders allocate draw buffer in one shot; added decoding performance measurement
- New widgets:
arc_labelcurved-text widget; QRCode circular style and quiet zone - Rendering: draw_buf blur support; ARM MVE/NEON alpha pre-multiplication acceleration; global recolor; display rotation now implemented via transform matrix with FULL rendering-mode rotation support
- Input: Added crown scroll event; added global focus object
- Scrolling: Added force-elastic scroll property
- Text: Restored text recolor; span widget supports BiDi bidirectional text
- Canvas: Direct painting mode support
- File system: Added
lv_fs_read_file_allocAPI that reads a file and auto-allocates memory - Memory: Added linear allocator; added
lv_reallocf - Tools: Added argparse CLI library; added remote_ctrl remote-control component (integrated with NuttX libuv); GDB debugging module refactored for multi-instance and lazy loading
- NemaGFX: Added freetype vector font support
Performance Optimizations
- Rendering refresh reduces unnecessary
refr_childrencalls (by checking layer opa) and empty dispatches - Draw task descriptors merged-allocated via linear allocator to cut malloc calls
- Style cache uses longer bitmaps, allowing a single call to fetch multiple space properties
- Text drawing reduces
lv_text_get_sizeand glyph lookup calls - Objects cache the current opa stack in the layer, avoiding repeated computation
- VG_Lite adds a gradient pool that optimizes memory allocation and lookup; vector path / descriptor structures are streamlined
- A8 format decoding performance improved; snapshots render starting from the top-level object
Key Fixes
- Fixed rendering anomalies when layer opacity/recolor was not restored after layer-area acquisition failure
- Fixed flicker caused by conflicts between scroll animation and finger drag during continuous sliding
- Fixed infinite loop in
scroll_endevents - Fixed accidental click triggered by two-finger swipe
- Fixed multiple VG_Lite crashes (empty stroke cache, uninitialized gradient, empty clipper path)
- Fixed memory leaks in SVG/PNG decoders
- Fixed image-decoder memory leak under multi-core rendering scenarios
- Fixed crashes of freetype and profiler_builtin during
lv_deinit - Fixed textarea placeholder not vertically centered and wrapping anomalies
- Fixed span widget text display corruption
- Fixed anomalies when combining flex layout with RTL direction
Testing
- 20+ module unit-test coverage added (anim, area, event, draw_buf, vector, qrcode, span, fs, etc.)
- CI switched to native 32/64-bit builds; all reference screenshots refreshed
System Applications & Tools
ALSA-Lib
- DMix drain fix, semaphore leak fix
- mmap offset calculation fix, silent pre-fill optimization
- Independent device logging support
Test Frameworks
- cmocka: XML output format, ELF test-file execution
- ostest: atomic operations, spinlock, cancel test fixes
- LTP
CLOCK_MONOTONICadaptation
System Tools
sttyterminal control enhancements- readline echo issue fix
- NSH: stderr redirection, Ctrl+C exit fixes
System Services
KVDB / Utils
- BMP / AMP scenario connection optimization; default timeout raised from 0.5s to 5s
- GDBus proxy property retrieval, double-free fix
LibUV Extensions
- AES-CCM mode API, ECDH shared-key, HKDF support
UOrb Topics
- Algorithm topics: gesture, posture, heart rate, pedometer
- Charging state, vibrator on/off state topics
OTA
- AVB multi-image verification,
vbmeta_partitionmode
Binder IPC
- RPC / NDK separation, CPC ServiceManager compatibility
ASH Framework
- Microservice support, MessageLoopListener, C API exports
Activity Manager
- Fixed coexistence of applications with duplicate names; Lite mode refactor
Window Manager
- Lite single-instance mode, window transition animations
Security & Runtime
OP-TEE
- ELF TA support (CMake build), WASM multi-instance initialization
- Mutex protection for concurrent TA initialization
- Triad encryption/decryption interface
WASM Runtime
- netlib / WiFi / xtables WASM wrappers
QuickApp
This release open-sources the entire QuickApp development stack, covering the JS engine, Feature framework, and application Shell runtime:
-
A lightweight JavaScript engine based on an enhanced fork of Fabrice Bellard's QuickJS. It preserves the original lightweight, fast, and high-compatibility characteristics while integrating a set of new features, especially around developer tooling and debugging support, making it a more complete JavaScript runtime environment.
-
The QuickApp Feature framework runtime core library and tools. Developed in C/C++ for efficient JavaScript-to-native interoperability. The architecture consists of three core components: a runtime framework that provides a JS-native execution environment, a JIDL (Interface Description Language) and toolchain for auto-generating bi-directional invocation interfaces, and a standardized set of native developer APIs.
-
The openvela application Shell runtime environment. A lightweight C++ runtime foundation library for embedded systems, providing efficient and reliable low-level components for resource-constrained environments. The modular design covers: resource management (Bundle), system security (Crash handling), device info abstraction (Device Info), file system wrappers (File), file-descriptor management (Scoped FD), message-loop mechanism (Message Loop), stream processing, string conversion, threading, time/timer, networking, memory management, and debug tracing. Built with the GN build system, with CMake support via
CMakeLists.txt, and compatible with the Kconfig configuration system, suitable for real-time operating systems such as NuttX.
AI Agent
openvela AI Agent is an AI agent engine designed to run on small devices such as watches, speakers, glasses, and earphones. Architecturally, the engine builds a full-stack intelligence pipeline from perception and memory to reasoning and execution, truly enabling devices to make autonomous decisions and deliver proactive services.
Breaking Changes
⚠️ The changes below may impact existing code. Please review them carefully when upgrading.
Kernel
| Type | Change | Impact |
|---|---|---|
| Rename | modlib → libelf |
binfmt, ELF loading |
| Rename | PSEUDOFS_SOFTLINKS → FS_LINKS |
File system Kconfig |
| API | sched_note_printf signature change |
trace module |
| API | atomic_fetch_xxx → atomic_xxx |
atomic operations in apps |
| New | CONFIG_DISABLE_SIGNALS |
signal-related conditional compilation |
| Config | libcxxmini → libminiabi |
C++ initialization |
Bluetooth
| Type | Change | Impact |
|---|---|---|
| Behavior | CM profile callbacks changed from asynchronous to direct | Profile callback handling |
| Behavior | pairing_complete always reports BONDED |
Pairing flow |
| Behavior | Removed connection-state check in security_changed |
Security callback |
Telephony
| Type | Change | Impact |
|---|---|---|
| New | All TAPI sub-modules add callbacks | All TAPI callers |
| Refactor | char** pointer parameter refactor |
TAPI function signatures |
Runtime
| Type | Change | Impact |
|---|---|---|
| Refactor | QuickApp interface refactor | QuickApp |
| Replace | UVTaskQueue → ash MessageLoop C interface |
QuickApp exit flow |
| API | NetworkStatus callback returns object type | Network status |
System Services
| Type | Change | Impact |
|---|---|---|
| Config | KVDB default timeout 0.5s → 5s | KVDB clients |
| API | Binder RPC / NDK separation | Binder IPC |
Upgrade & Adaptation Guide
1. Kernel Configuration
CONFIG_PSEUDOFS_SOFTLINKS→CONFIG_FS_LINKSmodlibAPI →libelfatomic_fetch_xxx→atomic_xxx
2. Bluetooth
- Profile callbacks must be adapted to direct-callback mode (no longer asynchronously dispatched)
- Review
pairing_completecallback logic
3. Telephony
- TAPI callers must adapt to the newly added callback parameters
4. Runtime
UVTaskQueue→ ash MessageLoop C interface- Adapt to the updated
lv_animinterface
5. Build System
- C++ initialization:
libcxxmini→libminiabi
6. Third-Party Libraries
- FFmpeg upgraded to 7.x