May 25, 2015

DerelictFI 2.0.1

This is what I get for not having tests set up for loading every shared library in every circumstance. I realized when I went to bed last night that I had incorrectly implemented SharedLibVersion support for DerelictFI, causing it to do the wrong thing. I guess it’s been so long since I touched the code I had forgotten how it was intended to be used. I had to wait until I came home from work today to fix it, but now 2.0.1 is tagged and the DUB repository should pick it up shortly. This is now the corrected list of possible minimum versions for DerelictFI and they should all work as expected.

// Allow versions 3.15.0+
DerelictFI.load(SharedLibVersion(3, 15, 0));
// Allow versions 3.15.4+
DerelictFI.load(SharedLibVersion(3, 15, 4);
// Allow versions 3.16.0+
DerelictFI.load(SharedLibVersion(3, 16, 0));
// Allow versions 3.17.0+
DerelictFI.load(SharedLibVersion(3, 17, 0));
// Allow only the highest supported version -- Currently 3.17.0
DerelictFI.load();

May 24, 2015

Support for SDL 2.0.4 in Derelict

Thanks to Ben Boeckel, DerelictSDL2 now has support for SDL 2.0.4. It’s available in version tag 1.9.5, so you’ll want to specify that in your DUB configuration. Since SDL 2.0.4 hasn’t actually been released yet, Derelict still attempts to load SDL 2.0.2/3 by default. If you want are interested in using SDL 2.0.4 with Derelict, you’ll need to specify it with a SharedLibVersion when you call the load method.

DerelictSDL2.load(SharedLibVersion(2,0,4));

DerelictUtil 2.0.0

I’m taking some time away from my priority project to chip away a little at my Derelict TODO list. As part of that, I’ve just merged the 2.0 branch of DerelictUtil with master and tagged a 2.0.0 release. The plan going forward is that all development will happen on master and merged into the 2.0 branch when it’s ready to tag.

For many Derelict users, this change shouldn’t have any negative impact. Most projects should still compile and work without change. There are, however, two potential pain points.

People using DUB to manage their projects will largely be safe except in the case when they are mixing  bindings that use >=, ~>, or == in their dependency on DerelictUtil.  For example, a project with the dependency derelict-util: >=1.0.0” will always pick up the latest version when updated or first pulled down by DUB, but a project with the dependency “derelict-util”: “==1.0.0” will always get version 1.0.0 of DerelictUtil. 2.0.0 is not binary compatible with 1.0.0. At the moment, I’m not sure if DUB goes with the lowest-common-denominator in that case, but ==2.0.0 will certainly conflict with ==1.0.x. As far as I know, most, if not all, of the packages in DerelictOrg use the >= format (I’m not the primary maintainer of every package there and haven’t checked all of them to verify, so there may be one or two that don’t).

People not using DUB to manage their projects can potentially run into issues if they pull down DerelictUtil master and link it with a Derelict package that was compiled against DerelictUtil 1.0.x. If you are manually handling your project, or an IDE is without DUB, make sure to update and recompile all of your Derelict libraries with 2.0.0. Pay close attention to the dub/package.json of any Derelict-like bindings you use to see if any of them are using a == or ~> dependency on a 1.0.x version. If so, file an issue at that binding’s project page and ask them to update their dependency to 2.0.0.

DerelictFI 2.0.0 Supports FreeImage 3.17.0

I’ve updated DerelictFI, the FreeImage binding. It now supports up to 3.17.0 (previously it only supported 3.15.4). By default, it will load version 3.17.0 of the FreeImage shared library and will error out on older versions. However, this release also supports the SharedLibVersion feature of DerelictUtil 2.0, so you all of the following are valid:

// Allow versions 3.15.0+
DerelictFI.load(SharedLibVersion(3, 15, 0));
// Allow versions 3.16.0+
DerelictFI.load(SharedLibVersion(3, 16, 0));
// Allow versions 3.17.0+
DerelictFI.load(SharedLibVersion(3, 17, 0));
// Allow only the highest supported version -- Currently 3.17.0
DerelictFI.load();

To make use of these features, update your DUB dependency to “derelict-fi”: “>=2.0.0″. From here on out, development will happen in master and merged into the new 2.0 branch when ready for release. Note that I’ve only verified that this compiles and haven’t had the chance to test out the new stuff yet, so if you find any problems please report them in the issue tracker.