Glint Dev
35f92435a3
docs: reorganize into en/ru and add English translation
2026-07-24 22:04:29 +03:00
Glint Dev
938f05f59d
Phase 10: Monitoring and automated benchmarks
...
10.1: Add Criterion dev-dependency and benchmarks for:
- matching_rules (100 rules)
- ComputedStyle::compute (empty, 5 props)
- resolve_string (no vars, 1 var, 3 vars)
10.3: Add --perf CLI flag and src/perf.rs module:
- PerfScope drop-guard timed scopes (vdom, style, render)
- Instrumented: VDOM eval (app.rs update), render (app.rs view),
style matching (style.rs compute_cached)
- Per-frame report printed to stderr at end of view()
10.2+10.4: Threshold check in perf report:
- Prints warning if total > 16ms (60 FPS frame budget)
Refactor: Move Message enum to lib.rs so benchmarks can import
the public API. Added lib.rs as library root.
2026-07-24 19:58:58 +03:00
Glint Dev
b6fa841d11
Phase 9: Keyed widgets (9.1 + 9.2)
...
9.1: Add content_hash field to Element, computed during VDOM evaluation
from type_name + properties + children content_hashes via DefaultHasher.
9.2: Assign stable iced::widget::Id to text_input and scrollable widgets
so Iced preserves widget state (cursor position, scroll offset) across
frames. Ids are cached in a thread_local HashMap to avoid leaks.
9.3 skipped: iced::Element is not Clone and contains Box<dyn Widget>,
making element-level caching impractical without unsafe lifetime hacks.
2026-07-24 19:53:02 +03:00
Glint Dev
28bd450787
Phase 8: StyleCache memoization
...
Add StyleCache struct with hash-keyed LRU-eviction strategy and
integrate into StyleSheet via Mutex<StyleCache> so no signature
changes are needed on evaluate_vdom_incr.
- StyleCache::get_or_compute hashes (type_name, props, epoch) -> ComputedStyle
- LRU: full clear on overflow (max 1024)
- RefCell avoided in favor of Mutex so StyleSheet remains Sync
for parallel matching_rules_batch
- Manual Clone impl skips cache (fresh cache on clone)
- Call sites in evaluate_vdom_incr switched from ComputedStyle::compute
to stylesheet.compute_cached
- Cache cleared in build_index after epoch increment (stale entries)
2026-07-24 18:47:41 +03:00
Glint Dev
906dde1569
phase 7: update Cargo.lock for rayon dependency
2026-07-24 16:56:05 +03:00
Glint Dev
144ac12107
phase 7: fix @each to stay sequential (RheiContext not Sync); keep compute_batch/matching_rules_batch in style.rs
2026-07-24 16:55:52 +03:00
Glint Dev
469e87eaf3
phase 7.3: parallel @each using rayon (feature gate, threshold >= 10 items)
2026-07-24 16:47:02 +03:00
Glint Dev
1ede7d0f7f
phase 7.2/7.4: add compute_batch and matching_rules_batch for parallel style processing
2026-07-24 16:46:31 +03:00
Glint Dev
6f12c53b78
phase 7.1: add rayon dependency with parallel feature gate
2026-07-24 16:46:12 +03:00
Glint Dev
32beb81ac4
demo: layout fixes, sticky removal, style overrides, css-like rendering improvements
2026-07-24 16:46:00 +03:00
Glint Dev
415de4d6e6
demo: restructure log header outside scrollable (always visible), remove sticky references, add Iced limitation note
2026-07-22 14:48:53 +03:00
Glint Dev
075533db6a
demo: header as always-visible top bar with scrollable body beneath (closest to sticky in Iced)
2026-07-22 14:44:28 +03:00
Glint Dev
37a0ea47be
demo: no sticky (iced limitation), reduce spacing, Window height:100vh
2026-07-22 14:39:02 +03:00
Glint Dev
f51b32ecc3
fix: pass cs.height to Window column so height:100vh constrains layout
2026-07-22 14:38:54 +03:00
Glint Dev
e770d1a68a
demo: fix header (no sticky), make Display None interactive, add opacity note
2026-07-22 14:31:39 +03:00
Glint Dev
bdb5df2bf2
fix: only wrap hover/active elements in button when __on:click exists (no more phantom pointer cursor)
2026-07-22 14:31:36 +03:00
Glint Dev
66b684e412
examples: warm neutral theme (no blue) + cleaner copy
2026-07-22 14:22:46 +03:00
Glint Dev
9ce650a803
chore: add *.glbc to gitignore
2026-07-22 14:21:24 +03:00
Glint Dev
ec73dcabb8
examples: add demo stylesheet with comprehensive style features
2026-07-22 14:21:12 +03:00
Glint Dev
1f5dc7f2ca
examples: add demo app markup with full feature showcase
2026-07-22 14:21:09 +03:00
Glint Dev
8784c189f5
Phase 6: Pre-populate Rhai AST cache from Document at startup
2026-07-22 14:01:00 +03:00
Glint Dev
09e3f5e75d
Phase 6: Add action_cache and expr_cache to RheiContext + cache-first eval/execute methods
2026-07-22 14:00:56 +03:00
Glint Dev
4eec003939
feat: add FlatVDom types and evaluate_vdom_flat helper
2026-07-22 13:40:04 +03:00
Glint Dev
a798e966f3
feat: add FlatVDom round-trip conversion tests
2026-07-22 13:38:03 +03:00
Glint Dev
0d89ff68be
feat: define VNode, FlatVDom types with Element round-trip conversion
2026-07-22 13:36:25 +03:00
Glint Dev
daba2136c3
feat: add bumpalo dependency for arena allocation
2026-07-22 13:35:32 +03:00
Glint Dev
be6d5c36fc
fix: eliminate deep Element cloning in @if by using &[&Element] references
2026-07-22 13:35:12 +03:00
Glint Dev
fd2863678b
Phase 4.5: Add tests for StyleIndex
2026-07-22 13:10:09 +03:00
Glint Dev
06aa67b23f
Phase 4.4: Build index at Document load time in interpeter::run()
2026-07-22 13:07:30 +03:00
Glint Dev
43c4291ac8
Phase 4.3: Use index in matching_pseudo_rules()
2026-07-22 13:07:02 +03:00
Glint Dev
cd2cf64e80
Phase 4.2: Add query_index() and use it in matching_rules()
2026-07-22 13:06:43 +03:00
Glint Dev
24fbd17f3e
Phase 4.1: Add StyleIndex struct and build_index() to StyleSheet
2026-07-22 13:06:01 +03:00
Glint Dev
26ed1f900e
Revert "Phase 4.1-4.2: StyleIndex with by_tag/by_class/by_id indexes, replace matching_rules with query_index, build_index after parsing"
...
This reverts commit 87feba394d .
2026-07-22 13:01:33 +03:00
Glint Dev
bc45e85adf
Phase 4.3-4.4: Style match cache with epoch invalidation (RefCell), remove redundant re-sort in query(), merge-scan complex rules in order
2026-07-22 12:59:40 +03:00
Glint Dev
87feba394d
Phase 4.1-4.2: StyleIndex with by_tag/by_class/by_id indexes, replace matching_rules with query_index, build_index after parsing
2026-07-22 12:56:36 +03:00
Glint Dev
4a6dea6dd8
Phase 3.4-3.7: evaluate_vdom_incr with dirty_set propagation, tests for ReactiveTracker
2026-07-21 20:40:23 +03:00
Glint Dev
d8d3f57a21
Phase 3.1-3.3: ReactiveTracker with ElementId assignment during parsing, dependency scanning, variable change notification in app.rs
2026-07-21 20:38:41 +03:00
Glint Dev
a46c9bc9e7
Phase 2: InternedStr and Interner types (infrastructure)
2026-07-21 20:35:56 +03:00
Glint Dev
f3ea96258c
Phase 1: cleanup unused imports and static
2026-07-21 20:33:08 +03:00
Glint Dev
30cf2e5e26
Phase 1.2-1.6: replace variables HashMap<String,String> with HashMap<String,Value>, rewrite str_to_dyn/dyn_to_str -> value_to_dynamic/dynamic_to_value, update resolve_string/evaluate_condition/is_truthy for Value
2026-07-21 20:32:29 +03:00
Glint Dev
5597f07787
Phase 1.1: define Value enum in types.rs
2026-07-21 20:29:02 +03:00
faynot
06270a2126
Merge branch 'main' of https://git.inotfail.com/INotFail/Glint-Runtime
2026-07-08 23:46:25 +03:00
faynot
75af23930f
feat: new styles
2026-07-08 23:45:37 +03:00
81af041393
Update README.md
2026-06-02 13:06:12 +03:00
7a7bbb30c9
Update README.md
2026-06-02 12:58:40 +03:00
8b9eebde39
Update REAMDE.md
2026-06-02 12:58:15 +03:00
Faynot
9c279015dc
feat: add logo
2026-06-02 12:56:38 +03:00
Faynot
2fb7c54067
feat: add readme
2026-06-02 12:47:41 +03:00
Faynot
f956b750e3
feat: reactivityl; vdom; rhei; styles; fs; image element
2026-06-02 12:12:20 +03:00