svn commit: r362697 - in vendor/bc: . dist dist/gen dist/include dist/locales dist/manuals dist/src dist/src/bc dist/src/dc dist/src/history dist/src/rand dist/tests dist/tests/bc dist/tests/bc/err...

Stefan Eßer se at FreeBSD.org
Sat Jun 27 15:03:20 UTC 2020


Author: se
Date: Sat Jun 27 15:03:19 2020
New Revision: 362697
URL: https://svnweb.freebsd.org/changeset/base/362697

Log:
  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.
  
  Approved by:	imp
  Obtained from:	https://git.yzena.com/gavin/bc
  Differential Revision:	https://reviews.freebsd.org/D19982

Added:
  vendor/bc/
  vendor/bc/dist/.gitignore
  vendor/bc/dist/.travis.yml
  vendor/bc/dist/LICENSE.md
  vendor/bc/dist/Makefile.in   (contents, props changed)
  vendor/bc/dist/NEWS.md
  vendor/bc/dist/NOTICE.md
  vendor/bc/dist/README.md
  vendor/bc/dist/RELEASE.md
  vendor/bc/dist/TODO.md
  vendor/bc/dist/codecov.yml
  vendor/bc/dist/configure   (contents, props changed)
  vendor/bc/dist/configure.sh   (contents, props changed)
  vendor/bc/dist/functions.sh   (contents, props changed)
  vendor/bc/dist/gen/
  vendor/bc/dist/gen/bc_help.txt   (contents, props changed)
  vendor/bc/dist/gen/dc_help.txt   (contents, props changed)
  vendor/bc/dist/gen/lib.bc
  vendor/bc/dist/gen/lib2.bc
  vendor/bc/dist/gen/strgen.c   (contents, props changed)
  vendor/bc/dist/gen/strgen.sh   (contents, props changed)
  vendor/bc/dist/include/
  vendor/bc/dist/include/args.h   (contents, props changed)
  vendor/bc/dist/include/bc.h   (contents, props changed)
  vendor/bc/dist/include/dc.h   (contents, props changed)
  vendor/bc/dist/include/file.h   (contents, props changed)
  vendor/bc/dist/include/history.h   (contents, props changed)
  vendor/bc/dist/include/lang.h   (contents, props changed)
  vendor/bc/dist/include/lex.h   (contents, props changed)
  vendor/bc/dist/include/num.h   (contents, props changed)
  vendor/bc/dist/include/opt.h   (contents, props changed)
  vendor/bc/dist/include/parse.h   (contents, props changed)
  vendor/bc/dist/include/program.h   (contents, props changed)
  vendor/bc/dist/include/rand.h   (contents, props changed)
  vendor/bc/dist/include/read.h   (contents, props changed)
  vendor/bc/dist/include/status.h   (contents, props changed)
  vendor/bc/dist/include/vector.h   (contents, props changed)
  vendor/bc/dist/include/vm.h   (contents, props changed)
  vendor/bc/dist/install.sh   (contents, props changed)
  vendor/bc/dist/karatsuba.py   (contents, props changed)
  vendor/bc/dist/link.sh   (contents, props changed)
  vendor/bc/dist/locale_install.sh   (contents, props changed)
  vendor/bc/dist/locale_uninstall.sh   (contents, props changed)
  vendor/bc/dist/locales/
  vendor/bc/dist/locales/de_AT.ISO8859-1.msg   (contents, props changed)
  vendor/bc/dist/locales/de_AT.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/de_AT.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/de_AT.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/de_CH.ISO8859-1.msg   (contents, props changed)
  vendor/bc/dist/locales/de_CH.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/de_CH.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/de_CH.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/de_DE.ISO8859-1.msg
  vendor/bc/dist/locales/de_DE.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/de_DE.UTF-8.msg
  vendor/bc/dist/locales/de_DE.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/en_AU.ISO8859-1.msg   (contents, props changed)
  vendor/bc/dist/locales/en_AU.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/en_AU.US-ASCII.msg   (contents, props changed)
  vendor/bc/dist/locales/en_AU.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/en_AU.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/en_CA.ISO8859-1.msg   (contents, props changed)
  vendor/bc/dist/locales/en_CA.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/en_CA.US-ASCII.msg   (contents, props changed)
  vendor/bc/dist/locales/en_CA.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/en_CA.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/en_GB.ISO8859-1.msg   (contents, props changed)
  vendor/bc/dist/locales/en_GB.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/en_GB.US-ASCII.msg   (contents, props changed)
  vendor/bc/dist/locales/en_GB.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/en_GB.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/en_IE.ISO8859-1.msg   (contents, props changed)
  vendor/bc/dist/locales/en_IE.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/en_IE.US_ASCII.msg   (contents, props changed)
  vendor/bc/dist/locales/en_IE.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/en_IE.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/en_NZ.ISO8859-1.msg   (contents, props changed)
  vendor/bc/dist/locales/en_NZ.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/en_NZ.US-ASCII.msg   (contents, props changed)
  vendor/bc/dist/locales/en_NZ.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/en_NZ.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/en_US.ISO8859-1.msg   (contents, props changed)
  vendor/bc/dist/locales/en_US.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/en_US.US-ASCII.msg   (contents, props changed)
  vendor/bc/dist/locales/en_US.US_ASCII.msg   (contents, props changed)
  vendor/bc/dist/locales/en_US.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/en_US.msg
  vendor/bc/dist/locales/en_US.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/es_ES.UTF-8.msg
  vendor/bc/dist/locales/es_ES.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_BE.ISO8859-1.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_BE.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_BE.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_BE.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_CA.ISO8859-1.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_CA.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_CA.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_CA.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_CH.ISO8859-1.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_CH.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_CH.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_CH.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_FR.ISO8859-1.msg
  vendor/bc/dist/locales/fr_FR.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/fr_FR.UTF-8.msg
  vendor/bc/dist/locales/fr_FR.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/ja_JP.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/ja_JP.eucJP.msg   (contents, props changed)
  vendor/bc/dist/locales/ja_JP.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/nl_BE.ISO8859-1.msg   (contents, props changed)
  vendor/bc/dist/locales/nl_BE.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/nl_NL.ISO8859-1.msg
  vendor/bc/dist/locales/nl_NL.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/nl_NL.UTF-8.msg
  vendor/bc/dist/locales/nl_NL.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/pl_PL.ISO8859-2.msg
  vendor/bc/dist/locales/pl_PL.UTF-8.msg
  vendor/bc/dist/locales/pl_PL.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/pt_BR.ISO8859-1.msg   (contents, props changed)
  vendor/bc/dist/locales/pt_BR.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/pt_BR.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/pt_BR.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/pt_PT.ISO8859-1.msg
  vendor/bc/dist/locales/pt_PT.ISO8859-15.msg   (contents, props changed)
  vendor/bc/dist/locales/pt_PT.UTF-8.msg
  vendor/bc/dist/locales/pt_PT.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/ru_RU.CP1251.msg   (contents, props changed)
  vendor/bc/dist/locales/ru_RU.CP866.msg   (contents, props changed)
  vendor/bc/dist/locales/ru_RU.ISO8859-5.msg   (contents, props changed)
  vendor/bc/dist/locales/ru_RU.KOI8-R.msg   (contents, props changed)
  vendor/bc/dist/locales/ru_RU.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/ru_RU.utf8.msg   (contents, props changed)
  vendor/bc/dist/locales/zh_CN.GB18030.msg   (contents, props changed)
  vendor/bc/dist/locales/zh_CN.GB2312.msg   (contents, props changed)
  vendor/bc/dist/locales/zh_CN.GBK.msg   (contents, props changed)
  vendor/bc/dist/locales/zh_CN.UTF-8.msg   (contents, props changed)
  vendor/bc/dist/locales/zh_CN.eucCN.msg   (contents, props changed)
  vendor/bc/dist/locales/zh_CN.utf8.msg   (contents, props changed)
  vendor/bc/dist/manpage.sh   (contents, props changed)
  vendor/bc/dist/manuals/
  vendor/bc/dist/manuals/algorithms.md
  vendor/bc/dist/manuals/bc.1   (contents, props changed)
  vendor/bc/dist/manuals/bc.1.ronn
  vendor/bc/dist/manuals/bc.md   (contents, props changed)
  vendor/bc/dist/manuals/benchmarks.md
  vendor/bc/dist/manuals/build.md
  vendor/bc/dist/manuals/dc.1   (contents, props changed)
  vendor/bc/dist/manuals/dc.1.ronn
  vendor/bc/dist/manuals/dc.md   (contents, props changed)
  vendor/bc/dist/release.sh   (contents, props changed)
  vendor/bc/dist/safe-install.sh   (contents, props changed)
  vendor/bc/dist/src/
  vendor/bc/dist/src/args.c   (contents, props changed)
  vendor/bc/dist/src/bc/
  vendor/bc/dist/src/bc/bc.c   (contents, props changed)
  vendor/bc/dist/src/bc/lex.c   (contents, props changed)
  vendor/bc/dist/src/bc/parse.c   (contents, props changed)
  vendor/bc/dist/src/data.c   (contents, props changed)
  vendor/bc/dist/src/dc/
  vendor/bc/dist/src/dc/dc.c   (contents, props changed)
  vendor/bc/dist/src/dc/lex.c   (contents, props changed)
  vendor/bc/dist/src/dc/parse.c   (contents, props changed)
  vendor/bc/dist/src/file.c   (contents, props changed)
  vendor/bc/dist/src/history/
  vendor/bc/dist/src/history/history.c   (contents, props changed)
  vendor/bc/dist/src/lang.c   (contents, props changed)
  vendor/bc/dist/src/lex.c   (contents, props changed)
  vendor/bc/dist/src/main.c   (contents, props changed)
  vendor/bc/dist/src/num.c   (contents, props changed)
  vendor/bc/dist/src/opt.c   (contents, props changed)
  vendor/bc/dist/src/parse.c   (contents, props changed)
  vendor/bc/dist/src/program.c   (contents, props changed)
  vendor/bc/dist/src/rand/
  vendor/bc/dist/src/rand/rand.c   (contents, props changed)
  vendor/bc/dist/src/read.c   (contents, props changed)
  vendor/bc/dist/src/vector.c   (contents, props changed)
  vendor/bc/dist/src/vm.c   (contents, props changed)
  vendor/bc/dist/tests/
  vendor/bc/dist/tests/afl.py   (contents, props changed)
  vendor/bc/dist/tests/all.sh   (contents, props changed)
  vendor/bc/dist/tests/all.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/
  vendor/bc/dist/tests/bc/abs.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/abs_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/add.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/add_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/all.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/arctangent.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/arctangent_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/arrays.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/arrays_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/assignments.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/assignments_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/boolean.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/boolean_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/comp.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/comp_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/cosine.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/cosine_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/decimal.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/decimal_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/divide.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/divide_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/engineering.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/engineering_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/
  vendor/bc/dist/tests/bc/errors.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/01.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/02.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/03.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/04.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/05.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/06.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/07.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/08.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/09.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/10.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/11.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/12.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/13.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/14.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/15.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/16.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/17.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/18.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/19.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/20.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/21.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/errors/22.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/exponent.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/exponent_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/functions.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/functions_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/globals.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/globals_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/length.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/length_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/letters.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/letters_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/lib2.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/lib2_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/log.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/log_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/misc.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/misc1.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/misc1_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/misc2.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/misc2_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/misc3.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/misc3_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/misc4.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/misc4_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/misc5.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/misc5_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/misc_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/modulus.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/modulus_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/multiply.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/multiply_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/pi.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/pi_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/places.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/places_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/posix_errors.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/power.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/power_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/print2.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/print2_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/rand.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/rand_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/read.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/read_errors.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/read_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/scale.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/scale_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/scientific.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/scientific_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/
  vendor/bc/dist/tests/bc/scripts/add.bc
  vendor/bc/dist/tests/bc/scripts/array.bc   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/array.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/atan.bc   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/atan.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/bessel.bc   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/divide.bc
  vendor/bc/dist/tests/bc/scripts/functions.bc
  vendor/bc/dist/tests/bc/scripts/functions.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/globals.bc   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/globals.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/len.bc
  vendor/bc/dist/tests/bc/scripts/len.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/multiply.bc
  vendor/bc/dist/tests/bc/scripts/parse.bc   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/print.bc   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/rand.bc
  vendor/bc/dist/tests/bc/scripts/rand.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/references.bc   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/references.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/screen.bc   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/screen.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/scripts/subtract.bc
  vendor/bc/dist/tests/bc/shift.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/shift_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/sine.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/sine_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/sqrt.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/sqrt_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/stdin.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/stdin_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/strings.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/strings_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/subtract.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/subtract_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/timeconst.sh   (contents, props changed)
  vendor/bc/dist/tests/bc/trunc.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/trunc_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/vars.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/vars_results.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/void.txt   (contents, props changed)
  vendor/bc/dist/tests/bc/void_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/
  vendor/bc/dist/tests/dc/abs.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/abs_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/add.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/add_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/all.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/boolean.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/boolean_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/decimal.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/decimal_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/divide.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/divide_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/divmod.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/divmod_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/engineering.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/engineering_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/
  vendor/bc/dist/tests/dc/errors.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/01.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/02.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/03.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/04.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/05.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/06.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/07.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/08.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/09.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/10.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/11.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/12.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/13.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/14.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/15.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/16.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/17.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/18.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/19.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/20.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/21.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/22.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/23.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/errors/24.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/misc.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/misc_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/modexp.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/modexp_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/modulus.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/modulus_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/multiply.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/multiply_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/negate.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/negate_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/places.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/places_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/power.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/power_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/rand.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/rand_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/read.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/read_errors.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/read_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/scientific.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/scientific_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/
  vendor/bc/dist/tests/dc/scripts/array.dc   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/array.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/asciify.dc   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/asciify.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/else.dc   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/else.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/factorial.dc   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/factorial.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/loop.dc   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/loop.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/prime.dc   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/quit.dc   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/quit.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/stream.dc   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/weird.dc   (contents, props changed)
  vendor/bc/dist/tests/dc/scripts/weird.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/shift.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/shift_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/sqrt.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/sqrt_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/stdin.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/stdin_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/strings.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/strings_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/subtract.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/subtract_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/trunc.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/trunc_results.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/vars.txt   (contents, props changed)
  vendor/bc/dist/tests/dc/vars_results.txt   (contents, props changed)
  vendor/bc/dist/tests/errors.sh   (contents, props changed)
  vendor/bc/dist/tests/radamsa.sh   (contents, props changed)
  vendor/bc/dist/tests/radamsa.txt   (contents, props changed)
  vendor/bc/dist/tests/randmath.py   (contents, props changed)
  vendor/bc/dist/tests/read.sh   (contents, props changed)
  vendor/bc/dist/tests/script.sh   (contents, props changed)
  vendor/bc/dist/tests/scripts.sh   (contents, props changed)
  vendor/bc/dist/tests/stdin.sh   (contents, props changed)
  vendor/bc/dist/tests/test.sh   (contents, props changed)
Directory Properties:
  vendor/bc/dist/   (props changed)

Added: vendor/bc/dist/.gitignore
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/bc/dist/.gitignore	Sat Jun 27 15:03:19 2020	(r362697)
@@ -0,0 +1,54 @@
+*.config
+*.creator
+*.files
+*.includes
+*.creator.user*
+*.cflags
+*.cxxflags
+bin/*bc
+bin/*bc.exe
+bin/*dc
+bin/*dc.exe
+bc.old
+*.o
+*.a
+.log_*.txt
+.test.txt
+.math.txt
+.results.txt
+.ops.txt
+gen/strgen
+lib.c
+lib2.c
+lib3.c
+bc_help.c
+dc_help.c
+config.mak
+timeconst.bc
+Makefile
+
+.gdb_history
+
+# Ignore the generated test files
+parse.txt
+parse_results.txt
+print.txt
+print_results.txt
+bessel.txt
+bessel_results.txt
+prime.txt
+stream.txt
+tests/bc/scripts/add.txt
+tests/bc/scripts/divide.txt
+tests/bc/scripts/multiply.txt
+tests/bc/scripts/subtract.txt
+perf.data
+perf.data.old
+*.gcda
+*.gcno
+*.gcov
+*.html
+*.profraw
+
+cscope*.out
+tags

Added: vendor/bc/dist/.travis.yml
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/bc/dist/.travis.yml	Sat Jun 27 15:03:19 2020	(r362697)
@@ -0,0 +1,42 @@
+dist: bionic
+
+language: c
+
+arch:
+  - amd64
+  - arm64
+  - ppc64le
+
+compiler:
+  - gcc
+
+env:
+  global:
+    - CODECOV_TOKEN="040ce7eb-5bc7-4040-8324-364f3ef4baa3"
+    - CFLAGS="-coverage -DBC_RAND_BUILTIN=0"
+  matrix:
+    - CONFIGURE_ARGS=-fHNPOg GEN_HOST=1 LONG_BIT=64
+    - CONFIGURE_ARGS=-bfHNPOg GEN_HOST=1 LONG_BIT=64
+    - CONFIGURE_ARGS=-dfHNPOg GEN_HOST=1 LONG_BIT=64
+    - CONFIGURE_ARGS=-fEHNPOg GEN_HOST=1 LONG_BIT=64
+    - CONFIGURE_ARGS=-bfEHNPOg GEN_HOST=1 LONG_BIT=64
+    - CONFIGURE_ARGS=-dfEHNPOg GEN_HOST=1 LONG_BIT=64
+    - CONFIGURE_ARGS=-fHNPOg GEN_HOST=1 LONG_BIT=32
+    - CONFIGURE_ARGS=-bfHNPOg GEN_HOST=1 LONG_BIT=32
+    - CONFIGURE_ARGS=-dfHNPOg GEN_HOST=1 LONG_BIT=32
+    - CONFIGURE_ARGS=-fEHNPOg GEN_HOST=1 LONG_BIT=32
+    - CONFIGURE_ARGS=-bfEHNPOg GEN_HOST=1 LONG_BIT=32
+    - CONFIGURE_ARGS=-dfEHNPOg GEN_HOST=1 LONG_BIT=32
+
+before_install:
+  - sudo apt-get install -y dc
+  - pip install --user codecov
+
+before_script:
+  - curl -o tests/bc/scripts/timeconst.bc https://raw.githubusercontent.com/torvalds/linux/master/kernel/time/timeconst.bc
+
+after_success:
+  - bash <(curl -s https://codecov.io/bash)
+
+script:
+  - if [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then ./configure.sh "$CONFIGURE_ARGS" && make -j4 && make -j4 test ; fi

Added: vendor/bc/dist/LICENSE.md
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/bc/dist/LICENSE.md	Sat Jun 27 15:03:19 2020	(r362697)
@@ -0,0 +1,59 @@
+# License
+
+Copyright (c) 2018-2020 Gavin D. Howard <yzena.tech at gmail.com>
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+## History
+
+The files `src/history.c` and `include/history.h` are under the following
+copyrights and license:
+
+Copyright (c) 2010-2014, Salvatore Sanfilippo <antirez at gmail dot com><br>
+Copyright (c) 2010-2013, Pieter Noordhuis <pcnoordhuis at gmail dot com><br>
+Copyright (c) 2018 rain-1 <rain1 at openmailbox.org><br>
+Copyright (c) 2018-2020, Gavin D. Howard <yzena.tech at gmail.com>
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Added: vendor/bc/dist/Makefile.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/bc/dist/Makefile.in	Sat Jun 27 15:03:19 2020	(r362697)
@@ -0,0 +1,362 @@
+#
+# Copyright (c) 2018-2020 Gavin D. Howard and contributors.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+#   list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright notice,
+#   this list of conditions and the following disclaimer in the documentation
+#   and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# %%WARNING%%
+#
+.POSIX:
+
+VERSION = 3.0.2
+
+SRC = %%SRC%%
+OBJ = %%OBJ%%
+GCDA = %%GCDA%%
+GCNO = %%GCNO%%
+
+BC_SRC = %%BC_SRC%%
+BC_OBJ = %%BC_OBJ%%
+BC_GCDA = %%BC_GCDA%%
+BC_GCNO = %%BC_GCNO%%
+
+DC_SRC = %%DC_SRC%%
+DC_OBJ = %%DC_OBJ%%
+DC_GCDA = %%DC_GCDA%%
+DC_GCNO = %%DC_GCNO%%
+
+HISTORY_SRC = %%HISTORY_SRC%%
+HISTORY_OBJ = %%HISTORY_OBJ%%
+HISTORY_GCDA = %%HISTORY_GCDA%%
+HISTORY_GCNO = %%HISTORY_GCNO%%
+
+RAND_SRC = %%RAND_SRC%%
+RAND_OBJ = %%RAND_OBJ%%
+RAND_GCDA = %%RAND_GCDA%%
+RAND_GCNO = %%RAND_GCNO%%
+
+BC_ENABLED_NAME = BC_ENABLED
+BC_ENABLED = %%BC_ENABLED%%
+DC_ENABLED_NAME = DC_ENABLED
+DC_ENABLED = %%DC_ENABLED%%
+
+GEN_DIR = gen
+GEN = %%GEN%%
+GEN_EXEC = $(GEN_DIR)/$(GEN)
+GEN_C = $(GEN_DIR)/$(GEN).c
+
+GEN_EMU = %%GEN_EMU%%
+
+BC_LIB = $(GEN_DIR)/lib.bc
+BC_LIB_C = $(GEN_DIR)/lib.c
+BC_LIB_O = %%BC_LIB_O%%
+BC_LIB_GCDA = $(GEN_DIR)/lib.gcda
+BC_LIB_GCNO = $(GEN_DIR)/lib.gcno
+
+BC_LIB2 = $(GEN_DIR)/lib2.bc
+BC_LIB2_C = $(GEN_DIR)/lib2.c
+BC_LIB2_O = %%BC_LIB2_O%%
+BC_LIB2_GCDA = $(GEN_DIR)/lib2.gcda
+BC_LIB2_GCNO = $(GEN_DIR)/lib2.gcno
+
+BC_HELP = $(GEN_DIR)/bc_help.txt
+BC_HELP_C = $(GEN_DIR)/bc_help.c
+BC_HELP_O = %%BC_HELP_O%%
+BC_HELP_GCDA = $(GEN_DIR)/bc_help.gcda
+BC_HELP_GCNO = $(GEN_DIR)/bc_help.gcno
+
+DC_HELP = $(GEN_DIR)/dc_help.txt
+DC_HELP_C = $(GEN_DIR)/dc_help.c
+DC_HELP_O = %%DC_HELP_O%%
+DC_HELP_GCDA = $(GEN_DIR)/dc_help.gcda
+DC_HELP_GCNO = $(GEN_DIR)/dc_help.gcno
+
+BIN = bin
+LOCALES = locales
+EXEC_SUFFIX = %%EXECSUFFIX%%
+EXEC_PREFIX = %%EXECPREFIX%%
+
+BC = bc
+DC = dc
+BC_EXEC = $(BIN)/$(EXEC_PREFIX)$(BC)
+DC_EXEC = $(BIN)/$(EXEC_PREFIX)$(DC)
+
+MANUALS = manuals
+BC_MANPAGE_NAME = $(EXEC_PREFIX)$(BC)$(EXEC_SUFFIX).1
+BC_MANPAGE = $(MANUALS)/$(BC).1
+BC_RONN = $(BC_MANPAGE).ronn
+DC_MANPAGE_NAME = $(EXEC_PREFIX)$(DC)$(EXEC_SUFFIX).1
+DC_MANPAGE = $(MANUALS)/$(DC).1
+DC_RONN = $(DC_MANPAGE).ronn
+
+MANPAGE_INSTALL_ARGS = -Dm644
+
+%%DESTDIR%%
+BINDIR = %%BINDIR%%
+MAN1DIR = %%MAN1DIR%%
+MAIN_EXEC = $(EXEC_PREFIX)$(%%MAIN_EXEC%%)$(EXEC_SUFFIX)
+EXEC = $(%%EXEC%%)
+NLSPATH = %%NLSPATH%%
+
+BC_ENABLE_HISTORY = %%HISTORY%%
+BC_ENABLE_EXTRA_MATH_NAME = BC_ENABLE_EXTRA_MATH
+BC_ENABLE_EXTRA_MATH = %%EXTRA_MATH%%
+BC_ENABLE_NLS = %%NLS%%
+BC_ENABLE_PROMPT = %%PROMPT%%
+BC_LONG_BIT = %%LONG_BIT%%
+
+RM = rm
+MKDIR = mkdir
+
+INSTALL = ./install.sh
+SAFE_INSTALL = ./safe-install.sh
+LINK = ./link.sh
+MANPAGE = ./manpage.sh
+KARATSUBA = ./karatsuba.py
+LOCALE_INSTALL = ./locale_install.sh
+LOCALE_UNINSTALL = ./locale_uninstall.sh
+
+VALGRIND_ARGS = --error-exitcode=100 --leak-check=full --show-leak-kinds=all --errors-for-leak-kinds=all
+
+BC_NUM_KARATSUBA_LEN = %%KARATSUBA_LEN%%
+
+CPPFLAGS1 = -D$(BC_ENABLED_NAME)=$(BC_ENABLED) -D$(DC_ENABLED_NAME)=$(DC_ENABLED)
+CPPFLAGS2 = $(CPPFLAGS1) -I./include/ -DVERSION=$(VERSION) %%LONG_BIT_DEFINE%%
+CPPFLAGS3 = $(CPPFLAGS2) -DEXECPREFIX=$(EXEC_PREFIX) -DMAINEXEC=$(MAIN_EXEC)
+CPPFLAGS4 = $(CPPFLAGS3) -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700
+CPPFLAGS5 = $(CPPFLAGS4) -DBC_NUM_KARATSUBA_LEN=$(BC_NUM_KARATSUBA_LEN)
+CPPFLAGS6 = $(CPPFLAGS5) -DBC_ENABLE_NLS=$(BC_ENABLE_NLS) -DBC_ENABLE_PROMPT=$(BC_ENABLE_PROMPT)
+CPPFLAGS7 = $(CPPFLAGS6) -D$(BC_ENABLE_EXTRA_MATH_NAME)=$(BC_ENABLE_EXTRA_MATH)
+CPPFLAGS = $(CPPFLAGS7) -DBC_ENABLE_HISTORY=$(BC_ENABLE_HISTORY)
+CFLAGS = $(CPPFLAGS) %%CPPFLAGS%% %%CFLAGS%%
+LDFLAGS = %%LDFLAGS%%
+
+HOSTCFLAGS = %%HOSTCFLAGS%%
+
+CC = %%CC%%
+HOSTCC = %%HOSTCC%%
+
+BC_LIB_C_ARGS = bc_lib bc.h bc_lib_name $(BC_ENABLED_NAME) 1
+BC_LIB2_C_ARGS = bc_lib2 bc.h bc_lib2_name "$(BC_ENABLED_NAME) && $(BC_ENABLE_EXTRA_MATH_NAME)" 1
+
+OBJS1 = $(OBJ) $(DC_OBJ) $(BC_OBJ) $(HISTORY_OBJ) $(RAND_OBJ) $(BC_HELP_O) $(DC_HELP_O)
+OBJS = $(OBJS1) $(BC_LIB_O) $(BC_LIB2_O) $(BC_LIB3_O)
+OBJ_TARGETS1 = $(DC_HELP_O) $(BC_HELP_O) $(BC_LIB_O) $(BC_LIB2_O) $(BC_LIB3_O)
+OBJ_TARGETS = $(OBJ_TARGETS1) $(BC_OBJ) $(DC_OBJ) $(HISTORY_OBJ) $(RAND_OBJ) $(OBJ)
+
+.c.o:
+	$(CC) $(CFLAGS) -o $@ -c $<
+
+all: make_bin $(OBJ_TARGETS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $(EXEC)
+	%%LINK%%
+
+$(GEN_EXEC):
+	%%GEN_EXEC_TARGET%%
+
+$(BC_LIB_C): $(GEN_EXEC) $(BC_LIB)
+	$(GEN_EMU) $(GEN_EXEC) $(BC_LIB) $(BC_LIB_C) $(BC_LIB_C_ARGS)
+
+$(BC_LIB2_C): $(GEN_EXEC) $(BC_LIB2)
+	$(GEN_EMU) $(GEN_EXEC) $(BC_LIB2) $(BC_LIB2_C) $(BC_LIB2_C_ARGS)
+
+$(BC_HELP_C): $(GEN_EXEC) $(BC_HELP)
+	$(GEN_EMU) $(GEN_EXEC) $(BC_HELP) $(BC_HELP_C) bc_help bc.h "" $(BC_ENABLED_NAME)
+
+$(DC_HELP_C): $(GEN_EXEC) $(DC_HELP)
+	$(GEN_EMU) $(GEN_EXEC) $(DC_HELP) $(DC_HELP_C) dc_help dc.h "" $(DC_ENABLED_NAME)
+
+make_bin:
+	$(MKDIR) -p $(BIN)
+
+help:
+	@printf 'available targets:\n'
+	@printf '\n'
+	@printf '    all (default)   builds %%EXECUTABLES%%\n'
+	@printf '    check           alias for `make test`\n'
+	@printf '    clean           removes all build files\n'
+	@printf '    clean_config    removes all build files as well as the generated Makefile\n'
+	@printf '    clean_tests     removes all build files, the generated Makefile,\n'
+	@printf '                    and generated tests\n'
+	@printf '    install         installs binaries to "%s%s"\n' "$(DESTDIR)" "$(BINDIR)"
+	@printf '                    and (if enabled) manpages to "%s%s"\n' "$(DESTDIR)" "$(MAN1DIR)"
+	@printf '    karatsuba       runs the karatsuba script (requires Python 3)\n'
+	@printf '    karatsuba_test  runs the karatsuba script while running tests\n'
+	@printf '                    (requires Python 3)\n'
+	@printf '    uninstall       uninstalls binaries from "%s%s"\n' "$(DESTDIR)" "$(BINDIR)"
+	@printf '                    and (if enabled) manpages from "%s%s"\n' "$(DESTDIR)" "$(MAN1DIR)"
+	@printf '    test            runs the test suite\n'
+	@printf '    test_bc         runs the bc test suite, if bc has been built\n'
+	@printf '    test_dc         runs the dc test suite, if dc has been built\n'
+	@printf '    time_test       runs the test suite, displaying times for some things\n'
+	@printf '    time_test_bc    runs the bc test suite, displaying times for some things\n'
+	@printf '    time_test_dc    runs the dc test suite, displaying times for some things\n'
+	@printf '    timeconst       runs the test on the Linux timeconst.bc script,\n'
+	@printf '                    if it exists and bc has been built\n'
+	@printf '    valgrind        runs the test suite through valgrind\n'
+	@printf '    valgrind_bc     runs the bc test suite, if bc has been built,\n'
+	@printf '                    through valgrind\n'
+	@printf '    valgrind_dc     runs the dc test suite, if dc has been built,\n'
+	@printf '                    through valgrind\n'
+
+check: test
+
+test: test_bc timeconst test_dc
+
+test_bc:
+	%%BC_TEST%%
+
+test_dc:
+	%%DC_TEST%%
+
+time_test: time_test_bc timeconst time_test_dc
+
+time_test_bc:
+	%%BC_TIME_TEST%%
+
+time_test_dc:
+	%%DC_TIME_TEST%%
+
+timeconst:
+	%%TIMECONST%%
+
+valgrind: valgrind_bc valgrind_dc
+
+valgrind_bc:
+	%%VG_BC_TEST%%
+
+valgrind_dc:
+	%%VG_DC_TEST%%
+
+karatsuba:
+	%%KARATSUBA%%
+
+karatsuba_test:
+	%%KARATSUBA_TEST%%
+
+coverage_output:
+	%%COVERAGE_OUTPUT%%
+
+coverage:%%COVERAGE_PREREQS%%
+
+version:
+	@printf '%s' "$(VERSION)"
+
+libcname:
+	@printf '%s' "$(BC_LIB_C)"
+
+extra_math:
+	@printf '%s' "$(BC_ENABLE_EXTRA_MATH)"
+
+manpages:
+	$(MANPAGE) $(BC_RONN) $(BC_MANPAGE)
+	$(MANPAGE) $(DC_RONN) $(DC_MANPAGE)
+
+clean_gen:
+	@$(RM) -f $(GEN_EXEC)
+
+clean:%%CLEAN_PREREQS%%
+	@printf 'Cleaning files...\n'
+	@$(RM) -f $(OBJ)
+	@$(RM) -f $(BC_OBJ)
+	@$(RM) -f $(DC_OBJ)
+	@$(RM) -f $(HISTORY_OBJ)
+	@$(RM) -f $(RAND_OBJ)
+	@$(RM) -f $(BC_EXEC)
+	@$(RM) -f $(DC_EXEC)
+	@$(RM) -fr $(BIN)
+	@$(RM) -f $(LOCALES)/*.cat
+	@$(RM) -f $(BC_LIB_C) $(BC_LIB_O)
+	@$(RM) -f $(BC_LIB2_C) $(BC_LIB2_O)
+	@$(RM) -f $(BC_HELP_C) $(BC_HELP_O)
+	@$(RM) -f $(DC_HELP_C) $(DC_HELP_O)
+
+clean_config: clean
+	@printf 'Cleaning config...\n'
+	@$(RM) -f Makefile
+
+clean_coverage:
+	@printf 'Cleaning coverage files...\n'
+	@$(RM) -f *.gcov
+	@$(RM) -f *.html
+	@$(RM) -f *.gcda *.gcno
+	@$(RM) -f *.profraw
+	@$(RM) -f $(GCDA) $(GCNO)
+	@$(RM) -f $(BC_GCDA) $(BC_GCNO)
+	@$(RM) -f $(DC_GCDA) $(DC_GCNO)
+	@$(RM) -f $(HISTORY_GCDA) $(HISTORY_GCNO)
+	@$(RM) -f $(RAND_GCDA) $(RAND_GCNO)
+	@$(RM) -f $(BC_LIB_GCDA) $(BC_LIB_GCNO)
+	@$(RM) -f $(BC_LIB2_GCDA) $(BC_LIB2_GCNO)
+	@$(RM) -f $(BC_HELP_GCDA) $(BC_HELP_GCNO)
+	@$(RM) -f $(DC_HELP_GCDA) $(DC_HELP_GCNO)
+
+clean_tests: clean clean_config clean_coverage
+	@printf 'Cleaning test files...\n'
+	@$(RM) -f tests/bc/parse.txt tests/bc/parse_results.txt
+	@$(RM) -f tests/bc/print.txt tests/bc/print_results.txt
+	@$(RM) -f tests/bc/bessel.txt tests/bc/bessel_results.txt
+	@$(RM) -f tests/bc/scripts/bessel.txt
+	@$(RM) -f tests/bc/scripts/parse.txt
+	@$(RM) -f tests/bc/scripts/print.txt
+	@$(RM) -f tests/bc/scripts/add.txt
+	@$(RM) -f tests/bc/scripts/divide.txt
+	@$(RM) -f tests/bc/scripts/multiply.txt
+	@$(RM) -f tests/bc/scripts/subtract.txt
+	@$(RM) -f tests/dc/scripts/prime.txt tests/dc/scripts/stream.txt
+	@$(RM) -f .log_*.txt
+	@$(RM) -f .math.txt .results.txt .ops.txt
+	@$(RM) -f .test.txt
+	@$(RM) -f tags .gdbbreakpoints .gdb_history .gdbsetup
+	@$(RM) -f cscope.*
+	@$(RM) -f bc.old
+
+install_locales:
+	$(LOCALE_INSTALL) $(NLSPATH) $(MAIN_EXEC) $(DESTDIR)
+
+install_bc_manpage:
+	$(SAFE_INSTALL) $(MANPAGE_INSTALL_ARGS) $(BC_MANPAGE) $(DESTDIR)$(MAN1DIR)/$(BC_MANPAGE_NAME)
+
+install_dc_manpage:
+	$(SAFE_INSTALL) $(MANPAGE_INSTALL_ARGS) $(DC_MANPAGE) $(DESTDIR)$(MAN1DIR)/$(DC_MANPAGE_NAME)
+
+install:%%INSTALL_LOCALES_PREREQS%%%%INSTALL_PREREQS%%
+	$(INSTALL) $(DESTDIR)$(BINDIR) "$(EXEC_SUFFIX)"
+
+uninstall_locales:
+	$(LOCALE_UNINSTALL) $(NLSPATH) $(MAIN_EXEC) $(DESTDIR)
+
+uninstall_bc_manpage:
+	$(RM) -f $(DESTDIR)$(MAN1DIR)/$(BC_MANPAGE_NAME)
+
+uninstall_bc:
+	$(RM) -f $(DESTDIR)$(BINDIR)/$(EXEC_PREFIX)$(BC)$(EXEC_SUFFIX)
+
+uninstall_dc_manpage:
+	$(RM) -f $(DESTDIR)$(MAN1DIR)/$(DC_MANPAGE_NAME)
+
+uninstall_dc:
+	$(RM) -f $(DESTDIR)$(BINDIR)/$(EXEC_PREFIX)$(DC)$(EXEC_SUFFIX)
+
+uninstall:%%UNINSTALL_LOCALES_PREREQS%%%%UNINSTALL_MAN_PREREQS%%%%UNINSTALL_PREREQS%%

Added: vendor/bc/dist/NEWS.md
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/bc/dist/NEWS.md	Sat Jun 27 15:03:19 2020	(r362697)
@@ -0,0 +1,824 @@
+# News
+
+## 3.0.2
+
+This is a production release that adds `utf8` locale symlinks and removes an
+unused `auto` variable from the `ceil()` function in the [extended math
+library][16].
+
+Users do ***NOT*** need to update unless they want the locales.
+
+## 3.0.1
+
+This is a production release with two small changes. Users do ***NOT*** need to
+upgrade to this release; however, if they haven't upgraded to `3.0.0` yet, it
+may be worthwhile to upgrade to this release.
+
+The first change is fixing a compiler warning on FreeBSD with strict warnings
+on.
+
+The second change is to make the new implementation of `ceil()` in `lib2.bc`
+much more efficient.
+
+## 3.0.0
+
+*Notes for package maintainers:*
+
+*First, the `2.7.0` release series saw a change in the option parsing. This made
+me change one error message and add a few others. The error message that was
+changed removed one format specifier. This means that `printf()` will seqfault
+on old locale files. Unfortunately, `bc` cannot use any locale files except the
+global ones that are already installed, so it will use the previous ones while
+running tests during install. **If `bc` segfaults while running arg tests when
+updating, it is because the global locale files have not been replaced. Make
+sure to either prevent the test suite from running on update or remove the old
+locale files before updating.** Once this is done, `bc` should install without
+problems.*
+
+*Second, **the option to build without signal support has been removed**. See
+below for the reasons why.*
+
+This is a production release with some small bug fixes, a few improvements,
+three major bug fixes, and a complete redesign of `bc`'s error and signal
+handling. **Users and package maintainers should update to this version as soon
+as possible.**
+
+The first major bug fix was in how `bc` executed files. Previously, a whole file
+was parsed before it was executed, but if a function is defined *after* code,
+especially if the function definition was actually a redefinition, and the code
+before the definition referred to the previous function, this `bc` would replace
+the function before executing any code. The fix was to make sure that all code
+that existed before a function definition was executed.
+
+The second major bug fix was in `bc`'s `lib2.bc`. The `ceil()` function had a
+bug where a `0` in the decimal place after the truncation position, caused it to
+output the wrong numbers if there was any non-zero digit after.
+
+The third major bug is that when passing parameters to functions, if an
+expression included an array (not an array element) as a parameter, it was
+accepted, when it should have been rejected. It is now correctly rejected.
+
+Beyond that, this `bc` got several improvements that both sped it up, improved
+the handling of signals, and improved the error handling.
+
+First, the requirements for `bc` were pushed back to POSIX 2008. `bc` uses one
+function, `strdup()`, which is not in POSIX 2001, and it is in the X/Open System
+Interfaces group 2001. It is, however, in POSIX 2008, and since POSIX 2008 is
+old enough to be supported anywhere that I care, that should be the requirement.
+
+Second, the BcVm global variable was put into `bss`. This actually slightly
+reduces the size of the executable from a massive code shrink, and it will stop
+`bc` from allocating a large set of memory when `bc` starts.
+
+Third, the default Karatsuba length was updated from 64 to 32 after making the
+optimization changes below, since 32 is going to be better than 64 after the
+changes.
+
+Fourth, Spanish translations were added.
+
+Fifth, the interpreter received a speedup to make performance on non-math-heavy
+scripts more competitive with GNU `bc`. While improvements did, in fact, get it
+much closer (see the [benchmarks][19]), it isn't quite there.
+
+There were several things done to speed up the interpreter:
+
+First, several small inefficiencies were removed. These inefficiencies included
+calling the function `bc_vec_pop(v)` twice instead of calling
+`bc_vec_npop(v, 2)`. They also included an extra function call for checking the
+size of the stack and checking the size of the stack more than once on several
+operations.
+
+Second, since the current `bc` function is the one that stores constants and
+strings, the program caches pointers to the current function's vectors of
+constants and strings to prevent needing to grab the current function in order
+to grab a constant or a string.
+
+Third, `bc` tries to reuse `BcNum`'s (the internal representation of
+arbitary-precision numbers). If a `BcNum` has the default capacity of
+`BC_NUM_DEF_SIZE` (32 on 64-bit and 16 on 32-bit) when it is freed, it is added
+to a list of available `BcNum`'s. And then, when a `BcNum` is allocated with a
+capacity of `BC_NUM_DEF_SIZE` and any `BcNum`'s exist on the list of reusable
+ones, one of those ones is grabbed instead.
+
+In order to support these changes, the `BC_NUM_DEF_SIZE` was changed. It used to
+be 16 bytes on all systems, but it was changed to more closely align with the
+minimum allocation size on Linux, which is either 32 bytes (64-bit musl), 24
+bytes (64-bit glibc), 16 bytes (32-bit musl), or 12 bytes (32-bit glibc). Since
+these are the minimum allocation sizes, these are the sizes that would be
+allocated anyway, making it worth it to just use the whole space, so the value
+of `BC_NUM_DEF_SIZE` on 64-bit systems was changed to 32 bytes.
+
+On top of that, at least on 64-bit, `BC_NUM_DEF_SIZE` supports numbers with
+either 72 integer digits or 45 integer digits and 27 fractional digits. This
+should be more than enough for most cases since `bc`'s default `scale` values
+are 0 or 20, meaning that, by default, it has at most 20 fractional digits. And
+45 integer digits are *a lot*; it's enough to calculate the amount of mass in
+the Milky Way galaxy in kilograms. Also, 72 digits is enough to calculate the
+diameter of the universe in Planck lengths.
+
+(For 32-bit, these numbers are either 32 integer digits or 12 integer digits and
+20 fractional digits. These are also quite big, and going much bigger on a
+32-bit system seems a little pointless since 12 digits in just under a trillion
+and 20 fractional digits is still enough for about any use since `10^-20` light
+years is just under a millimeter.)
+
+All of this together means that for ordinary uses, and even uses in scientific
+work, the default number size will be all that is needed, which means that
+nearly all, if not all, numbers will be reused, relieving pressure on the system
+allocator.
+
+I did several experiments to find the changes that had the most impact,
+especially with regard to reusing `BcNum`'s. One was putting `BcNum`'s into
+buckets according to their capacity in powers of 2 up to 512. That performed
+worse than `bc` did in `2.7.2`. Another was putting any `BcNum` on the reuse
+list that had a capacity of `BC_NUM_DEF_SIZE * 2` and reusing them for `BcNum`'s
+that requested `BC_NUM_DEF_SIZE`. This did reduce the amount of time spent, but
+it also spent a lot of time in the system allocator for an unknown reason. (When
+using `strace`, a bunch more `brk` calls showed up.) Just reusing `BcNum`'s that
+had exactly `BC_NUM_DEF_SIZE` capacity spent the smallest amount of time in both
+user and system time. This makes sense, especially with the changes to make
+`BC_NUM_DEF_SIZE` bigger on 64-bit systems, since the vast majority of numbers
+will only ever use numbers with a size less than or equal to `BC_NUM_DEF_SIZE`.
+
+Last of all, `bc`'s signal handling underwent a complete redesign. (This is the
+reason that this version is `3.0.0` and not `2.8.0`.) The change was to move
+from a polling approach to signal handling to an interrupt-based approach.
+
+Previously, every single loop condition had a check for signals. I suspect that
+this could be expensive when in tight loops.
+
+Now, the signal handler just uses `longjmp()` (actually `siglongjmp()`) to start
+an unwinding of the stack until it is stopped or the stack is unwound to
+`main()`, which just returns. If `bc` is currently executing code that cannot be
+safely interrupted (according to POSIX), then signals are "locked." The signal
+handler checks if the lock is taken, and if it is, it just sets the status to
+indicate that a signal arrived. Later, when the signal lock is released, the
+status is checked to see if a signal came in. If so, the stack unwinding starts.
+
+This design eliminates polling in favor of maintaining a stack of `jmp_buf`'s.
+This has its own performance implications, but it gives better interaction. And
+the cost of pushing and popping a `jmp_buf` in a function is paid at most twice.
+Most functions do not pay that price, and most of the rest only pay it once.
+(There are only some 3 functions in `bc` that push and pop a `jmp_buf` twice.)
+
+As a side effect of this change, I had to eliminate the use of `stdio.h` in `bc`
+because `stdio` does not play nice with signals and `longjmp()`. I implemented
+custom I/O buffer code that takes a fraction of the size. This means that static
+builds will be smaller, but non-static builds will be bigger, though they will
+have less linking time.
+
+This change is also good because my history implementation was already bypassing
+`stdio` for good reasons, and unifying the architecture was a win.
+
+Another reason for this change is that my `bc` should *always* behave correctly
+in the presence of signals like `SIGINT`, `SIGTERM`, and `SIGQUIT`. With the
+addition of my own I/O buffering, I needed to also make sure that the buffers
+were correctly flushed even when such signals happened.
+
+For this reason, I **removed the option to build without signal support**.
+
+As a nice side effect of this change, the error handling code could be changed
+to take advantage of the stack unwinding that signals used. This means that
+signals and error handling use the same code paths, which means that the stack
+unwinding is well-tested. (Errors are tested heavily in the test suite.)
+
+It also means that functions do not need to return a status code that
+***every*** caller needs to check. This eliminated over 100 branches that simply
+checked return codes and then passed that return code up the stack if necessary.
+The code bloat savings from this is at least 1700 bytes on `x86_64`, *before*
+taking into account the extra code from removing `stdio.h`.
+
+## 2.7.2
+
+This is a production release with one major bug fix.
+
+The `length()` built-in function can take either a number or an array. If it
+takes an array, it returns the length of the array. Arrays can be passed by
+reference. The bug is that the `length()` function would not properly
+dereference arrays that were references. This is a bug that affects all users.
+
+**ALL USERS SHOULD UPDATE `bc`**.
+
+## 2.7.1
+
+This is a production release with fixes for new locales and fixes for compiler
+warnings on FreeBSD.
+
+## 2.7.0
+
+This is a production release with a bug fix for Linux, new translations, and new
+features.
+
+Bug fixes:
+
+* Option parsing in `BC_ENV_ARGS` was broken on Linux in 2.6.1 because `glibc`'s
+  `getopt_long()` is broken. To get around that, and to support long options on
+  every platform, an adapted version of [`optparse`][17] was added. Now, `bc`
+  does not even use `getopt()`.
+* Parsing `BC_ENV_ARGS` with quotes now works. It isn't the smartest, but it
+  does the job if there are spaces in file names.
+
+The following new languages are supported:
+
+* Dutch
+* Polish
+* Russian
+* Japanes
+* Simplified Chinese
+
+All of these translations were generated using [DeepL][18], so improvements are
+welcome.
+
+There is only one new feature: **`bc` now has a built-in pseudo-random number
+generator** (PRNG).
+
+The PRNG is seeded, making it useful for applications where
+`/dev/urandom` does not work because output needs to be reproducible. However,
+it also uses `/dev/urandom` to seed itself by default, so it will start with a
+good seed by default.
+
+It also outputs 32 bits on 32-bit platforms and 64 bits on 64-bit platforms, far
+better than the 15 bits of C's `rand()` and `bash`'s `$RANDOM`.
+
+In addition, the PRNG can take a bound, and when it gets a bound, it
+automatically adjusts to remove bias. It can also generate numbers of arbitrary
+size. (As of the time of release, the largest pseudo-random number generated by
+this `bc` was generated with a bound of `2^(2^20)`.)
+
+***IMPORTANT: read the [`bc` manual][9] and the [`dc` manual][10] to find out
+exactly what guarantees the PRNG provides. The underlying implementation is not
+guaranteed to stay the same, but the guarantees that it provides are guaranteed
+to stay the same regardless of the implementation.***
+
+On top of that, four functions were added to `bc`'s [extended math library][16]
+to make using the PRNG easier:
+
+* `frand(p)`: Generates a number between `[0,1)` to `p` decimal places.
+* `ifrand(i, p)`: Generates an integer with bound `i` and adds it to `frand(p)`.
+* `srand(x)`: Randomizes the sign of `x`. In other words, it flips the sign of
+  `x` with probability `0.5`.
+* `brand()`: Returns a random boolean value (either `0` or `1`).
+
+## 2.6.1
+
+This is a production release with a bug fix for FreeBSD.
+
+The bug was that when `bc` was built without long options, it would give a fatal
+error on every run. This was caused by a mishandling of `optind`.
+
+## 2.6.0
+
+This release is a production release ***with no bugfixes***. If you do not want
+to upgrade, you don't have to.
+
+No source code changed; the only thing that changed was `lib2.bc`.
+
+This release adds one function to the [extended math library][16]: `p(x, y)`,
+which calculates `x` to the power of `y`, whether or not `y` is an integer. (The
+`^` operator can only accept integer powers.)
+
+This release also includes a couple of small tweaks to the [extended math
+library][16], mostly to fix returning numbers with too high of `scale`.
+
+## 2.5.3
+
+This release is a production release which addresses inconsistencies in the
+Portuguese locales. No `bc` code was changed.
+
+The issues were that the ISO files used different naming, and also that the
+files that should have been symlinks were not. I did not catch that because
+GitHub rendered them the exact same way.
+
+## 2.5.2
+
+This release is a production release.
+
+No code was changed, but the build system was changed to allow `CFLAGS` to be
+given to `CC`, like this:
+
+```
+CC="gcc -O3 -march=native" ./configure.sh
+```
+
+If this happens, the flags are automatically put into `CFLAGS`, and the compiler
+is set appropriately. In the example above this means that `CC` will be "gcc"
+and `CFLAGS` will be "-O3 -march=native".
+
+This behavior was added to conform to GNU autotools practices.
+
+## 2.5.1
+
+This is a production release which addresses portability concerns discovered
+in the `bc` build system. No `bc` code was changed.
+
+* Support for Solaris SPARC and AIX were added.
+* Minor documentations edits were performed.
+* An option for `configure.sh` was added to disable long options if
+  `getopt_long()` is missing.
+
+## 2.5.0
+
+This is a production release with new translations. No code changed.
+
+The translations were contributed by [bugcrazy][15], and they are for
+Portuguese, both Portugal and Brazil locales.
+
+## 2.4.0
+
+This is a production release primarily aimed at improving `dc`.
+
+* A couple of copy and paste errors in the [`dc` manual][10] were fixed.
+* `dc` startup was optimized by making sure it didn't have to set up `bc`-only
+  things.
+* The `bc` `&&` and `||` operators were made available to `dc` through the `M`
+  and `m` commands, respectively.
+* `dc` macros were changed to be tail call-optimized.
+
+The last item, tail call optimization, means that if the last thing in a macro
+is a call to another macro, then the old macro is popped before executing the
+new macro. This change was made to stop `dc` from consuming more and more memory
+as macros are executed in a loop.
+
+The `q` and `Q` commands still respect the "hidden" macros by way of recording
+how many macros were removed by tail call optimization.
+
+## 2.3.2
+
+This is a production release meant to fix warnings in the Gentoo `ebuild` by
+making it possible to disable binary stripping. Other users do *not* need to
+upgrade.
+
+## 2.3.1
+
+This is a production release. It fixes a bug that caused `-1000000000 < -1` to
+return `0`. This only happened with negative numbers and only if the value on
+the left was more negative by a certain amount. That said, this bug *is* a bad
+bug, and needs to be fixed.
+
+**ALL USERS SHOULD UPDATE `bc`**.
+
+## 2.3.0
+
+This is a production release with changes to the build system.
+
+## 2.2.0
+
+This release is a production release. It only has new features and performance
+improvements.
+
+1.	The performance of `sqrt(x)` was improved.
+2.	The new function `root(x, n)` was added to the extended math library to
+	calculate `n`th roots.
+3.	The new function `cbrt(x)` was added to the extended math library to
+	calculate cube roots.
+
+## 2.1.3
+
+This is a non-critical release; it just changes the build system, and in
+non-breaking ways:
+
+1.	Linked locale files were changed to link to their sources with a relative
+	link.
+2.	A bug in `configure.sh` that caused long option parsing to fail under `bash`
+	was fixed.
+
+## 2.1.2
+
+This release is not a critical release.
+
+1.	A few codes were added to history.
+2.	Multiplication was optimized a bit more.
+3.	Addition and subtraction were both optimized a bit more.
+
+## 2.1.1
+
+This release contains a fix for the test suite made for Linux from Scratch: now
+the test suite prints `pass` when a test is passed.
+
+Other than that, there is no change in this release, so distros and other users
+do not need to upgrade.
+
+## 2.1.0
+
+This release is a production release.
+
+The following bugs were fixed:
+
+1.	A `dc` bug that caused stack mishandling was fixed.
+2.	A warning on OpenBSD was fixed.
+3.	Bugs in `ctrl+arrow` operations in history were fixed.
+4.	The ability to paste multiple lines in history was added.
+5.	A `bc` bug, mishandling of array arguments to functions, was fixed.
+6.	A crash caused by freeing the wrong pointer was fixed.
+7.	A `dc` bug where strings, in a rare case, were mishandled in parsing was
+	fixed.
+
+In addition, the following changes were made:
+
+1.	Division was slightly optimized.
+2.	An option was added to the build to disable printing of prompts.
+3.	The special case of empty arguments is now handled. This is to prevent
+	errors in scripts that end up passing empty arguments.
+4.	A harmless bug was fixed. This bug was that, with the pop instructions
+	(mostly) removed (see below), `bc` would leave extra values on its stack for
+	`void` functions and in a few other cases. These extra items would not
+	affect anything put on the stack and would not cause any sort of crash or
+	even buggy behavior, but they would cause `bc` to take more memory than it
+	needed.
+
+On top of the above changes, the following optimizations were added:
+
+1.	The need for pop instructions in `bc` was removed.
+2.	Extra tests on every iteration of the interpreter loop were removed.
+3.	Updating function and code pointers on every iteration of the interpreter
+	loop was changed to only updating them when necessary.
+4.	Extra assignments to pointers were removed.
+
+Altogether, these changes sped up the interpreter by around 2x.
+
+***NOTE***: This is the last release with new features because this `bc` is now
+considered complete. From now on, only bug fixes and new translations will be
+added to this `bc`.
+
+## 2.0.3
+
+This is a production, bug-fix release.
+
+Two bugs were fixed in this release:
+
+1.	A rare and subtle signal handling bug was fixed.
+2.	A misbehavior on `0` to a negative power was fixed.
+
+The last bug bears some mentioning.
+
+When I originally wrote power, I did not thoroughly check its error cases;
+instead, I had it check if the first number was `0` and then if so, just return
+`0`. However, `0` to a negative power means that `1` will be divided by `0`,
+which is an error.
+
+I caught this, but only after I stopped being cocky. You see, sometime later, I
+had noticed that GNU `bc` returned an error, correctly, but I thought it was
+wrong simply because that's not what my `bc` did. I saw it again later and had a
+double take. I checked for real, finally, and found out that my `bc` was wrong
+all along.
+
+That was bad on me. But the bug was easy to fix, so it is fixed now.
+
+There are two other things in this release:
+

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-all mailing list