Re: [eigen] Eigen2 to Eigen3 Migration Path

[ Thread Index | Date Index | More Archives ]

2011/1/12 Benoit Jacob <jacob.benoit.1@xxxxxxxxx>:
> 2011/1/12 Benoit Jacob <jacob.benoit.1@xxxxxxxxx>:
>> OK, thought about this some more.
>> If EIGEN2_SUPPORT doesn't work for you, then here's what you can do:
>>  * about the namespace & mangling: go ahead with your Eigen -> Eigen3
>> renaming, this is a non-issue.
> Ah wait ... :) the linking is indeed a non-issue, but at compilation
> time, if the same file includes another library's headers that uses
> Eigen3 with the Eigen namespace non-renamed, this will fail.

ok last spam... sorry about the noise, there is a linking issue if a
binary library uses Eigen types in its API.

But this is actually also an argument against the EIGEN2_SUPPORT way.

Indeed, Eigen's type don't mangle in the same way between Eigen2 and
Eigen3, due to different default values of template parameters.

For example, in Eigen2, Matrix3f is Matrix<float,3,3,2,3,3>
But in Eigen3, Matrix3f is Matrix<float,3,3,0,3,3>

So the EIGEN2_SUPPORT solution won't solve linking issues.

At this point I still think that we should go on with the invasive
Eigen->Eigen3, EIGEN_->EIGEN3_ change. We can announce this change
very loudly. For users, adapting to it just some search&replace:
   namespace Eigen   ->  namespace Eigen3
   Eigen::   ->   Eigen3::
   EIGEN_   ->    EIGEN3_


> Benoit
>> Indeed, every .cpp files that makes
>> Eigen calls, #includes the corresponding Eigen sources itself, so it
>> will never have to link to another object file to find a function
>> definition. This means that the only bad effect of this namespace
>> renaming is at worst to have redundant code (the same function
>> compiled with Eigen and with Eigen3) which is not a big deal since
>> it's temporary. You won't get linking failures, and you won't
>> accidentally link to the wrong function definition.
>>  * about the include guards and macros, first of all check if it is
>> really the case that a single .cpp file really needs to include both
>> eigen2 and eigen3, as opposed to separate .cpp files, some linking to
>> eigen2 and some to eigen3 ?
>> Benoit
>> 2011/1/12 Benoit Jacob <jacob.benoit.1@xxxxxxxxx>:
>>> 2011/1/12 Gael Guennebaud <gael.guennebaud@xxxxxxxxx>:
>>>> On Wed, Jan 12, 2011 at 1:57 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
>>>>> The trivial solution would have been to replace Eigen by Eigen3 and
>>>>> EIGEN_ by EIGEN3_ everywhere in the Eigen3 sources, but that is quite
>>>>> invasive at this stage.
>>>>> However, given that that solves the problem once and for all, also for
>>>>> any future version, it's quite tempting.
>>>>> Would you agree with such a change?
>>>> but think about the hundreds of projects which are already using
>>>> Eigen3... I'm afraid this is much too late for such a change. Let's
>>>> first see whether EIGEN2_SUPPORT could not solve the issue.
>>> My assumption here was that Eigen2 still has many more users than
>>> Eigen3 has, but indeed experimental data proves me wrong:
>>> I copied the list of visited pages on our website with number of
>>> visits in January 2011, and did:
>>> bjacob@cahouette:~$ grep /dox/ stats | cut -f 2 -d ' ' | awk '{ SUM +=
>>> $1} END { print SUM }'
>>> 663
>>> bjacob@cahouette:~$ grep /dox\-devel/ stats | cut -f 2 -d ' ' | awk '{
>>> SUM += $1} END { print SUM }'
>>> 617
>>> So we seem to have almost as many users on Eigen3 as we have on Eigen2.
>>> Solving the present problem with EIGEN2_SUPPORT would be great indeed.
>>> Let's wait to hear back from Tully about that. We can probably extend
>>> EIGEN2_SUPPORT to do many more things you may need.
>>> Benoit
>>>> gael

Mail converted by MHonArc 2.6.19+