memlnaut-nisps/nisps-core/CHANGELOG.md
monkey-w1n5t0n 45193a2c01 fix: audit and fix nisps-core extraction issues
- 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
2026-02-08 18:01:48 +01:00

57 lines
1.9 KiB
Markdown

# Changelog
All notable changes to NISPS Core will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [0.2.0] - 2026-02-08
### Added
- `set_output()` / `set_outputs()` methods for programmatic output control
- `add_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::printf` logging 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 `nisps` namespace 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:
```cpp
// Old (embedded):
IMLInterface iml(n_inputs, n_outputs);
// New (nisps-core):
nisps::IML<float> iml(n_inputs, n_outputs);
```