DF 0.40.13 does require structure changes, due to this commit.
So, if I understand things right, that means the build I made above did processing of the structures during compile time that, if I included that commit (I think I did based on your instructions for the /library/xml folder), it "safely" updated all the DFHack-included plugins,
but, despite being the same original source (master branch of DFHack), previous DLLs would not work (aside from the version string issue), due to those changes?
I really am trying to understand the process and how things currently work, despite any appearances to the contrary.
Anyway, I'm not opposed to changes in DFHack's versioning system; I'm just not sure how best to implement them. There was a discussion about this earlier on IRC where replacing the DFHack version string with a reference to a Git commit was brought up:
$ git describe --tags --always
0.34.11-r5-338-g856a146
Unfortunately, defining this as a constant will require rebuilding everything DFHack-specific (DFHack core and plugins) after every commit, which is impractical. Using a reference to a df-structures commit instead will require rebuilding less often, but is still more inconvenient than the current method, which only rebuilds plugins (and core modules) that use structures that have changed since the last build.
That makes sense - let me think on it. If I were doing this with SVN, I'd just reference an svn:externals and do some pre-build scripting based on that, but I'm not sure how that concept works in git. I can google my way around it, but any pointers on how you guys are doing it would be appreciated.
Maybe the actual repo master branch should always have a DFHACK_RELEASE string with "-unofficial" appended to it? (EDIT: in the file CMakeLists.txt)
And to make an official release, branch the master and change only that one string?
Expwnent mentioned doing this after making a release, although it doesn't appear to have been changed yet. Generally, the master branch points to the latest release, but it would be easy to change the version string on the develop branch after making a release.
It really comes down to how you want people who are compiling themselves to do it. When I did it with .40.12, I just followed the step by step instructions because it was my first time. With .40.13, I did the master branch thinking it'd prove more of a point about how close the DF code was across the 3 releases and I didn't want to unknowingly include active development that might address an issue I wasn't aware of. Whichever I should be compiling against, that's the one I recommend not have an official version string as the default. (Might even be worth taking those lines out of source control entirely somehow [addmittedly no idea how CMake works], so that it
always has to be specified by whoever is doing the compiling to make sure it's done correctly.)
You're demanding someone else do it for you.
You gave yourself away here. Go troll someone else - I've never demanded or even
asked anyone to undertake any work because of the reasons I already outlined for needing acceptance of the concept and direction from the DFHack team first.