@Neverlord Neverlord released this Jul 23, 2014 · 3163 commits to master since this release

Assets 2

The first release under the new name libcaf is an overhaul of the entire library. Some classes have been renamed or relocated, others have been removed. The purpose of this refactoring was to make the library easier to grasp and to make its API more consistent. All classes now live in the namespace caf and all headers have the top level folder caf instead of cppa. For example, #include "cppa/actor.hpp" becomes #include "caf/actor.hpp". Further, the convenience header to get all parts of the user API is now "caf/all.hpp". The networking has been separated from the core library. To get the networking components, simply include "caf/io/all.hpp" and use the namespace caf::io, e.g., caf::io::remote_actor.

Version 0.10 still includes the header cppa/cppa.hpp to make the transition process for users easier and to not break existing code right away. The header defines the namespace cppa as an alias for caf. Furthermore, it provides implementations or type aliases for renamed or removed classes such as cow_tuple. You won't get any warning about deprecated headers with 0.10. However, we will add this warnings in the next library version and remove deprecated code eventually.

Even when using the backwards compatibility header, the new library has breaking changes. For instance, guard expressions have been removed entirely. The reasoning behind this decision is that we already have projections to modify the outcome of a match. Guard expressions add little expressive power to the library but a whole lot of code that is hard to maintain in the long run due to its complexity. Using projections to not only perform type conversions but also to restrict values is the more natural choice.

Please visit the migration guide in the manual for a detailed list of changes.