smithy
smithy copied to clipboard
Smithy Roadmap
This issue is where I document specific aspects of Smithy I would like to improve. If you have questions, please open a new issue!
Make Smithy generic
- Make Smithy generic over Event, Dom and Node type
- For example,
mount
can have the signature
fn mount<Node: 'static, Event, Canvas>(
mut app: Box<dyn Component<Node = Node, Event = Event, Canvas = Canvas>>,
mut el: Canvas,
) where
Event: CanRegisterWith<Canvas> + 'static,
Canvas: CanPaint<Node> + 'static,
{
(though I think we can improve upon this, as there should only be two free type variables.)
- Follow up: Derive
CanRegisterWith<HtmlElement>
for an enum of events, where which events are included is set via crate features. - Follow up: Make Smithy work with another Canvas, e.g. TUI
Alternative lisp-like syntax
- The Smithy engine (i.e. the glue code that manages your component lifecycle) and the macro syntax (
smd!(...)
) are decoupled - Make an alternative macro that works like
rsx![(
div
{ attribute: "value" }
{ on_click: |_| count += 1 }
["current count ", count]
)]
- Priority: Low
- Status: Work ongoing
General areas of improvement
- Decrease file size
- Compile on stable
- Stability and introspection
- Fail gracefully, e.g. if DOM is modified
- Audit memory leaks, and prevent them if possible
- Better error messages
- Better documentation
Specific improvements
- Loosen restrictions on interpolated variables
- Tests of Smithy, not of just
smd!
- Derive Component for more types
- Organize feature flags sanely
- Do not use
thread_local!
, but create instances inmount
- Allow for multiple Smithy apps on the same page
- Handling spacing after interpolated variables correctly
- Ensure that the local cache works on windows (or remove the local cache?)
- Catalog nightly features in use by smithy.
- Upgrade to the latest nightly
- Re-do the existing
smd!
parser - Remove
ref
section if there are noref
's in ansmd!
node - Benchmark performance
- Sanitize input
NOTE: if you have questions, please file new issues