What is the FreeBSD situation?

Steven Schveighoffer schveiguy at yahoo.com
Thu Nov 2 15:33:39 UTC 2017


On 11/2/17 10:56 AM, Andrei Alexandrescu wrote:
> On 11/02/2017 08:46 AM, Steven Schveighoffer wrote:
>> Well, that is only header compatibility, not binary compatibility. In 
>> other words, that still means if you use C or C++, you need to 
>> recompile if you are on FreeBSD 12. You can't have one binary that 
>> supports both platforms.
> 
> Thanks, this is the kind of hard data we're looking for. Do you have a 
> link to support this?

Sorry, I don't have any experience with FreeBSD. I was reacting to 
Jonathan's claim that "They did a lot of work to make that compatible so 
that programs didn't just break, but the compatibility stuff that they 
did was for C/C++, and we don't use C/C++ headers"

That lead me to believe that marking the headers differently is all they 
did. As I said, this is not binary compatibility.

Sure, we can do this too, we don't use C/C++ headers, but we can port 
our headers. The question to answer is, "can we create a binary that 
runs on both versions of FreeBSD?".

The answer to that question, I don't know. Is it possible on FreeBSD to 
detect this at runtime and call the right binding? Not sure. It might 
not even be detectable (see codephantom's post on how FreeBSD 12 may be 
compiled with the older binding anyway!)

Another possible option, if it existed, would be to simply call a 
function that does the right thing. Perhaps a .so that can be swapped 
out based on which version of the OS you are on?

But the only thing I can think of currently, that will definitely 
"solve" the problem, is to treat each version as a different OS with a 
new version statement. This doesn't scale well, so I'm not sure if 
that's the road we want to go down.

-Steve


More information about the Digitalmars-d mailing list