Demonthos
047ed1e553
Subtree memorization / reactive templates ( #488 )
...
This commit adds subtree memoization to Dioxus.
Subtree memoization is basically a compile-time step that drastically
reduces the amount of work the diffing engine needs to do at runtime by
extracting non-changing nodes out into a static "template." Templates
are then understood by the various renderers in the ecosystem as a
faster way of rendering the same items.
For example, in the web, templates are simply a set of DOM Nodes created
once and then cloned later. This is the same pattern frameworks like Lithtml
and SolidJS use to achieve near-perfect performance.
Subtree memoization adds an additional level of complexity to Dioxus. The RSX
macro needs to be much smarter to identify changing/nonchanging nodes and
generate a mapping between the Template and its runtime counterparts.
This commit represents a working starter point for this work, adding support
for templates for the web, desktop, liveview, ssr, and native-core renderers.
In the future we will try to shrink code generation, generally improve
performance, and simplify our implementation.
2022-09-30 12:03:06 -07:00
Jon Kelley
d9546d9504
Renderers are now packages, not features. ( #387 )
...
* feat: use synchronous router design
* feat: function to get router out of dom
* chore: restructure workspace to use renderers as packages, not features
2022-07-09 15:15:20 -04:00
Evan Almloff
041f474329
Merge remote-tracking branch 'upstream/master' into clean_up_rsx_imports
2022-06-26 07:22:55 -05:00
YuKun Liu
0af69f83f2
Rename hot_reload
to hot-reload
2022-06-26 14:23:19 +08:00
Evan Almloff
fbf8e13b8d
clean up imports
2022-06-25 08:27:10 -05:00
Evan Almloff
586983291a
log parse errors
2022-06-13 17:02:43 -05:00
Evan Almloff
e7cf382784
create websocket for hot reloading
2022-06-06 13:30:32 -05:00
duanzhou
328bab0f5b
Fix: enable dioxus-core
serialize
feature in dioxuse-web
2022-05-18 00:30:36 +08:00
Jonathan Kelley
356f37e9ee
feat: arbitrary attributes
2022-05-05 16:50:33 -04:00
Jonathan Kelley
3febd42588
Release dioxus-core v0.2.1, dioxus-core-macro v0.2.1, dioxus-html v0.2.1, dioxus-interpreter-js v0.2.1, dioxus-desktop v0.2.3, dioxus-hooks v0.2.1, dioxus-liveview v0.1.0, dioxus-native-core v0.2.0, dioxus-native-core-macro v0.2.0, dioxus-router v0.2.3, dioxus-ssr v0.2.1, dioxus-tui v0.2.2, dioxus-web v0.2.1, fermi v0.2.1, dioxus v0.2.4
2022-05-02 23:57:20 -04:00
Aster
329b182e2d
Add feature gate
2022-04-24 11:48:15 +08:00
Jon Kelley
5c6ff70dd4
Merge pull request #316 from DioxusLabs/jk/fix-hydration
...
fix: setnode method for rehydration code
2022-03-20 20:11:55 -04:00
Jonathan Kelley
f26f704b6b
fix: setnode method for rehydration code
2022-03-17 10:51:23 -04:00
Joshua Kifer
1b736f1001
Remove release_max_level features from several Cargo.toml log dependencies
2022-03-15 17:59:30 -06:00
Jonathan Kelley
e7505188d6
release: make a new 0.2.0 release of Dioxus
2022-03-09 14:24:05 -05:00
Jonathan Kelley
3873cd1a60
fix: remove unused depds
2022-02-16 14:40:45 -05:00
Jonathan Kelley
e43a8a9b6a
feat: remove old async channel for new channel in ric raf web code
2022-02-15 11:03:13 -05:00
Jonathan Kelley
4f46089fce
feat: use serde-wasm-bindgen crate for speedup
2022-02-07 10:17:16 -05:00
Jonathan Kelley
169f1dac11
Merge branch 'master' into jk/form-ma
2022-02-04 18:10:26 -05:00
Jonathan Kelley
ca0d7dc268
fix: remove code generation
2022-02-04 01:56:54 -05:00
Jonathan Kelley
c4556d050e
Merge branch 'master' into jk/form-ma
2022-02-02 01:50:43 -05:00
Jonathan Kelley
527434b9f9
feat: make the interpreter as its own crate
2022-02-01 15:44:08 -05:00
Jonathan Kelley
7c06b3a9a2
Merge branch 'master' into jk/form-ma
2022-02-01 15:24:19 -05:00
Jonathan Kelley
6339fa8188
Release dioxus-html v0.1.6, dioxus-router v0.1.1
2022-01-29 10:42:52 -05:00
Jonathan Kelley
f6c6134d67
Release dioxus-core v0.1.9
2022-01-29 10:42:38 -05:00
Jonathan Kelley
2c51a090e3
Release dioxus-web v0.0.5
2022-01-29 10:37:50 -05:00
Jonathan Kelley
11ba189eab
Release dioxus-html v0.1.5
2022-01-29 10:36:24 -05:00
Jonathan Kelley
f965030b80
Release dioxus-core v0.1.8
2022-01-29 10:36:10 -05:00
Jonathan Kelley
1406c9020b
feat: add panic hook by default
2022-01-24 02:57:56 -05:00
Jonathan Kelley
f66d17ca84
wip: pass form data between web and desktop
2022-01-22 14:53:59 -05:00
Jonathan Kelley
10db6ad65b
wip: web now links against the js interprter code
2022-01-12 08:57:42 -05:00
Jonathan Kelley
40d1f85d0c
Release dioxus-core v0.1.7, dioxus-core-macro v0.1.6, dioxus-html v0.1.4, dioxus-desktop v0.1.5, dioxus-hooks v0.1.6, dioxus-mobile v0.0.3, dioxus-router v0.1.0, dioxus-ssr v0.1.2, dioxus-web v0.0.4, dioxus v0.1.7
2022-01-08 02:25:03 -05:00
Jonathan Kelley
bbb6ee10de
feat: make hydration more robust
2022-01-07 00:33:09 -05:00
Jonathan Kelley
4ea5c990d7
publish: new versions of everything
2022-01-03 19:44:04 -05:00
Jonathan Kelley
4f92ba4160
wip: bump all versions
2022-01-03 19:32:27 -05:00
Jonathan Kelley
c0cd50b1d3
publish: dioxus web
2022-01-03 02:15:34 -05:00
Jonathan Kelley
2d58d380be
publish: get web ready gto publish
2021-12-29 13:37:25 -05:00
Jonathan Kelley
0d480a4c43
Release dioxus-core v0.1.3, dioxus-core-macro v0.1.2, dioxus-html v0.1.0, dioxus-desktop v0.0.0, dioxus-hooks v0.1.3, dioxus-liveview v0.1.0, dioxus-mobile v0.0.0, dioxus-router v0.1.0, dioxus-ssr v0.1.0, dioxus-web v0.0.0, dioxus v0.1.0
2021-12-15 16:06:15 -05:00
Jonathan Kelley
868f6739d2
fix: keyword length
2021-12-15 16:06:13 -05:00
Jonathan Kelley
b32665d721
Release dioxus-core v0.1.3, dioxus-core-macro v0.1.2, dioxus-html v0.1.0, dioxus-desktop v0.0.0, dioxus-hooks v0.1.3, dioxus-liveview v0.1.0, dioxus-mobile v0.0.0, dioxus-router v0.1.0, dioxus-ssr v0.1.0, dioxus-web v0.0.0, dioxus v0.1.0
2021-12-15 16:05:20 -05:00
Jonathan Kelley
a33f7701fc
fix: tags
2021-12-15 16:05:18 -05:00
Jonathan Kelley
3a706ac416
Release dioxus-core v0.1.3, dioxus-core-macro v0.1.2, dioxus-html v0.1.0, dioxus-desktop v0.0.0, dioxus-hooks v0.1.3, dioxus-liveview v0.1.0, dioxus-mobile v0.0.0, dioxus-router v0.1.0, dioxus-ssr v0.1.0, dioxus-web v0.0.0, dioxus v0.1.0
2021-12-15 16:04:30 -05:00
Jonathan Kelley
e4c06ce8e8
docs: update cargo tomls
2021-12-15 16:04:27 -05:00
Jonathan Kelley
270dfc9590
Release dioxus-core v0.1.3, dioxus-core-macro v0.1.2, dioxus-html v0.1.0, dioxus-desktop v0.0.0, dioxus-hooks v0.1.3, dioxus-liveview v0.1.0, dioxus-mobile v0.0.0, dioxus-router v0.1.0, dioxus-ssr v0.1.0, dioxus-web v0.0.0, dioxus v0.1.0
2021-12-15 15:59:11 -05:00
Jonathan Kelley
93d4b8ca7c
wip: some docs and suspense
2021-11-23 15:53:57 -05:00
Jonathan Kelley
a5f05d73ac
wip: docs and router
2021-11-19 00:49:04 -05:00
Jonathan Kelley
7a03c1d2b4
wip: overhaul event system
2021-10-04 01:28:04 -04:00
Jonathan Kelley
7bdad1e2e6
publish: move macro crate out of core
2021-09-24 21:46:23 -04:00
Jonathan Kelley
b43a964f98
polish: clean up to web
2021-09-24 20:47:59 -04:00
Jonathan Kelley
1a2f91ed91
polish: examples
2021-09-24 00:05:56 -04:00
Jonathan Kelley
4b6ca05f2c
wip: performance looks good, needs more testing
2021-09-22 04:11:27 -04:00
Jonathan Kelley
34c3107418
wip: more docs
2021-09-20 16:49:36 -04:00
Jonathan Kelley
da8159190b
polish: tests and documentation
2021-09-09 20:58:48 -04:00
Jonathan Kelley
3bf19d8106
wip: more work on web
...
this commit adds complete event support for web-sys but with a few hole
2021-08-25 10:49:18 -04:00
Jonathan Kelley
c1afeba1ef
wip: groundwork for noderefs
2021-08-09 17:09:33 -04:00
Jonathan Kelley
f2334c17be
wip: bottom up dropping
2021-08-05 22:23:41 -04:00
Jonathan Kelley
687cda1b6d
feat: re-enable suspense
2021-07-30 22:14:06 -04:00
Jonathan Kelley
cfa0247cbb
wip: websys dom working properly
2021-07-30 17:04:04 -04:00
Jonathan Kelley
f782e14211
feat: omg what a dumb mistake
2021-07-27 00:27:07 -04:00
Jonathan Kelley
dfaf5adee1
Feat: solve some issues regarding listeners
2021-07-24 00:29:23 -04:00
Jonathan Kelley
1745a44d94
wip: cleanup
2021-07-21 17:05:48 -04:00
Jonathan Kelley
6051b0ec86
wip: fill out the snippets
2021-07-20 19:03:49 -04:00
Jonathan Kelley
8f0bb5dc5b
chore: cleanup workspace
2021-07-15 18:40:12 -04:00
Jonathan Kelley
abf47596bc
feat: it loads the doggos
2021-07-14 02:30:41 -04:00
Jonathan Kelley
9abb0470b7
feat: static node infrastructure and ssr changes
2021-07-11 14:49:52 -04:00
Jonathan Kelley
7aec40d57e
feat: enable arbitrary body in rsx! macro
2021-07-07 18:17:00 -04:00
Jonathan Kelley
a38a81e129
wip: fix issues with lifetimes
...
this commit fixes some lifetime issues regarding having to "move" data into the IntoVNode closure.
2021-07-07 13:51:55 -04:00
Jonathan Kelley
e8f29a8f8a
wip: enable more diffing
2021-07-05 01:11:49 -04:00
Jonathan Kelley
93900aac44
concept: integrate signals
2021-06-30 14:08:12 -04:00
Jonathan Kelley
9813f23cdf
wip: more work on diffing machine
2021-06-26 22:13:57 -04:00
Jonathan Kelley
7fbaf69cab
Docs: more examples and docs
2021-06-24 11:09:38 -04:00
Jonathan Kelley
9d7ee79826
feat: events work again!
2021-06-23 01:44:48 -04:00
Jonathan Kelley
73047fe956
feat: props memoization is more powerful
...
This commit solves the memoization , properly memoizing properties that don't have any generic parameters. This is a rough heuristic to prevent non-static lifetimes from creeping into props and breaking our minual lifetime management.
Props that have a generic parameter are opted-out of the `partialeq` requirement and props *without* lifetimes must implement partialeq. We're going to leave manual disabling of memoization for future work.
2021-06-22 17:20:54 -04:00
Jonathan Kelley
b9ff95fa12
wip: start moving events to rc<event>
2021-06-16 23:37:55 -04:00
Jonathan Kelley
36ea39ae30
Feat: rename recoil to atoms
2021-06-16 11:19:37 -04:00
Jonathan Kelley
47e896038e
wip: more work on updating syntad
2021-06-15 10:02:46 -04:00
Jonathan Kelley
b843dbd367
WIP: Todomvc in progress
2021-05-19 10:14:02 -04:00
Jonathan Kelley
a99147c85b
Feat: Clean up repo a bit
2021-05-16 02:55:16 -04:00
Jonathan Kelley
9810feebf5
Feat: major overhaul to diffing
2021-05-15 12:03:08 -04:00
Jonathan Kelley
8c541f66d5
wip: todos
2021-04-01 21:44:18 -04:00
Jonathan Kelley
cfa0927cdd
feat: todomvc
2021-04-01 00:01:42 -04:00
Jonathan Kelley
ce33031519
wip: todomvc
2021-03-29 12:31:47 -04:00
Jonathan Kelley
9d0727edab
Feat: remove old macro
2021-03-13 19:11:06 -05:00
Jonathan Kelley
92d9521a73
WIP: remove FC
2021-03-07 21:28:20 -05:00
Jonathan Kelley
4b8e9f4a12
Feat: wowza got it all working
2021-03-02 00:14:28 -05:00
Jonathan Kelley
6fabd8ccc8
bump core version
2021-02-28 17:38:48 -05:00
Jonathan Kelley
ab655eac97
Feat: update and prep for dioxusweb
2021-02-28 17:22:23 -05:00
Jonathan Kelley
e840f472fa
WIP: moving to CbIdx as serializable event system
2021-02-27 11:43:28 -05:00
Jonathan Kelley
a8b1225c48
Feat: begin WIP on html macro
2021-02-26 12:58:03 -05:00
Jonathan Kelley
e3ede7fcbf
Feat: re-enable stack machine approach
2021-02-17 10:53:55 -05:00
Jonathan Kelley
f22ff83190
Feat: WIP on deserialize
2021-02-15 14:14:28 -05:00
Jonathan Kelley
8439994859
Feat: web example + cli writes to browser screen!
2021-02-15 00:17:40 -05:00
Jonathan Kelley
4c291a0efd
Feat: remove generic paramter on VDOM
...
This makes storage of VDoms easier, and removes static dispatch on any function that relies on VDOMs.
2021-02-13 03:19:35 -05:00
Jonathan Kelley
d063a19939
Feat: wire up some of the changelist for diff
2021-02-13 02:49:10 -05:00
Jonathan Kelley
ea2aa4b0c9
Feat: event loop
2021-02-12 16:11:33 -05:00
Jonathan Kelley
9c616ea5c0
Feat: more docs, dissolve vnode crate into dioxus-core
2021-01-16 01:30:48 -05:00
Jonathan Kelley
ce34d0dfcd
Feat: WIP
2021-01-14 20:56:28 -05:00