Re: Vulkan ErupteD breaking changes and transition strategy

2018-03-27 Thread ParticlePeter via Digitalmars-d-announce

On Sunday, 25 March 2018 at 22:23:06 UTC, Peter Particle wrote:

ErupteD [0] is deprecated (one of its major modules).


[snip]



Rewind and Undo
---

I must apologize for the mess I have created, ErupteD is 
un-deprecated again. It will be further developed until 
ErupteD-V2 has a proper automation and testing system in place. 
There will be a separate announcement, when ErupteD v2.0.0 
reaches vulkan 1.1 status.


Re: Vulkan ErupteD breaking changes and transition strategy

2018-03-26 Thread ParticlePeter via Digitalmars-d-announce

On Monday, 26 March 2018 at 12:22:25 UTC, Anton Fediushin wrote:

On Monday, 26 March 2018 at 11:13:03 UTC, ParticlePeter wrote:


[snip]
Here I was hoping for a little more attentive reading, the 
bugfix (if any bugs happen in the end) for v1.1.70 would be 
v1.1.71 (as in "point seven ONE") -bugfix.1. I would hope for 
community colaboration to always use prerelease. Not sure if 
this is the best idea, as it cannot be specified in dub 
dependency afaics, but only on dub upgrade. That might 
actually be expecting to much from users. I'll think about it.


But then 1.1.71 without `-bugfix.1` will be a binding to vulkan 
v1.1.71? That doesn't make any sense.


Actually, for me it does, afaik we can put whatever into the 
pre-release names, so this would work for me: 
v1.1.71-bugfix.1.1.70.1
It informs me that v1.1.71 is on its way but we are fixing 1.1.70 
bugs before that.


Dah again, no it cannot. Could it be that you are talking 
about DEPRECATED ErupteD? Please compare [0] and [1], and 
their project names.


I'm talking about erupted-v1.


I think you have old ErupteD modules in your ErupteD-V1 source 
directory. Please try to remove them and re-fetch E-V1.


[snip]
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


Sorry, here I cannot follow any more, so why are you using it 
then as a submodule again?


Erupted_v1 has a configuration which uses old derelict-util. 
Even though I use derelict-glfw to load vulkan, dub downloads 
both old derelict-util and the new one used by derelict-glfw. 
This results in warnings because versions mismatch (erupted 
wants old one while derelict-glfw uses newest).


That's not what I meant. I don't understand why you use ErupteD 
as dub project AND as submodule. I don't see the advantage of 
this approach. More specific, if you rely on dub informing you 
that a new version is out, why use it as a submodule?


I opened an issue about erupted-v2 on linux as well: 
https://github.com/ParticlePeter/Erupted-V2/issues/1


Fixed, but the next issue is waiting already. Maybe not the best 
idea after all. Anyway, lets try the pre-rlease suggestion :-)



The GREATER Plan - as promised
--

I want to evolve and learn more about techniques which I have 
never touched before. This is already great I would think. But 
fun aside, I would like to look into full automation.


1.) get informed about vulkan-docs updates, trigger automated 
build process with V-Erupt. Is this possible? Don't know, want 
to find out.


I think it is possible.

2.) setup auto testing for ErupteD-V2. If fail, get informed. 
Else apply version tag, the same as vulkan-docs. Is this 
possible? Don't know, want to find out.


It is possible but tests are required. More tests - better.


That's the plan, and that's the reason ErupteD-V1 exists as 
fallback.






Re: Vulkan ErupteD breaking changes and transition strategy

2018-03-26 Thread Anton Fediushin via Digitalmars-d-announce

On Monday, 26 March 2018 at 11:13:03 UTC, ParticlePeter wrote:
I strongly believe that the generator can be made fail safe, so 
that the produced binding is error free. I will elaborate a 
little more about the greater plan at the bottom, I just didn't 
think that anyone is interested in it.


Well, I am interested in it - Vulkan is cool and so is D.

Here I was hoping for a little more attentive reading, the 
bugfix (if any bugs happen in the end) for v1.1.70 would be 
v1.1.71 (as in "point seven ONE") -bugfix.1. I would hope for 
community colaboration to always use prerelease. Not sure if 
this is the best idea, as it cannot be specified in dub 
dependency afaics, but only on dub upgrade. That might actually 
be expecting to much from users. I'll think about it.


But then 1.1.71 without `-bugfix.1` will be a binding to vulkan 
v1.1.71? That doesn't make any sense.


Dah again, no it cannot. Could it be that you are talking about 
DEPRECATED ErupteD? Please compare [0] and [1], and their 
project names.


I'm talking about erupted-v1.

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


Sorry, here I cannot follow any more, so why are you using it 
then as a submodule again?


Erupted_v1 has a configuration which uses old derelict-util. Even 
though I use derelict-glfw to load vulkan, dub downloads both old 
derelict-util and the new one used by derelict-glfw. This results 
in warnings because versions mismatch (erupted wants old one 
while derelict-glfw uses newest).


I opened an issue about erupted-v2 on linux as well: 
https://github.com/ParticlePeter/Erupted-V2/issues/1



The GREATER Plan - as promised
--

I want to evolve and learn more about techniques which I have 
never touched before. This is already great I would think. But 
fun aside, I would like to look into full automation.


1.) get informed about vulkan-docs updates, trigger automated 
build process with V-Erupt. Is this possible? Don't know, want 
to find out.


I think it is possible.

2.) setup auto testing for ErupteD-V2. If fail, get informed. 
Else apply version tag, the same as vulkan-docs. Is this 
possible? Don't know, want to find out.


It is possible but tests are required. More tests - better.



Re: Vulkan ErupteD breaking changes and transition strategy

2018-03-26 Thread ParticlePeter via Digitalmars-d-announce

On Monday, 26 March 2018 at 09:50:16 UTC, Anton Fediushin wrote:

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.

[snip]
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.


I strongly believe that the generator can be made fail safe, so 
that the produced binding is error free. I will elaborate a 
little more about the greater plan at the bottom, I just didn't 
think that anyone is interested in it.


[snip]

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.


Here I was hoping for a little more attentive reading, the bugfix 
(if any bugs happen in the end) for v1.1.70 would be v1.1.71 (as 
in "point seven ONE") -bugfix.1. I would hope for community 
colaboration to always use prerelease. Not sure if this is the 
best idea, as it cannot be specified in dub dependency afaics, 
but only on dub upgrade. That might actually be expecting to much 
from users. I'll think about it.



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.


Dah, yes it does! As explained above at least :-)

[snip]


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.


Hm, don't like it. The generator part is not changing when 
releasing a new vulkan version, but its version has to be 
incremented to triger an update. The generator itself should be 
incremented only if he produces buggy code. Actually this is part 
of my 1. explenation.


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.


Dah again, no it cannot. Could it be that you are talking about 
DEPRECATED ErupteD? Please compare [0] and [1], and their project 
names.


[snip]
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.


Yeah sounds different than impossible, doesn't it? But as said, 
that is 2. reason of my breaking change.


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


Sorry, here I cannot follow any more, so why are you using it 
then as a submodule again?



The GREATER Plan - as promised
--

I want to evolve and learn more about 

Re: Vulkan ErupteD breaking changes and transition strategy

2018-03-26 Thread Anton Fediushin via Digitalmars-d-announce

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 

Re: Vulkan ErupteD breaking changes and transition strategy

2018-03-26 Thread ParticlePeter via Digitalmars-d-announce
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).


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?



This is a *bad* idea and you shouldn't do that.


Why is it a bad idea, could you elaborate?


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...


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.



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-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?


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/


Re: Vulkan ErupteD breaking changes and transition strategy

2018-03-26 Thread Seb via Digitalmars-d-announce

On Monday, 26 March 2018 at 09:04:20 UTC, Anton Fediushin wrote:

On Monday, 26 March 2018 at 07:51:31 UTC, Seb wrote:
On Monday, 26 March 2018 at 07:04:00 UTC, Anton Fediushin 
wrote:

This is a *bad* idea and you shouldn't do that.

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.


Also note that SemVer allows to attach meta data:

2.0.0+1.0.69


That'll work too, but I'm not sure how dub handles it. Anyway, 
even a little note in release description "Vulkan API vX.X.X" 
should be enough.


It will work fine with dub (it just ignores the meta data).
For example, if you do a `dub add-local`, your package version is 
"+ annotated" with the git commit sha.


Re: Vulkan ErupteD breaking changes and transition strategy

2018-03-26 Thread Anton Fediushin via Digitalmars-d-announce

On Monday, 26 March 2018 at 07:51:31 UTC, Seb wrote:

On Monday, 26 March 2018 at 07:04:00 UTC, Anton Fediushin wrote:

This is a *bad* idea and you shouldn't do that.

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.


Also note that SemVer allows to attach meta data:

2.0.0+1.0.69


That'll work too, but I'm not sure how dub handles it. Anyway, 
even a little note in release description "Vulkan API vX.X.X" 
should be enough.


Re: Vulkan ErupteD breaking changes and transition strategy

2018-03-26 Thread Seb via Digitalmars-d-announce

On Monday, 26 March 2018 at 07:04:00 UTC, Anton Fediushin wrote:

This is a *bad* idea and you shouldn't do that.

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.


Also note that SemVer allows to attach meta data:

2.0.0+1.0.69

Build metadata MAY be denoted by appending a plus sign and a 
series of dot separated identifiers immediately following the 
patch or pre-release version. Identifiers MUST comprise only 
ASCII alphanumerics and hyphen [0-9A-Za-z-]. Identifiers MUST 
NOT be empty. Build metadata SHOULD be ignored when determining 
version precedence. Thus two versions that differ only in the 
build metadata, have the same precedence.


https://semver.org/#spec-item-10


Re: Vulkan ErupteD breaking changes and transition strategy

2018-03-26 Thread Anton Fediushin via Digitalmars-d-announce

On Sunday, 25 March 2018 at 22:23:06 UTC, Peter Particle wrote:
ErupteD [0] is deprecated (one of its major modules). The 
project content is supposed to be replaced completely. Current 
state was copied into ErupteD-V1 [1] (without deprecation 
message), neither ErupteD nor ErupteD-V1 will be further 
developed.
The breaking changes and Vulkan 1.1 are implemented in 
ErupteD-V2 [2]. At some future point ErupteD will be destroyed 
and recreated with all releases of ErupteD-V2 [3].


Two issues bugged me with the previous design of the binding:
1. versions are not only disconnected from, but also far beyond 
Vulkan
2. too many dub dependencies - if on windows, than platform 
foreign ones


1. this is the reason for the involved transition, ErupteD 
needs to get rid of all releases / version tags to restart with 
a clean slate.
I also extracted the python generator script into its own 
non-dub project, V-Erupt [5]. It was kind of wired to mix two 
different purposes into one project version scheme.


2. the new approach does not require dependencies at all (other 
than phobos / druntime). Platform dependent extensions are 
implemented in form of a parameterizable mixin template. User 
is supposed to mix them into his project and take care of the 
dependencies himself [4]. Platform windows is pre-instantiated, 
as it relies only on druntime. With this approach dub cache 
stays clean from foreign platform dependencies and silences 
version mismatch noise.
While at it, I also removed the DerelictUtil dependency and 
added simple entrypoint loading mechanics. ErupteD-V2 is now 
fully nothrow @nogc and should be -betterC compatible (not 
tested yet). Moreover, no requirement for dub configurations 
any more.


[0] : https://github.com/ParticlePeter/ErupteD
[1] : https://github.com/ParticlePeter/ErupteD-V1
[2] : https://github.com/ParticlePeter/ErupteD-V2
[3] : 
https://github.com/ParticlePeter/ErupteD-V2#erupted-deprecation-and-upgrade-process
[4] : 
https://github.com/ParticlePeter/ErupteD-V2#platform-extensions

[5] : https://github.com/ParticlePeter/V-Erupt


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.


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.


This is a *bad* idea and you shouldn't do that.

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.


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.


2. Great! I ended up adding erupted as a git submodule just so 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).


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.








Vulkan ErupteD breaking changes and transition strategy

2018-03-25 Thread Peter Particle via Digitalmars-d-announce
ErupteD [0] is deprecated (one of its major modules). The project 
content is supposed to be replaced completely. Current state was 
copied into ErupteD-V1 [1] (without deprecation message), neither 
ErupteD nor ErupteD-V1 will be further developed.
The breaking changes and Vulkan 1.1 are implemented in ErupteD-V2 
[2]. At some future point ErupteD will be destroyed and recreated 
with all releases of ErupteD-V2 [3].


Two issues bugged me with the previous design of the binding:
1. versions are not only disconnected from, but also far beyond 
Vulkan
2. too many dub dependencies - if on windows, than platform 
foreign ones


1. this is the reason for the involved transition, ErupteD needs 
to get rid of all releases / version tags to restart with a clean 
slate.
I also extracted the python generator script into its own non-dub 
project, V-Erupt [5]. It was kind of wired to mix two different 
purposes into one project version scheme.


2. the new approach does not require dependencies at all (other 
than phobos / druntime). Platform dependent extensions are 
implemented in form of a parameterizable mixin template. User is 
supposed to mix them into his project and take care of the 
dependencies himself [4]. Platform windows is pre-instantiated, 
as it relies only on druntime. With this approach dub cache stays 
clean from foreign platform dependencies and silences version 
mismatch noise.
While at it, I also removed the DerelictUtil dependency and added 
simple entrypoint loading mechanics. ErupteD-V2 is now fully 
nothrow @nogc and should be -betterC compatible (not tested yet). 
Moreover, no requirement for dub configurations any more.


[0] : https://github.com/ParticlePeter/ErupteD
[1] : https://github.com/ParticlePeter/ErupteD-V1
[2] : https://github.com/ParticlePeter/ErupteD-V2
[3] : 
https://github.com/ParticlePeter/ErupteD-V2#erupted-deprecation-and-upgrade-process
[4] : 
https://github.com/ParticlePeter/ErupteD-V2#platform-extensions

[5] : https://github.com/ParticlePeter/V-Erupt