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.