Saturday, July 26, 2008

Final Changes Before Review

Since I presented these libraries at BoostCon in May, I've been working to address a few of the feature requests mentioned there, and clean up the library for review for inclusion in Boost.

I could use your feedback on the following:

1 - What do you think is missing in the libraries?
2 - Have you had any problems getting them to work? Which OS? Compiler?
3 - I've updated the first three tutorials quite recently. Are they clear enough?
4 - I've updated the header references recently (with Doxygen). Are those docs clear enough?
5 - Anything else you can think of.

Feel free to post a comment to this blog, or to send me an e-mail at rostovpack [at] gmail [dot] com.

Just as a heads up, here are the things I plan to finish before review:

The library headers themselves:

1 - Add an optimization for the case where factories or reflected functions with unknown parameters are called.
2 - Move the entirety of the Boost.Reflection library to the boost::extensions namespace and the boost/extension directory (because of how much the libraries overlap, I'd like to have them together for review).

The documentation:

1 - About 10 total tutorials - 3 are up to date, and one more is just about finished. The remaining tutorials will cover calling functions without knowing their signatures, compiling and loading new shared libraries at run-time (ie, c++ interpretation), reference-counting within shared libraries, storing version information etc. with factories, and some related topics.
2 - Rewrite performance analysis section to take into account recent changes.
3 - Expand FAQ and appendices.
4 - Add installation instructions.

The examples:

1 - Examples for each of the tutorials listed.
2 - An example plugin-based image processing system.
3 - An example using GCCXML to automatically generate factory or reflection declarations.

The build files:

1 - I need to clean up and simplify the Jamfiles. I need to use some of the less well-documented features of Boost.Build to do it.

Once the above are done, I plan to submit the library for review.

While reading the docs, the main page lists at the bottom all of the parts that have been updated recently. Those are the most useful parts to read.

If there's anything else that you want to see, please let me know.

The redistributable is on the left in tar.gz format.


Boris said...

Hi Jeremy,

first thank you very much for the extension library! I've been using the February build for some months which worked fine! Now I downloaded the July build and was surprised to see so many directories in the TAR archive which contain files which belong to other Boost libraries. Is this intentional? Do your libraries depend on some changes in other libraries and you decided to ship these changes in the TAR archive? I wonder as I'd like to use the latest version of Boost.Extension but I don't want to mess up other Boost libraries accidently. Is it sufficient to copy the boost\extension directory to my Boost root directory?


Jeremy Pack said...


Yes! You can just move the boost/extension directory to your Boost tree. The other directories are only for people who want to download the library but not the rest of Boost.

You're doing it the right way.

I'll write a post to address this more clearly.


Roland said...

Hi Jeremy,

just read about your library on the boost mailing list and skimmed over the documentation (also took a short peek into the code to see, if you are using dlopen, too).

Very nice indeed. I did something similar in my current project, but if I should have to port it to Windows, this is what I'll be looking at :-)