On Sun, 22 Nov 2020 10:28:51 +0100
Juan Jose Garcia-Ripoll <
juanjose.g...@gmail.com> wrote:
> Hi,
>
> due to some personal projects, I need to reboot some of the features
> of the tensor library.
>
> In the short term, I will migrate this library (and cblapack, mps,
> mps-bundle) to cmake. I have been studying this and it would
> definitely simplify migration to Microsoft VS, which is a priority
> for my group.
>
> In the mid-term (a few months), I would like to upgrade the code to
> support C++11 or, even better, C++17. There are features that are
> important in this, such as thread-safe shared pointers, which the
> library currently does not have. Also, move optimizations might
> simplify some of the code, and constexpr optimizations and a bit of
> more clever template metaprogramming (optional) would be interesting
> for some of those projects I need to pursue.
>
> I would like to hear the thoughts of people around.
I think I already lobbied for both features some time ago. :)
I definitely think that the tensor library should support C++11.
With C++-17 you have to be a bit careful AFAIR, because one or the
other feature is not implemented yet or something (for example, the
not latest gcc for current Debian stable has an extra library for
std::filesystem, which is a bit cumbersome), but there should be plenty
of room for constexpr and move optimizations in any case.
For CMake, I not only vote for the modification, but would volunteer
to assist. I happened to have migrated two major, somewhat shrewd
applications at our company this year, so I guess this qualifies as
professional (though I have somewhat less experience with cross-platform
development, anwyay).
To start, I would recommend the book "Professional CMake", which
contains also more exotic issues, and is rather cheap (at $30 netto)
https://crascit.com/professional-cmake/. At least when we looked for
references a year ago, this was the only good text we found.
Some other thoughts:
* This is a major change also with respect to compatibility, so one
could consider what to do with the then "legacy" code (there should
be at least a release, do you want to support it in case of bugfixes
etc.). Should there be something like versioning?
* Personally, in case I participate here, I would prefer specific
work packages, because I have other projects to take care of etc. So
some advance planning where to go, and how to cut the work into,
preferably independent, pieces, might be helpful.
Ulf