Dear hAkkers,
Akka 2.0 has been out since almost 40 days, and so far the echo has been nearly unanimously positive! But of course a few things have popped up, warranting a bug-fix release. Going through the changes below you will find several tweaks and small improvements, with the notable exception of the akka-zeromq module, which comes with vastly improved performance and a few fixed bugs (assertion failures in native code).
Provided that you have not been naughty and accessed “private[akka]” parts, this release should be binary compatible with release 2.0. If something breaks, which you think should not have broken, please yell (this is one more reason to try out the Release Candidates!). In any case, the work-around is to recompile.
Summary of Changes
2.0.1 is the result of a collaboration of 7 contributors (about half by “non-core” developers, thank you very much!) and weighs in at 65 commits with 81 files changed, 1114 additions and 611 deletions. Please refer to the full git log at the end for the gory details.
• improved Java API for accessing singletons like akka.routing.CurrentRoutees and friends (also our beloved PoisonPill)
• reject invalid ActorSystem names which lead to problems when going remote (essentially must be valid hostname components now)
• fixed a live-lock in ForkJoinPool which could occur under rare circumstances with parallelism levels 2 or 4
• reduced overhead of using ask(): less memory footprint and lazy registration
• improvements and fixes for documentation (ScalaDoc as well as reStructuredText)
• make cause and message of AskTimeoutException accessible
• make SmallestMailboxRouter config serializable (this might require recompilation of classes mixing in SmallestMailboxLike)
• fix SmallestMailboxRouter crash upon sending
• make RemoteLifeCycleEvents serializable
• fix TestActorRef for actors setting ReceiveTimeout in constructor
• fix zeromq performance and instabilities by running the polling loop only on the same thread as all other activities for the socket
• never restart zeromq socket actors in case of fatal socket errors
• opened up visibility of RemoteTransport.send() and notifyListeners()
Akka is released under the Apache V2 license.
Website:
Maven repository:
Binary distribution:
Documentation:
Issue tracker:
Mailing list:
Git Shortlog
Havoc Pennington (1):
Add a warning to Future methods that take an async callback.
Jean-François Im (1):
Added imports for things moved to akka.pattern._
Mathias Doenitz (6):
Small optimization in FiniteDuration.equals
Fix PromiseActorRef bang potentially throwing IllegalStateException
Make provider registration of PromiseActorRefs lazy
Improve PromiseActorRef as per team comments
Another round of improvements to PromiseActorRef
Decrease memory footprint of PromiseActorRef by ca. 30% (two ref fields)
Peter Vlugter (1):
Only build the akka sbt plugin against scala 2.9.1
Roland Kuhn (17):
add section on when to use typed actors
link to letitcrash post from typed-actors.rst
remove sjson and h2Lzf dependencies, see #1900
fix TestKit class scaladoc
rewrite ZeroMQ poll loop
remove debug-Thread.sleep
bump version of scala-bindings to 0.0.5
incorporate Viktor’s review (part 1)
fix over-eager polling in zeromq
clarify typographic error in general/remoting.rst
reject invalid ActorSystem names, see #1898
fix CallingThreadMailbox.hasMessages, see #1918
fix stopping of actors in RouterConfig spec, see #1974
fix CallingThreadMailbox.numberOfMessages
re-add akka.serialization.Compression and friends, to keep binary compat
add Java API for most case objects
incorporate Viktor’s review
Vibul Imtarnasan (6):
Added more dispatcher info.
Update akka-docs/scala/dispatchers.rst
Added _TestCallingThreadDispatcherRef
Update as per Roland Kuhn's suggestions
Added more dispatcher descriptions
Update akka-docs/scala/dispatchers.rst
Viktor Klang (29):
#1891 - Adding cause and message to AskTimeoutException
Removing lie in docs
New implementation of smallest mailbox router
Making sure that the code works....
Collapsing some logic
Additional simplifications to smallestmailboxrouter
Introducing so that suspended actorrefs are just better than the dlq
Adding some more docs to the SmallestMailboxFirstRouter
#1894 - Switching to jsr166y.ThreadLocalRandom
#1904 - Clearing up performance aspects of using ask
#1905 - fixing links to ScalaDoc in the Akka Docs
#1906 - Clarified the development process
#1902 - Adding docs in Serialization Java/Scala for deep serialization using EventSourcing
Making sure that we only publish the truth about watch/unwatch
Switching to - instead of filterNot
Switching to the faster append and removed a relative import
Switching to TreeSet, which should also receive quite some performance enhancements in Scala 2.10
Fixing merge conflicts on the EventBus
Making RLCE Serializable and making RemoteTransport in events @transient
Reverting back to the 2.0 code for the Actorclassification, pending the issue of binary compatibility
#1964 - Fixing doc example mistake in 0mq docs, no review
#1957 - Adding warning section regarding jarjar and akka configuration
#1958 - adding docs for lifecycle hook-parameters
Manual patch of Doug Leas fix to ForkJoinPool
Do not tinker with the 0mq socket for the ConnectionSocketActor on Restart
deprecation annotation on package object does not compile.
#1971 - Changing to 2.0.1-SNAPSHOT
#1982 - Opening up the send and notifyListeners methods on RemoteTransport so 3rd parties can extend it properly
#1931 - correcting logging config examples
Happy hAkking!
Cheers,
√
--
Viktor Klang
Akka Tech LeadTypesafe - The software stack for applications that scale
Twitter: @viktorklang