Skip to content

oxiforge 0.4.0

Latest

Choose a tag to compare

@hsteinhaus hsteinhaus released this 21 Jul 09:09
· 6 commits to master since this release
4e8475a

An oxivgl 0.6.0 release: the dependency moves 0.4.0 → 0.6.0 (breaking for
crates that pinned oxivgl 0.4.x, hence the minor bump — oxiforge's own API and
generated code are unchanged), and the bundled examples now run their LVGL
heaps in PSRAM on both M5Stack Fire (ESP32) and CoreS3 (ESP32-S3).

Changed

  • oxivgl dependency bumped 0.4.0 → 0.6.0. Generated code is unchanged
    across both steps — 0.5.0 (POINTER touchscreen indev, keypad hold-to-repeat)
    and 0.6.0 (ESP32-S3/CoreS3 support, the oxivgl::mem PSRAM pool, LVGL's
    built-in TLSF allocator, a panicking LV_ASSERT_HANDLER) are additive or
    runtime-only, and the sole widget-API deprecation (Label::text_long) is one
    oxiforge never emitted. The bump is carried so consuming crates resolve a
    single oxivgl version across the build-dep (oxiforge) and runtime-dep.
  • Font references now require the face to be enabled in the app's
    lv_conf.h.
    oxivgl 0.5.0 gates each built-in Font const to the faces the
    LVGL build exposes, so a text_font: naming a disabled face is now a cannot find value … error against the generated code (documented in the YAML spec).
    Apps may drop unused Montserrat faces to save flash.

Examples

  • All three examples now put LVGL's heap in PSRAM and build for both boards.
    The example crates were ported to the oxivgl 0.6.0 harness: a fire27 /
    cores3 board feature selects M5Stack Fire (ESP32) or CoreS3 (ESP32-S3), the
    m5stack-core BSP handles bring-up, and example_main_psram! (nav examples
    use the underlying board_body!(…, nav, …)) hands a 512 KiB PSRAM region to
    oxivgl::mem::reserve_pool so the generated widget tree allocates from
    external RAM. The shared lv_conf.h switched to LV_STDLIB_BUILTIN with
    LV_MEM_POOL_EXPAND_SIZE sized for the pool. The three crates share one
    examples/ cargo workspace carrying the esp-hal [patch.crates-io] fork
    (examples/HIL only — cargo publish strips it, so the published library
    still resolves stock crates.io esp-hal). Host (SDL2) builds are unchanged and
    run on LVGL's internal pool.
  • Example LV_ASSERT_HANDLER now panics instead of while(1); (#38). The
    shared examples/conf/lv_conf.h routes LVGL assertions (a failed
    lv_malloc, a NULL object) through oxivgl 0.6.0's oxivgl_lv_assert_handler
    → the platform panic path (esp-backtrace on target, a failing test on host),
    ending the silent-spin freeze class instead of hanging with no message.