Skip to content

Releases: NetKit-Labs/memkit

arena bounds protection

Choose a tag to compare

@jameslavrenz jameslavrenz released this 29 Jun 21:35

Summary

Arena bump allocation is hardened for embedded use: overflow-safe offset math, absolute-address alignment (so atomics-backed containers like MpscQueue work from unaligned backing buffers), and clearer docs on what memkit checks vs what integrators own.

Also includes project-wide -fno-exceptions / -fno-rtti enforcement and make check-lib CI guard.

Changes since v0.2.3

  • Arena bounds protection — safe offset + padding + size math; alignment applied to absolute addresses, not offset-only padding
  • DocsBounds and sizing in design philosophy; GETTING_STARTED checklist link
  • Teststest_arena_cpp, test_arena_c overflow/alignment cases
  • Build-fno-exceptions -fno-rtti on all library and test targets; CI check-lib verifies no exception/RTTI symbols in objects

Test plan

  • make all check-lib lib-mcu-c mpu benchmark
  • CI green on push (MCU/MPU Clang + GCC, CMake, ASan, macOS)

v0.2.3

Choose a tag to compare

@jameslavrenz jameslavrenz released this 27 Jun 20:50

Summary

  • libmemkit_mcu_c.a — freestanding static library for tier-1 C API on MCU (arena + C bindings), built with -fno-exceptions -fno-rtti -ffreestanding
  • Make targets: lib-mcu-c, check-lib-mcu-c (no libstdc++ symbols), test-lib-mcu-c-link (link with cc only)
  • Docs: DISTRIBUTING_MCU_C.md — how to ship prebuilt objects to C-only firmware

C firmware customers can link with cc, not c++, and do not need -lstdc++.

Test plan

  • make lib-mcu-c check-lib-mcu-c test-lib-mcu-c-link
  • CI on push (MCU Clang + GCC jobs)

v0.2.2

Choose a tag to compare

@jameslavrenz jameslavrenz released this 27 Jun 20:09

Summary

  • C API test coverage: 16 per-container tests (9 MCU tier-1 + 7 MPU tier-2) plus one trimmed MPU integration test (arena_create + all *_create on a shared arena). Removed redundant test_c_api_smoke.c.
  • Adoption docs: Getting started (C/C++ paths, build, CMake/FetchContent) and Container guide (which container? decision table + recipes).
  • C helpers: memkit_helpers.h — static init macros (MEMKIT_QUEUE_INIT_STATIC, etc.), aligned storage declarations, early-return macros, debug status strings. Included via <memkit.h>.

Test plan

  • make all — 31 C++ tests + 9 C API tests + examples
  • make mpu — tier-2 C tests + integration test
  • CI green on push

v0.2.1

Choose a tag to compare

@jameslavrenz jameslavrenz released this 27 Jun 19:31

Summary

Documentation release marking memkit as feature-complete for embedded use on macOS and Linux.

  • Complete C++ API reference (32 utilities with key operations)
  • Complete C API reference (14 containers + arena, tier 1/2)
  • API completeness summary, test coverage notes, and examples index
  • Future work backlog (Windows, deeper tests, C API test parity)

Includes (since v0.2.0)

  • Arena absolute pointer alignment fix (Linux/macOS consistency)
  • MCU examples (example_mcu_c, example_comm_pipeline)
  • Hand-rolled C benchmarks and expanded CI matrix

Test plan

  • make all — 31 C++ tests + 4 MCU examples
  • CI green on Ubuntu (Clang/GCC) and macOS

v0.2.0

Choose a tag to compare

@jameslavrenz jameslavrenz released this 27 Jun 19:04

Summary

  • 32 C++ utilities (C++-only embedded helpers; C API unchanged at 14 containers)
  • 31 C++ tests + C API smoke/extended tests
  • 2 MCU examples: example_mcu, example_embedded_patterns

New since v0.1.1

Embedded utilities

  • Intrusive lists, SPSC/MPSC queues, FlatMap, EnumMap, TimerWheel
  • DoubleBuffer, RingLog, SparseSet, SmallBuffer, FixedVariant
  • TokenBucket, FixedIoVec, LookupTable
  • BitReader/BitWriter, MovingAverage, WindowStats

Documentation & examples

  • Composition patterns section in README
  • examples/example_embedded_patterns.cpp (DMA ping-pong, MPSC queue, calibration, bit stream, filtering)

Test plan

  • make all
  • make test_c_api_smoke
  • make mpu (MPU builds)

v0.1.1

Choose a tag to compare

@jameslavrenz jameslavrenz released this 27 Jun 18:38

Summary

  • Amalgamate all C API extern-C bindings into a single bindings.cpp translation unit
  • Remove orphan headers, legacy duplicate tests, and old per-container C API .cpp files
  • Inline callback bridges; move layout checks to header-only static_checks.hpp
  • Restore C API smoke/extended tests and MPU build targets in Makefile, CMake, and CI
  • Update README for current dual C/C++ API and build layout
  • Fix MCU unused-function warning in arena.cpp

Test plan

  • make all
  • make test_c_api_smoke
  • make mpu