Skip to content

Releases: c3d/db48x

Release 0.4.2: Graphics and plotting

15 Aug 07:24
@c3d c3d
Compare
Choose a tag to compare
Pre-release

New features:

  • Display folder marker on directories in VariablesMenu (#309)
  • Alternate menu styles (sqare vs. rounded, single-line or 3-line) (#310)
  • line, circle, ellipse, rect and rrect graphic commands (#311, #316, #318)
  • linewidth, foreground, background graphic commands (#312)
  • ppar special variables for user coordinates (#319)
  • cllcd to clear the screen
  • drax to draw plotting axes (#321)
  • draw command to plot a function (#323)
  • wait command to wait for a delay or key press (#324)

Bugs:

  • Memory corruption when GC was triggered in a constructor (#325)
  • Improve complex_promotion to avoid undesirable complex format changes
  • Wrong pattern alignment in screen blitting operations
  • Off by one error in width and height of blitter rectangles (#
  • Conversion of fractions to uint32 (#321)
  • Conversion between bignum and uint32 / int32

Improvements:

  • Update dmcp commit to include a single fix for _exit
  • Better rendering of folder menus, looks more like a folder (#310)
  • Add .clang-format file to facilidate standard code formatting
  • Add AUTHORS file
  • Global variable lookup is now case-independent

Signed-off-by: Christophe de Dinechin christophe@dinechin.org

Release 0.4.1: Complex fixes

07 Aug 22:21
@c3d c3d
Compare
Choose a tag to compare
Pre-release

This is the first release with contributions from third parties. Special thanks to @camillew and @spiff72.

Features:

  • type and typename commands (#285)
  • bytes command (#284)
  • →Num and →Q (#255, #282)
  • if (#290) and iferr (#291)
  • errm, errn, err0, doerr
  • disp command (#296)
  • crdir, pgdir, directories (#298)
  • xroot (#276)
  • DMCP5 support and DM32 build
  • Remove the fixed-base base numbers (#274)
  • Promotions of fractions to decimal128 (#266)
  • Add the glyph for the ⇄ sign and xth root (on ∜ in Unicode)

Bug fixes:

  • Avoid null-dereference for out-of-range complex cos (#253)
  • Do not leave input argument for C->R and R->C conversions (#252)
  • Fix display of "Seconds" marker in setup (#247)
  • bignum: Read int values using correct endianness (#267)
  • complex: More careful handling of angle units for polars (#251)
  • display: Do not display trailing digit separator after rounding (#256)
  • editor: Do not insert separators while typing symbols or text (#260)
  • header: Fix off-by-one in month name (#248)
  • help: Better scanning to find names with special Unicode characters (#286)
  • logical: Check the type of stack level 2 (#272)
  • modulo: Fix the case of -360 mod 360 (#264)
  • settings: Default value for FractionSpacing is 5, not 3 (#261)
  • state: Do not emit 'AutoSimplify' since it's the default (#257)
  • state: Truncate state name for display (#246)
  • ui: Repair drawing of current command
  • Allow xshift-ENTER to insert text while not editing (#293)
  • Multiplication by -1 had no effect (abusive simplification) (#288)
  • Argument of negative numbers should be pi, not 0 (#287)
  • Emit error message for 0/0 (#279)
  • Restore missing glyphs for atan2 and hypot (#295)
  • arg for (1+i) returned a negative value (#277)
  • List + Text returns a list, not text (#297)
  • Complex tan computation (#300)
  • Wiring of some missing menu entries (thanks @camillew)

Improvements:

  • Change license to GPLv3
  • doc: Add section about Unicode support
  • doc: Change the level of sub-headings
  • doc: Document changes regarding list
  • state: display state file name on the right of date/time (#258)
  • tests: Run tests with default settings (#259)
  • Rename graphics class to blitter
  • Add 'make clangdb' makefile target
  • Add documentation for arithmetic operations (+, -, *, /, ^)
  • Expand documentation on autosimplify
  • New SVG template contributed by @spiff72

Signed-off-by: Christophe de Dinechin christophe@dinechin.org

Full Changelog: v0.4...v0.4.1

Release 0.4: Matrices and equation rewrites

30 Jul 13:38
@c3d c3d
Compare
Choose a tag to compare

New features:

  • Equation rewrite engine (#203, #213, #244)
    • Early implementation of expand and collect (#231)
  • Transient alpha mode for quick alppha entry (#204, #215, #233, #237)
    (note that XEQ no longer automatically switches to alpha)
  • Vector and array arithmetic (#26, #185, #190)
    • Determinant of square matrices (#187, #217)
    • Inverse of a square matrix (#180, #189, #201)
    • Euclidean norm for matrices and vectors (#188)
    • Component-wise multiplication and division of vectors (#181)
    • Binary operations between matrix / vector and constant (#183)
    • Matrix * vector (#195)
  • Automatic simplification in basic operations (#197, #216, #221)
  • Help knows how to render "yellow" and "blue" keys
  • Contextual tool menu (#127) and contextual help (#162, #193)
  • LastMenu (xshift-A) goes back in menu history (#165)
  • Displaying date and time in the header (#123, #224)
  • GET function on lists and arrays (#173)
  • Concatenation and repetition of lists (#178)
  • Apply standard functions to arrays and lists (#179, #182)
  • Add limits to size of numbers and number of rewrites (#214)

Improvements:

  • Better rendering of unimplemented menu functions (#218)
  • Accelerate garbage collector (#219)
  • Render polar arguments with explicit angle units (#119, #161)
  • Update key layout for easier matrix / vector entry (#198)
  • Render complex numbers with additive precedence (#222)

Bugs fixes:

  • Fix cursor position for up/down movement (#159)
  • Show help for R/S (Eval) and division keys (#157)
  • Fix spacing for thousands (e.g 5000) (#137)
  • Redraw editor after inserting variable name (#156)
  • Draw alpha annunciator after busy cursor is cleared
  • Refresh editor when going at beginning or end of text
  • Parsing of Invert(X) (#163)
  • Do not insert parenthese in editor after binary operators (#164)
  • Correct parsing of π and imaginary unit (#145, #168, #169, #207, #208)
  • Repair repeat for R/S as a space key (#199)
  • Parsing of complex numbers in matrices (#205)
  • Parsing of complex numbers in equations (#220, #224)
  • Parsing of "fancy" power sign (#238)
  • Computation of power with integer and negative exponent (#239)
  • Refresh menu after NumberSpacing (#240)

Other:

  • Various help file improvements:
    • Help now uses more standard mardown for keys
    • As a result, README.md now points to the built-in help on GitHub (#227)
    • Add acknowledgements to help file (#129), including link to HP Museum
    • Improve documentation of differences between RPL variants (#177, #192)
    • Add documentation for the Help command (#228)
    • Fix label for F6 key in help (#230)
    • Improve rendering of code font in help (#232)
  • Improved test suite, now faster, more stable and detects more errors
  • Fixes / adjustments to keyboard layout suggested by C47 team
  • Use standard C++ iterators for programs and lists (#166, #242)
  • Split source files for list, program, array and equation (#167)
  • Unify precedence handling for parser and renderer
  • Add "storytelling" file (#191) for video demos
  • Update STATUS.md file (#200)
  • Fix generation of fonts
  • Fix subtle dereferencing bug in GC pointer
  • Use C++ template metaprogramming to build RPL equations from C++ (#230)
  • Use flags instread of range comparisons to check properties of objects (#234)
  • Default settings when running "current test" (#150)
  • Add rewrite_all to rewrite until convergence (#241, #243)
  • Do not integrate random files in make dist.

Verse of the day:
The kingdom of heaven is like treasure hidden in a field.
When a man found it, he hid it again, and then in his joy went and sold
all he had and bought that field (Mt 13:44)

Signed-off-by: Christophe de Dinechin christophe@dinechin.org

Full Changelog: v0.3.1...v0.4

Release 0.3.1: Editor acceleration

19 Jul 22:49
@c3d c3d
Compare
Choose a tag to compare
Pre-release

Bug fixes:

  • Avoid a beep on shift-ENTER (shifting Alpha mode)
  • Do not drop top of stack if editing editor with EXIT
  • Display factorial as a postfix (X! and not !X)
  • Modulo on negative integers
  • Computation of modulo for fractions
  • Parsing of + at end of command-line (interpreted as number)
  • Trailing zeros inserted if non-displayed significant digit

Features:

  • Optimization of the text editor, now reasonably fast on battery
  • Add ancillary functions to manage complex numbers
  • Add pi function
  • Respect angles settings in trigonometric functions
  • Added Purge and PurgeAll to MemoryMenu
  • Normalized angle for complex in polar form (sensitive to DEG/RAD/GRAD)

Other:

  • Some rearranging of the menus (unfinished)
  • Updated the proposed keyboard layout, notably with "Previous menu"
    and "Toolbox" (context-sensitive menu) keys, removal of duplicate
    "Stack" key assignment.
  • Make GC and busy animation a bit faster to avoid skipping on battery

Signed-off-by: Christophe de Dinechin christophe@dinechin.org

Full Changelog: v0.3...v0.3.1

Release 0.3: Complex numbers

17 Jul 08:11
@c3d c3d
Compare
Choose a tag to compare
Pre-release

Bug fixes:

  • CHS on second number on the command line (#105)
  • program interruption when keys were pressed other than EXIT (#104)
  • Rounding of 1.9999 displaying as 10.000 instead of 2.000 (#112)
  • Memory corruption in logical operations on big numbers (#103, #107)
  • Out of memory error when no spacing is present (#109)
  • Strip trailing zeros introduced by rounding (#116, #117)
  • Reject 0 SIG (displaying no significant digits)
  • Potential crash in low-memory condition (#118)
  • Removed useless "Program" menu in system menu (#120)
  • Exit the state save/load menu after saving/loading (#122)
  • Crash loading state file if no error was generated
  • Detection of integer overflow in implementation of a^b (power)
  • Evaluation of "ABC" 3 * was no longer working

Features:

  • Complex numbers (#15)
  • Render based numbers with base as subscript (#106)
  • Change default spacing for fractional part to 5 digits (#108)
  • Animation for long-running user programs and garbage collection (#115)
  • xshift-EXIT saves state to disk (#113)
  • Switch to three-level menus by default (#128)
  • Generalization of pow with integer on right side
  • Represent hypot and atan2 using ⊿ and ∠ operators
  • Added sign function
  • Change behavior of Shift-Enter (alpha), now cycles back to non-alpha

Other:

  • Add keyboard cutout for tentative keyboard layout
  • Vastly enhanced regression test suite (faster and more extensive)
  • Fixed dependencies in Makefile for fonts
  • Improved efficiency of arithmetic computations
  • Added several characters to the base font
  • Improve 'const'-safety in C++ code, garbage-collected pointers are const now

Signed-off-by: Christophe de Dinechin christophe@dinechin.org

Full Changelog: v0.2.4...v0.3

v0.2.4 - Dynamic number spacing while editing

11 Jul 07:57
@c3d c3d
Compare
Choose a tag to compare

Bug fixes:

  • CHS removes negative sign instead of putting a + sign
  • Fix crash when applying decimal functions to negative values (#101)
  • Use default formatting when saving calculator state
  • Repair rendering of FIX, SCI and ENG on the stack (#100)
  • Fixes the selection of the editor's displayed rows and columns (#98, #99)
  • Remove premature "too many digits" error message for decimal128 (#97)
  • Do not terminate editing for self-inserting menus such as # (#96)
  • Show B cursor for all base-36 digits (#95)
  • Defensive coding against malformed UTF8 text rendering (#101)

Features:

  • Show thousand separators while editing numnbers
  • Render based numbers with a numerical postfix base indicator (#95)
  • Parse numbers in arbitrary base, e.g. 3#212 (#95)

Full Changelog: v0.2.3...v0.2.4

Release 0.2.3 - For loops

10 Jul 07:06
@c3d c3d
Compare
Choose a tag to compare
Pre-release

Bug fixes:

  • Memory corruption in division of large numbers (#70)
  • Parsing 'X⁻¹+(Y²+Z³)' resulting in syntax error (#76)
  • Parsing -80/60 resulting in 4/3 (sign lost) (#78)
  • Large numbers written to state file had separators (#83)
  • Render names on stack as 'ABC' instead of 'ABC' (#84)
  • Evaluate names as 'ABC' and not ABC (#86)
  • Directory corruption following purge (#87)
  • Local blocks now always execute (#90)
  • Correct spacing of control structures on stack

Features:

  • Keyboard binding to create lists (#89)
  • Implementation of for loops (#92)

Other:

  • Solidified the test suite further, added many tests
  • Added reference to FOSDEM talk to README.md
  • Added Freedom Covenant to the repository

Signed-off-by: Christophe de Dinechin christophe@dinechin.org

v0.2.2 - Optimisations and stabilisation

07 Jul 06:47
@c3d c3d
Compare
Choose a tag to compare

Bugs fixed since v0.2.1:

  • Fixed the while loop
    The test for the while loop was inverted
    The location of the end and repeat keywords was swapped

  • Fixed bug in detection of multiplication overflow
    The computation of the factorial of 23 and up is now correct.

  • Fixed bug mistakenly converting some fractions to integers
    For example, 2/17 INV would return 17 instead of 17/2

  • Add spacing to large numbers
    A number that did not fit on 64-bit would not respect spacing settings

  • Repaired the test suite
    Tests were setting-dependent, and would fail with default settings because
    they did not take number spacing into account.

Features implemented since v0.2.1:

  • Implemented local variables, e.g. << -> A B C << A B - C * >> >>
    Local variables are a very fast way to reference data. Internally, they are
    represented by an offset to a known location, which makes them practically as
    fast as stack accesses, and much faster than global variable lookups.

  • Implement the same function
    The same function detects if two objects are identical.
    Like the HP48, there are multiple "equality" variants:

    • same detects if two objects are binary-identical
    • == does the same, but dereference names
    • = is a mathematical equality (does not exist in HP48 RPL)
  • Add feature to import ASCII versions of «, » and
    In .48S files, you can use <<, >> and -> instead.

  • Implement →List (stack to list)
    This was the last missing command to be able to execute the
    HP calculator's N-queens benchmark

  • Better truncation of very large numbers when shown on stack
    A very large number, like the factorial of 64, would show up truncated
    at 80 digits, so the first digits shown were wrong.

  • Various optimizations to make things a bit snappier, notably on battery power

    • Refactored the object model to use a simpler lookup mechanism

    • Implemented a C++ interface for arithmetic and functions, which will be
      useful when implementing complex number and matrix operations, and already
      simplified the code for operations such as abs or cubed.

    • Sime fine-tuning of LEB128 handling for types

    • Execution time for NQueens measured, reduced from about 980ms down
      to about 530ms.

Full Changelog: v0.2.1...v0.2.2

Version 0.2.1 - Add VERSION command

01 Jul 07:37
@c3d c3d
Compare
Choose a tag to compare
Pre-release

Add a VERSION command, and git-derived version string in the PGM file

Full Changelog: v0.2...v0.2.1

v0.2 - Fix problem when running on battery power

30 Jun 21:29
@c3d c3d
Compare
Choose a tag to compare

The primary reason for a v0.2 is that this solves #12, a hang on battery power. There are also major bug fixes on integer arithmetic, and a new formatting of numbers.

Full Changelog: v0.1...v0.2