HomeFreeBSD

Import new 2-clause BSD licenced implementation of the bc and dc commands

Description

Import new 2-clause BSD licenced implementation of the bc and dc commands

These implementations of the bc and dc programs offer a number of advantages
compared to the current implementations in the FreeBSD base system:

  • They do not depend on external large number functions (i.e. no dependency on OpenSSL or any other large number library)
  • They implements all features found in GNU bc/dc (with the exception of the forking of sub-processes, which the author of this version considers as a security issue).
  • They are significantly faster than the current code in base (more than 2 orders of magnitude in some of my tests, e.g. for 12345^100000).
  • They should be fully compatible with all features and the behavior of the current implementations in FreeBSD (not formally verified).
  • They support POSIX message catalogs and come with localized messages in Chinese, Dutch, English, French, German, Japanese, Polish, Portugueze, and Russian.
  • They offer very detailed man-pages that provide far more information than the current ones.

The upstream sources contain a large number of tests, which are not
imported with this commit. They could be integrated into our test
framework at a latter time.

Installation of this version is controlled by the option "MK_GH_BC=yes".
This option will be set to yes by default in 13-CURRENT, but will be off
by default in 12-STABLE.

Approved by: imp
Obtained from: https://git.yzena.com/gavin/bc
MFC after: 4 weeks
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D19982