Cubie

Latest version: v0.2.0

Safety actively analyzes 971914 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

0.04

[0.0.3](https://github.com/ccam80/cubie/compare/v0.0.2...v0.0.3) (2025-09-04)


Features

* Parser accepts and translates sympy and user-provided functions ([108](https://github.com/ccam80/cubie/issues/108)) ([25f3c5d](https://github.com/ccam80/cubie/commit/25f3c5d89edca3d85040b1438995d45f010b99a4))
* Symbolic input parsing added ([14577c1](https://github.com/ccam80/cubie/commit/14577c1e237791f2997ab53ffc842b5325763766))
* symbolic interface and analytical jacobian generation added ([14577c1](https://github.com/ccam80/cubie/commit/14577c1e237791f2997ab53ffc842b5325763766))


Bug Fixes

* BaseArrayManager.py once again contains all of it's methods, after half of the class was sausage-fingered clean off. ([96ba1cb](https://github.com/ccam80/cubie/commit/96ba1cb3d1fb6bb2bb0e6786ddb0e8dabd8512ae))
* buggy regex removed from pyproject ([bc5606a](https://github.com/ccam80/cubie/commit/bc5606aa67ce84994a5009f0b26dbd5d8e45e603))
* ignore generated python files ([14577c1](https://github.com/ccam80/cubie/commit/14577c1e237791f2997ab53ffc842b5325763766))
* implement four-byte padding to reduce shared memory conflicts ([944066e](https://github.com/ccam80/cubie/commit/944066ee2ced3561b9607cbfcbfb48988f8256b9))
* jacobian product codegen now does a simple dead-code removal sweep at the expression level ([5a46559](https://github.com/ccam80/cubie/commit/5a46559f273a8e4408fbc777ef25c55dbfc06be8))
* metric function compilation now deferred until fn requested. ([fc42de7](https://github.com/ccam80/cubie/commit/fc42de7d438efb7968b4f4663016f9aae7cd82aa))
* sympy piecewise printing patched in subclass ([ca20f84](https://github.com/ccam80/cubie/commit/ca20f84061dda44c44f0ccac451d1aaa128ca4bc))
* SystemValues now interpreting sympy symbols correctly ([0549bea](https://github.com/ccam80/cubie/commit/0549beac411c21dd8a54167f517d8846a8500458))
* SystemValues, BaseODE now have comprehensible repros ([0549bea](https://github.com/ccam80/cubie/commit/0549beac411c21dd8a54167f517d8846a8500458))


Documentation

* batchsolving module now has all docstrings in numpydocs-friendly format ([8e6e8cf](https://github.com/ccam80/cubie/commit/8e6e8cf415b86017137cd00421e14de58168e019))
* conf.py path reverted for Sphinx build ([5383de6](https://github.com/ccam80/cubie/commit/5383de6e551efde3ecf965efc50210608f136f12))
* docs updated and thinned to match structure ([9df6978](https://github.com/ccam80/cubie/commit/9df69786697ccf35f29f528a828a057a67d302ab))
* first-pass narrative docs added ([14577c1](https://github.com/ccam80/cubie/commit/14577c1e237791f2997ab53ffc842b5325763766))
* get sphinx-build working again and ReadTheDocs themed ([6df9a82](https://github.com/ccam80/cubie/commit/6df9a82fefa6307a9ef981ebe70ee2bc0c72161f))
* insert google verification tag, cross-link repo and docs ([0d61cd2](https://github.com/ccam80/cubie/commit/0d61cd2f93d1e79d2dc823a9830387d863cf8abb))
* integrators section docstrings brought in line with numpydocs format ([8b22790](https://github.com/ccam80/cubie/commit/8b22790c912b50f0681b7fb6d7eda925e87be64b))
* memory section docstrings brought into numpy format ([d495551](https://github.com/ccam80/cubie/commit/d495551cce6f0a150da76b6000f87ce512e4345a))
* output_functions section docstrings brought into numpy format ([4e7b2c0](https://github.com/ccam80/cubie/commit/4e7b2c06d1ec8b0ee873d97e0e30e0f4b42a849c))
* pypi version badge added ([8b22790](https://github.com/ccam80/cubie/commit/8b22790c912b50f0681b7fb6d7eda925e87be64b))
* readme now has code coverage badge ([8e6e8cf](https://github.com/ccam80/cubie/commit/8e6e8cf415b86017137cd00421e14de58168e019))
* odesystems section docstrings brought into numpy format ([9df6978](https://github.com/ccam80/cubie/commit/9df69786697ccf35f29f528a828a057a67d302ab))


Miscellaneous Chores

* re-release 0.0.3 ([359abe3](https://github.com/ccam80/cubie/commit/359abe33cb49f47f6b4dcaacf3c630d82d95c69c))

0.0.8

[0.0.7](https://github.com/ccam80/cubie/compare/v0.0.6...v0.0.7) (2026-01-20)


Features

* add runtime logging infrastructure for GPU kernels and memory transfers ([289](https://github.com/ccam80/cubie/issues/289)) ([431425d](https://github.com/ccam80/cubie/commit/431425d5026e90beaf7367bce1863c7f61c2b34b))
* add unified save_variables and summarise_variables parameters to solver interface ([342](https://github.com/ccam80/cubie/issues/342)) ([c7d7531](https://github.com/ccam80/cubie/commit/c7d75317f9525da4f4e2f1f876676bc6fbd54669))
* cellml-generated systems now cached ([510](https://github.com/ccam80/cubie/issues/510)) ([92b21e0](https://github.com/ccam80/cubie/commit/92b21e01facfa4a5a23b73f8a777efaefae4cdd7))
* enable driver interpolator profiling in all_in_one.py ([419](https://github.com/ccam80/cubie/issues/419)) ([1574ec9](https://github.com/ccam80/cubie/commit/1574ec9b548c8f4690f9ac92e927d69bee2ae571))
* File-based caching implemented ([491](https://github.com/ccam80/cubie/issues/491)) ([1bfe68b](https://github.com/ccam80/cubie/commit/1bfe68b2323ddd7dd48b1d3c51dc969b988f5832))
* MultipleInstanceCUDAFactory subclass (and matching config) now handle cases like newton_atol and krylov_atol when instantiating multiple of the same base class ([d674bcd](https://github.com/ccam80/cubie/commit/d674bcd95d9e1757038b50cb386151591bf74787))
* scaled norm function now available as a CUDAFactory for repeated use ([d674bcd](https://github.com/ccam80/cubie/commit/d674bcd95d9e1757038b50cb386151591bf74787))
* Scaled tolerance in Newton-Krylov solver ([473](https://github.com/ccam80/cubie/issues/473)) ([d674bcd](https://github.com/ccam80/cubie/commit/d674bcd95d9e1757038b50cb386151591bf74787))
* Solve functions now save the final value on loop exit when no timing parameters are given. ([d9fb64b](https://github.com/ccam80/cubie/commit/d9fb64bd19d573c32b26d95323392d33f5c62d39))
* Time-domain save settings now decoupled from summary metric settings ([d9fb64b](https://github.com/ccam80/cubie/commit/d9fb64bd19d573c32b26d95323392d33f5c62d39))


Bug Fixes

* build_grid now takes None parameters/initial conditions in solver.py ([be4bab9](https://github.com/ccam80/cubie/commit/be4bab9729341ca980be1321f4d850a2020b9dea))
* chunking fails when VRAM is limited due to stride incompatibility ([487](https://github.com/ccam80/cubie/issues/487)) ([b8a486e](https://github.com/ccam80/cubie/commit/b8a486e36a88f82ba8ee089282f7c84c09d7a498)), closes [#438](https://github.com/ccam80/cubie/issues/438)
* codegen hashing now session-independent (and so working... this time) ([59bb488](https://github.com/ccam80/cubie/commit/59bb488617ec00388d85017fd76221a04019dc76))
* correct false circular dependency error in topological_sort ([422](https://github.com/ccam80/cubie/issues/422)) ([97c13be](https://github.com/ccam80/cubie/commit/97c13bec7dd31c9cfedba6503783c19ee9a9c59a))
* default neumann preconditioner order set to 2 ([2434358](https://github.com/ccam80/cubie/commit/24343589fa30f28da630517bee26b691bbf48c2a))
* DIRK codegen pipeline now decoupled from rosenbrock cache planning. ([80171b5](https://github.com/ccam80/cubie/commit/80171b52a33290c2f0f1ae10be8eed5e95f8308b))
* dummy-kernel based compile time logging removed (it doubled compile time) ([431425d](https://github.com/ccam80/cubie/commit/431425d5026e90beaf7367bce1863c7f61c2b34b))
* Internal code generation variables prefixed to avoid name clashes ([466](https://github.com/ccam80/cubie/issues/466)) ([90e8ca3](https://github.com/ccam80/cubie/commit/90e8ca31070193a1db24c584af424d5ab11c0b20)), closes [#373](https://github.com/ccam80/cubie/issues/373)
* load_cellml_model surfaced to toplevel import ([54b05e0](https://github.com/ccam80/cubie/commit/54b05e09b7e0bd961cf76e931c98470b3f3aa33f))
* loop now exits on irrecoverable-error status codes ([ba800a0](https://github.com/ccam80/cubie/commit/ba800a0df6142ae082f39d01fb57864fc0c5990b))
* map CellML time variable to standard 't' symbol ([425](https://github.com/ccam80/cubie/issues/425)) ([261c109](https://github.com/ccam80/cubie/commit/261c1092ba9a50b703a1bc949957217462bafd6f))
* Newton-krylov solver no longer propagates krylov non-convergence or max_backtrack errors if it recovers ([1411135](https://github.com/ccam80/cubie/commit/1411135b70268377f23df251e7b13de518803499))
* Parsed system definition now hashed properly so generated code is properly cached ([655e54a](https://github.com/ccam80/cubie/commit/655e54af6b7e9ad86559c36e447fcf3c04acfd74))
* patch event.query() bug in numba by swapping handle ([d43ae8f](https://github.com/ccam80/cubie/commit/d43ae8f8d441353aa56815ff31db9ea06bf9094e))
* Refactor BatchGridBuilder -> BatchInputHandler ([437](https://github.com/ccam80/cubie/issues/437)) ([ffb8478](https://github.com/ccam80/cubie/commit/ffb8478a4bfc01bdba1d3cc146016b0cd2bf723e))
* repeated CSE calls no longer raise warning about an already-used CSE symbol. ([16785f3](https://github.com/ccam80/cubie/commit/16785f3a4641b719c2a70b11becda5533f6e4e2e))
* Rosenbrock step config's hash now deterministic for caching ([105befb](https://github.com/ccam80/cubie/commit/105befbbef2419e11e92fe781b3f2853b7267081))
* Runs with impossible time settings now raise sensible errors ([465](https://github.com/ccam80/cubie/issues/465)) ([d46a7b2](https://github.com/ccam80/cubie/commit/d46a7b2fea3eb4d63753e1679f0a95114fc12022)), closes [#440](https://github.com/ccam80/cubie/issues/440)
* skip codegen on cache hit in get_solver_helper ([512](https://github.com/ccam80/cubie/issues/512)) ([cfc6b0b](https://github.com/ccam80/cubie/commit/cfc6b0b826659b1e5a132a017f5d1236fcf87cbc))
* state-aware derivative detection to avoid misinterpreting d-prefixed auxiliaries ([468](https://github.com/ccam80/cubie/issues/468)) ([fee6d70](https://github.com/ccam80/cubie/commit/fee6d70f4612ef6a8cb0d52da1a0ef6627516066))
* Stride incompatibility fixed when array is sliced to fit in VRAM ([b8a486e](https://github.com/ccam80/cubie/commit/b8a486e36a88f82ba8ee089282f7c84c09d7a498))
* timelogger printouts now include cache hit/miss messaging ([497](https://github.com/ccam80/cubie/issues/497)) ([6323746](https://github.com/ccam80/cubie/commit/6323746cad81a530514f02f9c30ed43fcc147597))


Performance Improvements

* Convert whole-module imports to explicit imports in CUDAFactory files ([443](https://github.com/ccam80/cubie/issues/443)) ([9cebe45](https://github.com/ccam80/cubie/commit/9cebe45b93a9b5d5f189dee971edf36ecbb9431c))


Miscellaneous Chores

0.0.7

[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

0.0.6

[0.0.5](https://github.com/ccam80/cubie/compare/v0.0.4...v0.0.5) (2025-11-04)


Features

* "Instrumented" device steps added for diagnostics ([472f960](https://github.com/ccam80/cubie/commit/472f960ae7492520eb1b9c7d22a55f537afae753))
* additional ERK, DIRK, Rosenbrock tableaus added ([ed866d7](https://github.com/ccam80/cubie/commit/ed866d7153e4255136a8155f55cb92826f319d6b))
* Algorithms now set their own step control defaults ([139](https://github.com/ccam80/cubie/issues/139)) ([2a0efed](https://github.com/ccam80/cubie/commit/2a0efedd7a02a10be5179f0ef84fe72ebfddba84))
* Array managers now support heterogeneous arrays within the same container ([0905422](https://github.com/ccam80/cubie/commit/0905422b8fbaf6c1b05f127d162a2f44bc40c53a))
* Compile-settings updates now won't force a rebuild if the value hasn't changed. ([5a9e281](https://github.com/ccam80/cubie/commit/5a9e281bb16455c37ca70c85d56831d50f809fc7))
* DIRK and DIRKTableaus added ([472f960](https://github.com/ccam80/cubie/commit/472f960ae7492520eb1b9c7d22a55f537afae753))
* Explicit and Diagonally-Implicit Runge Kutta algorithms added ([151](https://github.com/ccam80/cubie/issues/151)) ([472f960](https://github.com/ccam80/cubie/commit/472f960ae7492520eb1b9c7d22a55f537afae753))
* Explicit RK and Tableau added, closes [83](https://github.com/ccam80/cubie/issues/83) ([472f960](https://github.com/ccam80/cubie/commit/472f960ae7492520eb1b9c7d22a55f537afae753))
* Fully-Implicit Runge-Kutta (FIRK) Methods implemented ([162](https://github.com/ccam80/cubie/issues/162)) ([ed866d7](https://github.com/ccam80/cubie/commit/ed866d7153e4255136a8155f55cb92826f319d6b))
* Generic Butcher Tableau implemented ([472f960](https://github.com/ccam80/cubie/commit/472f960ae7492520eb1b9c7d22a55f537afae753))
* Generic Rosenbrock-W methods added ([148](https://github.com/ccam80/cubie/issues/148)) ([6abfed2](https://github.com/ccam80/cubie/commit/6abfed2c0d051b597b11ea3601a4806eecfc7aac))
* minimal FSAL caching added to DIRK, ERK, Rosenbrock ([472f960](https://github.com/ccam80/cubie/commit/472f960ae7492520eb1b9c7d22a55f537afae753))
* N-stage flattened linear operators, preconditioners, nonlinear residual codegen added ([ed866d7](https://github.com/ccam80/cubie/commit/ed866d7153e4255136a8155f55cb92826f319d6b))
* Parser now processes indexed arrays as variables ([152](https://github.com/ccam80/cubie/issues/152)) ([7fe800b](https://github.com/ccam80/cubie/commit/7fe800b8328f28b26fab1492c9f0c30e63670553))
* rodasnp methods, dop853, tsit5, vern7 ([87b53bc](https://github.com/ccam80/cubie/commit/87b53bc6b87227db223989a5576e17846448b685))
* Rosenbrock methods now 100% more rosenbrock ([157](https://github.com/ccam80/cubie/issues/157)) ([35641e6](https://github.com/ccam80/cubie/commit/35641e6ab24f76193a03e29c01c64822298dba63))
* status codes now aggregated by batchSolverKernel ([0905422](https://github.com/ccam80/cubie/commit/0905422b8fbaf6c1b05f127d162a2f44bc40c53a))
* Steps and step controllers now have a unified argument-filtering factory ([2a0efed](https://github.com/ccam80/cubie/commit/2a0efedd7a02a10be5179f0ef84fe72ebfddba84))
* Tableau libraries and tableau resolvers/getters added ([472f960](https://github.com/ccam80/cubie/commit/472f960ae7492520eb1b9c7d22a55f537afae753))
* There are now auxiliary-cached jacobian functions for reusing some computational work. ([6abfed2](https://github.com/ccam80/cubie/commit/6abfed2c0d051b597b11ea3601a4806eecfc7aac))
* Third and fourth order SDIRK tableaus added ([91ee1e9](https://github.com/ccam80/cubie/commit/91ee1e967d343b38ed521f52012ca4a414ecdbd2))
* Time-derivative helpers added for symbolic functions and interpolated arrays ([35641e6](https://github.com/ccam80/cubie/commit/35641e6ab24f76193a03e29c01c64822298dba63))
* Very rough caching of jvp nodes implemented for rosenbrock solvers. ([7fe800b](https://github.com/ccam80/cubie/commit/7fe800b8328f28b26fab1492c9f0c30e63670553))
* working arrays and quantities in algorithms and solvers now draw from a memory "pool", allowing easier reuse ([b0f5b6f](https://github.com/ccam80/cubie/commit/b0f5b6f879d82caa700c853042a860736da02714))


Bug Fixes

* add error to sdirk 4, correct controllers for loop tests ([47a6cb1](https://github.com/ccam80/cubie/commit/47a6cb1fb20a53b55c38711668abd3b98fa33ba5))
* Added (non-CI) testing for DIRK loops added. ([7fe800b](https://github.com/ccam80/cubie/commit/7fe800b8328f28b26fab1492c9f0c30e63670553))
* batchgridbuilder class now has static wrappers for batchgridbuilder helper functions. ([74c08fa](https://github.com/ccam80/cubie/commit/74c08fa0a9846c988399e9893a1acee3193a62ca))
* BatchsolverKernel's compile settings now features the compile-critical settings it always should have had. ([f383157](https://github.com/ccam80/cubie/commit/f383157a06180841071bf9df90d23c1081c907f2))
* Buffer footprints reduced by aliasing vectors with disjoint lifetimes ([472f960](https://github.com/ccam80/cubie/commit/472f960ae7492520eb1b9c7d22a55f537afae753))
* correct off-by-one error and datatype discrepancy in cpu driver evaluator ([472f960](https://github.com/ccam80/cubie/commit/472f960ae7492520eb1b9c7d22a55f537afae753))
* DIRK now accumulates rhs's and scales after stages, reducing round-off ([7fe800b](https://github.com/ccam80/cubie/commit/7fe800b8328f28b26fab1492c9f0c30e63670553))
* faulty implementation of ode23s removed, dop853 tableau amended ([d5a784c](https://github.com/ccam80/cubie/commit/d5a784c366a22d81b4c12651b0536c231263098d))
* matplotlib now spelled correctly in pyproject.toml ([3773ff8](https://github.com/ccam80/cubie/commit/3773ff8c0a73fca8986794d82289f2d0e3a3c169))
* Meaty loop tests confined to test_ode_loop.py ([7fe5677](https://github.com/ccam80/cubie/commit/7fe5677be087bff94a75e1c3e9843938f05c139a))
* numerous numerical errors amended after instrumenting steps ([472f960](https://github.com/ccam80/cubie/commit/472f960ae7492520eb1b9c7d22a55f537afae753))
* precision type hints now correct; no more pesky yellow lines. ([2a0efed](https://github.com/ccam80/cubie/commit/2a0efedd7a02a10be5179f0ef84fe72ebfddba84))
* Rosenbrock buffer footprint reduced by 2n ([ed866d7](https://github.com/ccam80/cubie/commit/ed866d7153e4255136a8155f55cb92826f319d6b))
* settings passing from solver now less cramped and hopefully more robust ([2a0efed](https://github.com/ccam80/cubie/commit/2a0efedd7a02a10be5179f0ef84fe72ebfddba84))
* Step controllers no longer mutate error vector ([7fe800b](https://github.com/ccam80/cubie/commit/7fe800b8328f28b26fab1492c9f0c30e63670553))


Documentation

* Add autodocs subpages for manual project structure docs ([c2c0d7c](https://github.com/ccam80/cubie/commit/c2c0d7cd0c9173cccd38d84d3969d6e66406e4b4))
* add copilot instructions ([161](https://github.com/ccam80/cubie/issues/161)) ([2bfe6f2](https://github.com/ccam80/cubie/commit/2bfe6f2a28e9e20ed48e855435901ea8145c5a78))
* added "buffer map" comments to generic algorithms to demystify aliasing ([472f960](https://github.com/ccam80/cubie/commit/472f960ae7492520eb1b9c7d22a55f537afae753))
* autodocs param lists now format one line per param ([cb3d74b](https://github.com/ccam80/cubie/commit/cb3d74bf4a578705abf31c797e0662aea3202879))
* Batchsolving module source files now better documented in numpydocs format ([97a0ab8](https://github.com/ccam80/cubie/commit/97a0ab8a9510ea1e46f1aa6cc3a16f0a51ee9ae8))
* de-computer some language in api reference, rejig indexes ([b558994](https://github.com/ccam80/cubie/commit/b5589943dbec791ee41b71c012b148e856352e83))
* increase index depth, force one-param-per-line printing ([b822f4c](https://github.com/ccam80/cubie/commit/b822f4c402f3321c6a399163e5e0497433493a8e))
* more docs organisation ([5631989](https://github.com/ccam80/cubie/commit/563198977c99f688549152feb798335a5eb3bf36))
* more docs organisation ([cd98043](https://github.com/ccam80/cubie/commit/cd98043d02c663ddfe2f3df981cd218ddbc99c95))
* refactor api structure; remove autosummary, implement manual docs ([881ce4a](https://github.com/ccam80/cubie/commit/881ce4ac81c8405f0a8cffe00788de7c987a3dce))
* Refs in "getting started" are now actually refs not highlighted garbage. ([6abfed2](https://github.com/ccam80/cubie/commit/6abfed2c0d051b597b11ea3601a4806eecfc7aac))
* top-level batchsolving docs added ([6cfddfa](https://github.com/ccam80/cubie/commit/6cfddfa8d86d656be4b79b34d068290680e60046))


Miscellaneous Chores

0.0.5

[0.0.4](https://github.com/ccam80/cubie/compare/v0.0.3...v0.0.4) (2025-10-05)


Features

* Adaptive step-size controllers added : i (traditional), pi, pid, gustafsson acceleration ([1d903f2](https://github.com/ccam80/cubie/commit/1d903f2bfff3c3732086c18efa4a66660524bf29))
* Adaptive time-step controllers now have a programmable dead-band. ([b0fafd9](https://github.com/ccam80/cubie/commit/b0fafd9f4c9f269edf5ae003fe64cd9309d2b43b))
* AGENTS.md extended and partially updated to summarise entire project for ai agents ([1d903f2](https://github.com/ccam80/cubie/commit/1d903f2bfff3c3732086c18efa4a66660524bf29))
* arbitrary drivers can now be looped or clamped to zero (smoothly). ([b0fafd9](https://github.com/ccam80/cubie/commit/b0fafd9f4c9f269edf5ae003fe64cd9309d2b43b))
* Backwards Euler implicit fixed-step method added (with and without predictor-corrector mechanism), closes [114](https://github.com/ccam80/cubie/issues/114). ([1d903f2](https://github.com/ccam80/cubie/commit/1d903f2bfff3c3732086c18efa4a66660524bf29))
* Codegen for residual functions, jvps, and various solver helper functions created ([1d903f2](https://github.com/ccam80/cubie/commit/1d903f2bfff3c3732086c18efa4a66660524bf29))
* Crank-Nicolson trapezoidal adaptive-step algorithm implemented. ([1d903f2](https://github.com/ccam80/cubie/commit/1d903f2bfff3c3732086c18efa4a66660524bf29))
* cuda simulation patches consolidated for cuda-free environment tests. ([1d903f2](https://github.com/ccam80/cubie/commit/1d903f2bfff3c3732086c18efa4a66660524bf29))
* Forcing (driver) terms now adaptive-step friendly ([132](https://github.com/ccam80/cubie/issues/132)) ([b0fafd9](https://github.com/ccam80/cubie/commit/b0fafd9f4c9f269edf5ae003fe64cd9309d2b43b))
* matrix free solvers added ([1dffd94](https://github.com/ccam80/cubie/commit/1dffd94ae965a72c3f42ea2be09761cedcd10582))
* Nonlinear Newton-Krylov iterative solver with preconditiong added for implicit methods, closes [101](https://github.com/ccam80/cubie/issues/101), [#102](https://github.com/ccam80/cubie/issues/102), [#111](https://github.com/ccam80/cubie/issues/111) ([1d903f2](https://github.com/ccam80/cubie/commit/1d903f2bfff3c3732086c18efa4a66660524bf29))
* plotting added to driver interpolator - keep an eye on what the machine is doing. ([b0fafd9](https://github.com/ccam80/cubie/commit/b0fafd9f4c9f269edf5ae003fe64cd9309d2b43b))
* shared memory padding now closer to optimal (nothing to be done about 64-bit values), closes [86](https://github.com/ccam80/cubie/issues/86). ([1d903f2](https://github.com/ccam80/cubie/commit/1d903f2bfff3c3732086c18efa4a66660524bf29))


Bug Fixes

* Array "chunking" logic now respects "unchunkable" arrays in allocation ([53141df](https://github.com/ccam80/cubie/commit/53141dfa72a7568813f85c86ef5d9b6f682db856))
* CPU test step controllers now raise dt_too_small errors ([19af8ff](https://github.com/ccam80/cubie/commit/19af8ff620419155e4c6e8d3512aa1224421d3ad))
* Crank-Nicolson and adaptive controllers now 50% more idiot-error free. ([b0fafd9](https://github.com/ccam80/cubie/commit/b0fafd9f4c9f269edf5ae003fe64cd9309d2b43b))
* CUDAFactory now updates underscored config variables as intended ([1d903f2](https://github.com/ccam80/cubie/commit/1d903f2bfff3c3732086c18efa4a66660524bf29))
* Many edits to precision settings and flow throughout system (making it work) ([1d903f2](https://github.com/ccam80/cubie/commit/1d903f2bfff3c3732086c18efa4a66660524bf29))
* Observables calculation now occurs in sync with state for adaptive-step loops ([130](https://github.com/ccam80/cubie/issues/130)) ([19af8ff](https://github.com/ccam80/cubie/commit/19af8ff620419155e4c6e8d3512aa1224421d3ad))
* pypi version tag trigger now using correct syntax ([3b3caa1](https://github.com/ccam80/cubie/commit/3b3caa1d1e434edc61dc86174d211ac83444383f))
* some sign confusion and bogus gains corrected in step controllers ([19af8ff](https://github.com/ccam80/cubie/commit/19af8ff620419155e4c6e8d3512aa1224421d3ad))


Documentation

* Batch arrays re-docstringed in keeping with rest of library. ([b0fafd9](https://github.com/ccam80/cubie/commit/b0fafd9f4c9f269edf5ae003fe64cd9309d2b43b))
* fix circular import for docs building ([64d8933](https://github.com/ccam80/cubie/commit/64d8933e965b52f80664f2f5ddefc5ab03d96077))
* manual docs added for integrators, memory modules. submodules of systems, outputhandling documented. ([1d903f2](https://github.com/ccam80/cubie/commit/1d903f2bfff3c3732086c18efa4a66660524bf29))
* step controller comparison added to docs/examples ([19af8ff](https://github.com/ccam80/cubie/commit/19af8ff620419155e4c6e8d3512aa1224421d3ad))
* top-level summaries of odesystems and outputhandling ([a9cb4c0](https://github.com/ccam80/cubie/commit/a9cb4c08383aa452d64a5cf63bec9b3cb86d5b75))
* update docstrings in outputhandling and odesystems root directorys ([87bb133](https://github.com/ccam80/cubie/commit/87bb133643a8b8b14ff6731469e2ef5e7eded3ee))


Miscellaneous Chores

0.0.3

[0.0.2](https://github.com/ccam80/cubie/compare/v0.0.1...v0.0.2) (2025-08-18)


Features

* BaseArrayManager class added to unify approach to allocating/deallocating device arrays through the memory manager ([416e363](https://github.com/ccam80/cubie/commit/416e3632085eaac507e596c22bafb34c22f107a2))
* BatchConfigurator now accepts extra user input types to match usage ([a345679](https://github.com/ccam80/cubie/commit/a3456797cbd37eb47a3d75b10b9d870fe6b22203))
* BatchInputArrays and BatchOutputArrays now subclass BaseArrayManager ([808695e](https://github.com/ccam80/cubie/commit/808695ed21eee0a777178babb2f181f6fc85afef))
* Memory Manager extended to queue and process requests from multiple objects ([67e66bf](https://github.com/ccam80/cubie/commit/67e66bfe82fc02258afcbb94d342621505632074))
* MemoryManager implemented ([3387142](https://github.com/ccam80/cubie/commit/3387142c7925c3ee76e60175bb1cddd0a1b87ce7))
* Solver interface now set up for real people to use (I think) ([2b05c1e](https://github.com/ccam80/cubie/commit/2b05c1eb1a590f7fcd99f4aa0d33171ea4f5de37))
* UserArrays now handles delivery from device arrays to end user for inspection ([9d93a7a](https://github.com/ccam80/cubie/commit/9d93a7a560500519b9cd500b70d082610fc9efc4))


Bug Fixes

* BatchSolverKernel now uses blocksize to calculate dynamic shared memory correctly, and reduces blocksize if it's > limit ([5d8263f](https://github.com/ccam80/cubie/commit/5d8263fd9aae11f6006f53bd349c44d169341405))
* bug in previosu commit: BatchSolverKernel now uses blocksize to calculate dynamic shared memory correctly, and reduces blocksize if it's > limit ([afda7cb](https://github.com/ccam80/cubie/commit/afda7cbe7d72e2d3a0e0134dca1be49ca81dbe08))
* fix circular imports introduced in 636b5e3 ([2865160](https://github.com/ccam80/cubie/commit/2865160cc31fb7589cc75148dfbeaad88d78af37))
* force odd shared memory size per run to minimise clashes. ([fc12c76](https://github.com/ccam80/cubie/commit/fc12c768dbc7bd27bbd90b469dae8258c09149d9))
* forward declarations no longer cause circular imports ([e3841ff](https://github.com/ccam80/cubie/commit/e3841ffabdd745e1a5892417b19b7524a8d65f0a)), closes [#73](https://github.com/ccam80/cubie/issues/73)
* Newly-initialised memory manager no longer breaks in CUDA sim ([db99862](https://github.com/ccam80/cubie/commit/db99862da766224b1f1588fd15f41cb524dc40bc))
* output config flags now treated as derived quantities instead of attributes ([9d93a7a](https://github.com/ccam80/cubie/commit/9d93a7a560500519b9cd500b70d082610fc9efc4))
* pyproject.toml now points at correct license and readme files for building. ([f7bd7f0](https://github.com/ccam80/cubie/commit/f7bd7f00079c4e804cd92e9bfdcf18bd2089c42f))
* pyproject.toml now points at correct license file (but for real this time) ([93591ed](https://github.com/ccam80/cubie/commit/93591ed9c3c4465ff812b0402ec58c993d7cd63c))
* SolverKernel now solves and summarises accurately. ([879da10](https://github.com/ccam80/cubie/commit/879da1033c7e5318ea2633213d55501f9cb186f5))
* SolverKernel tests made CUDA-simulator-friendly ([ad702bb](https://github.com/ccam80/cubie/commit/ad702bb3a37f95e831723fc270978a5876316829))
* UserArrays now SolveResult, and works with array managers to produce a sensible output ([994cd7c](https://github.com/ccam80/cubie/commit/994cd7ccc6bcd53c1e02b73f7397d5fe0c4e1d65))
* UserArrays.as_numpy now returns copies rather than mappedarrays ([01af17d](https://github.com/ccam80/cubie/commit/01af17d493ceb74ac9b05468b929a7f6290cdd19))


Documentation

* Docs don't mention CuMC anymore, and we shall never speak of it again ([fff2e00](https://github.com/ccam80/cubie/commit/fff2e0088168ac8106c50ff3d479cc49ccad4864))
* Docs updated to reflect cubie refactor ([205e748](https://github.com/ccam80/cubie/commit/205e7489360c458818904c4e2bd0860639d54acf))
* Properties which expose lower-level attributes are now docstringed as such ([a97d368](https://github.com/ccam80/cubie/commit/a97d368500ae618ae35ca0cce40ce54ebc98380b))


Miscellaneous Chores

Page 1 of 2

© 2026 Safety CLI Cybersecurity Inc. All Rights Reserved.