Releases: c3d/db48x
Release list
Release 0.4.4: Graphic objects, tagged objects, Undo and LastArgs
Notes:
- This release switches the DM42 build to "optimize for size", because
we ran out of program space for an "optimize for speed" build.
The DM32 build is still optimized for speed. - The release is not really "well rounded". Notably, graphical
rendering of stack objects is active, but not complete. Everything
is still rendered from text, and there is no caching yet. - The package is now consistently called DB50X for DM32 and DB48X for DM42.
In the long run, the DB50X is expected to be more full-featured or slightly
faster everything being equal, due to limitations in DM42 program space that
are fast approaching.
New features:
- Graphic objects, aka
grob(#30) - Graphic operations:
GOr,GXor,GAnd(#383) - Method for graphical rendering of objects (#47)
- Tagged objects,
dtagand->tagcommands (#21) LastArg(#379, #55)Undo, i.e. last stack (#380, #55)LastX(#384, #55)
Bug fixes:
- Fix latent memory corruption bug in
textconstructor - Fix out of memory error reporting while building
textobjects - blitter: Fix clipping when src and dest don't have same x direction
Enhancements:
- Use the
helpmethod to select help topic (#378) - Graphical rendering of stack (#382)
- Simulator: Fix program exit with
EXITkey after another key (#356) - Simulator: Set 40K as default memory
- Out of program space: Switch to
-Ozon DM42 - Generate different help files for DB48X and DB50X
Signed-off-by: Christophe de Dinechin christophe@dinechin.org
Release 0.4.3: Graphics / plotting stabilization
New features:
- Released binaries for DM32, seem to be working (use DB50X files)
- Parametric and polar curves (#364)
Function,PolarandParametriccan be used to plot from stack (#339)ResetModescommand (#315)- Add
Clipcommand to control screen clipping rectangle (#313) - Separate "graphic" mode (#342)
- Add CAS numeric / symbolic flag (#346)
- Accept functions that use the independent variable from PPAR (#352)
- Source code comments (#94)
- Add a demo state file (#355)
Bug fixes:
- Scaled coordinate system was upside down (#331)
- Skip errors during function plot (#329)
- Make
->Numwork on equations (#345) - Fill glyph background over whole height of font (#335)
- Refresh screen correctly after drawing axes (#328)
- Refresh screen better during plotting (#337)
- Save line width, foreground and background in state (#338)
- Correctly skip closing parentheses for "legacy" complex syntax (#336)
- Workaround QSPI fast-read bug on DM32 to avoid crashes (#304)
- Parsing pi in equations as built-in command, not symbol (#347)
- Do not leak errors during plotting (#354)
- Missing trailing space when rendering lists (#361)
- Correct parsing of based integer at end of a list (#362)
- Emit error if missing variable in
for next(#363) - Fix backward conversion from radians for fractions (#365)
- Execute local variables when evaluating them (#366)
- Fix 'EXIT' key to interrupt program in
Wait(#356) - Convert coordinates from based numbers as unsigned (#368)
Enhancements:
- Switch to 32-bit graphic coordinates (#334)
- Clip lines more efficiently to clipping rectangle (#332)
- Draw axes by default when plotting (#353)
- Change position of type in connstructors (#343)
- Add 'save' internal utility to save/restore scoped variable (#349)
- Optimize special case of polar addition / subtraction with same argument
- Updated PNG / SVG files for overlay
Dispgoes to new line at original horizontal position (#358)- Add
-moption to pass memory size to simulator (#367) - Make symbol comparison for dependent variable case-independent (#369)
Signed-off-by: Christophe de Dinechin christophe@dinechin.org
Full Changelog: v0.4.2...v0.4.3
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,rectandrrectgraphic commands (#311, #316, #318)linewidth,foreground,backgroundgraphic commands (#312)pparspecial variables for user coordinates (#319)cllcdto clear the screendraxto draw plotting axes (#321)drawcommand to plot a function (#323)waitcommand to wait for a delay or key press (#324)
Bugs:
- Memory corruption when GC was triggered in a constructor (#325)
- Improve
complex_promotionto 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
bignumanduint32/int32
Improvements:
- Update
dmcpcommit 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
expandandcollect(#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)
GETfunction 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
Helpcommand (#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_allto 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
pifunction - Respect angles settings in trigonometric functions
- Added
PurgeandPurgeAlltoMemoryMenu - 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
powwith integer on right side - Represent
hypotandatan2using ⊿ and ∠ operators - Added
signfunction - 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/60resulting 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
whileloop
The test for thewhileloop was inverted
The location of theendandrepeatkeywords 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 INVwould return17instead 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
samefunction
Thesamefunction detects if two objects are identical.
Like the HP48, there are multiple "equality" variants:samedetects 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 asabsorcubed. -
Sime fine-tuning of LEB128 handling for types
-
Execution time for
NQueensmeasured, reduced from about 980ms down
to about 530ms.
-
Full Changelog: v0.2.1...v0.2.2