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.t...@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 <ra...@openmailbox.org><br> +Copyright (c) 2018-2020, Gavin D. Howard <yzena.t...@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 *** _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"