Which Eigen version is included in this repository?
JanosGit opened this issue · 3 comments
While trying to integrate RTNeural into a larger project that already has some dependencies, including Eigen, I wanted to find out which Eigen version is bundled in this repository. Looking at the sources I found this
RTNeural/modules/Eigen/Eigen/src/Core/util/Macros.h
Lines 19 to 21 in b8dc376
which indicates version 3.4.90. However, the latest stable release is 3.4.0 and 3.4.1 seems to be under development at the time of writing. Are you using a modified Eigen implementation? I found no explanation on the Eigen version required or which version is bundled here, so I'd be happy if you could first of all explain how to interpret that version number, which official Eigen versions are expected to work and how you generally expect RTNeural to be integrated in projects that already have other dependencies to Eigen and might already include Eigen via other ways?
Hi Janos,
Thanks for the question. The version of Eigen currently in RTNeural is commit 59b3ef5409452095e27e8d39a2ca81139bb8c971 from the main Eigen repo. I can't remember off the top of my head why I didn't use a tagged release, but I imagine pretty much any version of Eigen from the past 2 years or so should work fine with RTNeural.
In the future, I'll figure out a better way to document the Eigen version when it gets updated, so the Eigen version is more obvious to folks using RTNeural.
Looking forward to seeing what you're working on :)
Thanks for the quick response and the clarification. Looking at the Eigen repo, it seems that eigen uses these .9x version numbers to indicate that they are somewhere in between releases, I wasn't aware of that.
Did you consider integrating your third party dependencies as git submodules rather than copying them into the repository? This would make the versions you are using clear and allows the user to either clone the submodules or leave them uninitialised in case they want to use their own instances of those dependencies.
Furthermore, injecting the dependencies from other sources requires slight changes to the CMakeLists. I already did that on an internal fork of the repo a while ago, I'll see if I find some time to clean that up and make up a little pull request.
Anyway, thanks for sharing RTNeural with us and keep an eye on our product releases to find out what we have been working on soon... ;)
Thanks for the quick response and the clarification. Looking at the Eigen repo, it seems that eigen uses these .9x version numbers to indicate that they are somewhere in between releases, I wasn't aware of that.
Yeah, that was news to me as well.
Did you consider integrating your third party dependencies as git submodules rather than copying them into the repository? This would make the versions you are using clear and allows the user to either clone the submodules or leave them uninitialised in case they want to use their own instances of those dependencies.
Yes, I had thought about that, the reason why I chose not to include Eigen as a submodule is that the Eigen repo seemed to be fairly large, and contained a lot of files that weren't necessary for actually using the library. That said, maybe switching to a submodule there would still be the best choice.
Furthermore, injecting the dependencies from other sources requires slight changes to the CMakeLists. I already did that on an internal fork of the repo a while ago, I'll see if I find some time to clean that up and make up a little pull request.
That makes sense... so maybe having a CMake option like RTNEURAL_EIGEN_DIR
which the user can point to their own version if they want to? It might be good to do something similar for the other internal dependencies (XSIMD, nlohmann::json) to help users avoid conflicts.