1. 12 Aug, 2022 2 commits
    • Xavier Thompson's avatar
      examples/: Remove obsolete programs · 0e135934
      Xavier Thompson authored
      0e135934
    • Xavier Thompson's avatar
      Rethink exception propagation from forks · 3fccb633
      Xavier Thompson authored
      Previously, an exception thrown from a fork was rethrown:
      - a) when the call to fork() returns if the fork completes synchronously
      - b) otherwise, at the next explicit call to Sync() if there is one
      - c) otherwise, when the call to the enclosing Join coroutine returns
      
      In the case of infinite fork loops, this meant exceptions might never be
      propagated.
      
      Now, when an exception is thrown from a fork it's always rethrown when
      the call to the enclosing Join coroutine returns. The body of the Join
      coroutine just stops executing as soon as possible once a fork signals
      an exception. This will be at the call to fork() if the fork completes
      synchronously, or at any ensuing call to Sync() or fork() otherwise.
      
      Essentially once an exception is signaled from a parallel fork, the next
      call to fork() behaves like Sync() instead of creating a fork, and once
      all the parallel forks have completed, execution resumes directly at the
      call to the enclosing Join coroutine, where the exception is rethrown.
      3fccb633
  2. 09 Aug, 2022 5 commits
  3. 08 Aug, 2022 1 commit
  4. 02 Aug, 2022 1 commit
  5. 20 Jul, 2022 3 commits
  6. 18 Jul, 2022 1 commit
  7. 12 Jul, 2022 5 commits
  8. 11 Jul, 2022 2 commits
  9. 08 Jul, 2022 5 commits
  10. 07 Jul, 2022 14 commits
  11. 28 Jun, 2022 1 commit