Commit graph

186 commits

Author SHA1 Message Date
Jonathan Kelley
90982e0ccb wip: start to refactor out hot reloading from packages
Also implement alternative simpler template system
2022-10-20 09:56:09 -07:00
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
Reinis Mazeiks
6c323e9fc5
Rework Guide (#486)
* Move getting started to Guide

* Clean up summary and getting started

* Shorten intro by moving stuff to individual platform docs

* Make intro even shorter, summarize features

* Further cleanup; move development-related docs to separate section

* Make `guide` a crate. Turn code samples into examples so that we can check if they compile

* Rewrite "Describing the UI":

* Focus on RSX syntax (interactivity covered in later chapters); make sure samples are tested; concise language

* Move some "special attribute" samples to the `examples` directory

* Simplify introduction to components

* Simplify introduction to component props

* Document Prop features; add code samples

* Simplify component children docs

* Interactivity: better introduction to events

* Hooks: better introduction

* Remove outdated doc

* Introducs use_ref

* Simplify User Input chapter

* Document event handler props

* Meme editor example

* Meme editor walkthrough

* Add dark mode example

* Guide for context; dark mode example

* Guide: custom hooks

* Guide: conditional rendering

* Guide: rendering lists

* Guide: rendering lists + keys

* Move remaining infor from Reference to guide

* Delete reference book
2022-07-07 08:50:36 +00:00
Jonathan Kelley
e627a66acc Merge branch 'master' into jk/autofmt 2022-06-30 15:23:05 -04:00
Evan Almloff
706b6c957b change hot_reload to hot-reload in dev-dependancies 2022-06-26 07:26:03 -05: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
6c20d74797 finish cleanup 2022-06-25 08:48:03 -05:00
Evan Almloff
fbf8e13b8d clean up imports 2022-06-25 08:27:10 -05:00
YuKun Liu
1c31fd0e22
Update Cargo.toml 2022-06-25 15:36:47 +08:00
Jonathan Kelley
5b9e34aadd feat: add fork of prettyplease for autoformatting 2022-06-24 14:22:08 -04:00
Evan Almloff
9be8cc503f restore router 2022-06-16 21:08:48 -05:00
Evan Almloff
79ddab2720 restore dev-dependancies 2022-06-16 21:07:18 -05:00
Demonthos
df4ea20bb8 create serde compatible parse error 2022-06-15 12:58:08 -05:00
Evan Almloff
017d269ca8 fix websocket error reporting 2022-06-09 09:36:28 -05:00
Evan Almloff
3cd4175e2e remove braces from captured variables 2022-06-05 08:39:50 -05:00
Evan Almloff
0079f7d18b WIP: expose pipe for desktop 2022-06-02 13:33:08 -05:00
Evan Almloff
3b2ac82e8d fix spelling of interpreter 2022-05-31 12:18:22 -05:00
Evan Almloff
195dd22206 don't compile dioxus-router unless the router feature is enabled 2022-05-28 12:11:47 -05:00
Evan Almloff
f9713b2fe9 Merge remote-tracking branch 'origin/master' into jk/rsx-refactor 2022-05-27 17:56:50 -05:00
Evan Almloff
13125fef4e restore dev dependancies 2022-05-27 17:54:36 -05:00
Evan Almloff
fb4cb1a05b remove autoformat 2022-05-25 14:02:43 -05:00
Evan Almloff
ca10d89670 add RsxTextIndex 2022-05-25 11:20:07 -05:00
Evan Almloff
c7c84da8ab WIP hot reload 2022-05-25 08:58:59 -05:00
Jonathan Kelley
8ab1c4d0de feat: upgrade wry 2022-05-05 16:29:24 -04:00
Jonathan Kelley
4ef2cfaba5 fix: specify version 2022-05-03 00:05:54 -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
Evan Almloff
0b1e17c830 add native-core-macro to workspace 2022-05-02 20:25:29 -05:00
Jonathan Kelley
4fa909e864 feat: ensure parsing works with right indicies 2022-04-24 19:38:28 -04:00
Jonathan Kelley
2a1970b3a9 feat: add prettyplease vendored and get basic test working 2022-04-24 02:55:20 -04:00
Jonathan Kelley
794f43ffee concept: move rsx out to its own crate 2022-04-24 02:35:52 -04:00
Evan Almloff
c8919ad77b add benchmark 2022-04-20 21:44:37 -05:00
Evan Almloff
92f48169e9 WIP new api 2022-04-08 21:17:37 -05:00
Evan Almloff
5b25500c0b finishing touches and benchmarks 2022-03-30 20:45:41 -05:00
Evan Almloff
26d92b6e51 rebase master 2022-03-26 20:27:10 -05:00
Ilya Maximov
b8573bc4dd
refactor: remove the rsx folder
it doesn't seem to be published anywhere or used at all
2022-03-19 20:35:53 +01:00
Jonathan Kelley
7e9d7c3ef0 feat: add feature flag for liveview 2022-03-15 01:57:40 -04:00
Jonathan Kelley
71184b51a0 feat: liveview working with warp 2022-03-15 01:02:44 -04:00
Jonathan Kelley
3f130d9bd0 fix: use updated version of stretch for layout 2022-03-09 21:42:37 -05:00
Jonathan Kelley
ed07e914d3 fix: compile router on web 2022-03-09 21:14:22 -05:00
Jonathan Kelley
1c2e5e2aea publish: update dioxus with router fix 2022-03-09 17:53:02 -05:00
Jonathan Kelley
e7505188d6 release: make a new 0.2.0 release of Dioxus 2022-03-09 14:24:05 -05:00
Jonathan Kelley
58a20913b6 chore; make tui pass clippy 2022-03-09 13:30:44 -05:00
Jonathan Kelley
83be3df42a cfg: expose router feature flags for web 2022-03-04 14:34:25 -05:00
Jonathan Kelley
c19995fed9 fix: debug multistage edits in desktop 2022-03-04 13:17:01 -05:00
Jonathan Kelley
e04a6d63a5 chore: move tests out of core and into the top level crate
This commit moves the tests out of core so rust analyzer
is happier with the workspace.
2022-03-02 22:48:22 -05:00
Jörg Kurlbaum
cc0e2c4877 Add options for compilation on systems that lack libappindicator3 2022-02-24 14:32:43 +01:00
Jonathan Kelley
45231651dd fix: quick patch 2022-02-22 16:34:06 -05:00
Jonathan Kelley
93b4f745af
Merge pull request #132 from DioxusLabs/jk/partialexpansion
feat: split out rsx into its own crate
2022-02-19 00:02:10 -05:00