|
1 | 1 | # Changelog |
2 | 2 |
|
3 | 3 | * 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. |
4 | 50 | * 1.4.2 (2022-02-04) |
5 | 51 | * Remove dependency to AceCommon library in `libraries.properties`. |
6 | 52 | * AceRoutine core no longer depends on AceCommon. |
|
0 commit comments