
The bit-babbler source can be built on FreeBSD using the default clang
toolchain, but (as of FreeBSD 11 still) that one is missing some useful
functionality that we make use of (specifically the abi::__forced_unwind
exceptions which do proper stack unwinding when threads are cancelled).

You can regain that functionality by instead building with gcc, which
you can enable with something like this:

 $ ./configure CC=/usr/local/bin/gcc6 CXX=/usr/local/bin/g++6

And we do recommend that you do that (at least until clang on FreeBSD
also supports it), unless you have some really strong personal reason
to prefer otherwise.  We have tested it with both gcc 6.3.0 and 7.0.1
from the FreeBSD ports.

In either case, you will still need to build this with gmake though,
and you will need to have the bash package installed.


As of FreeBSD 11, hotplugging of USB devices is supported, but the OS
level support for unplugging them isn't yet perfect.  If a device is
removed while it is being actively accessed, then the thread which was
performing that access may deadlock inside an OS function call and be
leaked.  If that happens it won't otherwise interrupt normal operation
of our code (and the device can be plugged back in again successfully),
but it is something to be aware of if you do plan to remove and replace
devices frequently without restarting the application process that is
controlling them.

