GPars (formerly GParallelizer) 0.10 Check out the JIRA release notes at http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=12030&version=15793 Project changes See http://gpars.codehaus.org/Breaking+Changes for the list of breaking changes. Parallel collections * Renamed the Parallelizer and Asynchronizer classes to more appropriate GParsPool and GParsExecutorsPool as well as their methods * Enabled asynchronous closures inside the GParsPool.withPool() methods * Reorganized the asynchronous closure invocation functionality * Unified the GParsPool and GParsExecutorsPool functionality to eliminate the need to combine uses of the two classes * Improved the map/reduce performance by eliminating unnecessary conversions * Seed values are now allowed for fold() and reduce() methods * Added findAnyParallel() and countParallel() methods Fork / Join * Simplified API to define Fork/Join calculation without the need to create explicit subclasses Actors * Restructured actor grouping in order to unify it with agent and dataflow task grouping * The implicit _call()_ method can be used to send messages GroovyCSP * Added a JCSP-wrapping CSP implementation Dataflow * A _maxForks_ flag has been added to allow Dataflow operators to internally work concurrently * Added support for grouping operators and tasks around shared thread pools Safe * Reimplemented to increase performance * Added support for grouping Safe instances around shared thread pools * Added agent error handling capabilities * Renamed to *Agent* * The implicit _call()_ method can be used to update the agent Other * Dependency on Jetty has been made optional * Automated upload of downloadable artifacts * OSGi support for the GPars jar 0.9 Check out the JIRA release notes at http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=12030&version=15702 Project changes * Moved to Codehaus - http://gpars.codehaus.org * Provided a User Guide - http://www.gpars.org/guide/index.html * Changed the package structure * Fully built using Gradle * Continually built on JetBrains public TeamCity site (http://teamcity.jetbrains.com/) and on Codehaus Bamboo (http://bamboo.ci.codehaus.org/browse/GPARS-DEF) * Experimental OSGi support Parallel collections * Map/Reduce * Transparently parallel methods added allowing to change the sequential semantics of the usual each(), collect() and such methods to a concurrent one * Parallel methods renamed from xxxAsync to xxxParallel to better capture the nature of the methods. E. g. eachAsync() is now eachParallel(). * New parallel methods added - groupByParallel(), minParallel(), maxParallel(), sumParallel(), foldParallel(), grepParallel() * The allParallel() method renamed to everyParallel() * The withParallelizer() and withAsynchronizer() methods have been renamed to doParallel() Actors * No need to start actors explicitly after calling the _actor()_ factory method * Enabled receive() for blocking message read in event-driven actors * Removed thread-bound actors * Created a DSL to add message handlers to DynamicDispatchActor at construction time * The sendAndContinue() method * Performance improvements * Reorganized daemon and non-daemon actor groups * Resizeable thread-pool used by the default actor group * Modified the reply mechanism * The message sender property has been added to messages Dataflow * Lightweight Dataflow Tasks added * Full-blown Dataflow Operators created * The DataFlows class added to provide a convenient container for dataflow variables indexed by either a name or a number * Bound handlers through the >> operator - register closures, which will get invoked once the dataflow variable gets bound to a value Safe * An await() method added to allow callers to synchronize with the agent * Higher reader priority supported Other * Levering GroovyDSL API in IntelliJ IDEA to get IDE support for GPars DSLs * Added Fork / Join convenience abstraction for hierarchical (divide and conquer) tasks 0.8.4 DataFlows Improved Gradle build Maintenance 0.8.3 Enabled Gradle builds Uploaded into a maven repository 0.8.2 Updated for groovy 1.6.4 Added the await() method to the SafeVariable class Added the instantVal property to the SafeVariable class to prioritize read requests 0.8.1 Added SafeVariable Migrated DataFlowStream to Java Fixed problem with nested actor creation closures Added short-hand methods for concurrent collection processing to Asynchronizer and Parallelizer 0.8 Added DataFlow concurrency support Added sendAndWait() methods to actors to block the caller until a reply arrives Added an experimental option to use the JSR-166y ForkJoin pool for actors Enabled thread-bound actors to reuse threads from a resizeable common pool Added AsyncEnhancer and ParallelEnhancer classes enabling asynchronous collection processing through meta-class enhancements Restructured actor groups with respect to the thread-bound actor thread reuse and Fork/Join pool support Supported @Immutable for messages Ability to join actors to await their termination Ability to suspend actor and message enhancements for replies, which has impact on message delivery speed Restructured actor classes to increase code reuse Removed the beforeStop() lifecycle method from actors Fixed the event-driven actor's loop, when no react is called DynamicDispatchActor added to allow for an alternative message handling syntax - dynamic method dispatch to multiple onMessage() methods Added a Reactor implementation - a special purpose actor, which after receiving a message runs its body with the message as a parameter and the result of the code is send in reply. Several performance benchmarks included Minor performance optimizations Bugfixing 0.7 Reply methods for thread-bound actors Reply methods available on received messages Ability to send replies between thread-bound and event-driven actors in both directions Documented structuring actors code and implementing event-driven loops Overloaded the << operator to perform send Handling multiple messages in single receive/react Actor groups, multiple independent configurable thread pools Gradle build script 0.6 Event-driven (pooled) actors 0.5 Mixin support The act() method wrapped with TimeCategory to allow for time DSL in receive() calls 0.4 Actors added 0.3 Set default pool size to Ncpu + 1, where Ncpu is the number of CPU in the system. Made pool threads to be non-daemon. Updated documentation. 0.2 Enabled calling withParallelizer() and withAsynchronizer() methods on any object. 0.1 Initial release of the core functionality for both Parallelizer, which uses JSR-166y Parallel Arrays, and Asynchronizer, which uses Java's executor services.