blob: 5fc0ccd6092875d0c7cc8297d77643596e09bc7e [file] [log] [blame]
Narayan Kamathc981c482012-11-02 10:59:05 +00001namespace Eigen {
2
3/** \page Experimental Experimental parts of Eigen
4
Carlos Hernandez7faaa9f2014-08-05 17:53:32 -07005\eigenAutoToc
Narayan Kamathc981c482012-11-02 10:59:05 +00006
7\section summary Summary
8
9With the 2.0 release, Eigen's API is, to a large extent, stable. However, we wish to retain the freedom to make API incompatible changes. To that effect, we call many parts of Eigen "experimental" which means that they are not subject to API stability guarantee.
10
11Our goal is that for the 2.1 release (expected in July 2009) most of these parts become API-stable too.
12
13We are aware that API stability is a major concern for our users. That's why it's a priority for us to reach it, but at the same time we're being serious about not calling Eigen API-stable too early.
14
15Experimental features may at any time:
16\li be removed;
17\li be subject to an API incompatible change;
18\li introduce API or ABI incompatible changes in your own code if you let them affect your API or ABI.
19
20\section modules Experimental modules
21
22The following modules are considered entirely experimental, and we make no firm API stability guarantee about them for the time being:
23\li SVD
24\li QR
25\li Cholesky
26\li Sparse
27\li Geometry (this one should be mostly stable, but it's a little too early to make a formal guarantee)
28
29\section core Experimental parts of the Core module
30
31In the Core module, the only classes subject to ABI stability guarantee (meaning that you can use it for data members in your public ABI) is:
32\li Matrix
33\li Map
34
35All other classes offer no ABI guarantee, e.g. the layout of their data can be changed.
36
37The only classes subject to (even partial) API stability guarantee (meaning that you can safely construct and use objects) are:
38\li MatrixBase : partial API stability (see below)
39\li Matrix : full API stability (except for experimental stuff inherited from MatrixBase)
40\li Map : full API stability (except for experimental stuff inherited from MatrixBase)
41
42All other classes offer no direct API guarantee, e.g. their methods can be changed; however notice that most classes inherit MatrixBase and that this is where most of their API comes from -- so in practice most of the API is stable.
43
44A few MatrixBase methods are considered experimental, hence not part of any API stability guarantee:
45\li all methods documented as internal
46\li all methods hidden in the Doxygen documentation
47\li all methods marked as experimental
48\li all methods defined in experimental modules
49
50*/
51
52}