Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
January 08, 2021 Using a betterC dub package in ordinary D | ||||
---|---|---|---|---|
| ||||
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 |
January 08, 2021 Re: Using a betterC dub package in ordinary D | ||||
---|---|---|---|---|
| ||||
Posted in reply to Bastiaan Veelo | 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.
|
January 08, 2021 Re: Using a betterC dub package in ordinary D | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ferhat Kurtulmuş | 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.
|
January 08, 2021 Re: Using a betterC dub package in ordinary D | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ferhat Kurtulmuş | 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. |
January 08, 2021 Re: Using a betterC dub package in ordinary D | ||||
---|---|---|---|---|
| ||||
Posted in reply to Bastiaan Veelo | 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 |
January 08, 2021 Re: Using a betterC dub package in ordinary D | ||||
---|---|---|---|---|
| ||||
Posted in reply to Bastiaan Veelo | 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! |
Copyright © 1999-2021 by the D Language Foundation