# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.6.11](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.6.10...jingle-v0.6.11) - 2026-04-10

### Added

- add missing gimli architecture mappings ([#229](https://github.com/toolCHAINZ/jingle/pull/229))

## [0.6.10](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.6.9...jingle-v0.6.10) - 2026-04-04

### Added

- make varnode Copy and improve Value ergonomics ([#228](https://github.com/toolCHAINZ/jingle/pull/228))

### Other

- Bump z3 and z3-sys versions ([#226](https://github.com/toolCHAINZ/jingle/pull/226))

## [0.6.9](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.6.8...jingle-v0.6.9) - 2026-04-01

### Added

- support zext/sext/extract in valuation ([#221](https://github.com/toolCHAINZ/jingle/pull/221))

### Changed

- renamed Valuation to ValuationSet and SingleValuation to ([#225](https://github.com/toolCHAINZ/jingle/pull/225))
- removed `Simple` and `Single` prefix from all value-like types ([#224](https://github.com/toolCHAINZ/jingle/pull/224))
- semantics of SingleValuationLocation::Indirect ([#223](https://github.com/toolCHAINZ/jingle/pull/223))

## [0.6.8](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.6.7...jingle-v0.6.8) - 2026-03-25

### Added

- add bitand support to simplevaluation ([#219](https://github.com/toolCHAINZ/jingle/pull/219))
- experimental ghidra xml import ([#218](https://github.com/toolCHAINZ/jingle/pull/218))
- rudimentary graph structuring ([#216](https://github.com/toolCHAINZ/jingle/pull/216))
- parameterize location and add liveness ananlysis ([#215](https://github.com/toolCHAINZ/jingle/pull/215))

### Fixed

- consistent if-else structuring ([#220](https://github.com/toolCHAINZ/jingle/pull/220))

### Other

- SimpleValuation comparison ops ([#213](https://github.com/toolCHAINZ/jingle/pull/213))

## [0.6.7](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.6.6...jingle-v0.6.7) - 2026-03-01

### Added

- Add pcode-op bound and tweak computed valuation ([#212](https://github.com/toolCHAINZ/jingle/pull/212))

### Other

- add separate instruction and branch bounds ([#210](https://github.com/toolCHAINZ/jingle/pull/210))

## [0.6.6](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.6.5...jingle-v0.6.6) - 2026-02-27

### Fixed

- reduce redundant interning#207 ([#207](https://github.com/toolCHAINZ/jingle/pull/207))

### Other

- remove debug macro from cfg finalize ([#209](https://github.com/toolCHAINZ/jingle/pull/209))

## [0.6.5](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.6.4...jingle-v0.6.5) - 2026-02-26

### Added

- implement Translate and Solvable traits for MemoryState and ModeledSpace ([#205](https://github.com/toolCHAINZ/jingle/pull/205))

## [0.6.4](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.6.3...jingle-v0.6.4) - 2026-02-26

### Other

- eliminate all cloning in the main CPA loop and generic merge impls ([#203](https://github.com/toolCHAINZ/jingle/pull/203))

## [0.6.3](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.6.2...jingle-v0.6.3) - 2026-02-25

### Added

- further cpa optimizations ([#201](https://github.com/toolCHAINZ/jingle/pull/201))

## [0.6.2](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.6.1...jingle-v0.6.2) - 2026-02-25

### Other

- optimize CPA and clean up varnode APIs ([#199](https://github.com/toolCHAINZ/jingle/pull/199))

## [0.6.1](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.6.0...jingle-v0.6.1) - 2026-02-23

### Other

- fallthrough counting mode to bounded branch analysis ([#197](https://github.com/toolCHAINZ/jingle/pull/197))

## [0.6.0](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.5.9...jingle-v0.6.0) - 2026-02-23

### Changed

- Add dereference symbol for indirect valuation display ([#194](https://github.com/toolCHAINZ/jingle/pull/194))

### Other

- [**breaking**] explicitly annotate instruction fallthrough with ([#195](https://github.com/toolCHAINZ/jingle/pull/195))

## [0.5.9](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.5.8...jingle-v0.5.9) - 2026-02-22

### Other

- updated the following local packages: jingle_sleigh

## [0.5.8](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.5.7...jingle-v0.5.8) - 2026-02-19

### Added

- add bitwise XOR expression to SimpleValue ([#186](https://github.com/toolCHAINZ/jingle/pull/186))
- implement FromIterator for SimpleValuation ([#184](https://github.com/toolCHAINZ/jingle/pull/184))

### Fixed

- remove duplicate parens from SimpleValue display ([#191](https://github.com/toolCHAINZ/jingle/pull/191))
- Various bug fixes and features ([#185](https://github.com/toolCHAINZ/jingle/pull/185))

### Other

- Display trait for SimpleValuation with test ([#190](https://github.com/toolCHAINZ/jingle/pull/190))
- make varnode iterators not use box and align them better to std-style iterators ([#189](https://github.com/toolCHAINZ/jingle/pull/189))
- SimpleValue::Offset for pointer offsets  ([#181](https://github.com/toolCHAINZ/jingle/pull/181))

## [0.5.7](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.5.6...jingle-v0.5.7) - 2026-02-13

### Fixed

- track unknown outputs as Top ([#179](https://github.com/toolCHAINZ/jingle/pull/179))

### Other

- AsRef<SleighArchInfo> for SimpleValuationState ([#180](https://github.com/toolCHAINZ/jingle/pull/180))
- Implement Display trait for SingleValuationLocation ([#178](https://github.com/toolCHAINZ/jingle/pull/178))
- handle extrapop adjustment for Call operations in valuation state ([#177](https://github.com/toolCHAINZ/jingle/pull/177))
- From<Vec<SingleValuation>> for SimpleValuation ([#175](https://github.com/toolCHAINZ/jingle/pull/175))
- Display and LowerHex for SimpleValue ([#174](https://github.com/toolCHAINZ/jingle/pull/174))
- SimpleValuation::add() ([#173](https://github.com/toolCHAINZ/jingle/pull/173))
- Implement JingleDisplay for SingleValuation types ([#171](https://github.com/toolCHAINZ/jingle/pull/171))
- Add generic get method to SimpleValuation ([#172](https://github.com/toolCHAINZ/jingle/pull/172))
- iter method to SimpleValuation for iteration ([#169](https://github.com/toolCHAINZ/jingle/pull/169))

## [0.5.6](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.5.5...jingle-v0.5.6) - 2026-02-12

### Changed

- Refactor SimpleValue to use interned VarNode directly ([#162](https://github.com/toolCHAINZ/jingle/pull/162))

### Other

- lazy iterator impl for VarNodeMap ([#168](https://github.com/toolCHAINZ/jingle/pull/168))
- Add getter for internal valuation reference in SimpleValuationState ([#166](https://github.com/toolCHAINZ/jingle/pull/166))
- Add constructors and new_with_contents for SimpleValuation types ([#165](https://github.com/toolCHAINZ/jingle/pull/165))
- Simplify re-export of simple::value items ([#164](https://github.com/toolCHAINZ/jingle/pull/164))

### Removed

- unused assuming method from SimpleValuationState ([#167](https://github.com/toolCHAINZ/jingle/pull/167))

## [0.5.5](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.5.4...jingle-v0.5.5) - 2026-02-11

### Changed

- Refactor SimpleValue to store sizes and consts as VarNodes ([#160](https://github.com/toolCHAINZ/jingle/pull/160))

## [0.5.4](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.5.3...jingle-v0.5.4) - 2026-02-11

### Added

- hash-consing of expressions, logging tweaks, cfg refactors ([#159](https://github.com/toolCHAINZ/jingle/pull/159))
- Implement JingleDisplay for SmtValuationState ([#157](https://github.com/toolCHAINZ/jingle/pull/157))

## [0.5.3](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.5.2...jingle-v0.5.3) - 2026-02-03

### Added

- Add From<&PcodeMachineAddress> for ConcretePcodeAddress ([#155](https://github.com/toolCHAINZ/jingle/pull/155))

### Changed

- sub_cfg_from_indices  accepts any iterator for nodes ([#152](https://github.com/toolCHAINZ/jingle/pull/152))

### Other

- simplify smt valuation names and make them unique ([#154](https://github.com/toolCHAINZ/jingle/pull/154))

## [0.5.2](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.5.1...jingle-v0.5.2) - 2026-02-02

### Added

- Add lifetime to pcodestore ([#147](https://github.com/toolCHAINZ/jingle/pull/147))

### Other

- generalize display impls, rename trait, move it to jingle_sleigh ([#151](https://github.com/toolCHAINZ/jingle/pull/151))
- move basic_block cfg impl to a trait and auto-impl for any edge type that is AsRef<PcodeOperation>
- rename final => terminating ([#149](https://github.com/toolCHAINZ/jingle/pull/149))

## [0.5.1](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.5.0...jingle-v0.5.1) - 2026-02-01

### Added

- Refactor analysis traits to reduce copies ([#146](https://github.com/toolCHAINZ/jingle/pull/146))
- Add get_op_at_address method and generalize PcodeStore impl ([#145](https://github.com/toolCHAINZ/jingle/pull/145))
- track pcode ops in cfg by address instead of abstract state ([#144](https://github.com/toolCHAINZ/jingle/pull/144))
- Minor Analysis Tweaks ([#142](https://github.com/toolCHAINZ/jingle/pull/142))
- add an api to get a sub-graph ([#141](https://github.com/toolCHAINZ/jingle/pull/141))
- add constructor method to ConcretePcodeAddress ([#139](https://github.com/toolCHAINZ/jingle/pull/139))

### Removed

- remove unused back-edge analysis and unwoundcfg wrapper type ([#143](https://github.com/toolCHAINZ/jingle/pull/143))

## [0.5.0](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.4.2...jingle-v0.5.0) - 2026-01-28

### Added

- [**breaking**] SMT valuation analysis ([#135](https://github.com/toolCHAINZ/jingle/pull/135))
- specialized varnode map data structure, analysis refactor ([#134](https://github.com/toolCHAINZ/jingle/pull/134))
- Allow Location Lattice Elements in CFGs ([#132](https://github.com/toolCHAINZ/jingle/pull/132))

### Other

- Trait Cleanup and PcodeOpRef ([#133](https://github.com/toolCHAINZ/jingle/pull/133))
- Analysis Refactoring ([#129](https://github.com/toolCHAINZ/jingle/pull/129))

## [0.4.2](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.4.1...jingle-v0.4.2) - 2025-12-21

### Fixed

- update error message ([#127](https://github.com/toolCHAINZ/jingle/pull/127))

## [0.4.1](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.4.0...jingle-v0.4.1) - 2025-12-21

### Other

- updated the following local packages: jingle_sleigh

## [0.4.0](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.3.7...jingle-v0.4.0) - 2025-12-19

### Added

- [**breaking**] allow parsing pcode from a string ([#123](https://github.com/toolCHAINZ/jingle/pull/123))

## [0.3.7](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.3.6...jingle-v0.3.7) - 2025-12-09

### Added

- allow annotating CALL and CALLOTHER with metadata ([#118](https://github.com/toolCHAINZ/jingle/pull/118))

### Fixed

- avoid revisiting locations in CFG traversal ([#121](https://github.com/toolCHAINZ/jingle/pull/121))

## [0.3.6](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.3.5...jingle-v0.3.6) - 2025-12-03

### Other

- update pyo3 dependency to version 0.27.2 ([#117](https://github.com/toolCHAINZ/jingle/pull/117))
- Disable default features and enable macros for pyo3 dependency ([#115](https://github.com/toolCHAINZ/jingle/pull/115))

## [0.3.5](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.3.4...jingle-v0.3.5) - 2025-12-02

### Added

- CTL Model Checking ([#114](https://github.com/toolCHAINZ/jingle/pull/114))
- use default parameterization for pcodecfg ([#111](https://github.com/toolCHAINZ/jingle/pull/111))

### Other

- exclude examples from crates.io ([#113](https://github.com/toolCHAINZ/jingle/pull/113))

## [0.3.4](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.3.3...jingle-v0.3.4) - 2025-10-23

### Added

- add cfg unwinding analysis and initial SMT modeling ([#107](https://github.com/toolCHAINZ/jingle/pull/107))

### Changed

- reduce location repetition in CPA ([#109](https://github.com/toolCHAINZ/jingle/pull/109))

### Fixed

- remove some unnecessary terms from models ([#110](https://github.com/toolCHAINZ/jingle/pull/110))
- unwinding error fix

## [0.3.3](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.3.2...jingle-v0.3.3) - 2025-09-26

### Other

- bump z3 ([#103](https://github.com/toolCHAINZ/jingle/pull/103))

## [0.3.2](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.3.1...jingle-v0.3.2) - 2025-09-19

### Changed

- rename PythonResolvedVarNode ([#101](https://github.com/toolCHAINZ/jingle/pull/101))

## [0.3.1](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.3.0...jingle-v0.3.1) - 2025-09-19

### Other

- Add some APIs ([#99](https://github.com/toolCHAINZ/jingle/pull/99))

## [0.3.0](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.2.7...jingle-v0.3.0) - 2025-09-19

### Changed

- [**breaking**] Remove unneeded traits and types ([#93](https://github.com/toolCHAINZ/jingle/pull/93))

## [0.2.7](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.2.6...jingle-v0.2.7) - 2025-09-17

### Added

- add bounded visitor analysis ([#77](https://github.com/toolCHAINZ/jingle/pull/77))

### Other

- bump pyo3 ([#92](https://github.com/toolCHAINZ/jingle/pull/92))

## [0.2.6](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.2.5...jingle-v0.2.6) - 2025-09-14

### Other

- bump z3

## [0.2.5](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.2.4...jingle-v0.2.5) - 2025-09-03

### Other

- bump z3 ([#88](https://github.com/toolCHAINZ/jingle/pull/88))

## [0.2.4](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.2.3...jingle-v0.2.4) - 2025-08-22

### Fixed

- python z3 lock tweaks ([#86](https://github.com/toolCHAINZ/jingle/pull/86))

## [0.2.3](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.2.2...jingle-v0.2.3) - 2025-08-21

### Other

- update z3 ([#84](https://github.com/toolCHAINZ/jingle/pull/84))

## [0.2.2](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.2.1...jingle-v0.2.2) - 2025-08-12

### Fixed

- consolidate one-off display types ([#81](https://github.com/toolCHAINZ/jingle/pull/81))

## [0.2.1](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.2.0...jingle-v0.2.1) - 2025-08-11

### Other

- update z3 ([#79](https://github.com/toolCHAINZ/jingle/pull/79))

## [0.2.0](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.1.4...jingle-v0.2.0) - 2025-08-06

### Added

- back edge analysis ([#76](https://github.com/toolCHAINZ/jingle/pull/76))
- add basic analysis ([#74](https://github.com/toolCHAINZ/jingle/pull/74))

### Other

- [**breaking**] bump z3 ([#78](https://github.com/toolCHAINZ/jingle/pull/78))

## [0.1.4](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.1.3...jingle-v0.1.4) - 2025-07-16

### Fixed

- remove faulty logic and deprecate old interfaces ([#72](https://github.com/toolCHAINZ/jingle/pull/72))

## [0.1.3](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.1.2...jingle-v0.1.3) - 2025-07-16

### Fixed

- conditional branch metadata bv size ([#70](https://github.com/toolCHAINZ/jingle/pull/70))

## [0.1.2](https://github.com/toolCHAINZ/jingle/compare/jingle-v0.1.1...jingle-v0.1.2) - 2025-07-10

### Other

- add release-plz ([#61](https://github.com/toolCHAINZ/jingle/pull/61))
- Use latest z3 ([#65](https://github.com/toolCHAINZ/jingle/pull/65))
- Add varnode covering logic ([#59](https://github.com/toolCHAINZ/jingle/pull/59))
- Concretization tweaks ([#56](https://github.com/toolCHAINZ/jingle/pull/56))
- Add method to get instructions from a block in python ([#55](https://github.com/toolCHAINZ/jingle/pull/55))
- Add Python Type Annotations ([#53](https://github.com/toolCHAINZ/jingle/pull/53))
- pub ctx
- Add some [Partial]Eq derives
- fmt
- Improved location concretization
- Extend Python Z3 Interop ([#51](https://github.com/toolCHAINZ/jingle/pull/51))
- Rust Edition 2024 ([#47](https://github.com/toolCHAINZ/jingle/pull/47))
- pub
- Add some methods
- fmt + clippy
- Add another display
- Add display => str
- More python varnode representation tweaks
- fmt + clippy
- Add iter impl
- Fix names
- Change iterator to not work specifically on BVs ([#50](https://github.com/toolCHAINZ/jingle/pull/50))
- Expose more structs ([#49](https://github.com/toolCHAINZ/jingle/pull/49))
- Python/Rust Conversion Trait ([#48](https://github.com/toolCHAINZ/jingle/pull/48))
- Change wrapping of pythong z3
- Pub instr
- Python refactor ([#46](https://github.com/toolCHAINZ/jingle/pull/46))
- Fill out more python APIs ([#43](https://github.com/toolCHAINZ/jingle/pull/43))
- Bump deps ([#42](https://github.com/toolCHAINZ/jingle/pull/42))
- Python Bindings ([#37](https://github.com/toolCHAINZ/jingle/pull/37))
- API Cleanup ([#35](https://github.com/toolCHAINZ/jingle/pull/35))
- Merge dev changes ([#31](https://github.com/toolCHAINZ/jingle/pull/31))
