Some times ago, I opened an issue on libc about OpenBSD: the upcoming 6.2 version has a (small) breaking change at the OS level, and it makes libc to having to deal with that.
The problem is Rust language seems to be constructed with the assumption that OS will not do breaking changes (like Linux). But at least all BSD (FreeBSD, NetBSD, OpenBSD, DragonFly) do it from time to time.
The LLVM representation for BSD include an OS version in the triple representation. It aimed to represent the fact that openbsd5.4
isn’t (possibly) binary compatible with openbsd5.5
.
So I started to think about extending the Target
representation to include the OS version. Maybe it isn’t the right way to solve the problem. I would like to discuss about that.
As I already wrote a big part of the Motivation
section for a RFC, which explain the problem in depth (I hope) and present several examples (past and future) of breaking changes at the OS level, I link it here: Target extension. It is only a WIP page and it permits to me to write down ideas and see how it could be implemented.
The purpose would be to have a stable way to represent a breaking changes between version of an OS, and so letting crate like libc
to represent them.
Thanks for you feedback or your ideas on how to resolv this particular problem.
Cc: @alexcrichton