Releases: c3d/db48x
Release 0.4.2: Graphics and plotting
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
andrrect
graphic commands (#311, #316, #318)linewidth
,foreground
,background
graphic commands (#312)ppar
special variables for user coordinates (#319)cllcd
to clear the screendrax
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
anduint32
/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
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
New features:
- Equation rewrite engine (#203, #213, #244)
- Early implementation of
expand
andcollect
(#231)
- Early implementation of
- 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)
- 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
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
andPurgeAll
toMemoryMenu
- 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
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
andatan2
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
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
Bug fixes:
- Memory corruption in division of large numbers (#70)
- Parsing
'X⁻¹+(Y²+Z³)'
resulting in syntax error (#76) - Parsing
-80/60
resulting in4/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 notABC
(#86) - Directory corruption following
purge
(#87) - Local blocks now always execute (#90)
- Correct spacing of control structures on stack
Features:
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
Bugs fixed since v0.2.1:
-
Fixed the
while
loop
The test for thewhile
loop was inverted
The location of theend
andrepeat
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 return17
instead of17/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
Thesame
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 asabs
orcubed
. -
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
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
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