orco is a compiler toolchain focusing on performace and extensibility Developed on streams
orco development is currently guided by those goals:
- Runtime features such as:
- Hot code reloading
- JIT
- Debugging
- Interpreting
- Cross-compilation
- LSP features:
- Syntax highlighting
- Code completion
- Hover info
- Go to [definition/uses/etc.]
- Inline docs
- Easy language interop & generation of C (or C-like) headers, transpilation to C
- Package/dependency management (to some extent, possibly functional)
You can watch me do this live on Twitch and
Youtube
Roadmap for now (Lacks behing A LOT of rewrites. This is like a year as outdated at this point):
- Symbols
- Paths
- Floats
- Frontend-side diagnostics (and diagnostics refactor (and lints))
- Fix cyclic Arc by implementing inner pointers
- Reduce the use of
Spanned<Struct>
- Make IR first-class (a BIG refactor)
- Remove Ariadne completely (+ lexer abort compilation)
- Move spans to frontend?
- Comptime type hints
- Path as an operator [cancelled]
-
orco::Path
borrowing names? [cancelled] - Get metadata traits out of macros
- Reorganize IR Tree to hold references to modules. Maybe local resolve should only be in module?
- Parent modules (
super::
) - Fix lazy evaluation:
- Extract part of TypeInference struct into something like LocalContext
- Rename TypeInference to something like Context and rename all the functions
- Remove lifetime from TypeInference/Context struct and make it shareable/cloneable
- Isolate LocalContext for all ensure_evaluated
- Comptimes in blocks
- Structs
- Generics
- Operator Overloading & Traits
- Finish the interpreter
- Unwinding?
- Effect system?!
- Pointers
- Typecasts
- Arrays
- While loop
- C Frontend (and a blog post on it hopefully)
- Post-typechecking frontend-side checks
- Rust frontend
- Self-hosting