1. The compiler would be able to turn a subset of async code into sync code with no runtime cost
2. Awaiting would be the default, with `.await` deprecated and special syntax for getting a raw future instead
That way most code would look the same regardless of being executed synchronously or asynchronously, with exceptions for evaluating multiple expressions in parallel and such.
But #2 probably implies lazy evaluation semantics for all expressions!
1. The compiler would be able to turn a subset of async code into sync code with no runtime cost
2. Awaiting would be the default, with `.await` deprecated and special syntax for getting a raw future instead
That way most code would look the same regardless of being executed synchronously or asynchronously, with exceptions for evaluating multiple expressions in parallel and such.
But #2 probably implies lazy evaluation semantics for all expressions!