<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 <id>https://monix.io</id>
 <title>Monix</title>

 <link type="application/atom+xml" href="https://monix.io/blog/atom.xml" rel="self"/>
 <link type="text/html" href="https://monix.io" rel="alternate"/>

 <updated>2018-05-03T08:00:53+00:00</updated>
 <author>
   <name>Alexandru Nedelcu</name>
   <email>noreply@alexn.org</email>
   <url>https://alexn.org</url>
 </author>

 
 <entry>
   <title>Monix vs Cats-Effect</title>
   <link href="https://monix.io/blog/2018/03/20/monix-vs-cats-effect.html"/>
   <updated>2018-03-20T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2018/03/20/monix-vs-cats-effect</id>
   <content type="html"><![CDATA[
   <p>I’m the author of Monix and a major contributor to 
<a href="https://typelevel.org/cats-effect/">Cats-Effect</a>.</p>

<p>This post describes the relationship between Monix and Cats-Effect,
their history and when each should be used.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2018/03/20/monix-vs-cats-effect.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 3.0.0-RC1</title>
   <link href="https://monix.io/blog/2018/03/19/monix-v3.0.0-RC1.html"/>
   <updated>2018-03-19T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2018/03/19/monix-v3.0.0-RC1</id>
   <content type="html"><![CDATA[
   <p>The <code class="highlighter-rouge">3.0.0</code> release is near and it’s going to be huge. This is the first of the two 
release candidates planned, see below for the timeline.</p>

<p>The theme of the <code class="highlighter-rouge">3.x</code> series are:</p>

<ol>
  <li>deep integration with <a href="https://typelevel.org/cats/">Typelevel Cats</a>
</li>
  <li>deep integration with <a href="https://typelevel.org/cats-effect/">cats-effect</a>
</li>
  <li>a much improved <code class="highlighter-rouge">Task</code>, in concert with its <code class="highlighter-rouge">cats-effect</code> integration</li>
  <li>improvements across the board to <code class="highlighter-rouge">Observable</code>, <code class="highlighter-rouge">CancelableFuture</code>, etc.</li>
  <li>the introduction of <code class="highlighter-rouge">monix.tail.Iterant</code>, a purely functional, pull-based 
streaming alternative</li>
</ol>

<p>Featured presentation:</p>

<iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/JFbYQGG2Nb4" frameborder="0" class="presentation" allow="autoplay; encrypted-media" allowfullscreen="">
</iframe>


   <p><a rel="full-article" href="https://monix.io/blog/2018/03/19/monix-v3.0.0-RC1.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.3.3, Critical Bug Fixes</title>
   <link href="https://monix.io/blog/2018/01/22/monix-v2.3.3.html"/>
   <updated>2018-01-22T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2018/01/22/monix-v2.3.3</id>
   <content type="html"><![CDATA[
   <p>This is a maintenance release, that is binary backwards compatible with
series <code class="highlighter-rouge">2.3.x</code>.</p>

<p>Upgrade to <code class="highlighter-rouge">2.3.3</code> is recommended, as it contains critical bug fixes! 
See list below for more details.</p>

<p>A release for the <code class="highlighter-rouge">3.0.0-Mx</code> series will follow either today or tomorrow.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2018/01/22/monix-v2.3.3.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.3.0, New Features, Bug Fixes</title>
   <link href="https://monix.io/blog/2017/05/03/monix-v2.3.0.html"/>
   <updated>2017-05-03T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2017/05/03/monix-v2.3.0</id>
   <content type="html"><![CDATA[
   <p>Version <code class="highlighter-rouge">2.3.0</code> is out now.</p>

<p>It is a major release that remains binary and source compatible with
<code class="highlighter-rouge">2.2.x</code>.</p>

<p>In summary we’ve got a replacement for Scala’s <code class="highlighter-rouge">NonFatal</code>, 
a new <code class="highlighter-rouge">Task.deferAction</code> builder for defering tasks with an injected scheduler,
<code class="highlighter-rouge">Task</code> and <code class="highlighter-rouge">Coeval</code> run-loop optimizations, the <code class="highlighter-rouge">Observable.observeOn</code>
operation after popular request, a <code class="highlighter-rouge">Consumer.transformInput</code> for
transforming consumers by transforming their input stream, 
fixes for the reactive streams integration and more.
See details below.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2017/05/03/monix-v2.3.0.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.2.4, Bug Fixes, Upgraded Scala.js</title>
   <link href="https://monix.io/blog/2017/03/27/monix-v2.2.4.html"/>
   <updated>2017-03-27T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2017/03/27/monix-v2.2.4</id>
   <content type="html"><![CDATA[
   <p>Version <code class="highlighter-rouge">2.2.4</code> is out now.</p>

<p>It is a minor release that’s binary and source compatible with
<code class="highlighter-rouge">2.2.x</code>, fixing a bugs and upgrading Scala.js:</p>

<ul>
  <li>
<a href="https://github.com/monix/monix/issues/328">Bug #338</a>:
Fix broken test that can yield errors in Scala’s community build</li>
  <li>
<a href="https://github.com/monix/monix/issues/333">Bug #333</a>:
<code class="highlighter-rouge">Observable.firstStartedOf</code> fails due to off-by-one error</li>
  <li>
<a href="https://github.com/monix/monix/issues/335">Bug #335</a>:
Observable <code class="highlighter-rouge">concatMap</code> / <code class="highlighter-rouge">mapTask</code> trigger invalid state warning
on <code class="highlighter-rouge">raiseError</code> children</li>
</ul>

<p>Changes:</p>

<ul>
  <li>
<a href="https://github.com/monix/monix/issues/334">Issue #334</a>:
Add <code class="highlighter-rouge">CompositeCancelable.getAndResetTo</code>, needed for the new
<code class="highlighter-rouge">firstStartedOf</code> implementation</li>
  <li>Upgrade Scala.js to latest version <code class="highlighter-rouge">0.6.15</code>, handing deprecation
warnings in <code class="highlighter-rouge">TaskApp</code>
</li>
</ul>

<p>Upgrade should be safe, being binary compatible with all previous
<code class="highlighter-rouge">2.2.x</code> versions.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2017/03/27/monix-v2.2.4.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Critical Bug Fix in Version 2.2.3 for Scala 2.12</title>
   <link href="https://monix.io/blog/2017/03/10/monix-v2.2.3.html"/>
   <updated>2017-03-10T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2017/03/10/monix-v2.2.3</id>
   <content type="html"><![CDATA[
   <p>Version <code class="highlighter-rouge">2.2.3</code> is out now.</p>

<p>It is a minor release that’s binary and source compatible with
<code class="highlighter-rouge">2.2.x</code>, fixing a critical bug that happens in Scala 2.12, due to
changes to how <code class="highlighter-rouge">flatMap</code> is implemented in <code class="highlighter-rouge">scala.concurrent.Future</code>:</p>

<ul>
  <li>
<a href="https://github.com/monix/monix/issues/330">Bug #330</a>:
<code class="highlighter-rouge">Ack.Continue.transformWith</code> and <code class="highlighter-rouge">Ack.Stop.transformWith</code> 
are not stack-safe</li>
</ul>

<p><strong>Impact of this bug:</strong> it does NOT impact most (probably all)
functionality in Monix, because Monix rarely flatMaps direct
<code class="highlighter-rouge">Continue</code> references (due to batching and optimizations) and we have
had extensive tests for long loops that could trigger this problem.</p>

<p>However this bug can be dangerous for people that have implemented the
communication protocol (as
<a href="/docs/2x/reactive/observers.html#feeding-an-observer">described in the docs</a>)
by themselves. If you’re using Monix with Scala 2.12, then <em>upgrade
immediately</em>.</p>

<p>Upgrade should be safe, being binary compatible with all previous
<code class="highlighter-rouge">2.2.x</code> versions.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2017/03/10/monix-v2.2.3.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.2.2 Released</title>
   <link href="https://monix.io/blog/2017/02/22/monix-v2.2.2.html"/>
   <updated>2017-02-22T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2017/02/22/monix-v2.2.2</id>
   <content type="html"><![CDATA[
   <p>Version <code class="highlighter-rouge">2.2.2</code> is out now.</p>

<p>It is a minor release that’s binary and source compatible with <code class="highlighter-rouge">2.2.x</code>.</p>

<p>In summary:</p>

<ul>
  <li>Implemented a circuit breaker for <code class="highlighter-rouge">Task</code>, for providing stability
and preventing cascading failures in distributed systems</li>
  <li>Added <code class="highlighter-rouge">Task!.memoizeOnSuccess</code> and <code class="highlighter-rouge">Coeval!.memoizeOnSuccess</code>
operators that only caches the result (with idempotency guarantees)
for successful results, while re-evaluating the source on failures</li>
  <li>Added <code class="highlighter-rouge">Task.deferFutureAction</code> that helps with wrapping
<code class="highlighter-rouge">Future</code>-enabled APIs without requiring <code class="highlighter-rouge">ExecutionContext</code> in the
function signature, since <code class="highlighter-rouge">Task</code> can inject it for you</li>
  <li>Added <code class="highlighter-rouge">SingleAssignmentCancelable.plusOne</code> for helping with building
<code class="highlighter-rouge">Consumer</code> objects</li>
  <li>Moved and redesigned exceptions in <code class="highlighter-rouge">monix.execution</code>
</li>
  <li>
<code class="highlighter-rouge">Task.sequence</code> now has lazy behavior in evaluating the given
sequence (previously we were doing a <code class="highlighter-rouge">foldLeft</code> on that sequence,
which could have strict behavior, depending on the collection type)</li>
  <li>Critical bugs fixed!</li>
</ul>

<p>Details below!</p>


   <p><a rel="full-article" href="https://monix.io/blog/2017/02/22/monix-v2.2.2.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.2.1 Final Release</title>
   <link href="https://monix.io/blog/2017/01/26/monix-v2.2.html"/>
   <updated>2017-01-26T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2017/01/26/monix-v2.2</id>
   <content type="html"><![CDATA[
   <p>Version <code class="highlighter-rouge">2.2.1</code> is out now.</p>

<p>It is a major release that shouldn’t be considered binary compatible with <code class="highlighter-rouge">2.1.x</code>,
even though it is source compatible. This is due to several operators being
changed in <code class="highlighter-rouge">Observable</code> and <code class="highlighter-rouge">Task</code>, but extension methods are provided for the older
versions, therefore source compatibility is maintained.</p>

<p>As a summary: the new <code class="highlighter-rouge">MVar</code> synchronization primitive, performance improvements
in <code class="highlighter-rouge">Observable.concatMap</code> and in the <code class="highlighter-rouge">Task</code> run-loop, new <code class="highlighter-rouge">SchedulerService</code>
interface for shutting down schedulers, bug fixes and upgrade to Cats 0.9.0.
See details below.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2017/01/26/monix-v2.2.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.1.2</title>
   <link href="https://monix.io/blog/2016/12/19/monix-v2.1.2.html"/>
   <updated>2016-12-19T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/12/19/monix-v2.1.2</id>
   <content type="html"><![CDATA[
   <p>Greetings,</p>

<p>Version <code class="highlighter-rouge">2.1.2</code> is out now.</p>

<p>It is a minor release, binary compatible with <code class="highlighter-rouge">2.1.x</code>,
upgrading Scala to <code class="highlighter-rouge">2.12.1</code> and fixing a bug in <code class="highlighter-rouge">Observable.bufferSliding</code>.
See <a href="https://github.com/monix/monix/issues/275">Bug #275</a>.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/12/19/monix-v2.1.2.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.1.x</title>
   <link href="https://monix.io/blog/2016/11/02/monix-v2.1.html"/>
   <updated>2016-11-02T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/11/02/monix-v2.1</id>
   <content type="html"><![CDATA[
   <p>Greetings,</p>

<p>Version <code class="highlighter-rouge">2.1.1</code> is out now, while version <code class="highlighter-rouge">2.1.0</code> was out
on <a href="https://github.com/monix/monix/blob/master/CHANGES.md">Nov 9</a>.
The official announcement was then postponed because we waited to see
if bug reports are going to happen. Today version <code class="highlighter-rouge">2.1.1</code> was
released, fixing such a problem.</p>

<p>To use the new version, include this in your <code class="highlighter-rouge">build.sbt</code> (and use
<code class="highlighter-rouge">%%%</code> for Scala.js):</p>

<div class="language-scala highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">libraryDependencies</span> <span class="o">+=</span> <span class="s">"io.monix"</span> <span class="o">%%</span> <span class="s">"monix"</span> <span class="o">%</span> <span class="s">"2.1.1"</span>
</code></pre></div></div>

<p>The new version supports:</p>

<ul>
  <li>Scala 2.10, 2.11 and 2.12</li>
  <li>
<a href="http://www.scala-js.org/">Scala.js</a> 0.6.x</li>
  <li>
<a href="http://typelevel.org/cats/">Cats</a> 0.8.x</li>
  <li>
<a href="https://github.com/scalaz/scalaz">Scalaz</a> 7.2.x</li>
  <li>Java 6, 7, 8 and 9</li>
  <li>Android, at least since 2.x</li>
</ul>

<p>The theme of the <code class="highlighter-rouge">2.1</code> release has been performance optimizations, in
some cases quite massive, improving <code class="highlighter-rouge">Task</code> and parallelizing work by
means of the new <code class="highlighter-rouge">Observable.mapAsync</code> or by <code class="highlighter-rouge">TaskSemaphore</code>.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/11/02/monix-v2.1.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0.6 Maintenance Release</title>
   <link href="https://monix.io/blog/2016/11/02/monix-v2.0.6.html"/>
   <updated>2016-11-02T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/11/02/monix-v2.0.6</id>
   <content type="html"><![CDATA[
   <p>This release is binary compatible with 2.0.x, being a maintenance.
In order to upgrade, just increment the version number in <code class="highlighter-rouge">build.sbt</code>:</p>

<div class="language-scala highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">libraryDependencies</span> <span class="o">+=</span> <span class="s">"io.monix"</span> <span class="o">%%</span> <span class="s">"monix"</span> <span class="o">%</span> <span class="s">"2.0.6"</span>
</code></pre></div></div>

<p>This version is published for <strong>Scala 2.12.0 final release</strong>, incrementing
the dependency on Minitest to 0.27 and on Scalaz to 7.2.7.</p>

   <p><a rel="full-article" href="https://monix.io/blog/2016/11/02/monix-v2.0.6.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0.5 Maintenance Release</title>
   <link href="https://monix.io/blog/2016/10/23/monix-v2.0.5.html"/>
   <updated>2016-10-23T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/10/23/monix-v2.0.5</id>
   <content type="html"><![CDATA[
   <p>This release is binary compatible with 2.0.x, being a maintenance and
bug fix release. In order to upgrade, just increment the version
number in <code class="highlighter-rouge">build.sbt</code>:</p>

<div class="language-scala highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">libraryDependencies</span> <span class="o">+=</span> <span class="s">"io.monix"</span> <span class="o">%%</span> <span class="s">"monix"</span> <span class="o">%</span> <span class="s">"2.0.5"</span>
</code></pre></div></div>


   <p><a rel="full-article" href="https://monix.io/blog/2016/10/23/monix-v2.0.5.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0.4 Released for Bug Fixing</title>
   <link href="https://monix.io/blog/2016/10/10/monix-v2.0.4.html"/>
   <updated>2016-10-10T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/10/10/monix-v2.0.4</id>
   <content type="html"><![CDATA[
   <p>This release is binary compatible with 2.0.x, being a bug fix release
for <a href="https://github.com/monix/monix/issues/244">Issue #244</a>:
<em><code class="highlighter-rouge">AsyncScheduler.scheduleAtFixedRate</code> and <code class="highlighter-rouge">scheduleWithFixedDelay</code> on the JVM
have incorrect behavior</em>.</p>

<p>In order to upgrade, just increment the version number in <code class="highlighter-rouge">build.sbt</code>:</p>

<div class="language-scala highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">libraryDependencies</span> <span class="o">+=</span> <span class="s">"io.monix"</span> <span class="o">%%</span> <span class="s">"monix"</span> <span class="o">%</span> <span class="s">"2.0.4"</span>
</code></pre></div></div>


   <p><a rel="full-article" href="https://monix.io/blog/2016/10/10/monix-v2.0.4.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0.3 Released for Bug Fixing</title>
   <link href="https://monix.io/blog/2016/10/03/monix-v2.0.3.html"/>
   <updated>2016-10-03T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/10/03/monix-v2.0.3</id>
   <content type="html"><![CDATA[
   <p>This release is binary compatible with 2.0.x, being a bug fix release
release for <a href="https://github.com/monix/monix/issues/230">Issue #230</a>:
Deadlocks when blocking threads due to <code class="highlighter-rouge">LocalBatchingExecutor</code>
(affects <code class="highlighter-rouge">Task</code> usage).</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/10/03/monix-v2.0.3.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0.2 Released for Bug Fixing</title>
   <link href="https://monix.io/blog/2016/09/25/monix-v2.0.2.html"/>
   <updated>2016-09-25T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/09/25/monix-v2.0.2</id>
   <content type="html"><![CDATA[
   <p>This release is binary compatible with 2.0.x, being a bug fix release
release:</p>

<ul>
  <li>
<a href="https://github.com/monix/monix/issues/224">Bug #224</a>:
<code class="highlighter-rouge">IllegalStateException</code> logged in parallel consumer, when streaming
gets canceled due to a subscriber triggering an error</li>
</ul>

<p>This bug if basically harmless, it’s only effect being to log
unnecessary <code class="highlighter-rouge">IllegalStateExceptions</code> by means of
<code class="highlighter-rouge">Scheduler.reportError</code>.</p>

<p>Enjoy!</p>

   <p><a rel="full-article" href="https://monix.io/blog/2016/09/25/monix-v2.0.2.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0.1 Released for Maintenance</title>
   <link href="https://monix.io/blog/2016/09/10/monix-v2.0.1.html"/>
   <updated>2016-09-10T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/09/10/monix-v2.0.1</id>
   <content type="html"><![CDATA[
   <p>This release is binary compatible with 2.0.0, being just a maintenance
release that upgrades Cats to version <code class="highlighter-rouge">0.7.2</code>, Scalaz to <code class="highlighter-rouge">7.2.6</code> and
Scala to <code class="highlighter-rouge">2.12.0-RC1</code>.</p>

<p>The upgrade isn’t necessary, unless you’re using <code class="highlighter-rouge">monix-cats</code> and are
affected by <a href="https://github.com/typelevel/cats/issues/1346">Cats #1346</a>.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/09/10/monix-v2.0.1.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0.0 Final Release</title>
   <link href="https://monix.io/blog/2016/08/31/monix-v2.0.0.html"/>
   <updated>2016-08-31T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/08/31/monix-v2.0.0</id>
   <content type="html"><![CDATA[
   <p>Monix is a library for composing asynchronous, event-based programs.
Work on version 2.0 started since December last year, after
<a href="https://github.com/monix/monix/tree/v1.0">version 1.0</a> was
released.</p>

<p>Today marks the release of the <code class="highlighter-rouge">2.0.0</code> version. Here’s what happened
since 1.0:</p>

<ol>
  <li>the project went through a rename (from Monifu to Monix)</li>
  <li>the underlying protocol of <code class="highlighter-rouge">Observable</code> has been reviewed and
changed quite significantly, making observable streams cancelable</li>
  <li>many of the <code class="highlighter-rouge">Observable</code> operators where refactored and improved</li>
  <li>the project was split into multiple sub-projects, such that users
can pick and choose what they need</li>
  <li>the <a href="https://monix.io/docs/2x/eval/task.html">Task</a> and
<a href="https://monix.io/docs/2x/eval/coeval.html">Coeval</a> types were
introduced</li>
  <li>the project’s code coverage has been raised over 83%</li>
  <li>the project is in
<a href="http://typelevel.org/projects/">Typelevel’s Incubator</a>, which for
you it means that it plays nice with the other Typelevel projects</li>
  <li>it now integrates with Typelevel <a href="http://typelevel.org/cats/">Cats</a> and
with <a href="https://scalaz.org/">Scalaz</a>, which are THE standard
libraries for doing functional programming and yes, <code class="highlighter-rouge">Task</code>, <code class="highlighter-rouge">Coeval</code>
and <code class="highlighter-rouge">Observable</code> are provably Monads :-)</li>
  <li>we initiated a documentation website at
<a href="https://monix.io/docs/2x/">Monix.io</a>, with an initial batch of
useful articles, though there’s still a lot of ground left to cover
for observables</li>
</ol>

<p>Today Monix <code class="highlighter-rouge">2.0.0</code> is being released for Scala <code class="highlighter-rouge">2.10.6</code>, <code class="highlighter-rouge">2.11.8</code> and
<code class="highlighter-rouge">2.12.0-M5</code>, Scala.js <code class="highlighter-rouge">0.6.11</code>, Cats <code class="highlighter-rouge">0.7.0</code> and Scalaz <code class="highlighter-rouge">7.2.5</code>.</p>

<p>You can hit the <a href="https://monix.io/docs/2x/">documentation</a>, or
<a href="https://beetta.scalafiddle.io/sf/RJrr88/0">experiment in ScalaFiddle</a>
and see Monix in your browser, or take a look at
<a href="https://github.com/monix/monix-sample">monix-sample</a>, a
client/server communication sample with both sides handled by Monix
(<a href="https://monix-sample.herokuapp.com/">see it running</a>).</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/08/31/monix-v2.0.0.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0-RC13 Released</title>
   <link href="https://monix.io/blog/2016/08/25/monix-v2.0-RC13.html"/>
   <updated>2016-08-25T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/08/25/monix-v2.0-RC13</id>
   <content type="html"><![CDATA[
   <p>This version fixes <code class="highlighter-rouge">Task.memoize</code> and <code class="highlighter-rouge">Coeval.memoize</code>, while
introducing even more and quite significant <code class="highlighter-rouge">Task</code> optimizations.
More details on performance to follow.</p>

<p>NOTE: version <code class="highlighter-rouge">2.0-RC13</code> was published immediately after version
<code class="highlighter-rouge">2.0-RC12</code>, due to a critical bug reported by Mark Tomko and
immediately fixed in
<a href="https://github.com/monix/monix/issues/215">issue #215</a>.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/08/25/monix-v2.0-RC13.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0-RC11 Released</title>
   <link href="https://monix.io/blog/2016/08/20/monix-v2.0-RC11.html"/>
   <updated>2016-08-20T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/08/20/monix-v2.0-RC11</id>
   <content type="html"><![CDATA[
   <p>This release fixes one issue with <code class="highlighter-rouge">Task</code>, as it was discovered that
<code class="highlighter-rouge">flatMap</code> loops aren’t automatically cancelable, a small
oversight. Also <code class="highlighter-rouge">CompositeCancelable.remove</code> wasn’t working, a bug
introduced in the previous release. Another bug that was fixed is in
<code class="highlighter-rouge">Consumer.foldLeftAsync</code>, which wasn’t capturing errors properly.</p>

<p>This release introduces a major refactoring of the <code class="highlighter-rouge">Task</code> internal
workings of its trampoline, as a serious optimization. As an example
of what this brings, the conversion from a <code class="highlighter-rouge">Future</code> with
<code class="highlighter-rouge">Task.fromFuture</code> has near-zero overhead and the performance of
<code class="highlighter-rouge">Task.gather</code> and <code class="highlighter-rouge">Task.gatherUnordered</code> has improved significantly.</p>

<p>There are also breaking API changes, sorry about that, but these
should come sooner rather than later, before marking 2.0 final. The
<code class="highlighter-rouge">zipWith</code> (e.g. <code class="highlighter-rouge">zipWith2</code>, <code class="highlighter-rouge">zipWith3</code>) operators on <code class="highlighter-rouge">Task</code> and
<code class="highlighter-rouge">Observable</code> and the <code class="highlighter-rouge">combineLatestWith</code> operators on <code class="highlighter-rouge">Observable</code>
have been renamed to <code class="highlighter-rouge">zipMap</code> (e.g. <code class="highlighter-rouge">zipMap2</code>, etc) and
<code class="highlighter-rouge">combineLatestMap</code> respectively. This because <code class="highlighter-rouge">zipMap</code> describes the
operation much better and this name has also been used in the
Typelevel Cats / Dogs libraries at least.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/08/20/monix-v2.0-RC11.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0-RC10 Released</title>
   <link href="https://monix.io/blog/2016/08/10/monix-v2.0-RC10.html"/>
   <updated>2016-08-10T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/08/10/monix-v2.0-RC10</id>
   <content type="html"><![CDATA[
   <p>This release adds some useful extension methods for <code class="highlighter-rouge">Scheduler</code> and
<code class="highlighter-rouge">Callback</code>, while optimizing and making safer some <code class="highlighter-rouge">Task</code> operations, like
<code class="highlighter-rouge">gatherUnordered</code>, ‘chooseFirstOfList’ and <code class="highlighter-rouge">create</code>. On <code class="highlighter-rouge">Observable</code> it
also changes how <code class="highlighter-rouge">onOverflow</code> behaves when specified in an <code class="highlighter-rouge">OverflowStrategy</code>.
This will be a breaking, but easy to fix change.</p>

<p>Release RC10 is the last release before 2.0, scheduled for September 1st
(promise, cross my heart and hope to …).</p>

<p><strong>BUG WARNING:</strong> this release contains a critical bug issue.
Upgrade to the latest version as soon as possible.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/08/10/monix-v2.0-RC10.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0-RC9 Released</title>
   <link href="https://monix.io/blog/2016/08/01/monix-v2.0-RC9.html"/>
   <updated>2016-08-01T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/08/01/monix-v2.0-RC9</id>
   <content type="html"><![CDATA[
   <p>This release fixes a bug in <code class="highlighter-rouge">Task.mapBoth</code> and thus the operations
depending on it, like <code class="highlighter-rouge">Task.gather</code>. It also fixes another bug in
the Cats <code class="highlighter-rouge">Applicative</code> instance for <code class="highlighter-rouge">Task</code>, adding a required overload
for running Tasks in parallel when using the applicative builder.</p>

<p>This release also changes the signatures of Task’s <code class="highlighter-rouge">sequence</code>, <code class="highlighter-rouge">gather</code> and
<code class="highlighter-rouge">gatherUnordered</code> to use the <code class="highlighter-rouge">CanBuildFrom</code> pattern, a contribution
by <a href="https://github.com/guersam">@guersam</a>.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/08/01/monix-v2.0-RC9.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0-RC8 Released</title>
   <link href="https://monix.io/blog/2016/06/29/monix-v2.0-RC8.html"/>
   <updated>2016-06-29T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/06/29/monix-v2.0-RC8</id>
   <content type="html"><![CDATA[
   <p>This release candidate is probably the last one before <code class="highlighter-rouge">2.0</code>, assuming
new bugs aren’t found. Amongst others, it introduces an awesome
<code class="highlighter-rouge">Consumer</code> type which makes it possible to describe composable
consumers. For a teaser:</p>

<div class="language-scala highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// For processing sums in parallel, useless of course, but can become 
// really helpful for logic sprinkled with I/O bound stuff
</span><span class="k">val</span> <span class="n">consumer</span> <span class="k">=</span> <span class="nc">Consumer</span>
  <span class="o">.</span><span class="n">loadBalance</span><span class="o">(</span><span class="n">parallelism</span><span class="k">=</span><span class="mi">10</span><span class="o">,</span> <span class="nc">Consumer</span><span class="o">.</span><span class="n">foldLeft</span><span class="o">(</span><span class="nc">Coeval</span><span class="o">(</span><span class="mi">0L</span><span class="o">))(</span><span class="k">_</span> <span class="o">+</span> <span class="k">_</span><span class="o">))</span>
  <span class="o">.</span><span class="n">map</span><span class="o">(</span><span class="k">_</span><span class="o">.</span><span class="n">sum</span><span class="o">)</span>

<span class="k">val</span> <span class="n">observable</span><span class="k">:</span> <span class="kt">Observable</span><span class="o">[</span><span class="kt">Int</span><span class="o">]</span> <span class="k">=</span> <span class="o">???</span>
<span class="c1">// Our consumer turns our observable into a Task processing sums, w00t!
</span><span class="k">val</span> <span class="n">task</span><span class="k">:</span> <span class="kt">Task</span><span class="o">[</span><span class="kt">Long</span><span class="o">]</span> <span class="k">=</span> <span class="n">observable</span><span class="o">.</span><span class="n">runWith</span><span class="o">(</span><span class="n">consumer</span><span class="o">)</span>

<span class="c1">// Consume the whole stream and get the result
</span><span class="n">task</span><span class="o">.</span><span class="n">runAsync</span><span class="o">.</span><span class="n">foreach</span><span class="o">(</span><span class="n">println</span><span class="o">)</span>
</code></pre></div></div>


   <p><a rel="full-article" href="https://monix.io/blog/2016/06/29/monix-v2.0-RC8.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0-RC7 Released</title>
   <link href="https://monix.io/blog/2016/06/21/monix-v2.0-RC7.html"/>
   <updated>2016-06-21T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/06/21/monix-v2.0-RC7</id>
   <content type="html"><![CDATA[
   <p>This release candidate fixes a bug in <code class="highlighter-rouge">Task.materializeAttempt</code> and
consequently <code class="highlighter-rouge">Task.onErrorHandleWith</code>. It also adds
<a href="http://scalaz.org/">Scalaz</a> integration and a <code class="highlighter-rouge">TaskApp</code> to make your
friends jealous. Also the <code class="highlighter-rouge">Atomic</code> references in project <code class="highlighter-rouge">Sincron</code> are
being brought back into Monix proper, in <code class="highlighter-rouge">monix-execution</code>, because
project <code class="highlighter-rouge">Sincron</code> is for all intents and purposes part of Monix and
has no further ambitions.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/06/21/monix-v2.0-RC7.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0-RC6 Released</title>
   <link href="https://monix.io/blog/2016/06/15/monix-v2.0-RC6.html"/>
   <updated>2016-06-15T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/06/15/monix-v2.0-RC6</id>
   <content type="html"><![CDATA[
   <p>The sixth release candidate, simplifies the <a href="http://typelevel.org/">Cats</a> integration,
introduces an alternative parallel <code class="highlighter-rouge">Applicative</code> instance for <code class="highlighter-rouge">Task</code>,
changes the <code class="highlighter-rouge">Observable.buffer</code> operators to match the behavior in ReactiveX,
adds observable builders from <code class="highlighter-rouge">java.io.InputStream</code> and <code class="highlighter-rouge">Reader</code>,
adds <code class="highlighter-rouge">Observable.executeOn</code>, along with other utils and refactors the 
<code class="highlighter-rouge">Pipe</code> and <code class="highlighter-rouge">ConcurrentSubject</code> builders. Also contains bug fixes.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/06/15/monix-v2.0-RC6.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0-RC5 Released</title>
   <link href="https://monix.io/blog/2016/05/31/monix-v2.0-RC5.html"/>
   <updated>2016-05-31T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/05/31/monix-v2.0-RC5</id>
   <content type="html"><![CDATA[
   <p>The fifth release candidate, re-introduces the
<a href="http://typelevel.org/cats/">Cats</a> integration, introduces new <code class="highlighter-rouge">Task</code>
operators <code class="highlighter-rouge">doOnFinish</code>, <code class="highlighter-rouge">gather</code> and <code class="highlighter-rouge">gatherUnordered</code> and changes
the behavior of <code class="highlighter-rouge">Task.sequence</code>. Also contains a critical bug fix.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/05/31/monix-v2.0-RC5.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0-RC3 Released</title>
   <link href="https://monix.io/blog/2016/05/25/monix-v2.0-RC3.html"/>
   <updated>2016-05-25T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/05/25/monix-v2.0-RC3</id>
   <content type="html"><![CDATA[
   <p>The third release candidate, fixes an issue with <code class="highlighter-rouge">BehaviorSubject</code>
and <code class="highlighter-rouge">ReplaySubject</code>, making them release subscribers that stopped
the stream while connecting, allowing them to be garbage collected
faster. This is a very common use-case.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/05/25/monix-v2.0-RC3.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>I'm Monix.io, Help Wanted!</title>
   <link href="https://monix.io/blog/2016/05/19/help-wanted.html"/>
   <updated>2016-05-19T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/05/19/help-wanted</id>
   <content type="html"><![CDATA[
   <p><a href="https://github.com/monix/monix">Monix</a> was started in 2014 with the
purpose of aiding me in dealing with processing asynchronous events in
a soft real-time system. We’ve come a long way and now the library is
better than ever but there’s much to do.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/05/19/help-wanted.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0-RC2 Released</title>
   <link href="https://monix.io/blog/2016/05/02/monix-v2.0-RC2.html"/>
   <updated>2016-05-02T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/05/02/monix-v2.0-RC2</id>
   <content type="html"><![CDATA[
   <p>A small release for a critical bug fix.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/05/02/monix-v2.0-RC2.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0-RC1 Released</title>
   <link href="https://monix.io/blog/2016/04/26/monix-v2.0-RC1.html"/>
   <updated>2016-04-26T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/04/26/monix-v2.0-RC1</id>
   <content type="html"><![CDATA[
   <p>Feature freeze. There’s lots of interesting stuff to work on, but 
we should strive for stable 2.0 release first. It’s going to be
mostly bug fixing from here until the final 2.0, no more design
work.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/04/26/monix-v2.0-RC1.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0-M2 Released</title>
   <link href="https://monix.io/blog/2016/03/23/monix-V2.0-M2.html"/>
   <updated>2016-03-23T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/03/23/monix-V2.0-M2</id>
   <content type="html"><![CDATA[
   <p>The theme and the big issue of this release has been redesigning
<code class="highlighter-rouge">Task</code>’s implementation and introducing <code class="highlighter-rouge">Coeval</code>. See
<a href="https://github.com/monix/monix/issues/141">Issue #141</a> for details.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/03/23/monix-V2.0-M2.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
 <entry>
   <title>Monix: Version 2.0-M1 Released</title>
   <link href="https://monix.io/blog/2016/03/16/monix-v2.0-M1.html"/>
   <updated>2016-03-16T00:00:00+00:00</updated>
   <id>https://monix.io/blog/2016/03/16/monix-v2.0-M1</id>
   <content type="html"><![CDATA[
   <p>Milestone release for version 2.0, supplied as a preview.
The final 2.0 release should not have major changes compared
to this first milestone, but API breakage can still happen.</p>


   <p><a rel="full-article" href="https://monix.io/blog/2016/03/16/monix-v2.0-M1.html?utm_source=RSS_Feed&utm_medium=RSS&utm_campaign=RSS_Syndication"><b>Read This Article &raquo;</b></a></p>
   ]]></content>
 </entry>
 
</feed>
