Hello!
Here is idea that I want to discuss with users of the C++ version of ALGLIB.
ALGLIB is huge. For example, C++ version includes 208 source files with total size equals to 3.4 Mbytes. Of course, all this can be reduced to just one library file and... hmmm... 104 headers (
just 104!) by typing 'build' into command line. But sometimes users don't want to use ALGLIB build system – they want to include source files into their project (for one or another reason). However, 104 is too much when you talk about units in your project.
The idea is to merge all ALGLIB units into one large file alglib.cpp with four smaller support files. It is much more easier to work with 5 files than to work with 104. So anyone may use ALGLIB build system or just include these 5 files into his project.
Another idea I want to discuss is reimplementation of ALGLIB computational core in C (interface will remain C++, only implementation will change).
Why C? Well, I already have pure C version of ALGLIB (it was developed for planned ALGLIB-Python interface). This “Pure-C-ALGLIB” will use multithreading, SSE intrinsics (on x86) or other types of CPU-specific tuning (on non-x86 platforms). Of course, same optimizations can be applied to the C++ version, but it simpler to optimize just one version (written in C) instead of two (C and C++). It is possible, but will slow down ALGLIB development.
I know that both ideas aren't perfect. “One large file” will be approximately 3.4 Mbytes large which is not good. From the other side, what is better – 208 small files or one large? As for using C language... Idea of “C core” may have drawbacks which I don't see now. So I want to discuss these questions with ALGLIB users.
Anyone is welcomed to comment!
P.S. I've made two small slides which can be downloaded from
http://www.alglib.net/share/announce/cpp-redesign-1.gifhttp://www.alglib.net/share/announce/cpp-redesign-2.gifThey contain graphical representation of what was said above.