Updates on my GSoC project: week 3 of August
I am starting my third month of GSoC and I have been enjoying this project very much.
The second part of this project is to replace boost serialization by Cereal.
I am doing this replacement in this pull
request. One major difference
between boost serialization and cereal is that cereal does not support the
serialization of raw pointers. This is why we have to replace all raw pointers in
mlpack with smart pointers. However, this might require a lot of time and
be subject to replacement errors. Instead, I have created a cereal serialization
wrapper that wraps each raw pointers with a std::unique_ptr
. One should not
forget that the pointers are used everywhere in mlpack. For example, we need to
be able to deal with a vector of pointers and a boost::variant of pointers.
During the last week I have extended this wrapper to support containers of type
std::vector<T*>
and boost::variant<T1*, T2*, T3*...>
I have also managed to serialize arma::mat
using external serialization
function. These features will allow the user to include armadillo before mlpack
without any issue, rather than including mlpack/core.hpp
.
The work on this pull request is close to the end. We can therefore enter the review
process.
In addition to my work on cereal, I have also cherry-picked all commits related to add support for embedded systems in this pull request. At this stage, it provides support for at least 7 different embedded architectures.
Hope you have enjoyed reading this post for this week and as usual, if you want to discuss ideas feel free to catch me on IRC, or leave a comment on these pull requests if you have any opinion on this work.