Re: Using a betterC dub package in ordinary D

2021-01-08 Thread Arjan via Digitalmars-d-learn

On Friday, 8 January 2021 at 20:19:59 UTC, Bastiaan Veelo wrote:


Off topick, the original js implementation is documented to not 
generate results that are guaranteed to be correct. I could not 
find information on what the conditions are that cause 
deviations, and how large these then can be. Do you have an 
idea about this or experience with accuracy of the algorithm? I 
am looking into whether earcutd can replace GLU tesselation. We 
use the result for engineering purposes (not only 
visualisation) and correctness is important to us.


I've used documentation and implementations from David Eberly at 
https://www.geometrictools.com/ and also on github nowadays to 
get 'correct' or at least 'predictable' behavior for various 
geometric challenges.


Using this library solved various issues for us. The 
documentation is great!


Re: Using a betterC dub package in ordinary D

2021-01-08 Thread Ferhat Kurtulmuş via Digitalmars-d-learn

On Friday, 8 January 2021 at 20:19:59 UTC, Bastiaan Veelo wrote:
On Friday, 8 January 2021 at 18:28:36 UTC, Ferhat Kurtulmuş 
wrote:
On Friday, 8 January 2021 at 15:40:12 UTC, Bastiaan Veelo 
wrote:

Hi,

When I use earcutd [1] in an ordinary D project, I get a link 
error for the __D7earcutd12__ModuleInfoZ symbol.

[...]


Dear Bastiaan,

I am not an expert in dub system, but I have just pushed a 
modification in dub.json. I am not sure if it solves your 
problem. My modification is


"configurations": [
{
"name": "default",
"targetType": "library"
},
{
"name": "betterC",
"targetType": "library",
"dflags": ["-betterC"]
}
]

now client projects must explicitly pass the subConfiguration 
parameter to compile it with betterC.


Much appreciated Ferhat! This works like a charm. I am kind of 
surprised that it does, as I expected dvector to need the same 
treatment. Excellent support by the way, thanks!


Off topick, the original js implementation is documented to not 
generate results that are guaranteed to be correct. I could not 
find information on what the conditions are that cause 
deviations, and how large these then can be. Do you have an 
idea about this or experience with accuracy of the algorithm? I 
am looking into whether earcutd can replace GLU tesselation. We 
use the result for engineering purposes (not only 
visualisation) and correctness is important to us.


Thanks!
Bastiaan.


Sorry, I don't have any information regarding the correctness of 
the algorithm. I just ported it doing cpp to d translations. My 
only usage of it for my hobby game[1]. However, it would be nice 
if you have another usage area to test it. I am using it with a 
similar purpose of glu Tessa lation in the game (I guess it is 
so, I am a beginner with opengl)


1: https://github.com/aferust/drawee



Re: Using a betterC dub package in ordinary D

2021-01-08 Thread Bastiaan Veelo via Digitalmars-d-learn

On Friday, 8 January 2021 at 18:28:36 UTC, Ferhat Kurtulmuş wrote:

On Friday, 8 January 2021 at 15:40:12 UTC, Bastiaan Veelo wrote:

Hi,

When I use earcutd [1] in an ordinary D project, I get a link 
error for the __D7earcutd12__ModuleInfoZ symbol.

[...]


Dear Bastiaan,

I am not an expert in dub system, but I have just pushed a 
modification in dub.json. I am not sure if it solves your 
problem. My modification is


"configurations": [
{
"name": "default",
"targetType": "library"
},
{
"name": "betterC",
"targetType": "library",
"dflags": ["-betterC"]
}
]

now client projects must explicitly pass the subConfiguration 
parameter to compile it with betterC.


Much appreciated Ferhat! This works like a charm. I am kind of 
surprised that it does, as I expected dvector to need the same 
treatment. Excellent support by the way, thanks!


Off topick, the original js implementation is documented to not 
generate results that are guaranteed to be correct. I could not 
find information on what the conditions are that cause 
deviations, and how large these then can be. Do you have an idea 
about this or experience with accuracy of the algorithm? I am 
looking into whether earcutd can replace GLU tesselation. We use 
the result for engineering purposes (not only visualisation) and 
correctness is important to us.


Thanks!
Bastiaan.


Re: Using a betterC dub package in ordinary D

2021-01-08 Thread Ferhat Kurtulmuş via Digitalmars-d-learn

On Friday, 8 January 2021 at 18:28:36 UTC, Ferhat Kurtulmuş wrote:

On Friday, 8 January 2021 at 15:40:12 UTC, Bastiaan Veelo wrote:

Hi,

When I use earcutd [1] in an ordinary D project, I get a link 
error for the __D7earcutd12__ModuleInfoZ symbol. This is 
because the earcutd dub.json has `"dflags": ["-betterC"]`. I 
think this is in error, my understanding of betterC code is 
that it can be compiled with "-betterC", but does not need to 
(and must not when used in D context).


Am I right? What are the best practices for betterC dub 
packages?


Thanks,
Bastiaan.


[1] https://code.dlang.org/packages/earcutd


Dear Bastiaaan,

I am not an expert in dub system, but I have just pushed a 
modification in dub.json. I am not sure if it solves your 
problem. My modification is


"configurations": [
{
"name": "default",
"targetType": "library"
},
{
"name": "betterC",
"targetType": "library",
"dflags": ["-betterC"]
}
]

now client projects must explicitly pass the subConfiguration 
parameter to compile it with betterC.


I also added this:

version(LDC){
version(D_BetterC){
pragma(LDC_no_moduleinfo);
}
}

Docs say

LDC_no_moduleinfo
This pragma disables the generation of the ModuleInfo metadata to 
register the current module with druntime. Note that this, among 
other things, leads to any static constructors not being run, and 
should only be used in very specific circumstances.


I used that pragma against an error, but I cannot remember what 
was that.


Re: Using a betterC dub package in ordinary D

2021-01-08 Thread Ferhat Kurtulmuş via Digitalmars-d-learn

On Friday, 8 January 2021 at 15:40:12 UTC, Bastiaan Veelo wrote:

Hi,

When I use earcutd [1] in an ordinary D project, I get a link 
error for the __D7earcutd12__ModuleInfoZ symbol. This is 
because the earcutd dub.json has `"dflags": ["-betterC"]`. I 
think this is in error, my understanding of betterC code is 
that it can be compiled with "-betterC", but does not need to 
(and must not when used in D context).


Am I right? What are the best practices for betterC dub 
packages?


Thanks,
Bastiaan.


[1] https://code.dlang.org/packages/earcutd


Dear Bastiaaan,

I am not an expert in dub system, but I have just pushed a 
modification in dub.json. I am not sure if it solves your 
problem. My modification is


"configurations": [
{
"name": "default",
"targetType": "library"
},
{
"name": "betterC",
"targetType": "library",
"dflags": ["-betterC"]
}
]

now client projects must explicitly pass the subConfiguration 
parameter to compile it with betterC.


Using a betterC dub package in ordinary D

2021-01-08 Thread Bastiaan Veelo via Digitalmars-d-learn

Hi,

When I use earcutd [1] in an ordinary D project, I get a link 
error for the __D7earcutd12__ModuleInfoZ symbol. This is because 
the earcutd dub.json has `"dflags": ["-betterC"]`. I think this 
is in error, my understanding of betterC code is that it can be 
compiled with "-betterC", but does not need to (and must not when 
used in D context).


Am I right? What are the best practices for betterC dub packages?

Thanks,
Bastiaan.


[1] https://code.dlang.org/packages/earcutd