Skip to content

Commit 8a0666a

Browse files
authored
Merge pull request #51 from bxparks/develop
merge v1.5.0 into master
2 parents a5eb943 + 9ca3553 commit 8a0666a

File tree

205 files changed

+7930
-1879
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

205 files changed

+7930
-1879
lines changed

CHANGELOG.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,52 @@
11
# Changelog
22

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

0 commit comments

Comments
 (0)