[0.0.6](https://github.com/ccam80/cubie/compare/v0.0.5...v0.0.6) (2025-12-27)
Features
* ``raw`` output type added to output device array copies with no processing ([22cef9f](https://github.com/ccam80/cubie/commit/22cef9ff02000d1e60a6576a3ef54a54918e6658))
* add time logging to cellml import ([257](https://github.com/ccam80/cubie/issues/257)) ([6a220f8](https://github.com/ccam80/cubie/commit/6a220f8e78653f1727967b2092002f78ba41db71))
* Additional summary output metrics added ([212](https://github.com/ccam80/cubie/issues/212)) ([daccbae](https://github.com/ccam80/cubie/commit/daccbae24945c081d75585a6052ec95a45885808))
* Buffer indexing, sizing, and locating now consolidated into a BufferSettings object ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb))
* Buffer memory locations on GPU now user-selectable (between local and shared) ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb))
* build_grid() surfaced to user API ([338](https://github.com/ccam80/cubie/issues/338)) ([45cfa90](https://github.com/ccam80/cubie/commit/45cfa90a77f2892d29966bd856215c4b54475cc0))
* CellML to Cubie adapter layer added ([221](https://github.com/ccam80/cubie/issues/221)) ([b8f448e](https://github.com/ccam80/cubie/commit/b8f448e532c6c5410fd06aa13a87531301468de3))
* CUDAFactory.update() now updates nested dicts and attrs classes ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb))
* device buffers are now togglable (local, shared, local persistent) and managed centrally by buffer_registry ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
* Global stores now have cache write-through hints, closes [291](https://github.com/ccam80/cubie/issues/291) ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb))
* load_from_cellml updated to parse complicated models ([238](https://github.com/ccam80/cubie/issues/238)) ([50341f6](https://github.com/ccam80/cubie/commit/50341f62704f44f95f9e591635609e3c1e3bcd74))
* newton and linear solvers now fully-functional CUDAFactory subclasses ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
* optional configuration parameters are no longer explicit in inits, they are filtered and collected in kwargs ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
* py39 compatibility removed due to a Numba update. ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb))
* Solver API now skips extra memory and grid-building work when possible ([324](https://github.com/ccam80/cubie/issues/324)) ([5f225a0](https://github.com/ccam80/cubie/commit/5f225a023fc38d17e90a688f51a91d5b7c9db6ee))
* summary metrics combined (eg. extrema, [mean, std, rms]) to reduce buffer space ([daccbae](https://github.com/ccam80/cubie/commit/daccbae24945c081d75585a6052ec95a45885808))
* summary metrics now respect numerical precision ([daccbae](https://github.com/ccam80/cubie/commit/daccbae24945c081d75585a6052ec95a45885808))
* Sympy inputs from CellML now go Sympy->Sympy instead of through strings ([259](https://github.com/ccam80/cubie/issues/259)) ([23e201d](https://github.com/ccam80/cubie/commit/23e201df19c0c607ee8bc4512f2b04147bdb29be))
* time logging added to parsing, codegen, and CUDA compilation ([256](https://github.com/ccam80/cubie/issues/256)) ([5d8f75b](https://github.com/ccam80/cubie/commit/5d8f75b800ef59f02a049e037ac9333f03fdbefd))
* Trajectories with errors (nonzero status codes) now return NaNs in solveresult ([333](https://github.com/ccam80/cubie/issues/333)) ([6068ebc](https://github.com/ccam80/cubie/commit/6068ebc68e0af517462744e8ead23eb57c8c578a))
* update() methods now unpack settings dicts provided to them ([332](https://github.com/ccam80/cubie/issues/332)) ([f016e4d](https://github.com/ccam80/cubie/commit/f016e4dfab6c8b22b759f363f68ad83380aba940))
* Warp-friendly FSAL caching implented, redundant accumulation removed ([211](https://github.com/ccam80/cubie/issues/211)) ([96a9dd0](https://github.com/ccam80/cubie/commit/96a9dd00fc35e9d65fede8ade7f6579ec3e896e3))
Bug Fixes
* _ensure_context() method added to avoid segfaults in CI ([265](https://github.com/ccam80/cubie/issues/265)) ([60acecc](https://github.com/ccam80/cubie/commit/60acecccb787913c0837d072f40d9e51e347fd3a))
* `shift` value in standard deviation calcs now updates after each save. ([073d406](https://github.com/ccam80/cubie/commit/073d406f4578cff67db5d223da607e5ecd437138))
* Adaptive step controllers now sum errors correctly, closes [302](https://github.com/ccam80/cubie/issues/302) ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb))
* add set_stride_order method for access from solver ([e4b80d3](https://github.com/ccam80/cubie/commit/e4b80d3985366c9b1f2ce2f5da7baac3c4210452))
* All algorithms now exit when the next save time is > end time ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb))
* buffer aliasing logic now child-location-agnostic ([377ad10](https://github.com/ccam80/cubie/commit/377ad10c4818d4faeb9c1e8cb6ecbbb3a871ead5))
* Compile-timing kernels now use device arrays ([16bf1d6](https://github.com/ccam80/cubie/commit/16bf1d62953596610e628d2677cc23ef5c6773d8))
* consolidate timing parameter sets for fewer fixture builds ([350](https://github.com/ccam80/cubie/issues/350)) ([4698e9e](https://github.com/ccam80/cubie/commit/4698e9e78bbba37c0a9a28e06832b160c11efad0))
* contiguous arrays now marked as such for the compiler to do its grim work ([276](https://github.com/ccam80/cubie/issues/276)) ([fe97291](https://github.com/ccam80/cubie/commit/fe972918a79518dc407750a7be552182291701ed))
* Controller-algorithm compatibility enforced ([4ab0230](https://github.com/ccam80/cubie/commit/4ab0230c9261e3857f099167db2735db6a6c2955))
* correct FIRK algorithm implementation ([408](https://github.com/ccam80/cubie/issues/408)) ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
* correct fsal warp-vote implementation ([60448f1](https://github.com/ccam80/cubie/commit/60448f10b3976533152450fa3d2b56ebae0af337))
* Counters array added to ERK signature ([99db833](https://github.com/ccam80/cubie/commit/99db8337e75be96ed69fe582b230264e1e2ea425))
* CUDA-breaking simsafe 'local' module adapter removed ([d205979](https://github.com/ccam80/cubie/commit/d205979d9894057a1787ac4b0307eca8ea21ee9c))
* CUDAFactories now only precompile if timelogging is on ([836da2a](https://github.com/ccam80/cubie/commit/836da2a417d197bbfdc06ad8188b991ae184ca78))
* dead code and duplications pruned from codegenned device functions ([266](https://github.com/ccam80/cubie/issues/266)) ([de0dda8](https://github.com/ccam80/cubie/commit/de0dda8f14a4c50ec1c1794c01634907bd87d4c7))
* default precision types have been removed from all but entry points ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
* fast path through batchgridbuilder for arrays provided verbatim added ([080ab66](https://github.com/ccam80/cubie/commit/080ab66d7fc8b4a6cd9e4291392e773c44152175))
* FIRK no longer does an extra f(x) calculation after performing its nonlinear solve ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
* Fixed steppers now use a slower but more sensible save time incrementing technique ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb))
* FSAL warp test now doesn't break everything ([2e68692](https://github.com/ccam80/cubie/commit/2e68692da71f643aa725ed0a1ad8c10a8c2b980a))
* gustafsson controller prev error ratio flipped, various test edits for GPU runs ([3e04438](https://github.com/ccam80/cubie/commit/3e04438881a55ba03306b6f112e35c2d3e3400b5))
* host arrays now pinned to facilitate asynchronous transfers ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb))
* infinite loops in adaptive steppers under dummy compile now finite ([b0547fd](https://github.com/ccam80/cubie/commit/b0547fdcc0c379c84af10375ceedf479da67dc4d))
* lineinfo toggle for CUDA compilation now conditional on CUDASIM status ([280](https://github.com/ccam80/cubie/issues/280)) ([6d5bf57](https://github.com/ccam80/cubie/commit/6d5bf57a6a381379e9e22f9c5901326051dd5835))
* Loop iterators now 32-bit ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb))
* loops now accumulate time in f64, no longer get stuck when dt < 1e-7 * time ([281](https://github.com/ccam80/cubie/issues/281)) ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)), closes [#272](https://github.com/ccam80/cubie/issues/272)
* make shape validator np.int compatible in BaseArrayManager.py ([e77d800](https://github.com/ccam80/cubie/commit/e77d8008de8c1cecd715df6c29bf79794c10bd6b))
* make stage_increment buffer persistent in rosenbrock ([411](https://github.com/ccam80/cubie/issues/411)) ([4b0b6bc](https://github.com/ccam80/cubie/commit/4b0b6bc2102bf7af5f4bee2877a0bce5c0b5a860))
* Missing iteration_counters type added to device signature in BatchSolverKernel ([6eefd67](https://github.com/ccam80/cubie/commit/6eefd67140767d8b452b99fbdcf8d19bf7e91edb))
* move stream sync function to after chunked queue ([e4b80d3](https://github.com/ccam80/cubie/commit/e4b80d3985366c9b1f2ce2f5da7baac3c4210452))
* n_saves calculation now includes start time, closes [282](https://github.com/ccam80/cubie/issues/282) ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb))
* numeric literals now wrapped with precision() or int32 in CUDA code generation ([258](https://github.com/ccam80/cubie/issues/258)) ([21850f2](https://github.com/ccam80/cubie/commit/21850f293b6743e2fe677b4fccc85129f86cdbca))
* partially update cuda signatures with contiguity ([8754661](https://github.com/ccam80/cubie/commit/87546613825922befad0c2145e28807b04ab62d8))
* reduced nonlinear solver memory footprint (3n → 2n buffers) ([224](https://github.com/ccam80/cubie/issues/224)) ([c4d95d4](https://github.com/ccam80/cubie/commit/c4d95d419f72ce12e1242767fd9bd7056e81ce5d))
* Remaining hard-coded buffers now managed by buffer_registry ([412](https://github.com/ccam80/cubie/issues/412)) ([92e9313](https://github.com/ccam80/cubie/commit/92e93139a54c6e4e290bc8a6b4e0de85d2890a24))
* remove redundant overwrite of initial values host array until [76](https://github.com/ccam80/cubie/issues/76) is implemented in device code ([bc39fbb](https://github.com/ccam80/cubie/commit/bc39fbbc52ea3475cbe2b8581a59f8ae6c7fdfc9))
* Replace PEP 604 union syntax with Union[] for Python 3.8 compatibility ([236](https://github.com/ccam80/cubie/issues/236)) ([ea1e1fb](https://github.com/ccam80/cubie/commit/ea1e1fb89db14e798d0d12a1ed2e68f6b114c81a))
* shared and local memory requirement names now consistent across package. ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
* size-1 runs no longer break Cubie (closes [142](https://github.com/ccam80/cubie/issues/142)) ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
* steps now own solvers, and newton_krylov solver now owns it's internal krylov solver ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
* Tableau-driven algorithm loop indexing reorganised to give the compiler an easier job ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb))
* tsit5 tableau corrected ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb))
* types corrected in all step algorithms and solvers to run in 'precision' only ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
* update all-in-one rosenbrock function to use updated prod format ([fa32a16](https://github.com/ccam80/cubie/commit/fa32a1607824a2342dcb46649b7f1d3ca8cbd86f))
* update placeholder parameters to not hide exception ([8754661](https://github.com/ccam80/cubie/commit/87546613825922befad0c2145e28807b04ab62d8))
* updating a solverkernel with new outputtypes now correctly changes buffer and output array sizes. ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
* Use a warp-vote for FSAL caching, otherwise there is no benefit and potential divergence ([d0334a2](https://github.com/ccam80/cubie/commit/d0334a2841518467f2b794fa7a325861b7e9471a))
* Vern7 tableau corrected to match source ([e6b900a](https://github.com/ccam80/cubie/commit/e6b900a0452926a953709e1cf65f89fc147a1c97))
Performance Improvements
* DIRK function profiled and streamlined ([355](https://github.com/ccam80/cubie/issues/355)) ([fd1f639](https://github.com/ccam80/cubie/commit/fd1f639b1394ce8d1f6068d5cc846daea560a2d4))
* firk rewirked for a large speedup ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
* newton and linear solver branching and predication removed for a reasonable speedup ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
* rosenbrock function reworked for a moderate speedup ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262))
Documentation
* cubie_internal_structure.md filled with agent reference ([177](https://github.com/ccam80/cubie/issues/177)) ([02738e0](https://github.com/ccam80/cubie/commit/02738e06f7343910e292721d43cdc0ec127adf4e))
Miscellaneous Chores