COMPAT_FREEBSD for ever?

Code:
> grep COMPAT_FREEBSD /usr/src/sys/amd64/conf/GENERIC
options     COMPAT_FREEBSD32    # Compatible with i386 binaries
options     COMPAT_FREEBSD4        # Compatible with FreeBSD4
options     COMPAT_FREEBSD5        # Compatible with FreeBSD5
options     COMPAT_FREEBSD6        # Compatible with FreeBSD6
options     COMPAT_FREEBSD7        # Compatible with FreeBSD7
options     COMPAT_FREEBSD9        # Compatible with FreeBSD9
options     COMPAT_FREEBSD10    # Compatible with FreeBSD10
options     COMPAT_FREEBSD11    # Compatible with FreeBSD11
options     COMPAT_FREEBSD12    # Compatible with FreeBSD12
options     COMPAT_FREEBSD13    # Compatible with FreeBSD13
Why are all that COMPAT_FREEBSD options in the kernel?
Why is COMPAT_FREEBSD8 not there?
Will this list grow forever?

As there is this in the ports why MUST we have it in the GENERIC kernel?
Code:
misc/compat4x             Convenience package to install the compat4x libraries
misc/compat5x             Convenience package to install the compat5x libraries
misc/compat6x             Convenience package to install the compat6x libraries
misc/compat7x             Convenience package to install the compat7x libraries
misc/compat8x             Convenience package to install the compat8x libraries
misc/compat9x             Convenience package to install the compat9x libraries
misc/compat10x            Convenience package to install the compat10x libraries
misc/compat11x            Convenience package to install the compat11x libraries
misc/compat12x            Convenience package to install the compat12x libraries
misc/compat13x            Convenience package to install the compat13x libraries
misc/compat14x            Convenience package to install the compat13x libraries

As this COMPAT is all about legacy binaries, is it sane to enable them all?
Uhm, yes, I do know that custom kernels can be built without that.
My point is why all that is enabled in the GENERIC.
 
As there is this in the ports why MUST we have it in the GENERIC kernel?
COMPAT_FREEBSDxx are for kernel calls compatibility, the various misc/compat4x, etc. ports are the userland components (libc for example).

The kernel components are required to run an older version jail for example (so it's perfectly fine to have a 13.4 jail on a 14.2 system), the compatNx are for running older binaries directly.
 
As this COMPAT is all about legacy binaries, is it sane to enable them all?
Yes, COMPAT_FREEBSD12 for example is for compatibility with 12 on a 13 system. So if you are on 14 and need to run a 12 binary you need COMPAT_FREEBSD12 and COMPAT_FREEBSD13.
 
I'd prefer getting valid questions answered.
I stand by my answer. There isn't much code added behind those defines to support those platforms, so why not?

Also note that COMPAT_FREEBSD7 is in the GENERIC kernel only on i.e Intel. Other platforms, including arm64, came later and thus don't include COMPAT_FREEBSD7.
 
Back
Top