Repository navigation
OrchestrateLang v0.11.0
The language owns its own errors.
Fixed
- String concatenation no longer consumes its operands.
a + bmoved both sides, so a
string could be used exactly once ands + sdid not compile at all
(error[E0382]: use of moved value). Addition now borrows:let c = a + bleaves both
aandbusable, anda + aworks.intandfloataddition is unchanged in
behaviour and in cost. - A match on a unit enum variant that binds a value is a type error, naming the variant
and how to write it, instead of rustc's "expected tuple struct or tuple variant, found
unit variant". The mirror case is caught too: a variant that carries a value and is
matched without binding it. So is a variant that does not exist, which now lists the ones
that do. - A
tryblock whose body waits compiles.try { fetch(1) } catch e { 0 }, where
fetchis a task, reached rustc as "awaitis only allowed insideasyncfunctions"
because the block generated a synchronous closure. A block that waits now generates an
async block instead, so?still works and the handler may wait too. A block that does
not wait generates exactly what it did before. - A
fn,task, orprocessthat names top-level state says so. Top-levellets
belong to the instance and only hooks reach them — a spawned task can run while a tick
holds that state, so the restriction is deliberate. It used to surface as rustc's
"cannot find value in this scope"; it is now a diagnostic naming the function, the
binding, and the way out.
Changed
docs/roadmap.mdno longer describes sandboxed serverlets as unshipped (0.9.0) or C# as
upcoming (0.10.0).