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.