The README says what the collector touches, and what a dyn is
This commit is contained in:
parent
612411021c
commit
bcfcf130f7
18
README.md
18
README.md
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
Flan is an experimental, ahead-of-time compiled Lisp for programs that need
|
Flan is an experimental, ahead-of-time compiled Lisp for programs that need
|
||||||
predictable memory use and a fast edit–run loop. It combines S-expressions,
|
predictable memory use and a fast edit–run loop. It combines S-expressions,
|
||||||
static types, explicit ownership, and a development session that can replace a
|
static types, explicit allocation, and a development session that can replace a
|
||||||
function in a running program without resetting its state.
|
function in a running program without resetting its state.
|
||||||
|
|
||||||
It is being built around games, but the interesting part is broader: a compiled
|
It is being built around games, but the interesting part is broader: a compiled
|
||||||
@ -18,22 +18,28 @@ language where the running program remains available for inspection,
|
|||||||
experimentation, and small changes.
|
experimentation, and small changes.
|
||||||
|
|
||||||
In practical terms: you get parentheses, a debugger that would like to have a
|
In practical terms: you get parentheses, a debugger that would like to have a
|
||||||
conversation, and no garbage collector quietly choosing the dramatic moment to
|
conversation, and a collector that only ever touches values you asked to be
|
||||||
join your frame loop.
|
dynamic.
|
||||||
|
|
||||||
## What it has
|
## What it has
|
||||||
|
|
||||||
- Native compilation through LLVM, plus an in-progress direct x86-64 backend.
|
- Native compilation through LLVM, plus an in-progress direct x86-64 backend.
|
||||||
- C-like data layout: structs, fixed arrays, pointers, slices, and explicit
|
- C-like data layout: structs, fixed arrays, pointers, slices, and explicit
|
||||||
allocation. There is no garbage collector.
|
allocation.
|
||||||
- Owned `Vec` and `Map` containers, plus checked moves and borrowing-oriented
|
- `Vec` and `Map` containers that take the allocator they are to use, plus
|
||||||
slice operations.
|
slices as the non-owning view of them.
|
||||||
- Generics, algebraic unions, enums, macros, packages, `defer`, and a C FFI.
|
- Generics, algebraic unions, enums, macros, packages, `defer`, and a C FFI.
|
||||||
- Conditions and restarts for recoverable failures and interactive debugging.
|
- Conditions and restarts for recoverable failures and interactive debugging.
|
||||||
- A raylib package and a collection of ported raylib examples.
|
- A raylib package and a collection of ported raylib examples.
|
||||||
- Native, WASI, and web build targets. The cross targets are useful but less
|
- Native, WASI, and web build targets. The cross targets are useful but less
|
||||||
complete than the native development workflow.
|
complete than the native development workflow.
|
||||||
|
|
||||||
|
There is also a `dyn` type: one machine word whose contents the runtime knows
|
||||||
|
and the type checker does not. Writing `dyn` is how a value opts in to being
|
||||||
|
dynamic, and those values — and only those — live on a collected heap. A
|
||||||
|
program that writes it nowhere pays nothing for it, and `--no-gc` is how to
|
||||||
|
have that checked: it names every `dyn` in the program and refuses to build.
|
||||||
|
|
||||||
The project is exploratory software, not a stable language release. Some
|
The project is exploratory software, not a stable language release. Some
|
||||||
features are deliberately refused while their semantics are still undecided;
|
features are deliberately refused while their semantics are still undecided;
|
||||||
the compiler aims to say why rather than quietly accepting a partial version.
|
the compiler aims to say why rather than quietly accepting a partial version.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user