Overview#
LVGL v8.1 is a minor release that packs in numerous fixes and a wealth of new features. This update enhances performance, expands platform support, and integrates several powerful capabilities directly into the core library.
Key highlights include:
- Built-in support for SDL-based GPU drawing
- Much faster circle drawing in the software renderer
- Several 3rd party libraries merged directly into LVGL
- LVGL added as an RT-Thread and ESP32 component
Breaking Changes#
The calendar widget now includes its header directly within the widget structure. This change may require updates to existing calendar implementations.
Commit: 2e08f80
Architectural Improvements#
3rd Party Library Integration
Small, widely-used 3rd party libraries are now integrated directly into LVGL, reducing dependency management overhead and improving out-of-the-box functionality.
- Pull request:
#2569
New Features#
Display and Rendering#
- Direct mode drawing: Add support for direct-mode rendering
#2460 - Hardware-accelerated SDL2 rendering: GPU acceleration using SDL2
#2484 - Non-fullscreen display utilities: Support for rendering to display subsections
#2724,#2583 - Multiply blend mode: Add
LV_BLEND_MODE_MULTIPLYcc78ef4
Platform Support#
- RT-Thread integration: Full support for RT-Thread RTOS with device drivers and build system
#2660,#2674,#2719 - ESP32 component: LVGL now available through the ESP32 component manager
#2521 - Win32 filesystem driver: New filesystem driver based on Win32 API
#2701 - MicroPython interface target: Improved CMake interface for MicroPython
#2529
Widgets and Components#
- Rlottie integration: LVGL-Rlottie interface added as 3rd party library
#2700 - Keyboard user-defined modes: Add custom keyboard layouts
#2651 - Keyboard button popovers: Show popovers on button press for btnmatrix/keyboard
#2537 - Message box content area: Add custom content area to msgbox
#2561 - Message box improvements: Omit title label unless needed
#2539, add function to get selected button index#2538 - Switch animation: Smooth animation when changing switch state
#2442 - Spinbox enhancements: Support bidirectional digit steps with encoder
#2644, cursor positioning#2314 - Span text improvements: Indent supports percentage for fix and break modes
#2693, missing spangroup functions#2379
Object System#
- Snapshot API: Take snapshots of objects
#2353 - Animation timeline: New timeline API for coordinated animations
#2309 - Object manipulation:
- Keypad and encoder scrolling: Backported from v7 page to v8 obj
#2390
Events#
- Child lifecycle events:
LV_EVENT_CHILD_CREATEDandLV_EVENT_CHILD_DELETED#2618 - Screen load events:
- Enhanced draw events: Improved parameters for
LV_EVENT_DRAW_PART_BEGIN/END88c4859 - Event callback management:
lv_obj_remove_event_cb_with_user_data()4eddeb3 - Animation user data: Interface for handling animation user data
#2415 - Scroll animation access: Pass scroll animation to
LV_EVENT_SCROLL_BEGINca54ecf
Configuration and Memory#
- Configurable memory buffer: Make
LV_MEM_BUF_MAX_NUMconfigurable#2747 - Memory pool allocation:
LV_MEM_POOL_ALLOCsupport#2458 - Memory monitoring: Add
LV_USE_MEM_PERF/MONITOR_POSacd0f4f - Overwritable log macros: Allow overwriting
LV_LOG_...macros17b8a76
Additional Features#
- Canvas opacity:
lv_canvas_set_px_opa()b3b3ffc - Image size property: Add img_size property
#2284 - Arc advanced hit test: Support for
LV_OBJ_FLAG_ADV_HITTESTdfa4f5c - RTL improvements: Scrollbar placement on the left with RTL base direction
906448e - Tick validation: Check if
lv_tick_inc()is calledaa6641a
Performance Improvements#
Circle Drawing Reimplementation#
The circle drawing algorithms have been completely reimplemented, delivering significantly faster rendering for rounded elements.
- Pull request:
#2374
Rectangle Drawing Optimization#
Rectangle drawing algorithms have also been rewritten for better performance.
- Commit:
5b3d3dc
Additional Performance Enhancements#
- Animation timeline control: Add
lv_anim_timeline_stop()#2411 - Mask optimization: Ignore masks if they don't affect the current draw area
a842791 - Buffer management: Optimize wait timing for
lv_disp_flush_ready()with dual buffersd0172f1 - Additive blending: Speed up additive blending operations
3abe517 - Cycle limit checks: Remove
lv_obj_get_child_cnt()from cycle limit checksebb9ce9
Bug Fixes#
This release includes over 200 bug fixes across all areas of the library. Major fix categories include:
Rendering and Drawing#
- Fixed border drawing errors with various radius/width configurations
- Corrected gradient drawing and clipping issues
- Fixed shadow drawing with large shadow widths and radius=0
- Resolved image drawing issues with radius masks
- Fixed arc, meter, and circle invalidation problems
- Corrected rectangle drawing with
clip_cornerenabled
Widgets#
- Calendar: Fixed today and highlighted day calculations
- Chart: Fixed cursor positioning, scrolling, and indicator drawing
- Dropdown: Multiple invalidation and keyboard handling fixes
- Label: Fixed BIDI processing, clipping of italic letters, and
LONG_DOTmode crashes - Table: Fixed cell positioning, border handling, and off-by-one errors
- Textarea: Fixed cursor drawing, password mode character deletion, and scroll to cursor
- Span: Fixed opacity, overflow, decoration, and alignment bugs
- Checkbox, switch, roller, msgbox, and many other widget fixes
Object System#
- Fixed layout update and invalidation issues
- Corrected object positioning with RTL base direction
- Fixed alignment and size calculation problems
- Resolved scroll handling and scrollbar visibility issues
- Fixed group and focus management edge cases
Memory and Platform#
- Fixed memory leaks in display removal and PNG/SJPG decoders
- Corrected memory alignment on 32-bit platforms
- Fixed filesystem driver seek and error handling
- Resolved compilation issues across multiple toolchains (Keil, IAR, GCC)
- Fixed RT-Thread, STM32, PXP, and VGLite driver issues
BiDi and Internationalization#
- Fixed BiDi weak character handling
- Corrected RTL dropdown list positioning and object alignment
- Fixed Arabic vowel character processing
- Resolved base direction handling in multiple widgets
For a complete list of all 200+ fixes, see the full changelog.
Examples#
New and improved examples added:
- Chart examples: Area chart example
#2507, chart with data gaps#2565 - Animation examples: Cubic-bezier demo
#2393, text with gradient462fbcb - Checkbox example: Radio button implementation
d089b36 - List example:
lv_example_list_2#2545 - MicroPython examples: Added MP versions of various examples
#2412,#2347
Documentation#
Extensive documentation updates including:
- Updated porting guide with v8 API changes
- Completed style property descriptions
- Added animation image widget documentation
- Fixed numerous typos and clarified confusing sections
- Updated filesystem, layout, and color documentation
- Added commit message format guidelines
- Updated Arduino and MicroPython integration guides
Over 70 documentation pull requests and commits improving clarity, fixing broken links, and updating examples.
Testing and CI#
Major improvements to the testing infrastructure:
- Unit tests: Added tests for text processing, arc, dropdown, and checkbox widgets
#2623,#2617,#2551 - Test infrastructure: Converted Makefile to CMake
#2495, added parallel test execution#2515 - Code coverage: Integrated gcov and codecov
e35b1d0 - MicroPython CI: Added ESP32, STM32, and RP2 port tests
#2629 - Input emulation: Added mouse, keypad, and encoder emulators for automated testing
Migration Notes#
While v8.1 maintains backward compatibility for most use cases, there is one breaking change:
Calendar Widget: The calendar header is now directly embedded in the calendar widget. If you were accessing or customizing the header separately, you'll need to update your code.
For detailed migration guidance, see the v8.1 migration guide.
Get Started#
Update to LVGL v8.1:
git clone --branch release/v8.1 https://github.com/lvgl/lvgl.gitbashOr update your existing repository:
git checkout release/v8.1
git pullbashFor platformIO, ESP-IDF, Arduino, or other package managers, update your dependency to v8.1.0.
Visit the documentation to explore all the new features and improvements.
