Task Parallel Library, .NET 4.0’s replacement for ThreadPool, got a face lift for beta 2. In addition to performance improvements, it The most important change is probably the new cancellation framework that replaces parent/child relationships with cancellation tokens that can be freely given to logical groups of tasks.
MacRuby is nearing its first RC for 0.5 and adds support for Grand Central Dispatch. A new IronRuby release is available, Ruby 1.9.2 might be delayed, and Rubinius joins the group of 1.8.7 compliant Ruby implementations.
Philipp Haller and Martin Odersky introduce a type system that enables safe massage transfer in Scala actors. Formalized as an extension of the EPFL Scala compiler, “Object Capability Types” system, based on capability checking and external uniqueness, enforces race safety without sacrificing performance and removes significant limitations on message shape imposed by existing approaches.
Ruby has long been criticized for 1.8's limited green threads. Luc Castera gave a presentation at RubyNation about Concurrent Programming with Ruby and Tuple Spaces. He introduces 2 ways of implementing TupleSpaces in Ruby: Rinda and Blackboard using Redis (with plans to porting it to Erlang).
MacRuby joins the ranks of JRuby and IronRuby and moved away from Ruby 1.9's Global Interpreter Lock (GIL) in the experimental branch.
In this interview from QCon London 2009, Rich Hickey talks about Clojure. The discussion includes the ideas behind Clojure's STM support, what other concurrency primitives Clojure supports and which ones might get added in the future. Other topics covered are Clojure's AOT support, the role and implementation of multimethods, Clojure ports to other systems and much more.
Part of the Ruby language was influenced by functional programming techniques. Larry Diehl brings a declarative concurrent model to Ruby by importing the concept of unification from Oz Language with the Dataflow project.
In an essay on Cilk Arts, Professor Guy Blelloch argues that parallel programming is not intrinsically hard, but rather a question of abstraction. The three problems identified by Blelloch are a lack of training in parallel thinking, separating parallel implementation from algorithms, and determinism. After detailing each, he explains why he thinks they can be overcome.
In a recent podcast, James Gosling talked to Danny Coward about the significance of Sun's new Hotspot garbage collector Garbage First for developers of large-scale enterprise systems.
Coordination Data Structures, CDS, are a new set of thread-safe objects, mostly collections, planned for .NET 4. After about 6 months of silence, there have been some significant updates. Most notably is the inclusion of functional programming techniques to reduce the need for design patterns.
C# 4.0 implemented a change that assured optimized and non -optimized compiles yielded consistent results. This "Fix" emphasized some design problems with locking mechanisms.
Concurrent Basic represents a possible future for Visual Basic. Though based on work done in C# research languages such as Polyphonic C# and C-Omega, Visual Basic was chosen for its inherent predisposition towards declarative programming. The syntax is even inspired by VB’s declarative event handlers.
Jared Parsons proposes a better thread-safe collection. By using a design pattern that strongly encourages, but not enforces, thread-safety, his API is both easy to use and easy to understand.
Clojure is a JVM based LISP with interesting properties for concurrency (persistent data structures, STM). New libraries for Clojure are popping up - and some of them are inspired by Ruby libraries such as HAML, ActiveRecord, Rack, and others. We also look at combining JRuby and Clojure to get the best of both Ruby and LISP world, as well as access to technologies such as STM.
.NET 4 is adding support for tasks. Tasks are lightweight units of work much like queue work items, but with support for waits, continuations, and futures. Tasks can also support parent-child relationships with waits and cancellations being automatically threaded through them.