Skip to content

0.5.0-alpha

Compare
Choose a tag to compare
@sskorokhodov sskorokhodov released this 07 Dec 17:54
· 24 commits to master since this release

Process

General

  • New selective-receive! macro to receive only matching messages. See docs for more info.
  • Simultaneous calls to receive! are not allowed and throw an exception.
  • Added :flush option to demonitor fn. See docs for more info.
  • New process-info fn returning information about a process. See docs for more info.
  • New processes fn returning a sequence of pids of all the currently existing processes.
  • Unlimited process' message queue. No "inbox overflow" error.
  • New make-ref and ref? fns for unique reference values. Such references are returned for example by monitor fn.
  • Removed monitor-ref? fn.
  • Removed :name option of spawn fn.
  • Removed dynamically bound var *inbox* which could be used to receive process' messages.
  • Process is tracked (present in known processes list) until its initial function exits.
  • New alive? fn to check if process is still alive. See docs for more info.
  • Allowed sending/receiving nil.
  • Significantly reduced process' start time.
  • Improved message sending/receiving performance. Use own channel implementation for messages and signals.
  • Reduced amount of code generated by receive! for special cases (e.g. zero-timeout).
  • Pid is not a record any more. Can not be serialized automatically.
  • Added docs for exit fn with no arguments.

Tracing

  • The only tracer is allowed for the system. trace fn returns true/false instead of tracer-ref. untrace has no arguments.
  • :spawn event is split into :spawn and :spawned. :spawn means that spawn fn is called and relates to the parent process. :spawn means that a process init fn is spawned and relates to the child process.
  • :terminate event is split into :exiting and :exit. See process docs for more info.
  • Some events (like :spawn) can have nil pid when produced by not a process.
  • Fixed sending :receive event before the message has been actually received.
  • Fixed :message value of :send event: put the message, not [context message].

Async/await

  • New map-async fn and with-async macro to avoid unnecessary async/await.
  • Renamed async?-value! to await?!.
  • New async-value helper fn to make async value from a regular one without using async macro.

Timer

  • Fixed "busy loop" in apply-interval when timeout is 0.
  • Docs: added information about timer resolution.

gen-server

  • Monitoring server during a call. Allows exiting immediately if the server has exited. Caller must be a process now.
  • Removed redundant async/await during the call.
  • Fixed gen-server crash on getting its state with get!.

Other

  • Added project URL to the project description.