forked from Orchid/orchid
Most files suffered major changes
- Less ambiguous syntax - Better parser (Chumsky only does tokenization now) - Tidy(|ier) error handling - Facade for simplified embedding - External code grouped in (fairly) self-contained Systems - Dynamic action dispatch - Many STL additions
This commit is contained in:
52
ROADMAP.md
52
ROADMAP.md
@@ -1,5 +1,49 @@
|
||||
# IO
|
||||
This document is a wishlist, its items aren't ordered in any way other than inline notes about dependency relations
|
||||
|
||||
All IO is event-based via callbacks.
|
||||
Driven streams such as stdin expose single-fire events for the results of functions such as "read until terminator" or "read N bytes".
|
||||
Network IO exposes repeated events such as "connect", "message", etc.
|
||||
# Language
|
||||
|
||||
## Operator declarations
|
||||
A dedicated (exportable) line type for declaring operators. Still just names, only you can write them next to other things without whitespace
|
||||
|
||||
- ops may not contain c-ident-safe characters
|
||||
- clusters of operator characters are broken up with a greedy algorithm
|
||||
|
||||
## Typeclasses
|
||||
Elixir-style protocols probably, only with n-ary dispatch which I saw in SICP-js
|
||||
|
||||
# Rules
|
||||
|
||||
## Placeholder constraints
|
||||
Simultaneously match a pattern to a subexpression and give it a name to copy it over
|
||||
|
||||
- Copy unique 1->1 names over by default to preserve their location info
|
||||
|
||||
# STL
|
||||
|
||||
## Command short-circuiting
|
||||
Functions for each command type which destructure it and pass it to an Orchid callback
|
||||
|
||||
## Runtime error handling
|
||||
result? multipath cps utils? Not sure yet.
|
||||
|
||||
## Pattern matching
|
||||
This was the main trick in Orchid, still want to do it, still need to polish the language first
|
||||
|
||||
## Macro error handling
|
||||
Error tokens with rules to lift them out. Kinda depends on preservation of location info in rules to be really useful
|
||||
|
||||
# Systems
|
||||
|
||||
## Async
|
||||
Join allows to run code when a tuple of pending events all resolve on the event poller
|
||||
|
||||
## New: FS
|
||||
Exposes tree operations to Orchid
|
||||
Uses existing IO to open and read files
|
||||
Uses the event bus to read directories in batches without blocking other Orchid code
|
||||
|
||||
## New: Network
|
||||
Event-driven I/O with single-fire events and resubscription to relay backpressure to the OS. Initially TCP
|
||||
|
||||
## New: Marshall
|
||||
Serialization of Orchid data, including code, given customizable sets of serializable foreign items. Alternatively, code reflection so that all this can go in the STL
|
||||
|
||||
Reference in New Issue
Block a user