Commit graph

124 commits

Author SHA1 Message Date
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
540e785d8b
Less clumsy configuration for desktop and mobile (#553)
* chore: dont use prebuilt builder pattern for configuring desktop

* chore: use regular config pattern for web

* Chore: update docs too

* chore: clean up some warnings
2022-09-13 16:22:27 -07:00
Jon Kelley
38e8745db9
Remove lower case components that use the paran syntax (#551)
* chore: remove lowercase components

* chore: add docs are lowercase components

* docs: also add docs around lowercase components in current scope
2022-09-12 20:01:03 -07:00
Evan Almloff
fbf8e13b8d clean up imports 2022-06-25 08:27:10 -05:00
Joshua Kifer
213f54c4d8 Convert all logs to trace 2022-03-27 09:23:44 -06:00
Jonathan Kelley
4a3680ee1b chore: remove all warnings 2022-02-10 21:00:15 -05:00
Jonathan Kelley
bbb6ee10de feat: make hydration more robust 2022-01-07 00:33:09 -05:00
Jonathan Kelley
2d58d380be publish: get web ready gto publish 2021-12-29 13:37:25 -05:00
Jonathan Kelley
3dc0e59876 fix: readme and examples syntax 2021-12-28 23:48:25 -05:00
Jonathan Kelley
a4f280d163 feat: more API updates 2021-12-28 23:20:01 -05:00
Jonathan Kelley
c7d001cbb4 wip: rip out unsafe task engine 2021-12-26 14:22:30 -05:00
Jonathan Kelley
cda759c659 examples: upgrade to new version of dioxus core.
also add the inline_props macro
2021-12-25 17:18:05 -05:00
Jonathan Kelley
4de16c4779 docs: update local examples and docs to support new syntaxes 2021-12-15 15:56:53 -05:00
Jonathan Kelley
8daf7a6ed8 wip: go back to noisy lifetime solution 2021-12-14 02:27:59 -05:00
Jonathan Kelley
1e4a599d14 wip: rename fc to component 2021-12-09 21:19:31 -05:00
Jonathan Kelley
a5f05d73ac wip: docs and router 2021-11-19 00:49:04 -05:00
Jonathan Kelley
19df1bda10 feat: bubbling 2021-11-15 09:49:01 -05:00
Jonathan Kelley
1e6e5e611b wip: move examples around 2021-11-03 15:13:50 -04:00
Jonathan Kelley
0e9d5fc530 wip: move everything over to a stack dst 2021-10-29 17:12:30 -04:00
Jonathan Kelley
9726a065b0 feat: massage lifetimes 2021-10-16 17:37:28 -04:00
Jonathan Kelley
4a4c7afca7 feat: shared state mechanisms 2021-10-11 15:35:20 -04:00
Jonathan Kelley
a2b0c50a34 feat: add update functionality to useref 2021-10-04 10:22:20 -04:00
Jonathan Kelley
7a03c1d2b4 wip: overhaul event system 2021-10-04 01:28:04 -04:00
Jonathan Kelley
71f0df6374 publish: ssr 2021-09-24 22:15:50 -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
823adc0834 polish: clean up the web module 2021-09-24 20:11:30 -04:00
Jonathan Kelley
f07e345eb2 examples: slightly simplify crm 2021-09-24 01:26:16 -04:00
Jonathan Kelley
718fa14b45 feat: a cute crm 2021-09-24 01:24:03 -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
84b5ddded5 feat: select figured out 2021-09-22 03:22:15 -04:00
Jonathan Kelley
d7940aa2ac feat: proper handling of events 2021-09-22 02:44:01 -04:00
Jonathan Kelley
a2c7d17b05 feat: mvoe away from compound context 2021-09-21 13:42:52 -04:00
Jonathan Kelley
9971ff215d polish: change in cx to cx 2021-09-16 13:20:04 -04:00
Jonathan Kelley
59219b9ef2 wip: ricraf polyfill 2021-08-24 16:36:00 -04:00
Jonathan Kelley
f457b71131 feat: rebuild doesn't return errors 2021-08-24 15:12:20 -04:00
Jonathan Kelley
cdcd8611e8 wip: it works but the page is backwards 2021-08-24 12:43:46 -04:00
Jonathan Kelley
cfa0247cbb wip: websys dom working properly 2021-07-30 17:04:04 -04:00
Jonathan Kelley
e5c88fe3a4 feat: make hooks free-functions 2021-07-27 11:28:05 -04:00
Jonathan Kelley
4a0068f099 feat: bless up, no more segfaults 2021-07-26 12:14:48 -04:00
Jonathan Kelley
4a72b3140b feat: amazingly awesome error handling 2021-07-18 12:39:32 -04:00
Jonathan Kelley
05c909f320 wip: some ideas 2021-07-18 03:54:42 -04:00
Jonathan Kelley
583fdfa561 docs: big updates to the reference 2021-07-16 16:11:25 -04:00
Jonathan Kelley
8f0bb5dc5b chore: cleanup workspace 2021-07-15 18:40:12 -04:00
Jonathan Kelley
4837d8e741 feat: suspense! 2021-07-15 00:40:37 -04:00
Jonathan Kelley
de9f61bcf4 feat: more suspended nodes! 2021-07-14 23:18:02 -04:00
Jonathan Kelley
c52af221f7 wip: basic support for scheduled rendering 2021-07-14 18:19:51 -04:00
Jonathan Kelley
80e6c25698 feat: move over to push based mechanism 2021-07-14 17:39:26 -04:00
Jonathan Kelley
abf47596bc feat: it loads the doggos 2021-07-14 02:30:41 -04:00