Skip to content

Releases: rzeigler/waveguide

v0.4.0

13 May 13:48
Compare
Choose a tag to compare
  • Large refactoring... the public interface very different from 0.3.0.
  • Use a trampoline what rendevouzing across fibers instead of setTimeout(0).
    This allows huge numbers of fibers to coordinate immediately rather than being throttled by an event loop tick per join
  • The interruption model now follows current ZIO model of nested interruptible state regions.
    i.e. uninterruptible { interruptible { ... } applySecond b} would contained interruptible region.
  • Interrupted is no a never error type similar to Abort.
  • Simplify the driver step ADT most combinators are expressible using only Chain and Fold variants.
  • There is now a bounded queue implementation
  • There is now a resource monad that uses the bracketing IO combinators
  • Add a number of adaptation functions from Promise and fp-ts that produce uninterruptible IOs
  • async operators no longer take a ContextSwitch<E, A> instead returning to the form of Function1<Function1<Either<E, A>, void>, Lazy>
    See trampoline changes...
  • More granular racing and timeout combinators
  • Tests now make extensive use of fast-check and generate test coverage is improved

v0.4.0-0

23 Mar 21:24
Compare
Choose a tag to compare
v0.4.0-0 Pre-release
Pre-release
  • Add blocking stub. c5e5ac7
  • Implement CloseableBoundedQueue. f4f3ea5
  • Finish shifting when to be a parallel construct to ifM. b90a01a
  • Prototype api for closeable queue. 1862160
  • Add Deferred#get for fetch if set already. 6a9d151
  • Merge pull request #4 from rzeigler/document-comparison ed69676
  • Remove most this types. 88dfe3f
  • Whoops typos. 239bd40
  • Merge branch 'master' into document-comparison 3c86d11
  • Some more links. c8e5307
  • Address feedback. 4ded108
  • Move terminal -> console with log/warn/error. 70d0f23
  • First draft of requested comparison to funfix. 6c14152

v0.3.0...v0.4.0-0

v0.3.0

10 Mar 14:22
Compare
Choose a tag to compare
  • Alter the signature of IO.async to accept a ContextSwitch interface.
  • Adds tryAcquireN/tryAcquire to Semaphore

The new IO.async signature gives control over whether the runloop should restart immediately or on the next tick. This allows stack safety in cases (like Deferred when used for racing) and immediate restart for most times. This change also ensures that interruption cannot occur after a value is delivered to the runloop. Once a delivery has been queued the runloop will always restart and interpret at least 1 action.

v0.2.0...v0.3.0

v0.2.0

08 Mar 14:20
Compare
Choose a tag to compare

Additions:

  • Implement a nonblocking asynchronous queue

Changes:

  • No longer a multi-module project. Things like node and browser stuff should version independently.
  • Peer dependency on fp-ts. fp-ts typeclasses are exported directly now.
  • Change fork semantics for stack safety. Forked fiber begins running on subsequent tick
  • Change semantics for ensuring and interrupted. If the interrupt/ensure action is queued for execution then the cleanup will be executed. Previously, the 'run' base action would need to have been queued.

v0.1.0...v0.2.0