Skip to content

Releases: LearnPRG-py/Vectorial

V1.1.0 - Add Timed-Vector functionality

21 Apr 05:17

Choose a tag to compare

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

09 Apr 13:52
0d3d00b

Choose a tag to compare

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

09 Apr 13:12

Choose a tag to compare

Full Changelog: v1.0.0...v1.0.1

Quick bug fix with examples over 1.0.0

Vectorial - Version 1.0.0

09 Apr 12:54

Choose a tag to compare

🚀 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