Skip to content

v0.13.0

Compare
Choose a tag to compare
@github-actions github-actions released this 04 Nov 14:58
· 1628 commits to main since this release
874550a

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.
  • Added --auto-stub to actonc [#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 as NotImplemented 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.

Changed

  • Default is now to not automatically detect stub mode [#1047]
    • Use --auto-stub to enable automatic stub mode detection

Fixed

  • Now using zig v0.10.0, which was recently released [#1029]
    • Previously using a nightly build of v0.10
  • Correct arithmetic operations using hexadecimal literals [#1027]
  • Build actondb using zig with -target [#1003]