Skip to content

Commit

Permalink
Release 0.8.8 "Voice" - Power usage reduction
Browse files Browse the repository at this point in the history
This release focuses on reducing power usage and improving reactivity,
notably while running on battery.

Features
--------

* Cache rendered graphics and text on the stack to reduce the time
spent redrawing the stack.

* Limit the size of objects being rendered on the stack. Objects that
  are too large will simply render as something like `Large bignum
  (399 bytes)` on the stack. This is configured by two new settings,
  `TextRenderingSizeLimit` and `GraphRenderingSizeLimit`.

* Limit the size spent rendering graphical objects. There are four
  settings controlling the maximum time spent rendering objects
  graphically.  `ResultGraphingSizeLimits` controls the display for
  the first level on the stack, `StackGraphingSizeLimit` controls the
  display for the other levels on the stack, `ShowTimeLimit` controls
  the display for the `Show` command, and `GraphingTimeLimit` controls
  other graphical rendering.

* Blink the battery icon when in a low-battery situation.

* Add configurable `MinimumBatteryVoltage` to adjust the threshold for
  low-battery detection and automatic power-off.

* Power-related commands: The `BatteryVoltage` and `PowerVoltage` read
  the battery and power voltage respectively. The `USBPowered`
  commands detects if the calculator is running on USB power. The
  `LowBattery` command detects if the calculator is running low on
  battery.

* Detect and reject Unicode characters that look like mathematical
  characters, and are produced by auto-correction on Windows, notably
  the`-` and `*` signs that look like `-` and `*`. This is notably
  useful when copy-pasting in the simulator on Windows.

Bug fixes
---------

* Fix `NDupN` again. While the previous release fixed what `NDupN`
  does, it did not fix the detection of the number of arguments,
  meaning that `NDupN` would incorrectly complain about missing
  arguments if the stack was not deep enough.

* Fix the precedence of unary `-` when in front of a parenthesized
  expression.  For example, `-(X)^2` now parses correctly.

* Disable keyboard repeat timer when no key is pressed. It was
  possible to trigger a condition where the keyboard repeat timer
  would trigger continuously if two keys had been pressed in rapid
  succession, keeping the CPU in a busy loop and depleting the battery
  unnecessarily rapidly until another key was pressed. This could also
  trigger incorrect long-press detections, e.g. the shift key
  triggering alpha mode instead of a simple shift.

* Disable all timers when switching the calculator off. In some
  situations, the display refresh timer could still remain active
  after the calcualtor had been switched off.

* `RclΣ` now returns the statistics data even when the `ΣData`
  variable contains the name of a variable or file.

* The `Off` command can now be used while editing and no longer causes
  immediate command-line evaluation.

* Return to the first page of the catalog menus when updating it, to
  avoid scenarios where the catalog appeared empty

* Return to the first page of the cartalog menu when changing
  directories, to avoid showing an empty variables menu in a non-empty
  directory.

* Do not leave garbage on the stack after failed array arithmetic.

* Avoid occasional test crashes due to concurrent pixmap updates in
  the simulator.

* Avoid occasional spurious error on `Primitive` test due to long
  execution time.

* Switch to `kg` as the base unit for `UBASE` instead of `g`,
  following the SI standard.

Improvements
------------

* Reduce animations more drastically while on battery power.
  Notably, the cursor does not blink, and menu animations are entirely
  disabled.

* Rework the animation and screen refresh system to make it easier to
  maintain and more power-efficient while on battery.

* Refresh the display using hardware-accelerated background refresh
  routines provided by the DMCP platform. This can be disabled using
  the `SoftwareDisplayRefresh` flag.

* Redraw the battery immediately on power change, i.e. plugging or
  unplugging the USB cable.

* Updated built-in constants with latets CODATA values
  (contributed by Jean Wilson)

* Ensure correct initialization order between runtime and user
  interface, to make sure GC pointer locks cannot be used before the
  runtime mutex is initialized.

Signed-off-by: Christophe de Dinechin <[email protected]>
  • Loading branch information
c3d committed Dec 8, 2024
1 parent 6365ef5 commit f5a0f4a
Show file tree
Hide file tree
Showing 6 changed files with 321 additions and 5 deletions.
105 changes: 105 additions & 0 deletions doc/4-ReleaseNotes.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,110 @@
# Release notes

## Release 0.8.8 "Voice" - Power usage reduction

This release focuses on reducing power usage and improving reactivity,
notably while running on battery.

### Features

* Cache rendered graphics and text on the stack to reduce the time
spent redrawing the stack.

* Limit the size of objects being rendered on the stack. Objects that
are too large will simply render as something like `Large bignum
(399 bytes)` on the stack. This is configured by two new settings,
`TextRenderingSizeLimit` and `GraphRenderingSizeLimit`.

* Limit the size spent rendering graphical objects. There are four
settings controlling the maximum time spent rendering objects
graphically. `ResultGraphingSizeLimits` controls the display for
the first level on the stack, `StackGraphingSizeLimit` controls the
display for the other levels on the stack, `ShowTimeLimit` controls
the display for the `Show` command, and `GraphingTimeLimit` controls
other graphical rendering.

* Blink the battery icon when in a low-battery situation.

* Add configurable `MinimumBatteryVoltage` to adjust the threshold for
low-battery detection and automatic power-off.

* Power-related commands: The `BatteryVoltage` and `PowerVoltage` read
the battery and power voltage respectively. The `USBPowered`
commands detects if the calculator is running on USB power. The
`LowBattery` command detects if the calculator is running low on
battery.

* Detect and reject Unicode characters that look like mathematical
characters, and are produced by auto-correction on Windows, notably
the`-` and `*` signs that look like `-` and `*`. This is notably
useful when copy-pasting in the simulator on Windows.

### Bug fixes

* Fix `NDupN` again. While the previous release fixed what `NDupN`
does, it did not fix the detection of the number of arguments,
meaning that `NDupN` would incorrectly complain about missing
arguments if the stack was not deep enough.

* Fix the precedence of unary `-` when in front of a parenthesized
expression. For example, `-(X)^2` now parses correctly.

* Disable keyboard repeat timer when no key is pressed. It was
possible to trigger a condition where the keyboard repeat timer
would trigger continuously if two keys had been pressed in rapid
succession, keeping the CPU in a busy loop and depleting the battery
unnecessarily rapidly until another key was pressed. This could also
trigger incorrect long-press detections, e.g. the shift key
triggering alpha mode instead of a simple shift.

* Disable all timers when switching the calculator off. In some
situations, the display refresh timer could still remain active
after the calcualtor had been switched off.

* `RclΣ` now returns the statistics data even when the `ΣData`
variable contains the name of a variable or file.

* The `Off` command can now be used while editing and no longer causes
immediate command-line evaluation.

* Return to the first page of the catalog menus when updating it, to
avoid scenarios where the catalog appeared empty

* Return to the first page of the cartalog menu when changing
directories, to avoid showing an empty variables menu in a non-empty
directory.

* Do not leave garbage on the stack after failed array arithmetic.

* Avoid occasional test crashes due to concurrent pixmap updates in
the simulator.

* Avoid occasional spurious error on `Primitive` test due to long
execution time.

* Switch to `kg` as the base unit for `UBASE` instead of `g`,
following the SI standard.

### Improvements

* Reduce animations more drastically while on battery power.
Notably, the cursor does not blink, and menu animations are entirely
disabled.

* Rework the animation and screen refresh system to make it easier to
maintain and more power-efficient while on battery.

* Refresh the display using hardware-accelerated background refresh
routines provided by the DMCP platform. This can be disabled using
the `SoftwareDisplayRefresh` flag.

* Redraw the battery immediately on power change, i.e. plugging or
unplugging the USB cable.

* Updated built-in constants with latets CODATA values
(contributed by Jean Wilson)


## Release 0.8.7 "Signs" - Performance optimizations

This release focuses on performance improvements and bug fixes for
Expand Down
105 changes: 105 additions & 0 deletions help/db48x.md
Original file line number Diff line number Diff line change
Expand Up @@ -2485,6 +2485,111 @@ You can edit it by recalling its content on the stack using
back to disk using `"config:equations.csv" STO`.
# Release notes

## Release 0.8.8 "Voice" - Power usage reduction

This release focuses on reducing power usage and improving reactivity,
notably while running on battery.

### Features

* Cache rendered graphics and text on the stack to reduce the time
spent redrawing the stack.

* Limit the size of objects being rendered on the stack. Objects that
are too large will simply render as something like `Large bignum
(399 bytes)` on the stack. This is configured by two new settings,
`TextRenderingSizeLimit` and `GraphRenderingSizeLimit`.

* Limit the size spent rendering graphical objects. There are four
settings controlling the maximum time spent rendering objects
graphically. `ResultGraphingSizeLimits` controls the display for
the first level on the stack, `StackGraphingSizeLimit` controls the
display for the other levels on the stack, `ShowTimeLimit` controls
the display for the `Show` command, and `GraphingTimeLimit` controls
other graphical rendering.

* Blink the battery icon when in a low-battery situation.

* Add configurable `MinimumBatteryVoltage` to adjust the threshold for
low-battery detection and automatic power-off.

* Power-related commands: The `BatteryVoltage` and `PowerVoltage` read
the battery and power voltage respectively. The `USBPowered`
commands detects if the calculator is running on USB power. The
`LowBattery` command detects if the calculator is running low on
battery.

* Detect and reject Unicode characters that look like mathematical
characters, and are produced by auto-correction on Windows, notably
the`-` and `*` signs that look like `-` and `*`. This is notably
useful when copy-pasting in the simulator on Windows.

### Bug fixes

* Fix `NDupN` again. While the previous release fixed what `NDupN`
does, it did not fix the detection of the number of arguments,
meaning that `NDupN` would incorrectly complain about missing
arguments if the stack was not deep enough.

* Fix the precedence of unary `-` when in front of a parenthesized
expression. For example, `-(X)^2` now parses correctly.

* Disable keyboard repeat timer when no key is pressed. It was
possible to trigger a condition where the keyboard repeat timer
would trigger continuously if two keys had been pressed in rapid
succession, keeping the CPU in a busy loop and depleting the battery
unnecessarily rapidly until another key was pressed. This could also
trigger incorrect long-press detections, e.g. the shift key
triggering alpha mode instead of a simple shift.

* Disable all timers when switching the calculator off. In some
situations, the display refresh timer could still remain active
after the calcualtor had been switched off.

* `RclΣ` now returns the statistics data even when the `ΣData`
variable contains the name of a variable or file.

* The `Off` command can now be used while editing and no longer causes
immediate command-line evaluation.

* Return to the first page of the catalog menus when updating it, to
avoid scenarios where the catalog appeared empty

* Return to the first page of the cartalog menu when changing
directories, to avoid showing an empty variables menu in a non-empty
directory.

* Do not leave garbage on the stack after failed array arithmetic.

* Avoid occasional test crashes due to concurrent pixmap updates in
the simulator.

* Avoid occasional spurious error on `Primitive` test due to long
execution time.

* Switch to `kg` as the base unit for `UBASE` instead of `g`,
following the SI standard.

### Improvements

* Reduce animations more drastically while on battery power.
Notably, the cursor does not blink, and menu animations are entirely
disabled.

* Rework the animation and screen refresh system to make it easier to
maintain and more power-efficient while on battery.

* Refresh the display using hardware-accelerated background refresh
routines provided by the DMCP platform. This can be disabled using
the `SoftwareDisplayRefresh` flag.

* Redraw the battery immediately on power change, i.e. plugging or
unplugging the USB cable.

* Updated built-in constants with latets CODATA values
(contributed by Jean Wilson)


## Release 0.8.7 "Signs" - Performance optimizations

This release focuses on performance improvements and bug fixes for
Expand Down
105 changes: 105 additions & 0 deletions help/db50x.md
Original file line number Diff line number Diff line change
Expand Up @@ -2493,6 +2493,111 @@ You can edit it by recalling its content on the stack using
back to disk using `"config:equations.csv" STO`.
# Release notes

## Release 0.8.8 "Voice" - Power usage reduction

This release focuses on reducing power usage and improving reactivity,
notably while running on battery.

### Features

* Cache rendered graphics and text on the stack to reduce the time
spent redrawing the stack.

* Limit the size of objects being rendered on the stack. Objects that
are too large will simply render as something like `Large bignum
(399 bytes)` on the stack. This is configured by two new settings,
`TextRenderingSizeLimit` and `GraphRenderingSizeLimit`.

* Limit the size spent rendering graphical objects. There are four
settings controlling the maximum time spent rendering objects
graphically. `ResultGraphingSizeLimits` controls the display for
the first level on the stack, `StackGraphingSizeLimit` controls the
display for the other levels on the stack, `ShowTimeLimit` controls
the display for the `Show` command, and `GraphingTimeLimit` controls
other graphical rendering.

* Blink the battery icon when in a low-battery situation.

* Add configurable `MinimumBatteryVoltage` to adjust the threshold for
low-battery detection and automatic power-off.

* Power-related commands: The `BatteryVoltage` and `PowerVoltage` read
the battery and power voltage respectively. The `USBPowered`
commands detects if the calculator is running on USB power. The
`LowBattery` command detects if the calculator is running low on
battery.

* Detect and reject Unicode characters that look like mathematical
characters, and are produced by auto-correction on Windows, notably
the`-` and `*` signs that look like `-` and `*`. This is notably
useful when copy-pasting in the simulator on Windows.

### Bug fixes

* Fix `NDupN` again. While the previous release fixed what `NDupN`
does, it did not fix the detection of the number of arguments,
meaning that `NDupN` would incorrectly complain about missing
arguments if the stack was not deep enough.

* Fix the precedence of unary `-` when in front of a parenthesized
expression. For example, `-(X)^2` now parses correctly.

* Disable keyboard repeat timer when no key is pressed. It was
possible to trigger a condition where the keyboard repeat timer
would trigger continuously if two keys had been pressed in rapid
succession, keeping the CPU in a busy loop and depleting the battery
unnecessarily rapidly until another key was pressed. This could also
trigger incorrect long-press detections, e.g. the shift key
triggering alpha mode instead of a simple shift.

* Disable all timers when switching the calculator off. In some
situations, the display refresh timer could still remain active
after the calcualtor had been switched off.

* `RclΣ` now returns the statistics data even when the `ΣData`
variable contains the name of a variable or file.

* The `Off` command can now be used while editing and no longer causes
immediate command-line evaluation.

* Return to the first page of the catalog menus when updating it, to
avoid scenarios where the catalog appeared empty

* Return to the first page of the cartalog menu when changing
directories, to avoid showing an empty variables menu in a non-empty
directory.

* Do not leave garbage on the stack after failed array arithmetic.

* Avoid occasional test crashes due to concurrent pixmap updates in
the simulator.

* Avoid occasional spurious error on `Primitive` test due to long
execution time.

* Switch to `kg` as the base unit for `UBASE` instead of `g`,
following the SI standard.

### Improvements

* Reduce animations more drastically while on battery power.
Notably, the cursor does not blink, and menu animations are entirely
disabled.

* Rework the animation and screen refresh system to make it easier to
maintain and more power-efficient while on battery.

* Refresh the display using hardware-accelerated background refresh
routines provided by the DMCP platform. This can be disabled using
the `SoftwareDisplayRefresh` flag.

* Redraw the battery immediately on power change, i.e. plugging or
unplugging the USB cable.

* Updated built-in constants with latets CODATA values
(contributed by Jean Wilson)


## Release 0.8.7 "Signs" - Performance optimizations

This release focuses on performance improvements and bug fixes for
Expand Down
2 changes: 1 addition & 1 deletion src/dm32/qspi_crc.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@

#define QSPI_DATA_SIZE 277308
#define QSPI_DATA_SIZE 278844
#define QSPI_DATA_CRC 0x000cfed6

2 changes: 1 addition & 1 deletion src/dm42/qspi_crc.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@

#define QSPI_DATA_SIZE 273508
#define QSPI_DATA_SIZE 274980
#define QSPI_DATA_CRC 0x000cfed6

7 changes: 4 additions & 3 deletions state/Demo.48S
Original file line number Diff line number Diff line change
Expand Up @@ -1024,7 +1024,7 @@ MatrixMultiplyBenchmark
«
{
Demos
{ "Hello" « "Hello" 3 DISP » }
{ "Release" « "Release notes" HELP DROP » }
{ "RunStats" RuntimeStatistics }
{ "VBat" BatteryVoltage }
{ "VPow" PowerVoltage }
Expand All @@ -1037,17 +1037,18 @@ MatrixMultiplyBenchmark
»
}

ⓁKineticEnergy
{ "Hello" « "Hello" 3 DISP » }
{ "Authors" « "Authors" HELP DROP » }
RunStatsKeepAfterRead
MinimumBatteryVoltage
LowBattery
RclΣ

42_in
ⓁKineticEnergy
DebugOnError
}
Time + Date + "" + { Purge } +
Time + Date + { Purge } +
»
'CustomMenu' STO

Expand Down

0 comments on commit f5a0f4a

Please sign in to comment.