Tags give the ability to mark specific points in history as being important
-
v0.9.20
597e8eb8 · ·Release 0.9.20 "Corpus" - Polynomials and algebraic expressions This release focuses on support for polynomial, root finding and algebraic expressions, and on making evaluation of algebraic expressions behave closer to algebraic mode on the HP50G, i.e. treat `'` like the HP50G treats a backquote expression or an expression entered in algebraic mode. New features ============ * `LU` command generating LU-decomposition for matrices * `REF`, `RREF` and `RREFP` commands to put matrices in Echelon form * `Order` command to reorder variables in the current directory * `PEval`, `PRoot` and `Zeros` commands for polynomials and expressions * `Unique` and `QuickUnique` commands to keep unique values in a list * `DEPND` and `INDEP` commands to set dependent/independent variables * Implicitly recognize `xlib` and `constants` by name, e.g. `c` or `Dedicace` * Flags to control the above, `AutomaticConstants` and `AutomaticXLibs` * Preserve symbol case for existing variables * Creating symbols matching builtin names using the `Ⓥ` prefix, e.g. `ⓋHelp` * Value comparison for `Sort` or `Unique` now works with expressions * Simplification now factors common ratios, e.g. `A*X+B*X` * Primitive and derivative of a polynomial * Several new constants lifted from the R47 constant catalog * Hyperbolic secant functions `sech`,`csch`, `coth`, and their inverse * `CrDir` can now take a list as input to create multiple directories Bug fixes ========= * Crash in solver in case of error evaluating some intermediate step * Correctly put parentheses in `'sin(x+1)'` rendered in text mode * Occasional `object_error` in `as_text()` on simulator * Crash in `IFT` / `IFTE` if given invalid input * Detection of expression vs. RPL programs during evaluation * Crash in quotient or decimal conversions given erroneous input * Parsing of `0+ⅈ`, was incorrectly parsed as `0ⅈ` * Negating `0` no longer shows `-0` * No longer allow incorrect mixing of ranges and uncertain numbers * Dividing a polynomial by a number now divides constant terms * Correctly split expressions that contain a single term when testing equations * Fix simulator race condition while loading the keymap * `STO` will no longer overwrite a directory with a non-directory value * `Purge` will no longer erase non-empty directories, `PGDir` is now needed * `RAr` constant uncertainty was incorrectly set to 0 * Swap keyboard legacy and 42k keymaps in simulator Improvements ============ * Purely imaginary values such as `0+3ⅈ` now render as `3ⅈ` * The `LNAME` command now returns a list in algebraic expressions * `Σ`, `∏`, `∂` and `∫`, `COMB` and `PERM` now partially evaluate as on HP50G * Refactor detection of symbolic arguments in functions for scalability * Refactor detection of algebraic functions for scalability * Signal when `ui_refresh()` takes too long due to internal race condition * Do not drop input in multisolver when a wrong value is given * Quick exit when parsing empty commands * Rounding for `→ℚ` more accurately respects displayed precision * Internal factoring with square roots and fractions `to_sqrt`, used in `PRoot` * Internal integer and fraction square root, used in simplification * Reorganize the polynomials menu to bring useful functions at first level * Accept polynomials and tagged expressions in plotting commands * Do not default imaginary part to 1 in `complex::make` (was error prone) * Optimize the integer power case for range objects * Zero detection for expressions and polynomials in simplifications * Makefiles no longer emit confusing `mv` output in `make compare` * New `stack_buffer` facility in the runtime to keep multiple exansions on stack * Add `ISOL` tests for `sec`, `csc`, `cot` functions * Consolidate project guidance into `AGENTS.md` * Simplify simulator beep control logic: `-N` blocks beeps, `-n` restores them * Refresh implementation status * Update documentation for `PGDIR`, `STO` and `RCL` new capabilties * Internal facility to swap arbitrary stack levels * Update man page * Add recorder_scope-compatible instrumentation for GC and available memory * Accelerate display of constants/equations/library menus Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.19
02217829 · ·Release 0.9.19 "Spirit" - More constants, more space left This release includes a larger-than-usual number of changes, mostly to make room for more constants. A side effect is that we gained a lot of additional space for the DM42, giving us a lot of headroom for future developments. On the other hand, this may cause unexpected bugs. If you run DB48x on a DM42, please check for anything out of the ordinary and report it. New features ============ * Hierarchical constants library, with astronomy data for planets * fonts: Add astronomy-related glyphs and a few more * simulator: RPL evaluation with -e, to preload the calculator * simulator: RPL console evaluation mode with -E (prints to console) * simulator: headless mode with -H (no window showing) * simulator: screen capture with -C for scripting * simulator: Persist window geometry across runs * simulator: Persist calculator state on exit * ui: Enhanced behaviour for EEX key (skips to exponent) * variables: Store and recall to path * GCD (GreatestCommonDenominator) and LCM (LeastCommonMultiple) * Quote command * Hitting EXIT while editing clears menu Bug fixes ========= * variables: Memory corruption when replacing object with subobject * Fix parsing bug causing partial load of .48k keymaps beyond "@" * arrays: Strip tags from array and index in `get` and `put` * solver: Improve solver precision in Std mode * constants: Correcting the standard uncertainty of several constants. * constants: Correct the Tau mass relative uncertainty. * Make sure simulators get the correct help file (distinct .qrc files) * Show empty menu when entering empty directory in 1-line mode * Accept decimal / fraction conversions for arrays containing names * Make it possible to reload `Demo.48s` after initial run on DM42 * Correctly show error message while loading files * ui: Do not remove `-` when using CHS in an expression like `5-3`. * bignum: Remove leftover printf statement * menu: Refresh `CustomMenu` if updated while active * simulator: Fix race condition in Paste command * ci: keep Android AABs under `android/` * ci: package db50x Windows simulator from the correct path * wasm: bootstrap recorder and host tools correctly * ci: use libsystre in Windows packaging * doc: Fix description of simulator -m option * ids: Fix aliases for EquationValue and XLibValue * menus: Connect menu entries incorrectly marked as unimplemented * Fix help topics for various constants / constant groups Improvements ============ * fw: Move all C / C++ strings to the QSPI on DM42 (save >80K flash) * tests: Replace `LSHIFT, I` with `ID_ConstantsMenu` for readaibility * tests: Run cstlib / eqlib tests beyond first error * tests: Do not save state file after running the test suite * Do not waste memory while converting`<<`, `>>` and `->` * Improve rebuild in case of QSPI CRC mismatch * Enable `make TAR_EXTRA_FILES= install` to install only binaries * makefile: Generate listing files like the old makefiles * makefile: Add image comparison targets like in old makefile * makefile: Avoid extraneous / in paths * makefile: Pass DB48X_VERSION through the command-line * debug: Change debug_printf to use all 12 rows * commands: micro-optimize factorization of cmp == 0 test * chuck: Make the CHUCK command optional for repeatable builds * install: Add `DISK_NAME` variables to specify volume name * ui: Simplify display of alpha and user indicators * doc: Add information on how to start Fedora on WSL * ui: Fix misspelling in comment * doc: Make the age-verification LEGAL-NOTICE more general * chore(ci): bump packages versions * doc: Add Pasquale Pigazzini as an author * solver: Fix compiler warning about signed vs unsigned * tests: Use `STD` instead of `12 SIG` * library: Fix comment and remove duplicate entry * commands: Add `Γ` alias for `Gamma` * menus: Update and reorganize parts menu * locals: Detect incorrect argument count in algebraic function calls * locals: Do not evaluate algebraic expression passed as argument * version: Update copyright year to 2026 * parser: Accept `,` as a separator in algebraic function calls * Reorder the constants menu for efficiency Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.18
64cb4ffd · ·Release 0.9.18 "Chuck" - Sucess begins inside This release includes a number of under-the-hood improvements that will make the life of maintainers easier in the long run. New features ============ * Implement the `Chuck` command * Make `xq` recognize more patterns during simplification * List the menus in the help file * Support for tables in the help file * Extend `re`, `im`, `conj` and `sign` to lists and arrays * Add `norm` as a separate command from `abs` * `ListRecursionDepth` setting for `map`, `reduce`, `filter` Bug fixes ========= * Remove `-fsanitize` option on macOS (hangs on macOS 26.4) * Fix incorrect evaluation of constants during simplification Improvements ============ * Switch to the make-it-quick build system * Shared cross-platorm clipboard code * Automate the build of releases * Put the variables naming expression patterns in a namespace * Improved instructions for AI agents * `abs` on vectors and matrices now computes absolute value * Repair GitHub actions * Improve solver shuffle around singularities and errors * Fix path for grep testing in case of example test failure Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.17
7b904745 · ·Release 0.9.17 - Rational approximation, indexing, Android fixes This incremental release delivers new features and fixes a number of bugs. New features ============ * Add `→Qπ` command for rational approximation with π, √n, ln(n) and e * Apply `→Q` and `→Qπ` to numbers in expressions * Add array/list indexing support in algebraic expressions e.g. `'L(1)'` * Add ability to `Store` / `Copy` to `L(1)` * Add "real" `ConstantName` and `ConstantValue` commands Bug fixes ========= * Fix parentheses around exponents in graph rendering of `'(a+b)^(c+d)'` * Fix label for `ToRelativeUncertainty`, `→RelRnd` instead of `→RelUnc` * Fix command alias mapping for `RNrm` * Improve parsing of implicit multiplication for a number of edge cases * Fix `utf8_next` for garbage bytes following ASCII characters * Fix unsatisfied symbol errors with gcc/emcc in the WASM build * Save Android system state when app is suspended or hidden * Ensure Android help resources are extracted and available at runtime * Restore image testing functionality in the test framework * Updated test images that had become obsolete * Report errors when saving reference files in tests * Avoid stack corruption / crash when parsing malformed help index * Fix computation of `DFC(2.3)` * Fix null-pointer crash if the multiple equation solver fails Enhancements ============ * Constrain `→Q` and `→Qπ` behavior to FIX/SCI/ENG setting (like HPs) * Minor optimization for `program::run` * Save about 3.4K of RAM on physical devices * Speed up test runs while increasing default wait time for stability * Documentation cleanup and additions, add more RPL examples * Add clear build-time error message when a help topic exceeds 80 characters * Add demo for interactive menu use * Optimize away redundant argument checking * Documentation for DCF and DCF2F Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.16
459b70b4 · ·Release 0.9.16 - Factorization, precision fixes, and documentation This release adds prime and factorization features, improves numeric precision, and expands simulator and user documentation. New features ============ * Add `IsPrime`, `Factors`, `PrevPrime` and `NextPrime` commands * Add `MaxFactorsBits` and `MaxFactorIterations` settings for factorization * Add `TRIGSIN` command for Pythagorean identity rewrites * Add a Unix man page and simulator documentation * Add simulator recorder dump on `F16`; move demo playback to `F13`-`F15` * Paint navigation arrows in `SHOW` * Accept `CR/LF` line endings when reading Windows files * Display keyboard access paths in help for commands Bug fixes ========= * Fix `expm1` precision loss for small arguments, including complex values * Fix `ln1p` precision loss for small arguments * Fix shift behavior after transient alpha, and support shift/xshift for transalpha * Reset `show_x` and `show_y` when exiting `SHOW` * Ensure the simulator creates the `screens` directory when needed * Fix an infinity optimization regression in arithmetic * Add missing null-dereference checks in factorization code * Treat `^` as right-associative like on the HP50G Enhancements ============ * Refactor and optimize the decimal factorization code path, with expanded tests * Add conversion support to `float` and `double` in algebraic code * Update to recorder v1.2.3 * Add documentation updates (DeepWiki reference, legal notice updates) * Add build preparation for upcoming make-it-quick integration * Welcome several new authors to the team, see AUTHORS file * Add LEGAL-NOTICE.md about compliance with California and Colorado laws * Add menu entries for `hypot` and `atan2` Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.15
ddeec853 · ·Release 0.9.15 "Myriam" - GitHub automation, portability This release focused on GitHub and GitLab automation New features ============ * GitHub automation automatically builds various packages * Preparation for GitLab automation (still largely untested) * Windows simulator * Android package * WebAssembly application (WASM) now has help and configuration files * DM42n build (differs from DM32 only in the help files) * Dockerfile to create a container with the simulator * Add `ρ` in `RangesMenu` * Accept units when creating a range from components * Add `Range→` command that expands ranges with units Bug fixes ========= * Corrected typos in some builtin constants * Spelling and grammar fixes in documentation * Build failure for wasm due to use of `source`, a `bash`-only syntax * WebAssembly application no longer uses 100% CPU * The simulator can now be launched from any directory * The macOS simulator correctly launches from the Finder or Dock * Portability bug fixes in the DMCP emulation * The Settings menu is now correctly refreshed after `ResetModes` * Fix double-shifted arrow keys * Correctly show help for `Swap`, `Negate`, and `Cycle` * Fix order on stack for `Explode` on a range value * Android build bug fixes Enhancements ============ * Add osx program in lauch.json * The simulator no longer overwrites configuration files by default * Builds that use `gcc` now enable more warnings * Simplify shift-handling logic Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.14
7bb11f86 · ·Release 0.9.14 "Latran" - Android preparation This is a very minor release with bug fixes notably for Android New features ============ * The screen updates when rendering and `PICT` is set Bug fixes ========= * `Wait` for durations longer than 1 second now works in simulator * `→%Range`, `→∆Range` and `Range→` now use displayed values * 0.9.13 regression, leftover input value after error during plotting Improvements ============ * Semi-working Android build Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.13
dda3eb8a · ·This release focuses on graphics and a few user-reported bug fixes New features ============ * `bins` computes frequency bins from statistics data * `Res` sets the resolution when plotting * `HistogramPlot` draws a histogram (frequency) plot from an array * `HSV` generates a color pattern from hue, saturation and value * `Color` generates a color pattern from an object, including names * `TruthPlot` renders a truth value plot, with grayscale and color options * Add a new `XYPlots` demo illustrating `TruthPlot` variants Bug fixes ========= * Update the screen in `Show` when `Pict` is set * Fix crash in `Date+` when adding invalid dates * Correctly update the `UserModeMenu` and annunciator when changing User mode * The `STO` operation now works sensibly on flags * Fixed a rare on-startup crash running tests in the debugger * Invalidate the font cache when changing settings (notably `FixedWidthDigits`) * Fix transient `Input` validation errors after text-editor errors * Remove two extra parentheses in the documentation for settings Improvements ============ * Transient Alpha now preserves existing Alpha / Lowercase mode * Remove dependency on external `crc32` utility, now use a local implementation * Remove dependency on `tac`, replace it with `tail -r` * Rendered graphics are now preserved in case of auto-power-off * Avoid transient build errors on missing help directory * Add documentation for `ResetModes` and usage example for `Modes` * Negative dates now show as `BC` instead of with a minus sign Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.12
ade4ec5a · ·Release 0.9.12 "Alive" - Return to active duty This release focuses on simulator improvements, bug fixes, and enhanced mathematical functionality, marking a return to active development and maintenance after the hiatus caused by Christophe de Dinechin's move. ** New features ** * Enhanced trigonometric functions with exact angle reduction when possible * Improved simulator graphics by smoothing the output when rescaling ** Bug fixes ** * Compute Julian day number conversion with negative Gregorian years * Fixed crash in `lgamma` function on DM32 / DM42n platforms * Fixed undefined symbol issue in WASM builds * Fixed platform-specific compilation errors on Android * Fixed incorrect simplification for `sqrt` function * Fixed display of checksum in the `Info` box * Fixed hang when reading CSV files containing unit objects * Do not reorder mean and standard deviation parts in uncertain numbers * Avoid possible null-dereference in several statistical functions ** Improvements ** * The simulator now preserves a fixed aspect ratio while resizing * The simulator now builds cleanly on Qt5 * Added 2 new tests for Julian day number conversion * Updated copyright year in About message * Improved description of "Julian day number" commands in documentation * Improved build system to select qmake6 on Arch Linux * Show `→Num` spelling in compatibility mode * Updated AUTHORS list * Remove documentation for newRPL commands UDEFINE and UPURGE * Improve implementation status section of the documentation Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.11
adbd0fb4 · ·Release 0.9.11 "Prayer" - Uncertain number This release implements arithmetic and basic functions on uncertain numbers. This propagates uncertainty using quadradic superposition, in a way similar to OpenRPNCalc, with a generalization for correlated variables. New features ------------ * Arithmetic and basic functions on uncertain numbers * Add support for complex-valued unit objects, e.g. `5+3ⅈ Ω` * Add support for range-valued unit objects, e.g. `1…3 Ω` * Support arithmetic operation on infinities, e.g. `∞ 42 +` * Add commands to generate mathematical constants (π, ℮, ∞ and −∞) * Parsing and editing of ranges containing infinities * Accept infinities in `→Range` and variants * Comparison of infinite values and finite values * Add union and intersection commands for ranges * Add operations to build ranges and uncertain numbers from components * Add derivative for `erf` and `erfc` Bug fixes --------- * Do not leave bad expressions behind after errors on ranges * Obey the `InfinityError` flag when detecting divide-by-zero in ranges * Avoid crash pushing null pointer after unit evaluation error * Avoid spurious inconsistent units error due to date computations * Null-protection in variadic `list::make`, fixes null-deref crash Improvements ------------ * Accelerate error exit from arithmetic operations * Render uncertain numbers as `110±σ15` instead of `110±15σ` * Accept `−` as valid input in constants (for `−∞`) * Record performance data for iPhone 16 * Change spelling to `→σRange` in `RangeMenu` * Use `ASSERT` for divide by zero inner checks (remove dead code) Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.10
fc30ad76 · ·Release 0.9.10 "Best" - Ranges and documentation This release is primarily a refinement of ranges and a documentation update. New features ============ * Always display infinity ranges with range notation * Add constant for `-∞` * Add support for ranges in `Explode` / `Obj→` * Add support for delta and percent ranges in `ToDecimal` * Allow `Copy` to target a local variable or setting * Support `True` and `False` in `→Num` Bug fixes ========= * Replace `log` with `ln`, make `log` be base-10 logarithm * Check zero-divide in ranges * Fix the implementation of trig functions for ranges * Fix incorrect command associated to the `%T` alias (should be `%Total`) * Adjust help for `log10` and `ln` * Avoid pushing a null pointer on the stack on error evaluating constants * Add missing `Ⓒ` sign in uncertainty for `Epl` * Fix constant evaluation referencing `this` after it may have moved * Report missing current directory in `Purge` * Report errors when purging invalid objects in `Purge` and `PurgeAll` * Avoid `ClearThingsMenu` in tests, the key maps to forward delete in editor Improvements ============ * keyboard: Update layout to include `σ` character * Remove the `state/Test.48S` file, it's not longer relevant * Add `constant` case to `object::is_negative` * Add `DATE-` as an alias for `DDAYS` * Add `PgAll` as an alias for `PurgeAll` * More systematic purging of environment and variables between tests * Add check in test suite that we actually purged special variables * Refresh authors list * Move documentation for `PPAR` to `plot.md` * Avoid date conversions during constant evaluation * Accelerate and improve the display of constant values in menus * Add `launch.json` and `tasks.json` build configuration generated by Cursor * Send a `START_TEST` command at start of test, refresh simulated battery * Cursor-assisted review of missing command documentation * Cursor-assisted generation of content in the Quickstart guide * Cursor-assisted improvements to grammar and spelling * Documentation and examples for `Blank` variants * Documentation and examples for `Gray` and `RGB` * Documentation and examples for `PMIN`, `PMAX`, `XRNG`, `YRNG` * Documentation and examples for `Eq` and equations * Add examples for list sum, product and difference commands Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.9
2968024d · ·Release 0.9.9 "Headrest" - Ranges This release introduces four range types to perform computations on ranges, and fixes serious graphical regressions that remained undetected by the test suite. New features ------------ * Three range types, known as _interval_ (`1…3`), _delta range_ (`2±1`) and _percent range_ (`2±50%`), for which arithmetic and most operations have been implemented. * An uncertain type (`2±3σ`), for which arithmetic and operations are not implemented yet. * A new flag, `ShowAsDecimal`, presents integers and fractions using a decimal format. This is useful for people working in banking, who can use `2 FIX` mode for all values. In that mode, `50` will display as `50.00`, and `3/4` will display as `0.75`. The `Show` command still shows the original value. * The simulator now strips CR/LF when pasting on Windows. * The `^` operator now operates on arrays Bug fixes --------- * The image comparison code has been broken since January. As a result, various regression regarding graphical output remained undetected. * One particular case is the generation of incorrect BMP files after the default format for graphic objects was switched to `bitmap`. * A possible crash was eliminated when converting a number to integer, to fraction or to decimal. Improvements ------------ * The `σ` (used for uncertain numbers) replaces `ρ` (unused at the moment) on the keyboard in alpha mode.
-
v0.9.8
a8de9611 · ·Release 0.9.8 "Crowdfeeding" - Bug fixes This is a minor release with bug fixes. Bug fixes ========= * isolate: Fix patterns for exponentials and logs * doc: Fix list of currently supported models * derivation: Allow simplification when matching against constant * solver: Do not emit type error when guesses are constants * expressions: Correctly substitute names in list substitutions * menu: Fix label for `ConstantsMenu` in `MainMenu` Improvements ============ The [INSTALL.md](../INSTALL.md) file now describes the installation procedure. Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.7
7bf1b7ca · ·Release 0.9.7 "Home" - Symbolic integration and bug fixes This release focuses on symbolic integration and bug fixes. New features ============ * Symbolic evaluation of integrals when the primitive is known, for example `'∫(A;B;X↑3-sin(X-3);X)'` now evaluates symbolically. * hms: Cycle between `hms` and `dms` units * datetime: `_hms` removes `_dms` if necessary * Non-algebraic form of `where`, with list as substitution input, for example `« 'X-Y·Z' { X 3 Y '2·A' } | »` returns `'3-2·A·Z'`. Bug fixes ========= * Correctly render `*` and `<` in the built-in help render engine. * Optimized temporaries cleanup now correctly clears the command if it was a temporary. * Fix rounding errors for decimal values in HMS and DMS * Do not give truncated result for `FromHMS` * Fix conversion of hardware floating-point values to fraction * Fix typo in `FromHMS` help entry * Allow screenshots with Shift-Disp in `Show` * Fix two tests that fail and should not * Correct hwfp entry with french locale. * stack: Correct font size for non-result stack levels * Swap logfit and powerfit menu entries (wrong label) Improvements ============ * Improve detection of unknown primitives and derivatives. * The rewrite engine was incorrectly rewriting "up" for integration and differentiation, when rewriting "down" is much more efficient. This accelerates symbolic integration and differentiation by more than an order of magnitude in some cases. * Evaluate the bounds of integrals numerically ahead of time. This accelerates numerical integration when the bounds are complex expressions. * In the rewrite engine, evaluate the sub-expressions that correspond to a constant in the pattern before comparing. This notably solves some cases where the derivative would contain leftover constants expressions that should have been eliminated, such as `0*X`. * Automatically generate the list of implemented commands, and update the implementation status. * Renamed the settings for numerical / symbolic integration and solver * Rename `6-Unimplemented.md` to `6-ImplementationStatus.md` and remove empty `doc/calc-help/finances.md` file. * Support for recent compilers (GCC >= 12.2.1). * Update performance data for 0.9.6 * Add Philippe Martens to the authors list Signed-off-by: Christophe de Dinechin <christophe@dinechin.org> -
v0.9.6
02409d2f · ·Release 0.9.6 "Peace" - Bug fixes This release is mostly bug fixes Bug fixes ========= * Evaluate index in `get` and `put` like the HP50G * Avoid premature simplification during arithmetic operations * Do not wrap variables after `Copy`, e.g. in `'A+A▶A+A'` * Return errors for unknown primitives / derivatives in algebraics * Correctly use `GraphicReslutDisplay` for result stack level * Ensure pi and e display the same size at 60 digits precision * Fix bogus exponent truncation in polynomials * Fix issue in `+` and `-` on vectors with angles, e.g. `[ 3 2 1.7_° ]` * Fix possible garbage collection memory corruption in `FromVector` Improvements ============ * units: Make `BaseUnits`, `→Deg`, `→Rad`, `→Grad` and `→πr` array-wise * Add `VectorMenu` on first page of `MatrixMenu` * Do not single-step or debug during plot/integration * Add routine to render u64 and i64 Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.5.1
774e7311 · ·v0.9.5.1: Bug-fix release for `Wait` with long durations Bug-fix only release for timing of `Wait` command Bug fix ======= The changes that improve battery life in 0.9.5 had an impact on commands that need absolute time, because the internal timer of the DM32/DM42 switches of when in deep sleep. As a result, `Wait` with durations longer than 1 second would wait much longer than expected, and long-duration `Refresh` settings e.g. `BatteryRefresh` would also wait longer than expected. Replace the use of the internal timer with a synthetic timer based on the real-time clock. Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.5
7129bf24 · ·Release 0.9.5 "Everlasting" - Power management, offline graphics This release brings two major new features: vastly reduced power drain, and off-line persistent graphics. New features ============ * Off-line graphics are the ability to draw images in memory instead of directly on screen. Like on HP calculators, this works by storing a graphic object in `PICT`. Unlike HP calculators, `PICT` is an actual variable in the current directory, meaning that you can have multiple `PICT`, although bitmaps use a lot of memory. For example, running `500 300 BLANK 'PICT' STO` will create a 500x300 pixels off-line image in `PICT`, and all graphic commands after that will draw in that off-line image instead of on screen. Off-line graphics are not immediately shown on screen, but are displayed before returning to the command line in a way similar to the `Show` command (i.e. centererd if smaller than the screen, and with scrolling if larger). They are also persistent, meaning that you need to explicitly `ClLCD` to erase them. * Add `Blank`, `BlankGrob`, `BlankBitmap` and `BlankPixmap` commands to create a blank image with default format, in HP GROB format, in DB48x bitmap (Black and white) format and in DB50x pixmap format (color RPL only). * Add `→HPGrob`, `→Bitmap`, `→Pixmap` commands which can be used to generate an HP-compatible GROB format, a bitmap or a pixmap (color RPL only) from an object. If the object is already a graphic, perform conversion. Note that on color RPL, conversions between color and monochrome formats are supported. Colors are converted to monochrome using grayscale patterns. * Add `→LCD` and `LCD→` commands to send an object to the current graphics, or to create a graphic object from the current screen content. * The `Off` command can now be used in a program and will preserve what is on screen. You can resume execution of the program by using the `ON` key. Add `PowerOffWithImage` command to show off-images even from programs. Bug fixes ========= * Fix display of object `Info` in the interactive stack * Clear system timers before entering system menu, so that the self test menu entry does not run a fast-paced loop. * Fix off-by-one error in result of `LastBitSet` (number bits starting at 0) * Correctly render color pixmaps when on the stack (color RPL only) Improvements ============ * Reduce power usage dramatically by disabling timers when going to sleep. This manifests as a higher battery voltage being shown, which is closer to what the DM42 firmware or integrated self-test would show. This will most likely improve battery life for interactive uses of DB48x. * Reorganize the `MemoryMenu` to make both GC and runtime statistics available * Reorganize the `GraphicsMenu` by topics to accomodate the new commands * Add image checks in the test infrastructure for RPL code examples * Add tests for RGB colors * Repair `make compare` which was trying to build a binary from `compare.cc` * Make `Sub` a compatibility spelling for `Extract`, not the default one * Adjust low battery indications to avoid premature warnings * Make `debug_printf` use lower-level routines that can run earlier after boot * Add `make INSTALL_PGM_ONLY=y install` option for faster install * Generate DB48x bitmaps by default instead of HP-compatible GROBs. Bitmaps use less memory when the width is not a multiple of 8. * Make test of pixel functions more reliable by increasing their timeout * Add help for `ModesMenu`, `SymbolicResults` and `NumericalResults` Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
-
v0.9.4
a72bc46f · ·Release 0.9.4 "Face, meet palms" - Pixmaps, bug fixes This release fixes embarassing numerical bugs introduced in 0.9.3 and introduces a new `pixmap` type intended to capture screen pixel maps including in color. Builds for hardware calculators are also smaller due to switching to a `nano` configuration for the compiler. New features ============ * graphics: Add `pixmap` type Bug fixes ========= * Adjust unit conversion in `StdRnd` * Fix parsing of `ΣY²` in equations * Render non-fancy large exponents correctly (e.g. `1E123456789012345`) * The precision of numerical constants now adjusts after changing `PREC` * Avoid unnecessary purging of constants cache due to internal precision changes * Return tests values to rounded valus as validated with Wolfram Alpha * directory: Fix `STOVX` and `Store` to non-current directories Improvements ============ * Fix `sqrt` precision, notably for perfect squares (ouch) * Improve support for recent ARM compilers * Eliminate new `clang` warnings * Eliminate warnings about function pointers in latest XCode * Add documentation for `DisplayModesMenu` * Precision adjustments are now more consistent across decimal functions