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.

Tuesday, July 15, 2008

Latest Release - Downloadable

I've packaged together the latest stable release:

extension_reflection.tar.gz

It contains the tests, examples, documentation and headers. It also contains the other Boost libraries that these depend on. Most of the other libraries are used by the examples, but not required for using the headers.

To use the library in your project, just add the root of the extracted directory to your include path (ie, /home/me/downloads/extension-reflection).

If you want to make sure that the tests pass on your system, you will need bjam - see boost.org. Then run the test_redist.sh script. If bjam is not in your path, you'll need to set the variable BOOST_BJAM_PATH. You can also set BOOST_BJAM_OPTIONS if needed.

I'll provide a Windows .bat file in the next release.

For the documentation, I've only updated the Extension reference section. The docs are at extension-reflection/libs/extension/doc/html/index.html in the redistributable. I'll post the latest docs up on this site once I've fixed some of the tutorials.

Feel free to let me know if you have trouble getting the redistributable to work on a given system - it is a work in progress.

Also, it can take a little bit of setup to use Extension without Bjam. If you've worked it out for your compiler/OS, feel free to send me your instructions and I'll try to post them with the documentation.