[announce] mirror-lib 0.5.2 released

Dear list, I would like to announce that a new version of the Mirror reflection library is available for download from SourceForge: http://sourceforge.net/projects/mirror-lib/files/mirror-lib-0.5.2/ Since version 0.5.0, Mirror is being developed outside the boost namespace, but the directory linked above contains also a 'boostified' version of the sources with Jamfiles etc. Besides the docs package, the documentation is also hosted online here: http://kifri.fri.uniza.sk/~chochlik/mirror-lib/html/ To get the idea what the library can do you can look at the examples. http://kifri.fri.uniza.sk/~chochlik/mirror-lib/html/examples.html Some screenshots of input dialogs generated by the factory generator utility can be found here: http://kifri.fri.uniza.sk/~chochlik/mirror-lib/html/mirror__wx__gui__fact__e... NOTE: Since Mirror uses C++1x AFAIK it will currently compile only with gcc (tested with gcc 4.5.1 and 4.5.2 64-bit on Linux and 4.5.1 on cywin) Questions, comments, feedback or potential contributions are always appreciated. Best regards, Matus

On 1/14/2011 8:52 AM, Matus Chochlik wrote:
Dear list,
I would like to announce that a new version of the Mirror reflection library is available for download from SourceForge:
http://sourceforge.net/projects/mirror-lib/files/mirror-lib-0.5.2/
It would be easier if this were in the Boost sandbox. But that's up to you.
Since version 0.5.0, Mirror is being developed outside the boost namespace, but the directory linked above contains also a 'boostified' version of the sources with Jamfiles etc.
Besides the docs package, the documentation is also hosted online here:
Quickly looking at the doc, what would be the reason for run-time reflection of templates, since they are a compile-time mechanism ?

On Fri, Jan 14, 2011 at 3:05 PM, Edward Diener <eldiener@tropicsoft.com> wrote:
On 1/14/2011 8:52 AM, Matus Chochlik wrote:
Dear list,
I would like to announce that a new version of the Mirror reflection library is available for download from SourceForge:
http://sourceforge.net/projects/mirror-lib/files/mirror-lib-0.5.2/
It would be easier if this were in the Boost sandbox. But that's up to you.
There is also a Git Repository here: git clone git://mirror-lib.git.sourceforge.net/gitroot/mirror-lib/mirror-lib I've used Subversion in the past, but last year I decided to switch to Git which (I really don't want to start the whole discussion again) I personally find to be "better". If there is sufficient interest I might set up a script that would commit the 'boostified' sources to the Sandbox and let cron invoke it (daily, weekly,..)
Since version 0.5.0, Mirror is being developed outside the boost namespace, but the directory linked above contains also a 'boostified' version of the sources with Jamfiles etc.
Besides the docs package, the documentation is also hosted online here:
Quickly looking at the doc, what would be the reason for run-time reflection of templates, since they are a compile-time mechanism ?
Well one reason is that I want the compile-time and the run-time interface to be consistent with each other. But besides that i think, that it might be useful to have the ability to iterate through meta-objects reflecting the individual template parameters at run time, examine them, create instances, etc. But I don't claim to have any groundbreaking application for that. Currently the whole run-time layer is still very experimental.

On 1/14/2011 9:22 AM, Matus Chochlik wrote:
On Fri, Jan 14, 2011 at 3:05 PM, Edward Diener<eldiener@tropicsoft.com> wrote:
On 1/14/2011 8:52 AM, Matus Chochlik wrote:
Dear list,
I would like to announce that a new version of the Mirror reflection library is available for download from SourceForge:
http://sourceforge.net/projects/mirror-lib/files/mirror-lib-0.5.2/
It would be easier if this were in the Boost sandbox. But that's up to you.
There is also a Git Repository here:
git clone git://mirror-lib.git.sourceforge.net/gitroot/mirror-lib/mirror-lib
I see this. Thanks ! It will be a good excuse for me to learn git.
I've used Subversion in the past, but last year I decided to switch to Git which (I really don't want to start the whole discussion again) I personally find to be "better".
If there is sufficient interest I might set up a script that would commit the 'boostified' sources to the Sandbox and let cron invoke it (daily, weekly,..)
Since version 0.5.0, Mirror is being developed outside the boost namespace, but the directory linked above contains also a 'boostified' version of the sources with Jamfiles etc.
Besides the docs package, the documentation is also hosted online here:
Quickly looking at the doc, what would be the reason for run-time reflection of templates, since they are a compile-time mechanism ?
Well one reason is that I want the compile-time and the run-time interface to be consistent with each other.
Sometimes consistency is a false goal when it serves no practical use. There is also a very famous quote about consistency by the writer Ralph Waldo Emerson which you can look up if you like.
But besides that i think, that it might be useful to have the ability to iterate through meta-objects reflecting the individual template parameters at run time, examine them, create instances, etc.
Instantiating templates at run-time to create types appears very daunting to me since this is what a compiler does at compile-time.
But I don't claim to have any groundbreaking application for that. Currently the whole run-time layer is still very experimental.
I would suggest that you leave out run-time reflection of templates as having no real use, since run-time code deals with types and objects and templates are neither ( they are compile-time type factories so to speak ). The rest of your library is very interesting. I still believe, although it is a huge undertaking as you have probably experienced, that C++ run-time reflection can be a valuable resource, especially in the area of creating a RAD development environment. So I applaud your effort. For RAD programming Borland showed this could be done with C++ Builder and Microsoft improved upon it with C++/CLI, but both needed language changes/additions and neither was pure C++ standard.

[snip]
There is also a Git Repository here:
git clone git://mirror-lib.git.sourceforge.net/gitroot/mirror-lib/mirror-lib
I see this. Thanks ! It will be a good excuse for me to learn git.
Once you have cloned the repository with the command above you basically need just 'git pull' to fetch and merge any new changes. But having said that, I don't want to discourage you from learning other Git commands ;)
[snip]
Well one reason is that I want the compile-time and the run-time interface to be consistent with each other.
Sometimes consistency is a false goal when it serves no practical use. There is also a very famous quote about consistency by the writer Ralph Waldo Emerson which you can look up if you like.
Thanks :)
But besides that i think, that it might be useful to have the ability to iterate through meta-objects reflecting the individual template parameters at run time, examine them, create instances, etc.
Instantiating templates at run-time to create types appears very daunting to me since this is what a compiler does at compile-time.
One of the apps where this may be of use I can think of would be a C++ code-generator tool that would take the meta-data for an existing code and generate some other C++ code (like an IDL generator for example)
But I don't claim to have any groundbreaking application for that. Currently the whole run-time layer is still very experimental.
I would suggest that you leave out run-time reflection of templates as having no real use, since run-time code deals with types and objects and templates are neither ( they are compile-time type factories so to speak ).
The Lagoon layer is highly configurable at compile time and you can leave out many things that you don't want in the interface in a particular app, by setting a PP symbol to 0 or 1. I will probably add such pre-processor option for including/leaving-out meta-templates.
The rest of your library is very interesting. I still believe, although it is a huge undertaking as you have probably experienced, that C++ run-time reflection can be a valuable resource, especially in the area of creating a RAD development environment. So I applaud your effort. For RAD programming Borland showed this could be done with C++ Builder and Microsoft improved upon it with C++/CLI, but both needed language changes/additions and neither was pure C++ standard.
Thanks for your words :-) Actually playing with Borland C++ Builder's MetaClass-es a few years ago was what got me interested in reflective programming, but having written my first run-time reflection library I soon found out that Run-time facilities are very inefficient for things like RPC / parameter marshalling / serialization when you have to handle large (several hundred thousands) sets of instances. that and Alexandrescu + Boost.{MPL,Fusion,et co} is where Mirror came from :) Matus
participants (2)
-
Edward Diener
-
Matus Chochlik