Skip to content

Version 4.0.0

Choose a tag to compare

@arkhipenko arkhipenko released this 07 Oct 21:44
· 31 commits to master since this release

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