History log of /freebsd-current/contrib/bc/NEWS.md
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# f4fbc49d 04-Jan-2024 Stefan Eßer <se@FreeBSD.org>

vendor/bc: upgrade to version 6.7.5

This update fixes a bug that line breaks in printed numbers may not
match the line length set by the user. The value is printed correctly,
just not split as specified in some situations.

(cherry picked from commit 52a5ec1b178fd07651446c7e31b1512794a04dbf)


# e6857bd4 02-Jan-2024 Stefan Eßer <se@FreeBSD.org>

vendor/bc: upgrade to version 6.7.4

Documentation updates only, no functional changes to the software.

(cherry picked from commit a3f3a7b4dc80d577e4c8fc64dfbbb359d2e24228)


# aa339f1d 30-Oct-2023 Stefan Eßer <se@FreeBSD.org>

vendor/bc: upgrade to version 6.7.2

This update improves the implementation of the power function p() and
adds 3 new functions to the extended math library: min(), max(), and
i2rand().

(cherry picked from commit 0b4a06ab29a0da80f6cb5c99189054cb8e2f756c)


# 76238846 25-May-2023 Stefan Eßer <se@FreeBSD.org>

contrib/bc: upgrade to version 6.6.0

This update removes printing of a leading zero in scientific or
engineering output modes (which are an extended feature of this
implementation).

(cherry-picked from commit 8b83ef067441f6d3a4a55e92d1738724954a057c)

MFC after: 2 weeks


# 8c48f4c5 30-Apr-2023 Stefan Eßer <se@FreeBSD.org>

contrib/bc: import version 6.5.0

This release that fixes an infinite loop bug in the (non-standard)
extended math library functions root() and cbrt(), fixes a bug with
BC_LINE_LENGTH=0, and adds the fib() function to the extended math
library to calculate Fibonacci numbers.

(cherry picked from commit 438a1101dc1f687928cdbe02cd7817a88a24f42f)

MFC after: 3 days


# 175a4d10 10-Mar-2023 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 6.4.0

This version contains a fix for an issue that can affect complex
bc scripts that use multiple read() functions that receive input from
an interactive user. The same value could be returned multiple times.

MFC after: 2 weeks


# 103d7cdf 24-Feb-2023 Stefan Eßer <se@FreeBSD.org>

vendor/bc: import version 6.3.1

This version adds a command to dc to query whether extended registers
are enabled or not.

(cherry picked from commit 61e1a12bb6c3bfdb0a4e499c88e8eaa2b548e427)


# 4fca8e0f 06-Feb-2023 Stefan Eßer <se@FreeBSD.org>

contrib/bc: uodate to version 6.2.4

This update contains only documentation changes (new main repository
URL and changed mail address of the program author) and changes to
the build system that do not affect the FreeBSD base system build.

MFC after: 3 days


# d101cdd6 28-Jan-2023 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge from vendor release 6.2.2

This update fixes a few issues in history editing and the processing
of the "quit" function. The "quit" function will no longer cause bc
to exit when encountered in a script file (before any command from
the script has been executed).

New functions is_number(), is_string return 1 if the passed argument
is a number resp. a string. The asciify() function has been extended
to support the conversion of an array of numbers into a string.

Merge commit '1a63323d17fedb05b6962853e821c9d7c6b9853e'


# f53b5fe7 15-Jun-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge from vendor release 5.3.3

This update fixes a build issue of release 5.3.2 on the FreeBSD base
system.

Merge commit '3f739b0595b7d6ac4bac9aaa1cae0910f11f92e2'

MFC after: 2 weeks


# 78bc019d 11-Jun-2022 Stefan Eßer <se@FreeBSD.org>

usr.bin/bc: update to version 5.3.1

This version adds support for command line editing and history using
the libedit or readline libraries in addition to the line editing
features available in previous versions.

The version in the base system is configured to use libedit.

This allows to choose between emacs and vi line editing commands and
to use command overrides via a ~/.editrc file.

Merge commit 'bd54318046bfee055b140705a5cfd4148e78da07'

PR: 264010

MFC after: 2 weeks


# bbd60e2c 10-May-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.2.5

This is a production release that fixes this bc's behavior on ^D to
match GNU bc.

Merge commit 'ed0603704174b01c25b49efc08c82e1532dc5622'

MFC after: 3 days


# aaa77b3a 10-May-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: revert commit f4ff1c300ef40

This commit was executed by accident while testing the new version.

# f4ff1c30 10-May-2022 Stefan Eßer <se@FreeBSD.org>

vendor/bc: import of version 5.2.5

This is a production release that fixes this bc's behavior on ^D to
match GNU bc.

(cherry picked from commit ed0603704174b01c25b49efc08c82e1532dc5622)

# b85b9c88 17-Apr-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: import version 5.2.4

This update fixes an issue in input line editing: when going left to
the start of the line, the cursor would jump to the end of the line
instead.

Merge commit 'bc75dcc4ce682562390fa32e7cd63c08160e21b9'


# 23210c9f 07-Mar-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.2.3

This version fixes a parse error when passing a file to bc using -f
if that file has a multiline comment or string in it.

Merge commit '3673adf1ee311d6f83176d3e43cf0efb314764e4'

MFC after: 3 days


# 00698711 05-Feb-2022 Stefan Eßer <se@FreeBSD.org>

vendor/bc: import release 5.2.2

This release assigns a default value to the internal program name
variable in case the program is invoked with argv[0] == NULL.

There was no security issue: the prevuous program version would have
been immediately terminated due to a NULL dereference.

# 10041e99 30-Nov-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge version 5.2.1 from vendor branch

Merge commit 'e63540eed295749528548c2e3a90f5a6e57275c8'


# a30efc5c 06-Oct-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.1.1

Merge commit '6f49f5cdde1c62c4e5a743e895f3afe592b5c0e5'


# d43fa8ef 04-Oct-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge version 5.1.0 from vendor branch

This version adds options and functions that allow to print numbers
in the open interval (-1 .. 1) with or without a leading 0 digit.

Additionally, an option has been added to prevent line wrap and
allows to print arbitrarily long results on a single line.

Merge commit '5d58a51571721190681c50d4bd3a1f45e6282d72'


# 662087df 19-Sep-2021 Stefan Eßer <se@FreeBSD.org>

vendor/bc: update to upstream version 5.0.2

(cherry picked from commit a60ef1802a36f2f2a5611564191440ea1c1e2f17)

# 44d4804d 10-Aug-2021 Stefan Eßer <se@FreeBSD.org>

usr.bin/ghä-bc, contrib/bc: update to version 5.0.0

Merge commit 2f57ecae4b98e76e5d675563785a7e6c59c868c4

This is a new major release with a number of changes and extensions:

- Limited the number of temporary numbers and made the space for them
static so that allocating more space for them cannot fail.
- Allowed integers with non-zero scale to be used with power, places,
and shift operators.
- Added greatest common divisor and least common multiple to lib2.bc.
- Made bc and dc UTF-8 capable.
- Added the ability for users to have bc and dc quit on SIGINT.
- Added the ability for users to disable prompt and TTY mode by
environment variables.
- Added the ability for users to redefine keywords.
- Added dc's modular exponentiation and divmod to bc.
- Added the ability to assign strings to variables and array elements
and pass them to functions in bc.
- Added dc's asciify command and stream printing to bc.
- Added bitwise and, or, xor, left shift, right shift, reverse,
left rotate, right rotate, and mod functions to lib2.bc.
- Added the functions s2u(x) and s2un(x,n), to lib2.bc.

MFC after: 1 week

# 8c39e252 11-May-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 4.0.2

Merge commit '2858419a0ee2b8f5827de72c00618bcd69ebc5fc'

This update fixes the initialization of "scale" to 20 if started with
-l and the initial statement leads to an error (e.g. contains a syntax
error). Scale was initialized to 0 in that case.

Another change is the support of job control in interactive mode with
line editing enabled. The control characters have been interpreted as
editing commands only, prior to this version.

MFC after: 3 days


# e681dd3e 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Revert "Vendor import of Gavin D. Howard's bc version 4.0.2"

The update had been performed on a check-out of the vendor branch,
but the final push lacked the target designation vendor/bc.

# e5092308 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Vendor import of Gavin D. Howard's bc version 4.0.2

# 8ea90135 25-Apr-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit 'bd136720030ebb0b31e6d5a2236b9d0ddac71b94'

usr.bin/bc: update to version 4.0.1

This update adds a flush() of the output buffer to the bc print command.


# 7e5c51e5 06-Apr-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit '7a590c074ceede12b2b6e794f8703d6fa5749918'

Update to version 4.0.0

This version fixes an issue (missing pop of top-of-stack value in the
"P" command of the dc program).

This issue did not affect the bc program, since it does not use dc as
an back-end to actually perform the calculations as was the case with
the traditional bc and dc programs.

The major number has been bumped due to Windows support that has been
added to this version. It does not correspond to a major change that
might affect FreeBSD.


# 9300e880 19-Mar-2021 Stefan Eßer <se@FreeBSD.org>

bc: upgrade to version 3.3.4

This upgrade performs an implicit flush of the output if the script
funcion read() is called, to make sure a prompt that does not end in a
new-line is correctly displayed in line-buffered output mode.

Merge commit '893ecb52db5ed47d6c1e8698334d34e0df651612'


# 028616d0 05-Mar-2021 Stefan Eßer <se@FreeBSD.org>

bc: Vendor import new version 3.3.3

# 9a995fe1 17-Feb-2021 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.3.0

This update changes the behavior of "-e" or "-f" in BC_ENV_ARGS:

Use of these options on the command line makes bc exit after executing
the given commands. These options will not cause bc to exit when
passed via the environment (but EOF in STDIN or -e or -f on the
command line will make bc exit as before).

The same applies to DC_ENV_ARGS with regard to the dc program.

# 10328f8b 31-Jan-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit '47a52dc4d48f259ab7d9f9ba6b65f4f2331a22dc'

Update to version 3.2.6

MFC after: 3 days


# e458944c 27-Dec-2020 Stefan Eßer <se@FreeBSD.org>

Import bc 3.2.4

# c6bfc896 06-Dec-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.2.3


# 50696a6e 26-Nov-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.2.0


# d213476d 01-Oct-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.6

This upgrade addresses one (benign) compiler warning when building with
LLVM-12.


# 119656bc 05-Aug-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.5

This version fixes some entries in the chinese message catalogs which could
lead to program crashes when used.


# 5d934bc0 03-Aug-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.4

This version omits the printing of a copyright header in interactive mode
and the dc command now exits after execution of the commands passed via -e
or -f instead of switching to interactive mode. To pass further commands
via STDIN when dc has been invoked with -e or -f, add "-f -" to the
parameter list.


# cf7becd2 11-Jul-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.1.3

This version fixes the following evaluation, which lead to a parse error:

echo "if (1 < 3) 1" | bc


# 3aa99676 07-Jul-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.1.1

This version fixes a regression with regard to tradtional behavior of the
non-standard FreeBSD option "-e". In the previous version "-e quit" caused
bc to exit before any computations had been performed, since all -e option
parameters were concatenated and parsed as a whole, with quit causing the
program to exit as soon as it was parsed. This version parses and executes
commands passed with -e one by one and only exits after all prior commands
have been executed.

This commit is not a SVN merge, since the vendor import had been performed
after the import to contrib. Instead the contents of contrib/bc has been
removed and the new version is copied over unchanged from vendor/bc/dist.


# 252884ae 26-Jun-2020 Stefan Eßer <se@FreeBSD.org>

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

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

- They do not depend on external large number functions (i.e. no dependency
on OpenSSL or any other large number library)

- They implements all features found in GNU bc/dc (with the exception of
the forking of sub-processes, which the author of this version considers
as a security issue).

- They are significantly faster than the current code in base (more than
2 orders of magnitude in some of my tests, e.g. for 12345^100000).

- They should be fully compatible with all features and the behavior of the
current implementations in FreeBSD (not formally verified).

- They support POSIX message catalogs and come with localized messages in
Chinese, Dutch, English, French, German, Japanese, Polish, Portugueze,
and Russian.

- They offer very detailed man-pages that provide far more information than
the current ones.

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

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

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

# f53b5fe7 15-Jun-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge from vendor release 5.3.3

This update fixes a build issue of release 5.3.2 on the FreeBSD base
system.

Merge commit '3f739b0595b7d6ac4bac9aaa1cae0910f11f92e2'

MFC after: 2 weeks


# 78bc019d 11-Jun-2022 Stefan Eßer <se@FreeBSD.org>

usr.bin/bc: update to version 5.3.1

This version adds support for command line editing and history using
the libedit or readline libraries in addition to the line editing
features available in previous versions.

The version in the base system is configured to use libedit.

This allows to choose between emacs and vi line editing commands and
to use command overrides via a ~/.editrc file.

Merge commit 'bd54318046bfee055b140705a5cfd4148e78da07'

PR: 264010

MFC after: 2 weeks


# bbd60e2c 10-May-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.2.5

This is a production release that fixes this bc's behavior on ^D to
match GNU bc.

Merge commit 'ed0603704174b01c25b49efc08c82e1532dc5622'

MFC after: 3 days


# aaa77b3a 10-May-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: revert commit f4ff1c300ef40

This commit was executed by accident while testing the new version.

# f4ff1c30 10-May-2022 Stefan Eßer <se@FreeBSD.org>

vendor/bc: import of version 5.2.5

This is a production release that fixes this bc's behavior on ^D to
match GNU bc.

(cherry picked from commit ed0603704174b01c25b49efc08c82e1532dc5622)

# b85b9c88 17-Apr-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: import version 5.2.4

This update fixes an issue in input line editing: when going left to
the start of the line, the cursor would jump to the end of the line
instead.

Merge commit 'bc75dcc4ce682562390fa32e7cd63c08160e21b9'


# 23210c9f 07-Mar-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.2.3

This version fixes a parse error when passing a file to bc using -f
if that file has a multiline comment or string in it.

Merge commit '3673adf1ee311d6f83176d3e43cf0efb314764e4'

MFC after: 3 days


# 00698711 05-Feb-2022 Stefan Eßer <se@FreeBSD.org>

vendor/bc: import release 5.2.2

This release assigns a default value to the internal program name
variable in case the program is invoked with argv[0] == NULL.

There was no security issue: the prevuous program version would have
been immediately terminated due to a NULL dereference.

# 10041e99 30-Nov-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge version 5.2.1 from vendor branch

Merge commit 'e63540eed295749528548c2e3a90f5a6e57275c8'


# a30efc5c 06-Oct-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.1.1

Merge commit '6f49f5cdde1c62c4e5a743e895f3afe592b5c0e5'


# d43fa8ef 04-Oct-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge version 5.1.0 from vendor branch

This version adds options and functions that allow to print numbers
in the open interval (-1 .. 1) with or without a leading 0 digit.

Additionally, an option has been added to prevent line wrap and
allows to print arbitrarily long results on a single line.

Merge commit '5d58a51571721190681c50d4bd3a1f45e6282d72'


# 662087df 19-Sep-2021 Stefan Eßer <se@FreeBSD.org>

vendor/bc: update to upstream version 5.0.2

(cherry picked from commit a60ef1802a36f2f2a5611564191440ea1c1e2f17)

# 44d4804d 10-Aug-2021 Stefan Eßer <se@FreeBSD.org>

usr.bin/ghä-bc, contrib/bc: update to version 5.0.0

Merge commit 2f57ecae4b98e76e5d675563785a7e6c59c868c4

This is a new major release with a number of changes and extensions:

- Limited the number of temporary numbers and made the space for them
static so that allocating more space for them cannot fail.
- Allowed integers with non-zero scale to be used with power, places,
and shift operators.
- Added greatest common divisor and least common multiple to lib2.bc.
- Made bc and dc UTF-8 capable.
- Added the ability for users to have bc and dc quit on SIGINT.
- Added the ability for users to disable prompt and TTY mode by
environment variables.
- Added the ability for users to redefine keywords.
- Added dc's modular exponentiation and divmod to bc.
- Added the ability to assign strings to variables and array elements
and pass them to functions in bc.
- Added dc's asciify command and stream printing to bc.
- Added bitwise and, or, xor, left shift, right shift, reverse,
left rotate, right rotate, and mod functions to lib2.bc.
- Added the functions s2u(x) and s2un(x,n), to lib2.bc.

MFC after: 1 week

# 8c39e252 11-May-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 4.0.2

Merge commit '2858419a0ee2b8f5827de72c00618bcd69ebc5fc'

This update fixes the initialization of "scale" to 20 if started with
-l and the initial statement leads to an error (e.g. contains a syntax
error). Scale was initialized to 0 in that case.

Another change is the support of job control in interactive mode with
line editing enabled. The control characters have been interpreted as
editing commands only, prior to this version.

MFC after: 3 days


# e681dd3e 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Revert "Vendor import of Gavin D. Howard's bc version 4.0.2"

The update had been performed on a check-out of the vendor branch,
but the final push lacked the target designation vendor/bc.

# e5092308 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Vendor import of Gavin D. Howard's bc version 4.0.2

# 8ea90135 25-Apr-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit 'bd136720030ebb0b31e6d5a2236b9d0ddac71b94'

usr.bin/bc: update to version 4.0.1

This update adds a flush() of the output buffer to the bc print command.


# 7e5c51e5 06-Apr-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit '7a590c074ceede12b2b6e794f8703d6fa5749918'

Update to version 4.0.0

This version fixes an issue (missing pop of top-of-stack value in the
"P" command of the dc program).

This issue did not affect the bc program, since it does not use dc as
an back-end to actually perform the calculations as was the case with
the traditional bc and dc programs.

The major number has been bumped due to Windows support that has been
added to this version. It does not correspond to a major change that
might affect FreeBSD.


# 9300e880 19-Mar-2021 Stefan Eßer <se@FreeBSD.org>

bc: upgrade to version 3.3.4

This upgrade performs an implicit flush of the output if the script
funcion read() is called, to make sure a prompt that does not end in a
new-line is correctly displayed in line-buffered output mode.

Merge commit '893ecb52db5ed47d6c1e8698334d34e0df651612'


# 028616d0 05-Mar-2021 Stefan Eßer <se@FreeBSD.org>

bc: Vendor import new version 3.3.3

# 9a995fe1 17-Feb-2021 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.3.0

This update changes the behavior of "-e" or "-f" in BC_ENV_ARGS:

Use of these options on the command line makes bc exit after executing
the given commands. These options will not cause bc to exit when
passed via the environment (but EOF in STDIN or -e or -f on the
command line will make bc exit as before).

The same applies to DC_ENV_ARGS with regard to the dc program.

# 10328f8b 31-Jan-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit '47a52dc4d48f259ab7d9f9ba6b65f4f2331a22dc'

Update to version 3.2.6

MFC after: 3 days


# e458944c 27-Dec-2020 Stefan Eßer <se@FreeBSD.org>

Import bc 3.2.4

# c6bfc896 06-Dec-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.2.3


# 50696a6e 26-Nov-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.2.0


# d213476d 01-Oct-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.6

This upgrade addresses one (benign) compiler warning when building with
LLVM-12.


# 119656bc 05-Aug-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.5

This version fixes some entries in the chinese message catalogs which could
lead to program crashes when used.


# 5d934bc0 03-Aug-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.4

This version omits the printing of a copyright header in interactive mode
and the dc command now exits after execution of the commands passed via -e
or -f instead of switching to interactive mode. To pass further commands
via STDIN when dc has been invoked with -e or -f, add "-f -" to the
parameter list.


# cf7becd2 11-Jul-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.1.3

This version fixes the following evaluation, which lead to a parse error:

echo "if (1 < 3) 1" | bc


# 3aa99676 07-Jul-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.1.1

This version fixes a regression with regard to tradtional behavior of the
non-standard FreeBSD option "-e". In the previous version "-e quit" caused
bc to exit before any computations had been performed, since all -e option
parameters were concatenated and parsed as a whole, with quit causing the
program to exit as soon as it was parsed. This version parses and executes
commands passed with -e one by one and only exits after all prior commands
have been executed.

This commit is not a SVN merge, since the vendor import had been performed
after the import to contrib. Instead the contents of contrib/bc has been
removed and the new version is copied over unchanged from vendor/bc/dist.


# 252884ae 26-Jun-2020 Stefan Eßer <se@FreeBSD.org>

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

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

- They do not depend on external large number functions (i.e. no dependency
on OpenSSL or any other large number library)

- They implements all features found in GNU bc/dc (with the exception of
the forking of sub-processes, which the author of this version considers
as a security issue).

- They are significantly faster than the current code in base (more than
2 orders of magnitude in some of my tests, e.g. for 12345^100000).

- They should be fully compatible with all features and the behavior of the
current implementations in FreeBSD (not formally verified).

- They support POSIX message catalogs and come with localized messages in
Chinese, Dutch, English, French, German, Japanese, Polish, Portugueze,
and Russian.

- They offer very detailed man-pages that provide far more information than
the current ones.

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

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

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

# 78bc019d 11-Jun-2022 Stefan Eßer <se@FreeBSD.org>

usr.bin/bc: update to version 5.3.1

This version adds support for command line editing and history using
the libedit or readline libraries in addition to the line editing
features available in previous versions.

The version in the base system is configured to use libedit.

This allows to choose between emacs and vi line editing commands and
to use command overrides via a ~/.editrc file.

Merge commit 'bd54318046bfee055b140705a5cfd4148e78da07'

PR: 264010

MFC after: 2 weeks


# bbd60e2c 10-May-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.2.5

This is a production release that fixes this bc's behavior on ^D to
match GNU bc.

Merge commit 'ed0603704174b01c25b49efc08c82e1532dc5622'

MFC after: 3 days


# aaa77b3a 10-May-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: revert commit f4ff1c300ef40

This commit was executed by accident while testing the new version.

# f4ff1c30 10-May-2022 Stefan Eßer <se@FreeBSD.org>

vendor/bc: import of version 5.2.5

This is a production release that fixes this bc's behavior on ^D to
match GNU bc.

(cherry picked from commit ed0603704174b01c25b49efc08c82e1532dc5622)

# b85b9c88 17-Apr-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: import version 5.2.4

This update fixes an issue in input line editing: when going left to
the start of the line, the cursor would jump to the end of the line
instead.

Merge commit 'bc75dcc4ce682562390fa32e7cd63c08160e21b9'


# 23210c9f 07-Mar-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.2.3

This version fixes a parse error when passing a file to bc using -f
if that file has a multiline comment or string in it.

Merge commit '3673adf1ee311d6f83176d3e43cf0efb314764e4'

MFC after: 3 days


# 00698711 05-Feb-2022 Stefan Eßer <se@FreeBSD.org>

vendor/bc: import release 5.2.2

This release assigns a default value to the internal program name
variable in case the program is invoked with argv[0] == NULL.

There was no security issue: the prevuous program version would have
been immediately terminated due to a NULL dereference.

# 10041e99 30-Nov-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge version 5.2.1 from vendor branch

Merge commit 'e63540eed295749528548c2e3a90f5a6e57275c8'


# a30efc5c 06-Oct-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.1.1

Merge commit '6f49f5cdde1c62c4e5a743e895f3afe592b5c0e5'


# d43fa8ef 04-Oct-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge version 5.1.0 from vendor branch

This version adds options and functions that allow to print numbers
in the open interval (-1 .. 1) with or without a leading 0 digit.

Additionally, an option has been added to prevent line wrap and
allows to print arbitrarily long results on a single line.

Merge commit '5d58a51571721190681c50d4bd3a1f45e6282d72'


# 662087df 19-Sep-2021 Stefan Eßer <se@FreeBSD.org>

vendor/bc: update to upstream version 5.0.2

(cherry picked from commit a60ef1802a36f2f2a5611564191440ea1c1e2f17)

# 44d4804d 10-Aug-2021 Stefan Eßer <se@FreeBSD.org>

usr.bin/ghä-bc, contrib/bc: update to version 5.0.0

Merge commit 2f57ecae4b98e76e5d675563785a7e6c59c868c4

This is a new major release with a number of changes and extensions:

- Limited the number of temporary numbers and made the space for them
static so that allocating more space for them cannot fail.
- Allowed integers with non-zero scale to be used with power, places,
and shift operators.
- Added greatest common divisor and least common multiple to lib2.bc.
- Made bc and dc UTF-8 capable.
- Added the ability for users to have bc and dc quit on SIGINT.
- Added the ability for users to disable prompt and TTY mode by
environment variables.
- Added the ability for users to redefine keywords.
- Added dc's modular exponentiation and divmod to bc.
- Added the ability to assign strings to variables and array elements
and pass them to functions in bc.
- Added dc's asciify command and stream printing to bc.
- Added bitwise and, or, xor, left shift, right shift, reverse,
left rotate, right rotate, and mod functions to lib2.bc.
- Added the functions s2u(x) and s2un(x,n), to lib2.bc.

MFC after: 1 week

# 8c39e252 11-May-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 4.0.2

Merge commit '2858419a0ee2b8f5827de72c00618bcd69ebc5fc'

This update fixes the initialization of "scale" to 20 if started with
-l and the initial statement leads to an error (e.g. contains a syntax
error). Scale was initialized to 0 in that case.

Another change is the support of job control in interactive mode with
line editing enabled. The control characters have been interpreted as
editing commands only, prior to this version.

MFC after: 3 days


# e681dd3e 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Revert "Vendor import of Gavin D. Howard's bc version 4.0.2"

The update had been performed on a check-out of the vendor branch,
but the final push lacked the target designation vendor/bc.

# e5092308 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Vendor import of Gavin D. Howard's bc version 4.0.2

# 8ea90135 25-Apr-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit 'bd136720030ebb0b31e6d5a2236b9d0ddac71b94'

usr.bin/bc: update to version 4.0.1

This update adds a flush() of the output buffer to the bc print command.


# 7e5c51e5 06-Apr-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit '7a590c074ceede12b2b6e794f8703d6fa5749918'

Update to version 4.0.0

This version fixes an issue (missing pop of top-of-stack value in the
"P" command of the dc program).

This issue did not affect the bc program, since it does not use dc as
an back-end to actually perform the calculations as was the case with
the traditional bc and dc programs.

The major number has been bumped due to Windows support that has been
added to this version. It does not correspond to a major change that
might affect FreeBSD.


# 9300e880 19-Mar-2021 Stefan Eßer <se@FreeBSD.org>

bc: upgrade to version 3.3.4

This upgrade performs an implicit flush of the output if the script
funcion read() is called, to make sure a prompt that does not end in a
new-line is correctly displayed in line-buffered output mode.

Merge commit '893ecb52db5ed47d6c1e8698334d34e0df651612'


# 028616d0 05-Mar-2021 Stefan Eßer <se@FreeBSD.org>

bc: Vendor import new version 3.3.3

# 9a995fe1 17-Feb-2021 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.3.0

This update changes the behavior of "-e" or "-f" in BC_ENV_ARGS:

Use of these options on the command line makes bc exit after executing
the given commands. These options will not cause bc to exit when
passed via the environment (but EOF in STDIN or -e or -f on the
command line will make bc exit as before).

The same applies to DC_ENV_ARGS with regard to the dc program.

# 10328f8b 31-Jan-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit '47a52dc4d48f259ab7d9f9ba6b65f4f2331a22dc'

Update to version 3.2.6

MFC after: 3 days


# e458944c 27-Dec-2020 Stefan Eßer <se@FreeBSD.org>

Import bc 3.2.4

# c6bfc896 06-Dec-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.2.3


# 50696a6e 26-Nov-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.2.0


# d213476d 01-Oct-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.6

This upgrade addresses one (benign) compiler warning when building with
LLVM-12.


# 119656bc 05-Aug-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.5

This version fixes some entries in the chinese message catalogs which could
lead to program crashes when used.


# 5d934bc0 03-Aug-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.4

This version omits the printing of a copyright header in interactive mode
and the dc command now exits after execution of the commands passed via -e
or -f instead of switching to interactive mode. To pass further commands
via STDIN when dc has been invoked with -e or -f, add "-f -" to the
parameter list.


# cf7becd2 11-Jul-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.1.3

This version fixes the following evaluation, which lead to a parse error:

echo "if (1 < 3) 1" | bc


# 3aa99676 07-Jul-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.1.1

This version fixes a regression with regard to tradtional behavior of the
non-standard FreeBSD option "-e". In the previous version "-e quit" caused
bc to exit before any computations had been performed, since all -e option
parameters were concatenated and parsed as a whole, with quit causing the
program to exit as soon as it was parsed. This version parses and executes
commands passed with -e one by one and only exits after all prior commands
have been executed.

This commit is not a SVN merge, since the vendor import had been performed
after the import to contrib. Instead the contents of contrib/bc has been
removed and the new version is copied over unchanged from vendor/bc/dist.


# 252884ae 26-Jun-2020 Stefan Eßer <se@FreeBSD.org>

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

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

- They do not depend on external large number functions (i.e. no dependency
on OpenSSL or any other large number library)

- They implements all features found in GNU bc/dc (with the exception of
the forking of sub-processes, which the author of this version considers
as a security issue).

- They are significantly faster than the current code in base (more than
2 orders of magnitude in some of my tests, e.g. for 12345^100000).

- They should be fully compatible with all features and the behavior of the
current implementations in FreeBSD (not formally verified).

- They support POSIX message catalogs and come with localized messages in
Chinese, Dutch, English, French, German, Japanese, Polish, Portugueze,
and Russian.

- They offer very detailed man-pages that provide far more information than
the current ones.

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

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

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

# aaa77b3a 10-May-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: revert commit f4ff1c300ef40

This commit was executed by accident while testing the new version.


# f4ff1c30 10-May-2022 Stefan Eßer <se@FreeBSD.org>

vendor/bc: import of version 5.2.5

This is a production release that fixes this bc's behavior on ^D to
match GNU bc.

(cherry picked from commit ed0603704174b01c25b49efc08c82e1532dc5622)


# b85b9c88 17-Apr-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: import version 5.2.4

This update fixes an issue in input line editing: when going left to
the start of the line, the cursor would jump to the end of the line
instead.

Merge commit 'bc75dcc4ce682562390fa32e7cd63c08160e21b9'


# 23210c9f 07-Mar-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.2.3

This version fixes a parse error when passing a file to bc using -f
if that file has a multiline comment or string in it.

Merge commit '3673adf1ee311d6f83176d3e43cf0efb314764e4'

MFC after: 3 days


# 00698711 05-Feb-2022 Stefan Eßer <se@FreeBSD.org>

vendor/bc: import release 5.2.2

This release assigns a default value to the internal program name
variable in case the program is invoked with argv[0] == NULL.

There was no security issue: the prevuous program version would have
been immediately terminated due to a NULL dereference.

# 10041e99 30-Nov-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge version 5.2.1 from vendor branch

Merge commit 'e63540eed295749528548c2e3a90f5a6e57275c8'


# a30efc5c 06-Oct-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.1.1

Merge commit '6f49f5cdde1c62c4e5a743e895f3afe592b5c0e5'


# d43fa8ef 04-Oct-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge version 5.1.0 from vendor branch

This version adds options and functions that allow to print numbers
in the open interval (-1 .. 1) with or without a leading 0 digit.

Additionally, an option has been added to prevent line wrap and
allows to print arbitrarily long results on a single line.

Merge commit '5d58a51571721190681c50d4bd3a1f45e6282d72'


# 662087df 19-Sep-2021 Stefan Eßer <se@FreeBSD.org>

vendor/bc: update to upstream version 5.0.2

(cherry picked from commit a60ef1802a36f2f2a5611564191440ea1c1e2f17)

# 44d4804d 10-Aug-2021 Stefan Eßer <se@FreeBSD.org>

usr.bin/ghä-bc, contrib/bc: update to version 5.0.0

Merge commit 2f57ecae4b98e76e5d675563785a7e6c59c868c4

This is a new major release with a number of changes and extensions:

- Limited the number of temporary numbers and made the space for them
static so that allocating more space for them cannot fail.
- Allowed integers with non-zero scale to be used with power, places,
and shift operators.
- Added greatest common divisor and least common multiple to lib2.bc.
- Made bc and dc UTF-8 capable.
- Added the ability for users to have bc and dc quit on SIGINT.
- Added the ability for users to disable prompt and TTY mode by
environment variables.
- Added the ability for users to redefine keywords.
- Added dc's modular exponentiation and divmod to bc.
- Added the ability to assign strings to variables and array elements
and pass them to functions in bc.
- Added dc's asciify command and stream printing to bc.
- Added bitwise and, or, xor, left shift, right shift, reverse,
left rotate, right rotate, and mod functions to lib2.bc.
- Added the functions s2u(x) and s2un(x,n), to lib2.bc.

MFC after: 1 week

# 8c39e252 11-May-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 4.0.2

Merge commit '2858419a0ee2b8f5827de72c00618bcd69ebc5fc'

This update fixes the initialization of "scale" to 20 if started with
-l and the initial statement leads to an error (e.g. contains a syntax
error). Scale was initialized to 0 in that case.

Another change is the support of job control in interactive mode with
line editing enabled. The control characters have been interpreted as
editing commands only, prior to this version.

MFC after: 3 days


# e681dd3e 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Revert "Vendor import of Gavin D. Howard's bc version 4.0.2"

The update had been performed on a check-out of the vendor branch,
but the final push lacked the target designation vendor/bc.

# e5092308 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Vendor import of Gavin D. Howard's bc version 4.0.2

# 8ea90135 25-Apr-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit 'bd136720030ebb0b31e6d5a2236b9d0ddac71b94'

usr.bin/bc: update to version 4.0.1

This update adds a flush() of the output buffer to the bc print command.


# 7e5c51e5 06-Apr-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit '7a590c074ceede12b2b6e794f8703d6fa5749918'

Update to version 4.0.0

This version fixes an issue (missing pop of top-of-stack value in the
"P" command of the dc program).

This issue did not affect the bc program, since it does not use dc as
an back-end to actually perform the calculations as was the case with
the traditional bc and dc programs.

The major number has been bumped due to Windows support that has been
added to this version. It does not correspond to a major change that
might affect FreeBSD.


# 9300e880 19-Mar-2021 Stefan Eßer <se@FreeBSD.org>

bc: upgrade to version 3.3.4

This upgrade performs an implicit flush of the output if the script
funcion read() is called, to make sure a prompt that does not end in a
new-line is correctly displayed in line-buffered output mode.

Merge commit '893ecb52db5ed47d6c1e8698334d34e0df651612'


# 028616d0 05-Mar-2021 Stefan Eßer <se@FreeBSD.org>

bc: Vendor import new version 3.3.3

# 9a995fe1 17-Feb-2021 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.3.0

This update changes the behavior of "-e" or "-f" in BC_ENV_ARGS:

Use of these options on the command line makes bc exit after executing
the given commands. These options will not cause bc to exit when
passed via the environment (but EOF in STDIN or -e or -f on the
command line will make bc exit as before).

The same applies to DC_ENV_ARGS with regard to the dc program.

# 10328f8b 31-Jan-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit '47a52dc4d48f259ab7d9f9ba6b65f4f2331a22dc'

Update to version 3.2.6

MFC after: 3 days


# e458944c 27-Dec-2020 Stefan Eßer <se@FreeBSD.org>

Import bc 3.2.4

# c6bfc896 06-Dec-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.2.3


# 50696a6e 26-Nov-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.2.0


# d213476d 01-Oct-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.6

This upgrade addresses one (benign) compiler warning when building with
LLVM-12.


# 119656bc 05-Aug-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.5

This version fixes some entries in the chinese message catalogs which could
lead to program crashes when used.


# 5d934bc0 03-Aug-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.4

This version omits the printing of a copyright header in interactive mode
and the dc command now exits after execution of the commands passed via -e
or -f instead of switching to interactive mode. To pass further commands
via STDIN when dc has been invoked with -e or -f, add "-f -" to the
parameter list.


# cf7becd2 11-Jul-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.1.3

This version fixes the following evaluation, which lead to a parse error:

echo "if (1 < 3) 1" | bc


# 3aa99676 07-Jul-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.1.1

This version fixes a regression with regard to tradtional behavior of the
non-standard FreeBSD option "-e". In the previous version "-e quit" caused
bc to exit before any computations had been performed, since all -e option
parameters were concatenated and parsed as a whole, with quit causing the
program to exit as soon as it was parsed. This version parses and executes
commands passed with -e one by one and only exits after all prior commands
have been executed.

This commit is not a SVN merge, since the vendor import had been performed
after the import to contrib. Instead the contents of contrib/bc has been
removed and the new version is copied over unchanged from vendor/bc/dist.


# 252884ae 26-Jun-2020 Stefan Eßer <se@FreeBSD.org>

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

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

- They do not depend on external large number functions (i.e. no dependency
on OpenSSL or any other large number library)

- They implements all features found in GNU bc/dc (with the exception of
the forking of sub-processes, which the author of this version considers
as a security issue).

- They are significantly faster than the current code in base (more than
2 orders of magnitude in some of my tests, e.g. for 12345^100000).

- They should be fully compatible with all features and the behavior of the
current implementations in FreeBSD (not formally verified).

- They support POSIX message catalogs and come with localized messages in
Chinese, Dutch, English, French, German, Japanese, Polish, Portugueze,
and Russian.

- They offer very detailed man-pages that provide far more information than
the current ones.

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

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

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

# 23210c9f 07-Mar-2022 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.2.3

This version fixes a parse error when passing a file to bc using -f
if that file has a multiline comment or string in it.

Merge commit '3673adf1ee311d6f83176d3e43cf0efb314764e4'

MFC after: 3 days


# 00698711 05-Feb-2022 Stefan Eßer <se@FreeBSD.org>

vendor/bc: import release 5.2.2

This release assigns a default value to the internal program name
variable in case the program is invoked with argv[0] == NULL.

There was no security issue: the prevuous program version would have
been immediately terminated due to a NULL dereference.

# 10041e99 30-Nov-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge version 5.2.1 from vendor branch

Merge commit 'e63540eed295749528548c2e3a90f5a6e57275c8'


# a30efc5c 06-Oct-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.1.1

Merge commit '6f49f5cdde1c62c4e5a743e895f3afe592b5c0e5'


# d43fa8ef 04-Oct-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge version 5.1.0 from vendor branch

This version adds options and functions that allow to print numbers
in the open interval (-1 .. 1) with or without a leading 0 digit.

Additionally, an option has been added to prevent line wrap and
allows to print arbitrarily long results on a single line.

Merge commit '5d58a51571721190681c50d4bd3a1f45e6282d72'


# 662087df 19-Sep-2021 Stefan Eßer <se@FreeBSD.org>

vendor/bc: update to upstream version 5.0.2

(cherry picked from commit a60ef1802a36f2f2a5611564191440ea1c1e2f17)

# 44d4804d 10-Aug-2021 Stefan Eßer <se@FreeBSD.org>

usr.bin/ghä-bc, contrib/bc: update to version 5.0.0

Merge commit 2f57ecae4b98e76e5d675563785a7e6c59c868c4

This is a new major release with a number of changes and extensions:

- Limited the number of temporary numbers and made the space for them
static so that allocating more space for them cannot fail.
- Allowed integers with non-zero scale to be used with power, places,
and shift operators.
- Added greatest common divisor and least common multiple to lib2.bc.
- Made bc and dc UTF-8 capable.
- Added the ability for users to have bc and dc quit on SIGINT.
- Added the ability for users to disable prompt and TTY mode by
environment variables.
- Added the ability for users to redefine keywords.
- Added dc's modular exponentiation and divmod to bc.
- Added the ability to assign strings to variables and array elements
and pass them to functions in bc.
- Added dc's asciify command and stream printing to bc.
- Added bitwise and, or, xor, left shift, right shift, reverse,
left rotate, right rotate, and mod functions to lib2.bc.
- Added the functions s2u(x) and s2un(x,n), to lib2.bc.

MFC after: 1 week

# 8c39e252 11-May-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 4.0.2

Merge commit '2858419a0ee2b8f5827de72c00618bcd69ebc5fc'

This update fixes the initialization of "scale" to 20 if started with
-l and the initial statement leads to an error (e.g. contains a syntax
error). Scale was initialized to 0 in that case.

Another change is the support of job control in interactive mode with
line editing enabled. The control characters have been interpreted as
editing commands only, prior to this version.

MFC after: 3 days


# e681dd3e 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Revert "Vendor import of Gavin D. Howard's bc version 4.0.2"

The update had been performed on a check-out of the vendor branch,
but the final push lacked the target designation vendor/bc.

# e5092308 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Vendor import of Gavin D. Howard's bc version 4.0.2

# 8ea90135 25-Apr-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit 'bd136720030ebb0b31e6d5a2236b9d0ddac71b94'

usr.bin/bc: update to version 4.0.1

This update adds a flush() of the output buffer to the bc print command.


# 7e5c51e5 06-Apr-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit '7a590c074ceede12b2b6e794f8703d6fa5749918'

Update to version 4.0.0

This version fixes an issue (missing pop of top-of-stack value in the
"P" command of the dc program).

This issue did not affect the bc program, since it does not use dc as
an back-end to actually perform the calculations as was the case with
the traditional bc and dc programs.

The major number has been bumped due to Windows support that has been
added to this version. It does not correspond to a major change that
might affect FreeBSD.


# 9300e880 19-Mar-2021 Stefan Eßer <se@FreeBSD.org>

bc: upgrade to version 3.3.4

This upgrade performs an implicit flush of the output if the script
funcion read() is called, to make sure a prompt that does not end in a
new-line is correctly displayed in line-buffered output mode.

Merge commit '893ecb52db5ed47d6c1e8698334d34e0df651612'


# 028616d0 05-Mar-2021 Stefan Eßer <se@FreeBSD.org>

bc: Vendor import new version 3.3.3

# 9a995fe1 17-Feb-2021 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.3.0

This update changes the behavior of "-e" or "-f" in BC_ENV_ARGS:

Use of these options on the command line makes bc exit after executing
the given commands. These options will not cause bc to exit when
passed via the environment (but EOF in STDIN or -e or -f on the
command line will make bc exit as before).

The same applies to DC_ENV_ARGS with regard to the dc program.

# 10328f8b 31-Jan-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit '47a52dc4d48f259ab7d9f9ba6b65f4f2331a22dc'

Update to version 3.2.6

MFC after: 3 days


# e458944c 27-Dec-2020 Stefan Eßer <se@FreeBSD.org>

Import bc 3.2.4

# c6bfc896 06-Dec-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.2.3


# 50696a6e 26-Nov-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.2.0


# d213476d 01-Oct-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.6

This upgrade addresses one (benign) compiler warning when building with
LLVM-12.


# 119656bc 05-Aug-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.5

This version fixes some entries in the chinese message catalogs which could
lead to program crashes when used.


# 5d934bc0 03-Aug-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.4

This version omits the printing of a copyright header in interactive mode
and the dc command now exits after execution of the commands passed via -e
or -f instead of switching to interactive mode. To pass further commands
via STDIN when dc has been invoked with -e or -f, add "-f -" to the
parameter list.


# cf7becd2 11-Jul-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.1.3

This version fixes the following evaluation, which lead to a parse error:

echo "if (1 < 3) 1" | bc


# 3aa99676 07-Jul-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.1.1

This version fixes a regression with regard to tradtional behavior of the
non-standard FreeBSD option "-e". In the previous version "-e quit" caused
bc to exit before any computations had been performed, since all -e option
parameters were concatenated and parsed as a whole, with quit causing the
program to exit as soon as it was parsed. This version parses and executes
commands passed with -e one by one and only exits after all prior commands
have been executed.

This commit is not a SVN merge, since the vendor import had been performed
after the import to contrib. Instead the contents of contrib/bc has been
removed and the new version is copied over unchanged from vendor/bc/dist.


# 252884ae 26-Jun-2020 Stefan Eßer <se@FreeBSD.org>

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

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

- They do not depend on external large number functions (i.e. no dependency
on OpenSSL or any other large number library)

- They implements all features found in GNU bc/dc (with the exception of
the forking of sub-processes, which the author of this version considers
as a security issue).

- They are significantly faster than the current code in base (more than
2 orders of magnitude in some of my tests, e.g. for 12345^100000).

- They should be fully compatible with all features and the behavior of the
current implementations in FreeBSD (not formally verified).

- They support POSIX message catalogs and come with localized messages in
Chinese, Dutch, English, French, German, Japanese, Polish, Portugueze,
and Russian.

- They offer very detailed man-pages that provide far more information than
the current ones.

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

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

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

# 00698711 05-Feb-2022 Stefan Eßer <se@FreeBSD.org>

vendor/bc: import release 5.2.2

This release assigns a default value to the internal program name
variable in case the program is invoked with argv[0] == NULL.

There was no security issue: the prevuous program version would have
been immediately terminated due to a NULL dereference.


# 10041e99 30-Nov-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge version 5.2.1 from vendor branch

Merge commit 'e63540eed295749528548c2e3a90f5a6e57275c8'


# a30efc5c 06-Oct-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 5.1.1

Merge commit '6f49f5cdde1c62c4e5a743e895f3afe592b5c0e5'


# d43fa8ef 04-Oct-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: merge version 5.1.0 from vendor branch

This version adds options and functions that allow to print numbers
in the open interval (-1 .. 1) with or without a leading 0 digit.

Additionally, an option has been added to prevent line wrap and
allows to print arbitrarily long results on a single line.

Merge commit '5d58a51571721190681c50d4bd3a1f45e6282d72'


# 662087df 19-Sep-2021 Stefan Eßer <se@FreeBSD.org>

vendor/bc: update to upstream version 5.0.2

(cherry picked from commit a60ef1802a36f2f2a5611564191440ea1c1e2f17)

# 44d4804d 10-Aug-2021 Stefan Eßer <se@FreeBSD.org>

usr.bin/ghä-bc, contrib/bc: update to version 5.0.0

Merge commit 2f57ecae4b98e76e5d675563785a7e6c59c868c4

This is a new major release with a number of changes and extensions:

- Limited the number of temporary numbers and made the space for them
static so that allocating more space for them cannot fail.
- Allowed integers with non-zero scale to be used with power, places,
and shift operators.
- Added greatest common divisor and least common multiple to lib2.bc.
- Made bc and dc UTF-8 capable.
- Added the ability for users to have bc and dc quit on SIGINT.
- Added the ability for users to disable prompt and TTY mode by
environment variables.
- Added the ability for users to redefine keywords.
- Added dc's modular exponentiation and divmod to bc.
- Added the ability to assign strings to variables and array elements
and pass them to functions in bc.
- Added dc's asciify command and stream printing to bc.
- Added bitwise and, or, xor, left shift, right shift, reverse,
left rotate, right rotate, and mod functions to lib2.bc.
- Added the functions s2u(x) and s2un(x,n), to lib2.bc.

MFC after: 1 week

# 8c39e252 11-May-2021 Stefan Eßer <se@FreeBSD.org>

contrib/bc: update to version 4.0.2

Merge commit '2858419a0ee2b8f5827de72c00618bcd69ebc5fc'

This update fixes the initialization of "scale" to 20 if started with
-l and the initial statement leads to an error (e.g. contains a syntax
error). Scale was initialized to 0 in that case.

Another change is the support of job control in interactive mode with
line editing enabled. The control characters have been interpreted as
editing commands only, prior to this version.

MFC after: 3 days


# e681dd3e 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Revert "Vendor import of Gavin D. Howard's bc version 4.0.2"

The update had been performed on a check-out of the vendor branch,
but the final push lacked the target designation vendor/bc.

# e5092308 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Vendor import of Gavin D. Howard's bc version 4.0.2

# 8ea90135 25-Apr-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit 'bd136720030ebb0b31e6d5a2236b9d0ddac71b94'

usr.bin/bc: update to version 4.0.1

This update adds a flush() of the output buffer to the bc print command.


# 7e5c51e5 06-Apr-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit '7a590c074ceede12b2b6e794f8703d6fa5749918'

Update to version 4.0.0

This version fixes an issue (missing pop of top-of-stack value in the
"P" command of the dc program).

This issue did not affect the bc program, since it does not use dc as
an back-end to actually perform the calculations as was the case with
the traditional bc and dc programs.

The major number has been bumped due to Windows support that has been
added to this version. It does not correspond to a major change that
might affect FreeBSD.


# 9300e880 19-Mar-2021 Stefan Eßer <se@FreeBSD.org>

bc: upgrade to version 3.3.4

This upgrade performs an implicit flush of the output if the script
funcion read() is called, to make sure a prompt that does not end in a
new-line is correctly displayed in line-buffered output mode.

Merge commit '893ecb52db5ed47d6c1e8698334d34e0df651612'


# 028616d0 05-Mar-2021 Stefan Eßer <se@FreeBSD.org>

bc: Vendor import new version 3.3.3

# 9a995fe1 17-Feb-2021 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.3.0

This update changes the behavior of "-e" or "-f" in BC_ENV_ARGS:

Use of these options on the command line makes bc exit after executing
the given commands. These options will not cause bc to exit when
passed via the environment (but EOF in STDIN or -e or -f on the
command line will make bc exit as before).

The same applies to DC_ENV_ARGS with regard to the dc program.

# 10328f8b 31-Jan-2021 Stefan Eßer <se@FreeBSD.org>

Merge commit '47a52dc4d48f259ab7d9f9ba6b65f4f2331a22dc'

Update to version 3.2.6

MFC after: 3 days


# e458944c 27-Dec-2020 Stefan Eßer <se@FreeBSD.org>

Import bc 3.2.4

# c6bfc896 06-Dec-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.2.3


# 50696a6e 26-Nov-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.2.0


# d213476d 01-Oct-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.6

This upgrade addresses one (benign) compiler warning when building with
LLVM-12.


# 119656bc 05-Aug-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.5

This version fixes some entries in the chinese message catalogs which could
lead to program crashes when used.


# 5d934bc0 03-Aug-2020 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.1.4

This version omits the printing of a copyright header in interactive mode
and the dc command now exits after execution of the commands passed via -e
or -f instead of switching to interactive mode. To pass further commands
via STDIN when dc has been invoked with -e or -f, add "-f -" to the
parameter list.


# cf7becd2 11-Jul-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.1.3

This version fixes the following evaluation, which lead to a parse error:

echo "if (1 < 3) 1" | bc


# 3aa99676 07-Jul-2020 Stefan Eßer <se@FreeBSD.org>

Update to version 3.1.1

This version fixes a regression with regard to tradtional behavior of the
non-standard FreeBSD option "-e". In the previous version "-e quit" caused
bc to exit before any computations had been performed, since all -e option
parameters were concatenated and parsed as a whole, with quit causing the
program to exit as soon as it was parsed. This version parses and executes
commands passed with -e one by one and only exits after all prior commands
have been executed.

This commit is not a SVN merge, since the vendor import had been performed
after the import to contrib. Instead the contents of contrib/bc has been
removed and the new version is copied over unchanged from vendor/bc/dist.


# 252884ae 26-Jun-2020 Stefan Eßer <se@FreeBSD.org>

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

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

- They do not depend on external large number functions (i.e. no dependency
on OpenSSL or any other large number library)

- They implements all features found in GNU bc/dc (with the exception of
the forking of sub-processes, which the author of this version considers
as a security issue).

- They are significantly faster than the current code in base (more than
2 orders of magnitude in some of my tests, e.g. for 12345^100000).

- They should be fully compatible with all features and the behavior of the
current implementations in FreeBSD (not formally verified).

- They support POSIX message catalogs and come with localized messages in
Chinese, Dutch, English, French, German, Japanese, Polish, Portugueze,
and Russian.

- They offer very detailed man-pages that provide far more information than
the current ones.

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

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

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

# 662087df 19-Sep-2021 Stefan Eßer <se@FreeBSD.org>

vendor/bc: update to upstream version 5.0.2

(cherry picked from commit a60ef1802a36f2f2a5611564191440ea1c1e2f17)


# 44d4804d 10-Aug-2021 Stefan Eßer <se@FreeBSD.org>

usr.bin/ghä-bc, contrib/bc: update to version 5.0.0

Merge commit 2f57ecae4b98e76e5d675563785a7e6c59c868c4

This is a new major release with a number of changes and extensions:

- Limited the number of temporary numbers and made the space for them
static so that allocating more space for them cannot fail.
- Allowed integers with non-zero scale to be used with power, places,
and shift operators.
- Added greatest common divisor and least common multiple to lib2.bc.
- Made bc and dc UTF-8 capable.
- Added the ability for users to have bc and dc quit on SIGINT.
- Added the ability for users to disable prompt and TTY mode by
environment variables.
- Added the ability for users to redefine keywords.
- Added dc's modular exponentiation and divmod to bc.
- Added the ability to assign strings to variables and array elements
and pass them to functions in bc.
- Added dc's asciify command and stream printing to bc.
- Added bitwise and, or, xor, left shift, right shift, reverse,
left rotate, right rotate, and mod functions to lib2.bc.
- Added the functions s2u(x) and s2un(x,n), to lib2.bc.

MFC after: 1 week


# e681dd3e 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Revert "Vendor import of Gavin D. Howard's bc version 4.0.2"

The update had been performed on a check-out of the vendor branch,
but the final push lacked the target designation vendor/bc.


# e5092308 11-May-2021 Stefan Eßer <se@FreeBSD.org>

Vendor import of Gavin D. Howard's bc version 4.0.2


# 028616d0 05-Mar-2021 Stefan Eßer <se@FreeBSD.org>

bc: Vendor import new version 3.3.3


# 9a995fe1 17-Feb-2021 Stefan Eßer <se@FreeBSD.org>

Upgrade to version 3.3.0

This update changes the behavior of "-e" or "-f" in BC_ENV_ARGS:

Use of these options on the command line makes bc exit after executing
the given commands. These options will not cause bc to exit when
passed via the environment (but EOF in STDIN or -e or -f on the
command line will make bc exit as before).

The same applies to DC_ENV_ARGS with regard to the dc program.


# e458944c 27-Dec-2020 Stefan Eßer <se@FreeBSD.org>

Import bc 3.2.4


# 252884ae 26-Jun-2020 Stefan Eßer <se@FreeBSD.org>

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

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

- They do not depend on external large number functions (i.e. no dependency
on OpenSSL or any other large number library)

- They implements all features found in GNU bc/dc (with the exception of
the forking of sub-processes, which the author of this version considers
as a security issue).

- They are significantly faster than the current code in base (more than
2 orders of magnitude in some of my tests, e.g. for 12345^100000).

- They should be fully compatible with all features and the behavior of the
current implementations in FreeBSD (not formally verified).

- They support POSIX message catalogs and come with localized messages in
Chinese, Dutch, English, French, German, Japanese, Polish, Portugueze,
and Russian.

- They offer very detailed man-pages that provide far more information than
the current ones.

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

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

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