On Monday, 26 March 2018 at 09:20:13 UTC, ParticlePeter wrote:
First of all, don't worry, don't panic, we will figure it out,
together ;-). Everything will be alright in the end, and if
not, its not the end.
On Monday, 26 March 2018 at 07:04:00 UTC, Anton Fediushin wrote:
1. This breaks semver. You shouldn't just use Vulkan's
versions. If you release 1.0.69 which contains bindings to
Vulkan 1.0.69 and there is a bug in the binding which you want
to fix, you have to increase PATCH number which results in
1.0.70 which (obviously) is not a binding to Vulkan 1.0.70.
The bug then is not in ErupteD but in its generator. It needs
to be fixed there.
The plan was to then move the sem vers to the bug fix release.
Never done that, wanted to try it. Buuut, got inspired by a
great idea 3 min ago (please read on).
After generator is fixed it'll produce new binding which should
be marked as a new release.
Even though you can use PRE-RELEASE part of semver to show
users that this is a bugfix release (ie. 1.0.69-bugfix.1) this
shouldn't be used because it breaks semver *again* and dub
(which follows semver) isn't going to tolerate that.
Great idea! Have not considered it. So the Bug fix for version
1.1.70 could be 1.1.71-bugfix.1. How does it screw up dub
semver?
Dub isn't going to use pre-release version unless it is specified
in user's dub.json. So, if user already has erupted 1.1.70 as a
dependency, he will *never* receive 1.1.70-bugfix.1 unless he
updates his dub.json. Basic 'dub upgrade' won't work in this case.
This is a *bad* idea and you shouldn't do that.
Why is it a bad idea, could you elaborate?
Because it doesn't follow semver meaning that dub won't work
correctly.
Just increase MAJOR version and start from there:
2.0.0 - Changing how binding works, Vulkan v1.0.69
2.1.0 - Vulkan 1.0.70
...And so on. This way semver is followed and you don't have
to mess with erupted-v1 and erupted-v2 repos.
Thought about that, but there is one issue which I mentioned in
the announcement. I experience it as a bad idea to have the
generator part of the binding. Both of them have different
purpose and should have different version numbers. Meta data is
nice approach as in GenVer+VulkanVer, but unfortunately dub
upgrade is not triggered if Only vulkanVer increments. Hm...
Indeed, metadata change isn't going to trigger an update neither
does pre-release.
My solution:
1. Add generator as a git submodule (generator could be versioned)
2. Start versioning from 2.0.0 increasing MINOR when new Vulkan
version is supported and increasing PATCH when bug fixes happen.
Metadata can be added too.
This way users are going to always get latest version possible.
It'll look like this:
2.0.0+1.0.69
2.0.1+1.0.69 - first bugfix
2.1.0+1.0.70 - new vulkan version
2.1.1+1.0.70 - first bugfix
...And so on.
Also, if you'll stick to your *bad-in-every-way* plan, you
*can't* publish erupted-v2 as erupted package on dub registry.
You'd have to remove it from registry first, which will break
every single package that depends on it.
Thanks for your nice words all over the place, sun is rising in
my hart :-). Well, yeah, I didn't. ErupteD-V2 is published as
erupted_v2, and Erupted-V1 as erupted_v1.
Hey, I have another awesome idea, you are an the safe side, you
just change your dependency to erupted_v1. I hope this is not
too much of effort on your side? Sorry for inconvenience. Ah,
but wait! Fear not, I read ahead and have a solution for your
way of using erupted, just read on.
I already use erupted-v1. Deprecation messages annoy me.
2. Great! I ended up adding erupted as a git submodule just so
Wouldn't it be possible for you to switch your submodule to
ErupteD-V1 then?
I mean, that's the reason for repo "mess" and gradual
transition.
I can remove all of the unnecessary dependencies (erupted uses
pretty old derelict-util which makes it impossible to use both
erupted and last version of derelict-glfw).
Ah, but that was one of the two reason for the breaking change.
Btw. I am/was using diferent versioned derelict-utils and have
no problems other than being informed that xcb-d (on windows!)
does not use it. What is the "impossible" part you have to face?
Erupted uses derelict-util 2.something.something and
derelict-glfw uses 3.0.0-beta. Because of that dub warns about
version mismatch every single time I build my program.
Well, that's not impossible to use, but pretty annoying.
Erupted-V2 doesn't work for me - when compiling on Linux it
fails on some Windows-specific code. I'll open an issue as
soon as I get home.
I am really sorry for that, I have an idea what might be wrong.
Please, if you don't min, post an issue with the error. I hope
that in this alpha stage of ErupteD-V2, where some poo poo was
expected to hit the fan, it would be ok to move the semvers.
Actually, if you use ErupteD as a submodule, why do care about
semvers at all?
Because dub can notify about new version. That's why it exists in
the first place
Please be patient we have not reached the end of the transition
period, where everything will be all right again [0] at the
end, I promise!
[0] http://make-everything-ok.com/