mirror of
https://github.com/DioxusLabs/dioxus
synced 2024-12-22 10:33:07 +00:00
4.1 KiB
4.1 KiB
Dioxus v0.1.0
Welcome to the first iteration of the Dioxus Virtual DOM! This release brings support for:
- Web via Wasm
- Desktop via webview integration
- Server-rendering with custom ToString implementation
- State management
- Build CLI
- Foundational hooks
- Context API
- Basic suspense
- Controlled components
Project: Initial VDOM support (TBD)
Get the initial VDom + Event System + Patching + Diffing + Component framework up and running Get a demo working using just the web
- (Core) Migrate virtual node into new VNode type
- (Core) Arena allocate VNodes
- (Core) Allow VNodes to borrow arena contents
- (Core) Introduce the VDOM and patch API for 3rd party renderers
- (Core) Implement lifecycle
- (Core) Implement an event system
- (Core) Implement child nodes, scope creation
- (Core) Implement dirty tagging and compression
Project: QOL
Make it easier to write components
- (Macro) Tweak event syntax to not be dependent on wasm32 target (just return regular closures which get boxed/alloced)
- (Macro) Tweak component syntax to accept a new custom element
- (Macro) Allow components to specify their props as function args
Project: Hooks + Context + Subscriptions (TBD)
Implement the foundations for state management
- Implement context object
- Implement use_state (rewrite to use the use_reducer api like rei)
- Implement use_ref
- Implement use_context (only the API, not the state management solution)
- Implement use_reducer (WIP)
Project: String Render (TBD)
Implement a light-weight string renderer with basic caching
- (Macro) Make VText nodes automatically capture and format IE allow "Text is {blah}"
- (SSR) Implement stateful 3rd party string renderer
Project: Web_sys renderer (TBD)
- WebSys edit interpreter
- Event system using async channels
- Implement conversion of all event types into synthetic events
Project: Web-View 🤲 🍨
Proof of concept: stream render edits from server to client
- Prove that the diffing and patching framework can support patch streaming
Project: Examples
Get all the examples
- (Examples) Tide example with templating
Project: State management
Get some global state management installed with the hooks + context API
Project: Concurrency (TBD)
Ensure the concurrency model works well, play with lifetimes to check if it can be multithreaded + halted ?
Project: Mobile exploration
Project: Live-View 🤲 🍨
Combine the server and client into a single file :)
Project: Sanitization (TBD)
Improve code health
- (Macro) Clippy sanity for html macro
- (Macro) Error sanitization
Outstanding todos:
anything missed so far
- keys on components
- Allow paths for components
- todo mvc
- Tweak macro parsing for better errors
- dirty tagging, compression
- code health
- static str slice optimization
- name spacing so svg works
- A handful of svg elements are automatically namespaced
- Allow hierarchical namespacing (all children share a parent's namespace) - TBD in macro impl
- fix keys on elements
- controlled components (kinda tuff since we need all these different platforms)
- Their own crate
- Re-exported through the
dioxus
crate (not core)
- Hooks
- Re-exported through the
dioxus
crate (not essential to core virtualdom)
- Re-exported through the
- fragments
- pass-thru components
Less-essential todos
- HTML doesn't require strings between elements (copy-paste from internet)
- Beef up the dioxus CLI tool to report build progress
- Extract arena logic out for better safety guarantees
- Extract BumpFrame logic out for better safety guarantees
- make SSR follow HTML spec
- MIRI tests
- all synthetic events filled out
- double check event targets and stuff
- Documentation overhaul
- Website
lower priority features
- Attributes on elements should implement format_args instead of string fmt
- node refs (postpone for future release?)
- styling built-in (future release?)
- key handler?
- FC macro?