Releases: arkhipenko/TaskScheduler
Version 4.0.3
v4.0.3:
2025-11-02:
- bug: next execution time with _TASK_TICKLESS did not take task timeout into account
Version 4.0.2
v4.0.2:
2025-10-09:
- added unit test for _TASK_THREAD_SAFE functionality
Version 4.0.1
v4.0.1:
2025-10-07:
- bug: removed leftover iMutex variable
- added example30: _TASK_THREAD_SAFE
Version 4.0.0
v3.8.0:
2023-01-24 - feature: added setIntervalNodelay() method to dynamically adjust current interval
v3.8.1:
2023-05-11 - bug: conditional compile options missing from *.hpp files (Adafruit support)
v3.8.2:
2023-09-27 - feature: _TASK_TICKLESS - support for tickless execution under FreeRTOS
- feature: _TASK_DO_NOT_YIELD - ability to disable yield() in execute() method
v3.8.3:
2023-09-29 - feature: _TASK_TICKLESS - change in approach for backwards compatibility
- feature: added scheduler stats for total/active/invoked tasks for each pass
v3.8.4:
2024-01-13 - bug: (git PR #180): the variables tStart and tFinish are required if sleep support is enabled,
independent of _TASK_TIMECRITICAL. However, they were guarded by _TASK_TIMECRITICAL as well.
- bug: (git PR #181): delete manually disabled tasks with self-destruct flag
- bug: (git PR #182): correct deletion of self-destruct 'current' task in disableAll()
v3.8.5:
2024-06-17 - updated volatile compound statements after C++20 deprecated compound assignment on volatiles
v3.9.0:
2024-08-14 - _TASK_ISR_SUPPORT compile option (espressif chips only) - allow placing a few control methods into IRAM to be used in ISRs
list of IRAM-enabled methods:
StatusRequest::signal
StatusRequest::signalComplete
Task::enable
Task::enableIfNot
Task::enableDelayed
Task::restart
Task::restartDelayed
Task::delay
Task::forceNextIteration
v4.0.0:
2024-10-26 - MAJOR UPDATE for use in pre-emptive environments (FreeRTOS or Zephyr)
- list of IRAM-enabled methods extended:
Task::disable
Task::abort
Task::cancel
- _TASK_DEFINE_MILLIS - deprecated
- _TASK_EXTERNAL_TIME - deprecated
- New compile options:
_TASK_NON_ARDUINO - does not include "Arduino.h"
target platform has to implement:
unsigned long _task_millis();
unsigned long _task_micros();
void _task_yield();
_TASK_HEADER_AND_CPP - enables compilation of TaskScheduler.cpp (non Arduino IDE use)
- Major rework of the _TASK_THREAD_SAFE approach. Developers should only be calling Scheduler and Task methods directly from the thread where TaskScheduler execute() method runs. Calls from the other threads should be done via Scheduler::requestAction(...) methods. Target platform should implement an action queue and two methods: bool _task_enqueue_request(_task_request_t* req); // puts _task_request_t object on the action queue bool _task_dequeue_request(_task_request_t* req); // retrieves _task_request_t object from the action queue Please see examples folder for implementation folder. 2025-09-13: - feature: allow _TASK_STD_FUNCTION for all platforms (you should know what you are doing) - feature: allow _TASK_DO_NOT_YIELD for all platforms (you should know what you are doing) 2025-09-21: - bug: incorrect behavior of the StatusRequest timeout functionality due to uninitialized timeout variable - update: addedd Doxygen comments to all methods and variables -update: added a number of compile and unit tests for CI/CD Version 3.7.0
- bug fix: Internal Status Request object completes with TASK_SR_CANCEL status if the task was canceled.
- bug fix: Internal Status Request object completes with TASK_SR_ABORT status if the task was aborted.
- feature: Status Requests with TASK_SR_ABORT status also abort dependent tasks
- feature: added TScheduler.hpp and TSchedulerDeclarations.hpp - a workaround for conflicting declarations (e.g., nRF52840 using Adafruit Core) using namespace TS (credit: https://github.com/vortigont)
- feature: added ability for Task to "self-destruct" on disable. Useful for dynamic task management.
- Added updated example 19 for this functionality. Updated the Sketch Template. (Thanks, https://github.com/vortigont for the idea).
Version 3.6.0
-
feature: added adjust method to Task object. adjust(int32_t delta) moves the entire schedule forward (positive delta) or backward (negative delta) by that many milliseconds (microseconds). This is helpful if for some reason you need to adjust the "start" time of scheduling to align with RTC "zero" seconds (for instance) or postpone one task while the other task is running.
-
feature: added example 27 demonstrating how to use TaskScheduler in PlatformIO projects.
-
feature: added _TASK_THREAD_SAFE compile option for instances of TaskScheduler running under preemptive schedulers like FreeRTOS. Under certain conditions, task scheduling was adversely affected and led to unexpected results. Enabling _TASK_THREAD_SAFE compile option eliminates such occurrences.
Version 3.4.0
- feature: ability to Enable/Disable and Pause/Resume scheduling
- feature: optional use of external millis/micros methods
Version 3.3.0
Timeout functionality for StatusRequest objects
Version 3.2.2
features:
cancel()- disable Task with a "canceled" flag - indicating premature task completioncanceled()- query if Task was canceled or disabled normallyabort()- disable Task without callingonDisable()methodenable()andsetWaiting()method varieties return boolean status indicating if task was indeed enabled (true) or remained disabled (false)
bug fixes:
restart()methods should set the number of iterations beforeonEnableis called, soonEnablecould change it if necessary
Version 3.2.0
v3.2.0 v3.2.0