Skip to main content

FORMAT_VERSION

Constant FORMAT_VERSION 

Source
pub const FORMAT_VERSION: u16 = 18;
Expand description

Container format version. Bump on any incompatible change to CompiledApp or the framing. The loader refuses mismatches so a runtime never mis-decodes an artifact built by a different toolchain.

2: the skin-tokens CSS batch adds a run of new fields to crate::layout_ir::Attributes (knob-inset, thumb-size, popup-gap, progress-chunk, disabled-opacity, caret-width, caret-blink, password-character, line-height, and the scrollbar-* geometry/timing/paint properties), changing the bincode wire shape.

3: the translatable="<key>" attribute adds a field to crate::layout_ir::Attributes.

4: CompiledApp::scripts records which engine runs each part of the app’s script, so an app that ships more than one language keeps running under one host per language after compilation, and CompiledApp::pages carries a multi-page app’s page set so navigation works without the page files on disk.

5: the web target’s three additions and the fragment table, which land together because one bump costs the same as four. crate::layout_ir::Attributes gains markup_styles, the styling attributes an element was given in markup, so a surface where CSS outranks markup can replay them and keep Lumen’s precedence; widget, the authored widget an element desugared from, so an emitter can write the semantic form back; and alt, an image’s own alternative text. CompiledScript gains bytecode, the compiled .cdlb image of a candela program, so a runtime without the compiler can run it. CompiledApp::fragments carries the app’s declared fragments, and crate::layout_ir::Element gains the fragment-use slot that names one, so a shipped app instantiates a fragment without the declaring source.

6: crate::fragment::Fragment gains components, the candela function names that reach a fragment, so a .lmn file can write a component as a tag.

7: crate::fragment::FragmentComponent gains params, and a use site the build cannot stand in for stays in the tree as the marker a runtime call fills, so a component that works a value out is usable from markup.

8: the format="<spec>" attribute adds a field to crate::layout_ir::Attributes, so an element’s text can be rendered for the app’s locale.

9: crate::layout_ir::TooltipSpec gains translatable, so a <tooltip> names its own catalogue key and a popup body reads in the app’s language rather than the one it was written in.

10: crate::css::Stylesheet gains at_rules, the at-rules the cascade does not implement, so a @keyframes block an app wrote reaches the web target instead of being dropped at parse time.

11: CompiledApp::i18n carries the app’s translation catalogues and the fallback chain, so an app, and a server rendering one, reads in every language it ships with no locale/ directory beside it.

12: CompiledApp::addons carries the browser add-ons the app depends on, their functions and their elements, so every target that runs the program binds the same names.

13: crate::layout_ir::BgSpec gains Image and crate::layout_ir::Attributes gains bg_fit, so bg can name an image and say how it fills the box.

14: CompiledApp::unlinked lists the optional subsystems the engine shipped beside the app was linked without, so a script calling one of their builtins is told why nothing happens.

15: CompiledScript gains module, the runtime module that runs the program, and a program compiled to bytecode carries no source; the flattened script_source field is gone.

16: CompiledScript gains source_map, and crate::layout_ir::LayoutIR gains script_map, so an error in a program shipped as source names the script file and line the author wrote rather than the markup file.

17: a tag’s defaults (a <column>’s direction, an <overlay>‘s placement) are user-agent rules in the combined stylesheet rather than values the parser writes into crate::layout_ir::Attributes, and the parts a widget expands into carry their geometry in markup_styles. A restyle rebuilds an element from those, so an artifact written before would lose its tags’ defaults the first time it restyled.

18: crate::layout_ir::Attributes gains widget_attributes, the attributes an element with a registered custom tag was written with, so the widget registered for the tag is handed them when the tree spawns.

A second consumer rides this constant: compiler plugins (lumenc-plugin) bake it into their descriptor and exchange bincode LayoutIR payloads with the loader, so a bump obsoletes every built plugin until it is rebuilt against the new tag.