Commit graph

241 commits

Author SHA1 Message Date
Jonathan Kelley
6184ea500b chore: also fix native core 2022-12-07 13:20:31 -08:00
Adrian Wannenmacher
1f1c49b9c9
add router core 2022-12-03 21:49:16 +01:00
Jonathan Kelley
3b166c9edd wip: clean up some things 2022-11-30 23:54:30 -05:00
Jonathan Kelley
18d6b1ad6f feat: get web working properly 2022-11-30 17:21:10 -05:00
Jonathan Kelley
4a31b29703 feat: simple tests passing 2022-11-01 18:42:29 -07:00
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
Jonathan Kelley
c1d692dd97 fix: dioxus must specify rust versionand edition 2022-02-18 23:33:48 -05:00
Jonathan Kelley
b93487282d feat: move files around 2022-02-18 20:54:30 -05:00
Jonathan Kelley
7c788e59f5 Merge branch 'master' into jk/partialexpansion 2022-02-18 15:34:52 -05:00
Jonathan Kelley
b2472e3cfe Merge branch 'master' into jk/partialexpansion 2022-02-18 15:31:49 -05:00
Jonathan Kelley
d461ffc011 feat: integrate fermi 2022-02-17 10:38:51 -05:00
Christoph Grabo
ee2b869e99
Add optional feature flags of wry
Check wry's documentation for each.
Some of them are platform dependent or
have platform dependent effects.
(mostly MacOS and Linux)
2022-02-13 20:30:10 +01:00
Christoph Grabo
c502535724
Update dependencies
Specifically set wry to 0.13;
this has breaking changes (notably: RPC -> IPC).
2022-02-13 20:30:10 +01:00
Jonathan Kelley
ca7ce46cdb Merge branch 'master' into jk/partialexpansion 2022-02-13 12:36:02 -05:00
Jonathan Kelley
ee67a041d2 feat: turn interpreter into crate 2022-02-01 15:38:48 -05:00
Dave Rolsky
d8ee553eac Fix the license field in Cargo.toml to be valid SPDX 2022-01-30 11:44:56 -06:00
Jonathan Kelley
875977f5a6 publish: update 0.1.8 for dioxus 2022-01-29 10:48:41 -05:00
Jonathan Kelley
9b3192323e Release dioxus-desktop v0.1.6 2022-01-29 10:43:43 -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
d570bb6c42 Release dioxus-router v0.1.1 2022-01-29 10:40:03 -05:00
Jonathan Kelley
2c51a090e3 Release dioxus-web v0.0.5 2022-01-29 10:37:50 -05:00
Jonathan Kelley
3c2d5985da Release dioxus-ssr v0.1.3 2022-01-29 10:37:34 -05:00
Jonathan Kelley
539ca2d655 Release dioxus-hooks v0.1.7 2022-01-29 10:37:03 -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
1b2a0053ef Release dioxus-core-macro v0.1.7 2022-01-29 10:35:54 -05:00
Jonathan Kelley
174d287062 wip: extract to rsx module 2022-01-17 23:02:36 -05:00
Jonathan Kelley
abfac0d59b wip: move macro lib out of proc macro crate 2022-01-17 16:37:44 -05:00
Jonathan Kelley
0d1a9eb460 release: add version for router 2022-01-08 02:32:26 -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
53ef41aa3d examples: simplfy running them by enabling features automatically 2022-01-07 10:50:37 -05:00
Jonathan Kelley
cb2782b4bb wip: memoize dom in the prescence of identical components 2022-01-05 00:27:22 -05:00
Jonathan Kelley
7cf15ee4e8 publish: include desktop fixes 2022-01-03 21:36:43 -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
fdbc2bc915 publish: remove router 2022-01-03 14:08:31 -05:00
Jonathan Kelley
b3b4c580df wip: bump versions 2022-01-03 14:07:22 -05:00
Jonathan Kelley
54103da019 publish: bump desktop version 2022-01-03 14:03:17 -05:00
Jonathan Kelley
99d6409f7a publish: bump mobile 2022-01-03 13:38:56 -05:00
Jonathan Kelley
1b6e608cd0 docs: update references 2022-01-03 10:20:14 -05:00
Jonathan Kelley
ee2068fd5c publish: bump main crate 2022-01-03 02:24:21 -05:00
Jonathan Kelley
a2317bf5b0 publish: ssr 2022-01-03 02:23:26 -05:00
Jonathan Kelley
d78815103d wip: remove hooks warnigns 2022-01-03 02:20:11 -05:00
Jonathan Kelley
c1f8424693 publish: desktop 2022-01-03 02:18:11 -05:00
Jonathan Kelley
420a30e5d4 feat: overhaul examples and clean things up 2022-01-03 00:42:17 -05:00
Jonathan Kelley
14961023f9 wip: polish some more things 2021-12-29 21:28:28 -05:00
Jonathan Kelley
934de21dd6 wip: miri stress tets 2021-12-18 23:03:59 -05:00
Jonathan Kelley
2c3a046426 wip: prepare to change our fragment pattern. Add some more docs 2021-12-18 15:17:32 -05:00
Jonathan Kelley
2b928372fb 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.1 2021-12-15 16:07:09 -05:00
Jonathan Kelley
6a3c61fae8 fix: version number 2021-12-15 16:07:07 -05:00