- Remove platform-specific code (ARM_MATH_CM33, XMOS __XS3A__, std::printf) - Add set_output()/set_outputs()/add_example() API for programmatic training - Fix release build crash: side effect inside assert() for loss function init - Replace fake smoke test with real convergence tests (5 tests, all pass) - Rewrite example to demonstrate actual training with real output - Update README, CHANGELOG, and extraction plan to match reality
1.9 KiB
1.9 KiB
Changelog
All notable changes to NISPS Core will be documented in this file.
The format is based on Keep a Changelog.
[0.2.0] - 2026-02-08
Added
set_output()/set_outputs()methods for programmatic output controladd_example()method for adding training pairs without interactive workflow- Real training convergence tests (identity mapping, multi-output)
- Working example with actual training (
examples/simple_mapping.cpp)
Fixed
- Release build crash: loss function pointer not initialized due to side effect inside
assert()(mlp_impl.hpp) - Removed ARM CMSIS-DSP conditional code from node.hpp (
ARM_MATH_CM33) - Removed XMOS
__XS3A__conditional attributes from utils.hpp and loss.hpp - Removed
std::printflogging from dataset_impl.hpp (use IML logger callback instead)
Changed
- README updated to document new APIs and remove false claims
- CHANGELOG rewritten to accurately reflect library state
[0.1.0] - 2026-02-08
Added
- Initial extraction from MEMLNaut-NISPS firmware
- Header-only C++20 library structure
- Core IML (Interactive Machine Learning) interface
- MLP (Multi-Layer Perceptron) neural network implementation
- Dataset management with replay memory support
- Training and inference modes
- Logging callback support
- CMake build system for tests
Changed
- Converted from Arduino/RP2040 embedded code to platform-agnostic C++
- Updated to C++20 (required for std::span)
- Converted to header-only implementation pattern
- Added
nispsnamespace to all code
Removed
- Arduino and RP2040 dependencies
- Serial debugging (replaced with optional callbacks)
- SD card save/load functionality
- Audio synthesis code (nisps-core is control-only)
Migration from MEMLNaut-NISPS
If you're using the old embedded IMLInterface class:
// Old (embedded):
IMLInterface iml(n_inputs, n_outputs);
// New (nisps-core):
nisps::IML<float> iml(n_inputs, n_outputs);