Conversation
|
What are the other boost headers that we're using? |
This is the minimal set to compile cleanly on Ubuntu. We need to add a few platform-specific headers to make it work on other platforms. We can inline boost today and work on replacing the boost headers that are redundant with C++11 step by step. |
|
Do we have an easy way to regenerate the minimal set of needed headers as we remove? If not, it might be easier to convert the low hanging fruit to C++11 before embedding boost? |
|
We can easily recreate the minimal set. I have compiled with I'll document the process so that it's easy to apply everywhere. |
This reverts commit 2482ba4.
|
Hi @krlmlr, I ran this against RSPM binary build setup and nearly all of the 40 builds were successful. All CentOS 7 builds did fail though, with the errors below. Against R 3.3, 3.4, 3.5 it fails with: vendor/boost/type_traits/is_function.hpp:23:59: fatal error: boost/type_traits/detail/is_function_cxx_03.hpp: No such file or directory Against R 3.6, 4.0 it fails with: vendor/boost/type_traits/detail/has_binary_operator.hpp:90:48: fatal error: boost/type_traits/is_fundamental.hpp: No such file or directory |
|
Thanks! I'll see if I can replicate with r-hub, and add the missing headers either way. I'll respond here. |
|
@bdeitte: Thanks, I've added more headers, could you please recheck on CentOS 7? Unfortunately, rhub currently doesn't seem to support that platform. |
|
I'm also wondering if it's worthwhile trying to determine the minimum set of necessary files. Currently this PR amounts to 18.5 MB of extra header files, if I include all relevant headers we'd add "only" 8.5 MB extra. It may be better to check which top-level headers actually bring in how many extra headers. @bdeitte: If the current version doesn't build out of the box, could you please check the |
|
Turns out we don't save anything at all by eliminating the low-hanging fruit, we need to get rid of Full analysis at https://rpubs.com/krlmlr/boost-sizes. |
|
I tried both of the variations that failed above, and the newer R version one is successful now. The older R version is failing with: I then tried f-bh-full and that did work. |
|
Also just so it's clear here, the big issue that we hope to solve with inlining is not to reduce the size of all files included but the number of files. Of course, having everything smaller is nice too. 😄 |
|
Thanks. I see that without a full test suite for all relevant OSes it's not worthwhile minimizing the headers to be included. I think if the binary is installed the files in Right now Boost adds ~2300 files. In practice I think if users on slow file systems use binary packages they should be fine. |
|
We could probably replace the |
|
Thanks for your help! |
|
Hi, older versions of R (3.4.1, for instance) fail when compiling the current version due to a missing |
|
Thanks, can you please open a new issue? We check R 3.4.1 on CI/CD, what operating system are you using? |
|
(Not R 3.4.1 but the latest R 3.4. This might make a difference indeed.) |
Documentation follows. Key code chunks: