Cleaned up atoms

- Atoms now use MFBI to distinguish between thin and owned atoms.
- Introduced TryFromExpr and ToExpr (formerly ToClause) from the old FFI
- Standardized on Bottom being a ProjErr, which means that there will be no RTErr
This commit is contained in:
2024-07-02 00:57:11 +02:00
parent fc8441f080
commit 949b3758fd
25 changed files with 383 additions and 297 deletions

37
notes/crates.md Normal file
View File

@@ -0,0 +1,37 @@
The role and relations of the crates in this monorepo
# orcx
Reference runtime built using [`orchid-host`](#orchid-host)
# orchid-std
Standard library and reference extension built using [`orchid-extension`](#orchid-extension)
# orchid-host
Interpreter library with extension host. This is built to support embedding in arbitrary host applications for scripting, although it is not security hardened.
# orchid-extension
Extension development toolkit. It routes the requests to handlers in a nice object model, and manages resources like `ExprTicket`.
# orchid-base
Common items used by both [`orchid-host`](#orchid-host) and [`orchid-extension`](#orchid-extension). Most notably, both sides of the string interner are defined here because it has to be callable from other items defined in this crate through the same set of global functions in both environments.
# orchid-api
Definition of the extension API. This crate should not contain any logic, it should hold only serializable message structs, and their relations should represent how they fit into the protocol.
# orchid-api-derive
Derive macros for the traits in [`orchid-api-traits`](#orchid-api-traits) to make the definitions in [`orchid-api`](#orchid-api) more concise.
# orchid-api-traits
Traits with a semantic meaning with respect to the protocol elements defined in [`orchid-api`](#orchid-api):
- `Encode`, `Decode` and `Coding` define how types serialize.
- `Request` associates requests with their response types.
- `InHierarchy`, `Extends` and `UnderRoot` associate requests and notifications with the category hierarchy they belong to.