2020-05-17 00:54:21 by Greg Troxel | Files touched by this commit (3) |
Log message:
math/bc-gh: Update to 2.7.2
Upstream NEWS highlights:
(translations and bugfixes omitted)
## 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.0
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.
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.4.0
* 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.
|
2019-11-23 18:26:01 by Greg Troxel | Files touched by this commit (2) |
Log message:
math/bc-gh: Update to 2.3.1
Upstream changes are basically bug fixes, performance improvmeents,
and a few new functions.
|
2019-08-06 13:13:07 by Greg Troxel | Files touched by this commit (2) |
Log message:
math/bc-gh: Update to 2.1.0
Upstream changes:
This release is a production release.
The following bugs were fixed:
A dc bug that caused stack mishandling was fixed.
A warning on OpenBSD was fixed.
Bugs in ctrl+arrow operations in history were fixed.
The ability to paste multiple lines in history was added.
A bc bug, mishandling of array arguments to functions, was fixed.
A crash caused by freeing the wrong pointer was fixed.
A dc bug where strings, in a rare case, were mishandled in parsing was fixed.
In addition, the following changes were made:
Division was slightly optimized.
An option was added to the build to disable printing of prompts.
The special case of empty arguments is now handled. This is to
prevent errors in scripts that end up passing empty arguments.
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:
The need for pop instructions in bc was removed.
Extra tests on every iteration of the interpreter loop were removed.
Updating function and code pointers on every iteration of the
interpreter loop was changed to only updating them when necessary.
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.
|
2019-06-17 02:35:33 by Greg Troxel | Files touched by this commit (4) |
Log message:
math/bc-gh: Import version 2.0.3
Implementation of POSIX bc with GNU extensions
This bc is optimized for use by programmers. It includes several
extensions beyond the GNU extensions for that purpose.
Prepared in pkgsrc-wip by Gavin Howard.
|