Releases: LearnPRG-py/Vectorial
V1.1.0 - Add Timed-Vector functionality
What's New in v1.1.0
TimedVector - Automatic Timestamp Logging
New TimedVector<T, N> class for time-series data logging. Each element stores both a value and timestamp from Arduino's millis().
Features:
- Auto-timestamping:
temperatureLog.push_back(22.5)captures current time - Manual timestamps:
push_back({value, custom_time})for explicit control - Same API as
Vector:size(),reset(),get_value(), cycle/ignore modes - Zero heap allocation, fixed-size circular buffer
Example:
TimedVector<float, 10> sensorLog;
sensorLog.push_back(23.4); // Stores {23.4, millis()}
auto latest = sensorLog[0]; // {value: 23.4, time: 1234}CI/Testing Support
- Cross-platform compatibility: Conditionally uses
<chrono>for non-Arduino builds - Comprehensive test suite with 22 test cases covering both Vector and TimedVector
- CMake build system for CI pipelines
Documentation
- Complete API documentation in
documentation.md - Usage examples for both classes
- Performance notes and limitations
Full Changelog: v1.0.2...v1.1.0
v1.0.2
Add License terms and update the properties to include url for addition in the library.
Full Changelog: v1.0.1...v1.0.2
v1.0.1 - Small example update
Full Changelog: v1.0.0...v1.0.1
Quick bug fix with examples over 1.0.0
Vectorial - Version 1.0.0
🚀 Vectorial v1.0.0: The Initial Launch
Stop fighting indices and start logging data.
This is the first official release of Vectorial, a lightweight, zero-allocation circular buffer library designed specifically for the Arduino ecosystem. Whether you are smoothing out a jittery potentiometer or building a high-precision PID controller, Vectorial handles the "index gymnastics" so you don't have to.
🛠 Key Features
Zero Heap Allocation: 100% stack-based. No malloc or new, meaning no heap fragmentation or random crashes on long-running "potato" boards (like the Uno/Nano).
Automatic Cycling: Appending to a full buffer automatically overwrites the oldest data.
Reverse Indexing: Access data intuitively—buffer[0] is always your most recent entry, buffer[1] is the one before that.
Append Modes: Choose between cycle (default rolling buffer) or ignore (prevent overwrites).
Memory Safe: Fixed-size templates ensure you know exactly how much RAM you're using at compile time.
📝 Example Usage
C++
#include <Vectorial.h>
Vector<float, 10> readings;
void loop() {
readings.push_back(analogRead(A0));
// Easily get the latest and previous readings
float current = readings[0];
float previous = readings[1];
delay(100);
}
📦 What's Included
The Vector Class: The core logic for rotating data.
Keywords Support: Full syntax highlighting for the Arduino IDE.
Basic Example: A boilerplate sketch to get you up and running in seconds.
Stability Fixes: Improved uint32_t indexing to prevent overflow issues in long-running applications.
Full Changelog: https://github.com/LearnPRG-py/Vectorial/commits/v1.0.0