The plan is that boxed lists ([…], List<T>) and closures ({…}) are reference-counted, unboxed arrays ([|…|], Array<T, N>) and closures ({|…|}) won’t allocate, and since there’s no mutation at the moment, you can’t make reference cycles. If I add a mutable reference type, you’ll be responsible for avoiding cycles or manually breaking them with weak references (as in C++ and Rust).
And basically the only thing required from libc is malloc & free, so I want to make it possible to swap out the allocator or disable it if you’re writing low-level code; there will be a permission +Alloc, granted by default, which you can disable with -Alloc if you want to write code that’s not allowed to allocate on the heap.
Of course, this all depends on me actually working on the thing. :P
Nope.
The plan is that boxed lists (
[…]
,List<T>
) and closures ({…}
) are reference-counted, unboxed arrays ([|…|]
,Array<T, N>
) and closures ({|…|}
) won’t allocate, and since there’s no mutation at the moment, you can’t make reference cycles. If I add a mutable reference type, you’ll be responsible for avoiding cycles or manually breaking them with weak references (as in C++ and Rust).And basically the only thing required from
libc
ismalloc
&free
, so I want to make it possible to swap out the allocator or disable it if you’re writing low-level code; there will be a permission+Alloc
, granted by default, which you can disable with-Alloc
if you want to write code that’s not allowed to allocate on the heap.Of course, this all depends on me actually working on the thing. :P