<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yet Another [À Compléter] &#187; Google Summer of Code 2009</title>
	<atom:link href="http://blog.neteril.org/category/mono/google-summer-of-code-2009/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.neteril.org</link>
	<description>Random thoughts of Jérémie Laval</description>
	<lastBuildDate>Mon, 19 Jul 2010 17:12:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>A FOSDEM talk primer</title>
		<link>http://blog.neteril.org/2010/01/21/a-fosdem-talk-primer/</link>
		<comments>http://blog.neteril.org/2010/01/21/a-fosdem-talk-primer/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 18:18:04 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Google Summer of Code 2009]]></category>
		<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://blog.neteril.org/?p=776</guid>
		<description><![CDATA[<p>(Shamelessly inspired from <a href="http://blog.reblochon.org/">Stéphane</a>)</p>
<p>Since image processing is both trendy and a good candidate for parallel optimizations, I took the time to implement a little program that compute a part of the <a href="http://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot set</a> (a well known fractal) in a fancy way :</p>
<p style="text-align: center; margin: 1em;"><img class="aligncenter size-medium wp-image-777" title="Lolipop" src="http://blog.neteril.org/wp-content/uploads/2010/01/lolipop-300x300.png" alt="Lolipop" width="300" height="300" /></p>
<p>Now for the facts &amp; numbers :</p>
<blockquote><p>
Sequential generation : <strong>26.5s</strong><br />
Parallel generation : <strong>13.7s</strong><br />
Effective speedup : <strong>2 times faster</strong> (dual core computer)<br />
# changes between sequential and parallel : <strong>3 lines</strong></p></blockquote>
<p>Oh, and this was done using the ParallelFx bundled with Mono 2.6 that you can already use today in your applications.</p>
<p>More informations and tips on Sunday 7th @ FOSDEM in Mono room. Don&#8217;t miss it !</p>
<p>PS: Also, don&#8217;t forget <a href="http://hackerspace.be/Mono_hack-a-day">Mono Hackaday</a> on Monday February 8th.</p>
]]></description>
			<content:encoded><![CDATA[<p>(Shamelessly inspired from <a href="http://blog.reblochon.org/">Stéphane</a>)</p>
<p>Since image processing is both trendy and a good candidate for parallel optimizations, I took the time to implement a little program that compute a part of the <a href="http://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot set</a> (a well known fractal) in a fancy way :</p>
<p style="text-align: center; margin: 1em;"><img class="aligncenter size-medium wp-image-777" title="Lolipop" src="http://blog.neteril.org/wp-content/uploads/2010/01/lolipop-300x300.png" alt="Lolipop" width="300" height="300" /></p>
<p>Now for the facts &amp; numbers :</p>
<blockquote><p>
Sequential generation : <strong>26.5s</strong><br />
Parallel generation : <strong>13.7s</strong><br />
Effective speedup : <strong>2 times faster</strong> (dual core computer)<br />
# changes between sequential and parallel : <strong>3 lines</strong></p></blockquote>
<p>Oh, and this was done using the ParallelFx bundled with Mono 2.6 that you can already use today in your applications.</p>
<p>More informations and tips on Sunday 7th @ FOSDEM in Mono room. Don&#8217;t miss it !</p>
<p>PS: Also, don&#8217;t forget <a href="http://hackerspace.be/Mono_hack-a-day">Mono Hackaday</a> on Monday February 8th.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2010/01/21/a-fosdem-talk-primer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to get the max out of your PLinq query</title>
		<link>http://blog.neteril.org/2009/08/16/how-to-get-the-max-out-of-your-plinq-query/</link>
		<comments>http://blog.neteril.org/2009/08/16/how-to-get-the-max-out-of-your-plinq-query/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 17:34:15 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Google Summer of Code 2009]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.neteril.org/?p=685</guid>
		<description><![CDATA[<p>Here are some tips you should follow if you want to get the maximum performance out of a Linq query parallelized with PLinq (at least with upcoming Mono version) :</p>
<ul>
<li>
<p>Use an indexed data structure as your source like an array, a list or anything which implements the generic IList&lt;T&gt; interface.</p>
<p>You can also use <a href="http://msdn.microsoft.com/en-us/library/dd268181%28VS.100%29.aspx">ParallelEnumerable.Repeat</a> and <a href="http://msdn.microsoft.com/en-us/library/system.linq.parallelenumerable.range%28VS.100%29.aspx">ParallelEnumerable.Range</a> as input. Notice the &#8216;Parallel&#8217; word in front as it&#8217;s not the same as Enumerable.(Range|Repeat)</p>
</li>
<li>
<p>Never use an ordering operator like OrderBy and never assume that the query should be ordered.</p>
<p>The overloads of some operator that provide an index integer are also to avoid.</p>
</li>
<li>
<p>As a general rule, try to stick to the general scheme of <a href="http://msdn.microsoft.com/en-us/library/dd383966%28VS.100%29.aspx">Select</a>-<a href="http://msdn.microsoft.com/en-us/library/dd384150%28VS.100%29.aspx">Where</a>-<a href="http://msdn.microsoft.com/en-us/library/dd383667%28VS.100%29.aspx">Aggregate</a> with any number of Select and Where (like the famous <a href="http://en.wikipedia.org/wiki/MapReduce">MapReduce</a>).</p>
<p>The syntactic sugar operators based on Aggregate like Min, Max, Average, etc&#8230; can also be used.</p>
</li>
<li>
<p>If you can manage it in your code, use the <a href="http://msdn.microsoft.com/en-us/library/dd383744%28VS.100%29.aspx">ForAll</a> method with an action delegate instead of iterating over the query with <code>foreach</code></p>
</li>
<li>
<p>Of course, forbid any synchronization (locks, semaphore, &#8230;) inside the operator selectors/predicates. The purest your lambdas are, the better.</p>
</li>
<li>
<p>The functions used with operators should be predictive and stable i.e. not depend on something uncertain time-wise like a network call and should yield approximately the same execution time with each input.</p>
<p>Sure, this is not always possible but if it is, it does prevent the engine from having to repeatedly balance the query execution itself.</p>
</li>
</ul>
<p>The <a href="http://msdn.microsoft.com/en-us/library/dd460688%28VS.100%29.aspx">PLinq MSDN page</a> contains some additional tricks and explanations if you are interested.</p>
]]></description>
			<content:encoded><![CDATA[<p>Here are some tips you should follow if you want to get the maximum performance out of a Linq query parallelized with PLinq (at least with upcoming Mono version) :</p>
<ul>
<li>
<p>Use an indexed data structure as your source like an array, a list or anything which implements the generic IList&lt;T&gt; interface.</p>
<p>You can also use <a href="http://msdn.microsoft.com/en-us/library/dd268181%28VS.100%29.aspx">ParallelEnumerable.Repeat</a> and <a href="http://msdn.microsoft.com/en-us/library/system.linq.parallelenumerable.range%28VS.100%29.aspx">ParallelEnumerable.Range</a> as input. Notice the &#8216;Parallel&#8217; word in front as it&#8217;s not the same as Enumerable.(Range|Repeat)</p>
</li>
<li>
<p>Never use an ordering operator like OrderBy and never assume that the query should be ordered.</p>
<p>The overloads of some operator that provide an index integer are also to avoid.</p>
</li>
<li>
<p>As a general rule, try to stick to the general scheme of <a href="http://msdn.microsoft.com/en-us/library/dd383966%28VS.100%29.aspx">Select</a>-<a href="http://msdn.microsoft.com/en-us/library/dd384150%28VS.100%29.aspx">Where</a>-<a href="http://msdn.microsoft.com/en-us/library/dd383667%28VS.100%29.aspx">Aggregate</a> with any number of Select and Where (like the famous <a href="http://en.wikipedia.org/wiki/MapReduce">MapReduce</a>).</p>
<p>The syntactic sugar operators based on Aggregate like Min, Max, Average, etc&#8230; can also be used.</p>
</li>
<li>
<p>If you can manage it in your code, use the <a href="http://msdn.microsoft.com/en-us/library/dd383744%28VS.100%29.aspx">ForAll</a> method with an action delegate instead of iterating over the query with <code>foreach</code></p>
</li>
<li>
<p>Of course, forbid any synchronization (locks, semaphore, &#8230;) inside the operator selectors/predicates. The purest your lambdas are, the better.</p>
</li>
<li>
<p>The functions used with operators should be predictive and stable i.e. not depend on something uncertain time-wise like a network call and should yield approximately the same execution time with each input.</p>
<p>Sure, this is not always possible but if it is, it does prevent the engine from having to repeatedly balance the query execution itself.</p>
</li>
</ul>
<p>The <a href="http://msdn.microsoft.com/en-us/library/dd460688%28VS.100%29.aspx">PLinq MSDN page</a> contains some additional tricks and explanations if you are interested.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2009/08/16/how-to-get-the-max-out-of-your-plinq-query/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GSoC: the now and the next</title>
		<link>http://blog.neteril.org/2009/07/03/gsoc-the-now-and-the-next/</link>
		<comments>http://blog.neteril.org/2009/07/03/gsoc-the-now-and-the-next/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 21:52:21 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Google Summer of Code 2009]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://garuma.wordpress.com/?p=619</guid>
		<description><![CDATA[<p><a href="http://garuma.wordpress.com/2009/04/21/yet-another-round-of-summer-love/">As you may recall</a>, I have the great pleasure to participate again in Google Summer of Code this year with Mono.</p>
<p>Since we are nearing midterm evaluation, I thought about doing a kind of status report like last year. Unfortunately, I haven&#8217;t been as active as I wanted to this time (exams were more time consuming this semester). However there is still some cool stuff that have already landed and which are described next.</p>
<h2>What has been done since last year</h2>
<h3>Actors and Software-transactional-memory goodness</h3>
<p>I took some time to implement rudimentary version of those two parallel programming paradigms earlier this year.</p>
<p>See this <a href="http://garuma.wordpress.com/2009/03/02/exploring-other-concurrency-models/">post</a> which describes in more details the ideas behind them and some examples.</p>
<h3>New more efficient scheduler&#8217;s deque</h3>
<p>The scheduler&#8217;s deque that was used before was quite complex due to the fact that the inherent storage mechanism was based on a doubly linked-list which is rather hard to get right when you add parallel and concurrency constraints (see <a href="http://en.wikipedia.org/wiki/ABA_problem">ABA problem</a> for instance).</p>
<p>The algorithm I was using was mostly designed with C++ in mind where you can mess up with pointers pretty easily and make freely use of CAS on pointers as integers. Since I wanted to avoid any kind of unsafe or native code in the library, I tried to port that algorithm down to C#.</p>
<p>After some mail exchange with a fellow person (hey Susan o/) who was using Mono&#8217;s ParallelFx on a big box in a laboratory, we started to see some concurrency problems with my code. Turns out that the ABA prevention code wasn&#8217;t really working with my C# rewrite. Therefore I decided to hunt for another, more C#-friendly, type of scheduler&#8217;s deque.</p>
<p>Actually, I did find it and it&#8217;s the one used now under the CyclicDeque name. It&#8217;s particularly swift because it only do integer manipulations that are particularly fast with the C# Interlocked methods and doesn&#8217;t suffer of the ABA problem because, using the vast range of values available with 64 bits integers, it&#8217;s based on a forward-only algorithm.</p>
<p>With the tests I was able to do, this new deque works more reliably and faster than the precedent. It&#8217;s currently enabled by default but I need to do some 32 bits checks to see if it behaves as expected on those plateforms.</p>
<h3>New types</h3>
<p>Following the new type introduced as part of my first SoC and the two parallel paradigms I described above, I have done some other parallel and concurrent code to be used both internally and publicly.</p>
<p>One of those is a new collection, ConcurrentSkipList that provides a thread-safe implementation of a skip-list (a nice tree-ish list container). This skip-list implementation is also used for the ConcurrentDictionary type.</p>
<p>The other is a stripped down CountdownEvent called Snzi (Scalable non-zero indicator) that basically do the same thing except that instead of keeping a count record, Snzi just tells in a binary fashion if there is or not a count remaining. That weaker semantic opens the door for more scalable and efficient optimizations.</p>
<h3>Optimizing, fixing and hardening</h3>
<p>The final task that occupied me during the inter-soc period was mostly tuning and bug-fixing the existing parts with a focus on Task reliability and PLinq performance and correctness.</p>
<h2>What have I begin to do for this SoC</h2>
<p>Currently I&#8217;m hard working on the .NET 4 port of Mono&#8217;s ParallelFx as it comes with a whole lot of new stuff and API changes.</p>
<p>The ParallelFx team over at Microsot has been publishing posts these last months about the new things coming down the pipe (check out their <a href="http://blogs.msdn.com/pfxteam/">blog</a> if you still haven&#8217;t do so).</p>
<p>At the moment, the System.Threading.Tasks namespace port is fairly complete and Tasks/Future unit tests are all back to green.</p>
<p>I&#8217;m now working a bit on the Collections namespace, adapting some of my code to the new API (notably ConcurrentDictionary) and seeing how to implement the new Partitioner pattern.</p>
<h2>What to expect next</h2>
<p><img src="http://garuma.files.wordpress.com/2009/07/mono-ireland2.png" alt="mono-ireland" title="mono-ireland" width="411" height="159" class="aligncenter size-full wp-image-626" /></p>
<p>First of all, the following weeks are going to be quite more productive as, with big thanks to <a href="http://monotorrent.blogspot.com/">Alan</a> and <a href="http://tirania.org/blog/">Miguel</a>, I&#8217;m going to spend a month in Dublin hacking in the Novell offices. Looking forward to this.</p>
<p>As for the next, the plan is to continue porting the existing code to .NET 4, first with the Parallel loops class (with probably some further optimizations on data source partitioning) and then PLinq.</p>
<p>In addition, since Mono recently enabled the .NET 4 profile in SVN, some of the ParallelFx code will also soon transition from the google code repository to official Mono&#8217;s trunk for early mass consumption.</p>
<p>Finally, last but not least, I&#8217;m going to devote the rest of the summer to testing ParallelFx more extensively with, both, improving the existing test suite with harder parallel stress-testing and the development of a <a href="http://research.microsoft.com/en-us/projects/chess/">Chess</a>-like parallel correctness checker.</p>
<p>See you at the end of the SoC for another full report <img src='http://blog.neteril.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  .</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://garuma.wordpress.com/2009/04/21/yet-another-round-of-summer-love/">As you may recall</a>, I have the great pleasure to participate again in Google Summer of Code this year with Mono.</p>
<p>Since we are nearing midterm evaluation, I thought about doing a kind of status report like last year. Unfortunately, I haven&#8217;t been as active as I wanted to this time (exams were more time consuming this semester). However there is still some cool stuff that have already landed and which are described next.</p>
<h2>What has been done since last year</h2>
<h3>Actors and Software-transactional-memory goodness</h3>
<p>I took some time to implement rudimentary version of those two parallel programming paradigms earlier this year.</p>
<p>See this <a href="http://garuma.wordpress.com/2009/03/02/exploring-other-concurrency-models/">post</a> which describes in more details the ideas behind them and some examples.</p>
<h3>New more efficient scheduler&#8217;s deque</h3>
<p>The scheduler&#8217;s deque that was used before was quite complex due to the fact that the inherent storage mechanism was based on a doubly linked-list which is rather hard to get right when you add parallel and concurrency constraints (see <a href="http://en.wikipedia.org/wiki/ABA_problem">ABA problem</a> for instance).</p>
<p>The algorithm I was using was mostly designed with C++ in mind where you can mess up with pointers pretty easily and make freely use of CAS on pointers as integers. Since I wanted to avoid any kind of unsafe or native code in the library, I tried to port that algorithm down to C#.</p>
<p>After some mail exchange with a fellow person (hey Susan o/) who was using Mono&#8217;s ParallelFx on a big box in a laboratory, we started to see some concurrency problems with my code. Turns out that the ABA prevention code wasn&#8217;t really working with my C# rewrite. Therefore I decided to hunt for another, more C#-friendly, type of scheduler&#8217;s deque.</p>
<p>Actually, I did find it and it&#8217;s the one used now under the CyclicDeque name. It&#8217;s particularly swift because it only do integer manipulations that are particularly fast with the C# Interlocked methods and doesn&#8217;t suffer of the ABA problem because, using the vast range of values available with 64 bits integers, it&#8217;s based on a forward-only algorithm.</p>
<p>With the tests I was able to do, this new deque works more reliably and faster than the precedent. It&#8217;s currently enabled by default but I need to do some 32 bits checks to see if it behaves as expected on those plateforms.</p>
<h3>New types</h3>
<p>Following the new type introduced as part of my first SoC and the two parallel paradigms I described above, I have done some other parallel and concurrent code to be used both internally and publicly.</p>
<p>One of those is a new collection, ConcurrentSkipList that provides a thread-safe implementation of a skip-list (a nice tree-ish list container). This skip-list implementation is also used for the ConcurrentDictionary type.</p>
<p>The other is a stripped down CountdownEvent called Snzi (Scalable non-zero indicator) that basically do the same thing except that instead of keeping a count record, Snzi just tells in a binary fashion if there is or not a count remaining. That weaker semantic opens the door for more scalable and efficient optimizations.</p>
<h3>Optimizing, fixing and hardening</h3>
<p>The final task that occupied me during the inter-soc period was mostly tuning and bug-fixing the existing parts with a focus on Task reliability and PLinq performance and correctness.</p>
<h2>What have I begin to do for this SoC</h2>
<p>Currently I&#8217;m hard working on the .NET 4 port of Mono&#8217;s ParallelFx as it comes with a whole lot of new stuff and API changes.</p>
<p>The ParallelFx team over at Microsot has been publishing posts these last months about the new things coming down the pipe (check out their <a href="http://blogs.msdn.com/pfxteam/">blog</a> if you still haven&#8217;t do so).</p>
<p>At the moment, the System.Threading.Tasks namespace port is fairly complete and Tasks/Future unit tests are all back to green.</p>
<p>I&#8217;m now working a bit on the Collections namespace, adapting some of my code to the new API (notably ConcurrentDictionary) and seeing how to implement the new Partitioner pattern.</p>
<h2>What to expect next</h2>
<p><img src="http://garuma.files.wordpress.com/2009/07/mono-ireland2.png" alt="mono-ireland" title="mono-ireland" width="411" height="159" class="aligncenter size-full wp-image-626" /></p>
<p>First of all, the following weeks are going to be quite more productive as, with big thanks to <a href="http://monotorrent.blogspot.com/">Alan</a> and <a href="http://tirania.org/blog/">Miguel</a>, I&#8217;m going to spend a month in Dublin hacking in the Novell offices. Looking forward to this.</p>
<p>As for the next, the plan is to continue porting the existing code to .NET 4, first with the Parallel loops class (with probably some further optimizations on data source partitioning) and then PLinq.</p>
<p>In addition, since Mono recently enabled the .NET 4 profile in SVN, some of the ParallelFx code will also soon transition from the google code repository to official Mono&#8217;s trunk for early mass consumption.</p>
<p>Finally, last but not least, I&#8217;m going to devote the rest of the summer to testing ParallelFx more extensively with, both, improving the existing test suite with harder parallel stress-testing and the development of a <a href="http://research.microsoft.com/en-us/projects/chess/">Chess</a>-like parallel correctness checker.</p>
<p>See you at the end of the SoC for another full report <img src='http://blog.neteril.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  .</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2009/07/03/gsoc-the-now-and-the-next/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yet another round of Summer love</title>
		<link>http://blog.neteril.org/2009/04/21/yet-another-round-of-summer-love/</link>
		<comments>http://blog.neteril.org/2009/04/21/yet-another-round-of-summer-love/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 17:33:24 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Google Summer of Code 2009]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://garuma.wordpress.com/?p=481</guid>
		<description><![CDATA[<p style="text-align:center;"><a href="http://garuma.files.wordpress.com/2009/04/2009-summer-of-code-logo-final-r3-01.png"><img class="aligncenter size-full wp-image-482" title="2009-summer-of-code-logo-final-r3-01" src="http://garuma.files.wordpress.com/2009/04/2009-summer-of-code-logo-final-r3-01.png" alt="2009-summer-of-code-logo-final-r3-01" width="305" height="204" /></a></p>
<p>This year again, I will have the pleasure to participate in GSoc, continuing my work on ParallelFx with the Mono folks. Yay !</p>
<p>Basically, my three main tasks will be :</p>
<ol>
<li>Port the code over the new ParallelFx API which is coming in the .NET 4 framework beta</li>
<li>Improve the testing and reliability of the library</li>
<li>Integrate all that stuff into Mono trunk for widespread consumption</li>
</ol>
<p>You can find the <a href="http://socghop.appspot.com/student_project/show/google/gsoc2009/mono/t124022707707">summary</a> of my proposition on the GSoC <a href="http://socghop.appspot.com/">website</a>.</p>
<p>In other news, I opened an identi.ca account where I will report my progress over the summer among other stuff. Check it out at : <a href="http://identi.ca/garuma/all">http://identi.ca/garuma/all</a></p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://garuma.files.wordpress.com/2009/04/2009-summer-of-code-logo-final-r3-01.png"><img class="aligncenter size-full wp-image-482" title="2009-summer-of-code-logo-final-r3-01" src="http://garuma.files.wordpress.com/2009/04/2009-summer-of-code-logo-final-r3-01.png" alt="2009-summer-of-code-logo-final-r3-01" width="305" height="204" /></a></p>
<p>This year again, I will have the pleasure to participate in GSoc, continuing my work on ParallelFx with the Mono folks. Yay !</p>
<p>Basically, my three main tasks will be :</p>
<ol>
<li>Port the code over the new ParallelFx API which is coming in the .NET 4 framework beta</li>
<li>Improve the testing and reliability of the library</li>
<li>Integrate all that stuff into Mono trunk for widespread consumption</li>
</ol>
<p>You can find the <a href="http://socghop.appspot.com/student_project/show/google/gsoc2009/mono/t124022707707">summary</a> of my proposition on the GSoC <a href="http://socghop.appspot.com/">website</a>.</p>
<p>In other news, I opened an identi.ca account where I will report my progress over the summer among other stuff. Check it out at : <a href="http://identi.ca/garuma/all">http://identi.ca/garuma/all</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2009/04/21/yet-another-round-of-summer-love/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
