Threads created by the user in a 1:1 correspondence with schedulable entities in the kernel[10] are the simplest possible threading implementation. OS/2 and Win32 used this approach from the start, while on Linux the usual C library implements this approach (via the NPTL or older LinuxThreads). This approach is also used by Solaris, NetBSD, FreeBSD, OS X, and iOS.
FreeBSD has supported Linux compatibility for many years and, purportedly, can run some Linux applications faster than Linux itself so FreeBSD has always been miles ahead.
I don't think Windows had anything to do with this. I think the feature has been in development since before and it is released because it's what users want, not because of what Microsoft are doing.
Initial Linux64 support landed in FreeBSD11 on 2015-05-24. The code freeze for the 10.2 release started on 2015-07-03.
Those 5'ish weeks was simply not enough time to get such a major addition sufficiently settled down for inclusion in the stable release branch. As such, it is now part of 10.3R.
Wow! Thanks for pointing this out! I had no idea it was coming so soon. I'm so excited to upgrade. This is particularly useful for some niche compilers (like Poly/ML) who have special features for only linux-x86_64.
Actually, I may have gotten my facts mixed up. It is Golang that only supports some compiling features on linux-x86 like shared object libraries or something along those lines. I can't remember off the top of my head and I can't seem to find what I'm looking for.
Going by the compat.linux.osrelease sysctl, it is currently providing the kernel interface of Linux kernel version 2.6.32 (the one that ships with RHEL6). Similarly, the GNU userland that can be installed is based on CentOS6.
So, if your application requires newer kernel interfaces that were introduced in 3.x or 4.x, it will not work.
I suppose when windows caught up Bash on Windows, FreeBSD needed to do something to keep one step ahead =].