Info about 3.0

From Eigen
Revision as of 13:52, 21 December 2016 by Ggael (Talk | contribs)

Jump to: navigation, search
This page was written in November 2009 in the run-up to Eigen 3.0 and has not been kept up-to-date when Eigen 3.0 was released. It is kept for historical reasons.

What is Eigen 3.0?

Eigen 3.0 is the future next major version of Eigen. It is currently under development in the default branch in our Mercurial repository. It is not API or ABI compatible with Eigen 2.0, whence the version number increase to 3.0. However, we expect porting to 3.0 to be relatively easy and are doing our best in that direction. Eigen 3.0 is co-installable with Eigen 2.0. We will also provide extensive porting documentation.

Betas have been released.

What does there remain to do for 3.0?

Look at the tree of remaining blockers. Indeed, we now rely entirely on bugzilla to track to-do items.

What are the main areas of improvement between 2.0 and 3.0?

Eigen 3.0 is a major improvement on all fronts. Performance is improved everywhere. The API is much more future-proof, allowing for a long series of compatible 3.x releases. The algorithms are more reliable, in a way that was not always possible to achieve with the 2.0 API. Finally, Eigen 3.0 has a huge number of useful new features and even many whole new modules.

You can find more info about that in the 3.0 page.

What is the list of new features and improvements between 2.0 and 3.0?

We haven't yet written such a document. We will do that for the 3.0 final release. Some info about that is in the 3.0-beta1 page.

How are you helping us porting code from Eigen 2.0 to 3.0?

In two main ways.

  • First, with Eigen 3, if you define EIGEN2_SUPPORT before including Eigen headers, a large part of the Eigen 2 API is supported.
  • Second, here is a page on porting from Eigen 2 to Eigen 3, with a lot of tips.

Do you plan to keep API compatibility for a longer period after 3.0?

Yes. We plan to enter a series of 3.x releases that will be fully compatible, only adding new API but not changing or removing existing API.