Release 0.8.9 "Advent" - Mostly bug fixes
Pre-release
Pre-release
This is a relatively minor release, with mostly bug fixes, but also a new, explicit syntax for hardware-accelerated floating-point.
New features
- Hardware-accelerated IEEE-754 binary floating-point values are now identified with a suffix,
D
fordouble
(64-bit),F
forfloat
(32-bit). For example,1.23
is a variable-precision decimal value,1.23D
is a 64-bit binary floating-point value, and1.23F
is a 32-bit binary floating-point value. This ensures that theHardwareFloatingPoint
setting does not change the way a program is compiled or presented, only its computations. - plot: Draw a bar on the horizontal axis for errors. This makes it easier to identify where the function is not defined.
- probabilities: Extend
COMB
andPERM
to real arguments. For real argument, the Gamma function extension of the factorial is
used with the usual expressions to compute combinations and permutations. One user remarked that some half-integer combinations of arguments, for example, directly give some common Taylor series factors with a single expression. - decimal: Add decimal to integer conversion (
R→I
) - simulator: Add
-N
option to disable sound. This is notably useful on Linux where some hardware platforms takes tens of seconds to fail, slowing down error messages. - simulator: Recognize settings on the command line. For example, you can enable the silent beep feature (flashing screen on error) by passing the
SilentBeepOn=true
parameter on the command-line. - parser: Add
PREC
alias forPrecision
.
Bug fixes
- random: Fix bias in integer version of
Random
. Using1 10 Random
would generate values1
and2
at half the frequency of other
values. - help: Do not process links that are not visible. This could cause links that had scrolled past the top of the screen to be incorrectly selected when pressing the ENTER key, even if there was an RPL code example visible on the screen.
- simplifications: Do not simplify infinities. Earlier versions would incorrectly apply a rule like
X-X=0
to the case whereX
was an infinity, giving incorrect results. This could manifest for example inComb
with decimal input returning1
for large values (as a result of dividing∞
by∞
) andDet
returning0
(as a result of subtracting∞
from∞
). - expression: Fix rendering of
derivative
,primitive
andwhere
in HP compatibility mode. This could cause programs to become unparseable, e.g. with∂X(X+1)
turning intoDERIVATIVEX(X+1)
. - expression: Do not render arity-2 commands as infix. For example,
CONVERT(X;1_m/s)
no longer renders asX CONVERT 1_m/s
. - simulator: Improve extension checks on case-independent filesystems. On such systems, files
foo.48s
andFOO.48S
are identical. The simulator could incorrectly add a second extension if the case did not match. - arcsin: Fix the incorrect computation of
arcsin(1)
. More generally, improve the way exact angles are generated by functions that require them. This allows such functions to now return non-rounded results when using angle modes such asdegrees
. Previously, a computation involving the value of theπ
constant would cause some rounding even if an exact result was possible. - Fix a rare bug in the user interface which could lead to memory corruption if a garbage collection happened at the wrong time.
- Accelerated arithmetic evaluation is now correctly disabled when the
HardwareFloatingPoint
setting changes. - Fix silent errors when
NumericalResults
is on and computations involve non-normal results (e.g. infinities). - Convert infinities correctly from hardware floating-point to decimal.
Improvements
- simulator: Return relative paths when selecting files when possible. For example, when selecting the name of a keyboard layout, a file is written on disk that used to contain the absolute path of the layout file being used. As a result, moving the simulator directory elsewhere would make the file unreadable.
- files: Automate tracking of open files. A mechanism was implemented in earlier releases to avoid opening two files at the same time, because that is a limitation of the DMCP implementation on SwissMicros calculators. That mechanism required manual maintenance by developers, and was the source of many bugs. A new mechanism replaces it that transparently manages scenarios where multiple files are open simultaneously. This should quash annoying bugs, such as one where the simulator would write state files with incorrect spelling for constants or library items.
- doc: Remove the
docol.md
section of the help. This file was inherited from newRPL documentation, and incorrectly documented existing DB48x functions, or mentioned functions that do not exist on DB48x. - grob: Accept BMP files with zero colours. Some contributors have submitted files generated by Windows tools that describe the BMP file as a bitmap with 0 colours instead of 2. These files were not loading in the helpfile. They are now read and displayed correctly.
- Hardware-accelerated floating-point arithmetic now also benefits from the accelerated dynamic dispatch.