Skip to main content

LUMEN_ABI_MINOR

Constant LUMEN_ABI_MINOR 

Source
pub const LUMEN_ABI_MINOR: u32 = 13;
Expand description

Minor ABI version. Bump on additive changes (new exports, new variants at the end of enums).

0.4 added the change-subscription surface: LumenWatchFn + lumen_signal_watch, a commit-fired signal-change callback wired through the running app’s [PropertyStore] dirty machinery (no polling thread).

0.5 added the graceful-shutdown hook: LumenCloseFn + lumen_app_on_close, a close callback that fires on the OS close request (window button; Unix SIGINT/SIGTERM) before teardown and can veto the close by returning 0.

0.6 added file-based-pages navigation: lumen_navigate, lumen_navigate_back, lumen_navigate_forward, and lumen_current_page, writing the reserved route.request cell through the shared lumen_core::nav bus (the same surface the script page() builtin and the Rust SDK use).

0.7 added the link-not-embed launcher seam: lumen_app_new_from_lmna, which builds a LumenApp from prebuilt LMNA artifact bytes with NO parser. The thin lumenc launcher compiles source to LMNA bytes in-process and hands them across this ABI to a dlopen’d liblumen, instead of static-linking the runtime. lumen_app_new(dir) is unchanged (still parses via the bundled parser). See docs/design/link-not-embed.md.

0.8 added the dynamic DOM read side: LumenNode, LumenNodeList + lumen_nodelist_free / lumen_nodelist_get, and the query + traversal getters (lumen_query, lumen_query_len, lumen_query_single, lumen_get_by_id, lumen_document, lumen_node_parent and siblings, lumen_node_children, lumen_node_closest, lumen_node_valid). All read the process-shared per-tick DOM snapshot; additive, so a minor bump.

0.9 added the dynamic DOM write side + window / document / history: lumen_node_set_attr / lumen_node_remove_attr / lumen_node_set_text, class-list edits (lumen_node_class_add / _remove / _toggle), inline style (lumen_node_set_style / lumen_node_remove_style), structure (lumen_node_spawn, lumen_node_clone, lumen_node_append, lumen_node_insert_before, lumen_node_set_parent, lumen_node_replace_with, lumen_node_remove), and the window / history / document entry points (lumen_window_set_href, lumen_window_reload, lumen_window_set_title, lumen_window_set_size, lumen_window_dpr, lumen_history_go, lumen_document_spawn). Mutations queue on the external DOM bus the runtime drains each tick; additive, so a minor bump.

0.10 added the dynamic DOM event side (phase 4): register a C callback + user data against a node and event type with lumen_on (capture-phase opt-in), unbind with lumen_off. The callback receives a LumenEvent (scalar fields) plus accessor functions for the string fields (lumen_event_type, lumen_event_key, lumen_event_value) and the propagation controls (lumen_event_prevent_default, lumen_event_stop_propagation, lumen_event_stop_immediate_propagation). The runtime invokes registered callbacks during capture -> target -> bubble propagation; additive, so a minor bump.

0.11 added the low-level introspection read side (phase 5): post-layout geometry (lumen_node_rect, lumen_node_content_rect, lumen_node_scroll, lumen_node_is_visible, lumen_node_z_index), full computed style / attributes / inline style / component reads as key-value buffers (lumen_node_computed_style, lumen_node_attrs, lumen_node_inline_style, lumen_node_component), class / component name lists (lumen_node_classes, lumen_node_components), tree serialization (lumen_node_outer_markup, lumen_dump_tree), entity id (lumen_node_entity_id), and global state (lumen_pointer_state, lumen_frame_info, lumen_signals_all), with the lumen_kvlist_free / lumen_strlist_free / lumen_string_free releasers. Additive, so a minor bump.

0.12 added guarded markup injection (phase 6): read a node’s children as .lmn-ish text with lumen_node_inner_markup, and replace them from a markup fragment with lumen_node_set_inner_markup. The setter parses through the injected front-end (present on the from-source run path, a no-op on the precompiled-artifact path) and must not be fed untrusted content. Additive, so a minor bump.

0.13 unified the scalar signal surface into one typed family: lumen_signal_set_str / lumen_signal_get_str join the existing int64 / float64 / bool / color pairs, the older stringifying setters and their string getter are removed, and the unread LumenApp* first parameter is gone from every typed accessor and from lumen_signal_array_len / lumen_signal_array_get_field. Kept names changed arity, so embedders rebuild against the new header rather than relinking.