Skip to content

Commit

Permalink
Merge pull request #51 from bxparks/develop
Browse files Browse the repository at this point in the history
merge v1.5.0 into master
  • Loading branch information
bxparks authored Mar 19, 2022
2 parents a5eb943 + 9ca3553 commit 8a0666a
Show file tree
Hide file tree
Showing 205 changed files with 7,930 additions and 1,879 deletions.
46 changes: 46 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,52 @@
# Changelog

* Unreleased
* 1.5.0 (2022-03-19)
* (Re)add support for human-readable coroutine names.
* See [Coroutine Names](USER_GUIDE.md#CoroutineNames) in the
`USER_GUIDE.md`.
* Adds the following methods to the `Coroutine` class: `setName()`,
`setName()`, `getCName()`, `getFName()`, `getNameType()`, and
`printNameTo()`.
* Resource consumption
* Increases flash usage by 6-10 bytes per coroutine.
* Increases static ram usage by 3 bytes (AVR) or 4 bytes (32-bit)
per coroutine, plus the additional storage for the string itself.
* Support profiling of `Coroutine::runCoroutine()` execution time.
* See [Coroutine Profiling](USER_GUIDE.md#CoroutineProfiling) in the
`USER_GUIDE.md`.
* API changes
* Add `CoroutineProfiler` interface with a `updateElapsedMicros()`
method.
* Add `Coroutine::setProfiler()` to store the profiler pointer.
* Add `Coroutine::runCoroutineWithProfiler()` which measures the
elapsed time of `runCoroutine()` and calls
`CoroutineProfiler::updateElapsedMicros()`.
* Add `CoroutineScheduler::runCoroutineWithProfiler()` which calls
`Coroutine::runCoroutineWithProfiler()` instead of the normal
`Coroutine::runCoroutine()`.
* Add `CoroutineScheduler::loopWithProfiler()` public static method
which calls `runCoroutineWithProfiler()`.
* Provide `LogBinProfiler` subclass of `CoroutineProfiler`.
* Keeps a frequency count of the elapsed microseconds using 32 bins
representing the `log2()` function of the elapsed microseconds.
* Provide 2 renderers of `LogBinProfiler`:
* `LogBinTableRenderer::printTo()` prints a formatted table of the
frequency count over all coroutines. This represents a poor-man's
version of the log-log graph of the frequency count.
* `LogBinJsonRenderer::printTo()` prints the frequency count
in JSON format.
* See [HelloCoroutineWithProfiler](examples/HelloCoroutineWithProfiler)
and [HelloSchedulerWithProfiler](examples/HelloSchedulerWithProfiler).
* Thanks to peufeu2@ who provided the ideas and proof of concept in
[Discussion#50](https://github.com/bxparks/AceRoutine/discussions/50).
* Coroutine consumes more static RAM
* due to extra pointers to support `setName()` and `setProfiler()`
* 8-bits: increases from 11 bytes to 16 bytes per coroutine
* 32-bits: increases from 20 bytes to 28 bytes per coroutine
* Move `Coroutine::sStatusStrings` to `PROGMEM`
* Saves 12 bytes of static RAM on AVR and 24 bytes on ESP8266, if
`CoroutineScheduler::list()` is used.
* 1.4.2 (2022-02-04)
* Remove dependency to AceCommon library in `libraries.properties`.
* AceRoutine core no longer depends on AceCommon.
Expand Down
Loading

0 comments on commit 8a0666a

Please sign in to comment.