v0.13.0
New "deactorizer", which unlocks proper async / sync actor method calls.
Added
- Added new "deactorizer" pass in compiler [#374]
- No real user visible change, like no change in syntax, but we now properly
compile programs with regards to async / sync calling behavior of methods. - Briefly, an actor method called from the local method is called directly.
This effect is called "proc". Remote actor methods are normally called
asynchronously and these are called "action". If we assign the return value
of an action, we are locking for a synchronous behavior which is achieved by
an await. These semantics are now correctly implemented. - In particular, passing methods as arguments, a method might not know whether
it is passed an action or proc and thus needs to handle this in a generic
way. This is particularly tricky as we don't want to to any run time
inspection of arguments and thus need to have it all figured out at compile
time. - Many many many other things are fixed through the merge of the new
deactorizer. There are improvements and fixes to various passes in the
compiler. This has been in the works for almost a year.
- No real user visible change, like no change in syntax, but we now properly
- Added
--auto-stub
toactonc
[#1047]- Enables automatic detection of stub mode compilation
- Extended actor argument pruning analysis to honour
NotImplemented
[#524]- Pruning analysis prunes away arguments that are not used under the lifetime
of an actor, e.g. an argument only used for actor body initialization code.
Pruned arguments are not persisted. - Pruning analysis does not cover C code, so when one or more methods are
implemented in C and defined asNotImplemented
in the Acton module, we
cannot reliably determine what arguments are used or unused. - The safe choice is to assume all arguments are used, which is what we are
now doing. - This removes a bunch of
_force_persistance
methods in stdlib.
- Pruning analysis prunes away arguments that are not used under the lifetime
Changed
- Default is now to not automatically detect stub mode [#1047]
- Use
--auto-stub
to enable automatic stub mode detection
- Use