Repository navigation
Releases
0.2.2
Changed
- Read the deferred ISR request count once inside the existing critical section.
- Use pointer traversal for PERIODIC/DELAYED duplicate and removal searches.
- Complete PARTED by its known active POLL index, preserving ordered compaction
and multi-translation-unit dispatch.
Added
- DELAYED sorted-prefix cache as the sole implementation: one SRAM byte per
enabled DELAYED queue, full sorting after compaction, and invalidation on
half-range deltas.
0.2.1
This maintenance release fixes PlatformIO package compatibility and updates documentation, installation instructions, and citation metadata.
Fixed
- Corrected PlatformIO platform compatibility metadata to allow Arduino-compatible Generic targets, including projects using strict library compatibility checks.
- Included
docs/API.md,docs/CONFIGURATION.md, anddocs/PLATFORMS.mdin exported PlatformIO packages. - Added the platform documentation referenced by the README.
- Updated API and configuration documentation for automatic AVR/Generic selection, independent IDLE/ISR switches, Generic execution restrictions, and multi-file projects.
Compatibility
- AVR IDLE/ISR defaults and Generic backend behavior are preserved.
- Existing Arduino sketches and PlatformIO example projects are unchanged.
0.2.0
MTW TinyLoopScheduler 0.2.0 introduces a modular source structure and a portable Generic backend while preserving the existing ordinary-task API and default AVR behavior.
Added
- Internal
.h/.incsource split, retaining the same public include and header-only implementation. - Automatic AVR / Generic backend selection based on the build target.
- Generic support for ordinary tasks and optional PARTED on Arduino-compatible targets, including Arduino Due, Uno R4 Minima, STM32, RP2040, and RP2350.
TLS_USE_IDLEto enable or remove the complete sleep subsystem at compile time.- Compile-time errors when unsupported IDLE or ISR support is explicitly enabled.
Changed
- AVR keeps IDLE sleep and deferred ISR support enabled by default.
- Generic disables both features by default.
- Disabling IDLE also removes its timestamp storage, load heuristic, and IDLE skip-bit maintenance.
- Updated platform metadata, documentation, and multi-file project guidance.
Compatibility
- The ordinary-task public API, queue algorithms, and scheduler phase order are preserved.
- Existing Arduino examples and PlatformIO projects are unchanged from 0.1.4.
- The public include remains
#include <MTW_TinyLoopScheduler.h>. - Multi-file projects retain the existing
TLS_DECL_ONLYmodel: one translation unit owns the implementation, and additional.cppfiles include declarations only. - Generic provides PERIODIC, DELAYED, POSTED, POLL, and optional PARTED. It requires a single main execution context and does not provide TLS hardware sleep or
postISR(). - With IDLE disabled, POLL callbacks may execute more frequently because scheduler passes no longer wait for an IDLE wake-up.
0.1.4
MTW TinyLoopScheduler v0.1.4
This release adds ready-to-use PlatformIO examples for MTW TinyLoopScheduler.
What's New
- Added PlatformIO-compatible examples.
- Added
platformio.iniconfiguration files. - Added example project structures that can be opened, built, and uploaded directly in PlatformIO.
- Preserved the existing Arduino IDE examples.
Compatibility
- No library runtime behavior changes.
- No public API changes.
- Existing projects require no source-code or configuration changes.
0.1.3
MTW TinyLoopScheduler v0.1.3
This release adds configurable protection for the AVR sleep-mode selection and reduces deferred-ISR processing overhead.
Added
- Added the
TLS_SLEEP_GUARDcompile-time option. - Added compile-time validation for
TLS_SLEEP_GUARD. - Invalid values emit a compiler warning and fall back to
TLS_ENABLE.
Sleep-mode behavior
TLS_SLEEP_GUARD defaults to:
#define TLS_SLEEP_GUARD TLS_ENABLE0.1.2
MTW TinyLoopScheduler for PlatformIO
This is a packaging and documentation release focused on PlatformIO compatibility metadata and AVR target clarification.
Added
- Added
library.jsonmanifest for PlatformIO package metadata. - Declared PlatformIO compatibility with:
atmelavratmelmegaavr
- Added PlatformIO installation instructions using GitHub
lib_deps.
Changed
- Updated Arduino library metadata to include both AVR architecture targets:
avrmegaavr
- Clarified supported AVR target classes in
README.md.
Compatibility
- No public API changes.
- No scheduler behavior changes.
- No breaking changes for sketches written for
v0.1.0orv0.1.1.
0.1.1
Performance improvements
Optimized insertion sorting for the PERIODIC and DELAYED timing queues.
The deadline of the current insertion key is now loaded once before the inner sorting loop, avoiding repeated indexed 32-bit deadline loads on AVR.
Compatibility
- No public API changes
- No scheduler behavior changes
- No queue-ordering changes
- No configuration changes
- Fully compatible with v0.1.0 applications
MTW TinyLoopScheduler 0.1.0
Initial public release
MTW TinyLoopScheduler is a compact header-only cooperative scheduler for AVR boards using the Arduino AVR core.
Included
- PERIODIC task execution.
- One-shot DELAYED task execution.
- LIFO POSTED task execution.
- Persistent POLL task execution.
- Deferred ISR callback handling through
postISR(). - Optional step-based PARTED execution through POLL.
- Static compile-time storage with no heap allocation or dynamic containers.
- Independent compile-time enable/disable control for task classes.
- Full kernel trimming of disabled task classes.
- Predefined
TINY,MINI,MID,DEF, andMAXqueue profiles. - Custom
MANUALqueue configuration. - Configurable 16-bit or 32-bit period storage.
- Automatic dynamic IDLE with configurable thresholds.
- Header-only and multi-file integration using
TLS_DECL_ONLY. - Arduino examples and API/configuration documentation.
Compatibility
- AVR architecture
- Arduino AVR core
License
Apache License 2.0