## Desbordante/desbordante-core — v2.2.1…v2.3.0

_153+ commits._

### Features
- **Add missing FastADC paper link to READMEs** (db2c1ee)
- **Add macOS wheels to cibuildwheel workflow.** (8ae77f4)
- **Add macOS-GCC CI configuration** (b229fe3)
- **Add `export CC=...` in LLVM Clang python-bindings tests** (39a37a5)
- **Add Clang tests to CI** (b2b4f6c)
- **Add Denial Constraints mining to README and README_PYPI** (1ef9f7e)
- **Add example of ADC mining** (6bf4735)
- **Add FastADC python bindings** (7d1a1b5)
- **Add missing braces around if-else** (3c21d2b)
- **Add inline to operator& and &= in aei.h to avoid violating ODR** (bfed4da)
- **Add TODO comments for classes that are both used for DC mining and verification** (309af6b)
- **Move Initizlize*Map in Operator to private section and add alias for map** (d375796)
- **Add DependentFalse to namespace::details** (33ddf4f)
- **Add missing cvs file for DC mining testing** (6fdfcdd)
- **Move cardinality mask building from Evidence set to a new structure** (b218a2a)
- **Add test that validates predicate organizer** (23c9880)
- **Add type alias for bitset holding predicates** (f2db361)
- **Add test to verify evidence set** (58a162d)
- **Add test that verifies CardinalityMask** (7426ac1)
- **Add initial EvidenceSetBuilder class that builds cardinality mask** (cdfb7c0)
- **Add an ability to force kString type on TypedColumnData instead of kMixed** (8e592a3)
- **Add test that checks ClueSet building** (4474c5d)
- **Add test that checks static fields of CommonClueSetBuilder** (cab851f)
- **Add FastADC spring 2024 paper** (a54bad1)
- **Add DES to readme** (5ef5b06)
- **Add DES python example** (df03410)
- **Add DES python bindings** (16fe1c0)
- **Add ToString() and getters to DES subclasses** (be03e2e)
- **Add indices for tuple pairs** (bfe194a)
- **Add custom PLI** (29e18fb)
- **Add EulerFD algorithm and custom_random option in python bindings** (31ff001)
- **Implement the algorithm according to the EulerFD article, add option for set random strategy and seed (it will be necessary for writing tests)** (f05cc0f)
- **Add papers** (bafeb2a)
- **Add DES tests** (423ced6)
- **Add differential evolution solver (DES)** (7b1af0d)
- **Add infrastructure deployment paper** (eab1328)
- **Add option checks** (2834a20)
- **Add missing includes** (aa66bc8)
- **Add test for double comparison** (97def60)
- **Add double comparison with epsilon** (1f76de6)

### Fixes
- **Fix issues addressed in pr** (d522641)
- **Fix clang-format header recommendtaion** (f8b8ac0)
- **Fix wrong creating of inverted predicate, operands were swapped** (a297852)
- **HyFD-multithread: fix MaxLHS option** (d56f3e1)
- **Fix some code style issues and add draft examples of using EulerFD** (030b099)
- **Fix CMakeLists.txt and refactor .gitignore** (3fa1249)
- **Fix dependencies installation guide** (66d2a8c)
- **Fix ResetState method** (c936a15)

### Backend
- **Update pyproject.toml** (45f943e)
- **Refactor CI** (079b620)
- **Use direct-list-initialization instead of aggregate initialization** (bf00edc)
- **Use "stable" variants of features** (c8f407d)
- **Get rid of GCC intrinsics** (92c10a8)
- **Update "build" section of README** (e82bc16)
- **Make Clang and it's sanitizers happy** (817e519)
- **Update build.sh and CMakeLists.txt to build with Clang** (6e20388)
- **Apply clang-format** (f09f73f)
- **Use copy-and-swap idiom in PliShard** (1a836f8)
- **Use CompareResult in DenialConstrainSet** (8842e2d)
- **Refactor NTreeSearch** (462d891)
- **Split TransitivityStep method with helper methods in Closure** (143d114)
- **Use full names in includes** (d6f5369)
- **Use frozen::unordered_map in Operator class** (01461da)
- **Some fixes addressed in pull request** (2763979)
- **Bring back missing tmp_dc.cvs and rename it appropriately** (9cf0023)
- **Correct clang-format issues** (382ab30)
- **Implement FastADC algorithm as a class derived from Algorithm** (6c3cc45)
- **Make CompareBitsets a static method of DenialConstraintSet** (0f07a11)
- **Move BuildClueSet implementation to cpp file** (0670ffa)
- **Split variable definitions into several lines** (e111860)
- **Get rid of try-catch in clue builder by adding a helper function to check first** (0ee48e8)
- **Remove shared_ptrs in aei.h and simplify Hit method** (f0007f6)
- **Don't capture all variables by references in aei.h** (c485bd3)
- **Make GetIndex in IndexProvider accept references** (3f0be7f)
- **Do not explicitly delete PredicateSet constructor** (44fefc0)
- **Make PliShard fields private** (22a1968)
- **Use emplace back where needed** (707917e)
- **Use default == and != operators from Operator** (a037295)
- **Define operator!= of DenialConstraint** (781e80b)
- **Remove unnecessary assert, predicate_index_provider can't be null there anyway** (ffc6065)
- **Apply clang-format after header changes** (9d98fa6)
- **Don't use relative paths in inlcudes** (5851e96)
- **Apply IWYU to src/core/algorithms/dc/FastADC** (5b8ca61)
- **Use BetterEnum instead of bool to indicate tuple in ColumnOperand** (5d726f2)
- **No need to define hash_value, declaration is enough to use boost::hash_combine** (a8059aa)
- **Do not reopen namespace std when specializing std::hash** (22821b7)
- **To mimic Java's behavior, return 0.0 when avg1=avg2=0 in GetAverageRatio** (c41b382)
- **Capture only coverages instead of everything in labda** (d71c89b)
- **Rename GetInverse/MutexMap to Take since we're moving them** (1569c25)
- **NTreeSearch() = default Not needed** (e5fa445)
- **Do not use std::initializer_list to store anything, replace with constexpr arrays** (7cada7f)
- **Don't define several variables on the same line** (d557cd0)
- **Remove redundant static variables** (20fd7ad)
- **Remove inline from template functions** (76162aa)
- **Change predicate bitset size from 64 to 128** (103cbdb)
- **Optimize clues by moving allocations out of Build* methods** (49ae941)
- **Increase performance of AccumulateClues by preallocating and utilizing try_emplace** (e67bb61)
- **Optimize AccumulateClues by hashing clue with zero value** (07df631)
- **Remove unused N field from SearchNode class** (42acf7c)
- **Remove unused clue field from Evidence class** (1874647)
- **Extract predicate packs and correction map building to a separate class** (c36519f)
- **Adjust unittests after providers refactoring** (abe987b)
- **Refactor providers* structures** (3d1d4bd)
- **Correct includes paths after renaming and moving FastADC files** (6553134)
- **Split FastADC files into subfolders** (49d1393)
- **Change namespace model to namespace algos::fastadc for FastADC files** (c234b57)
- **Implement test for approximate denial constraints** (0e1bf7d)
- **Implement ApproximateEvidenceInverter class** (28a6726)
- **Implement DenialConstraintSet** (5a70c9e)
- **Implement NTreeSearch class** (25bdcee)
- **Implement Closure class** (f7a92ae)
- **Return reference from GetImplications Predicate method** (a62a12f)
- **Implement DenialConstraint class** (d20b5b2)
- **Implement PredicateSet class** (69b5bb2)
- **Implement DCCandidateTrie class** (efced50)
- **Implement PredicateOrganizer class** (608c665)
- **Implement EvidenceSetBuilder** (2be67a3)
- **Implement EvidenceSet** (e94dd17)
- **Implement Evidence** (ef0122a)
- **Implement ClueSetBuilder** (2cb003f)
- **Implement CrossClueSetBuilder** (d254c46)
- **Implement SingleClueSetBuilder** (1be4ad5)
- **Implement CommonClueSetBuilder** (4e92cc2)
- **Implement Pli and PliShardBuilder** (9394575)
- **Implement tests for predicate space building** (7c1dda4)
- **Implement PrediateBuilder class** (7059a56)
- **Implement functions to get similarities metrics between two columns** (4f2649c)
- **Implement IndexProvider class** (daad4ac)
- **Implement method to get value from TypedColumnData** (e37beb6)
- **Initial commit that adds dc folder and placeholder for dc.h** (37f5c50)
- **Replace int with int64_t in Predicate class** (3010173)
- **Multi-threaded implementation of HyFD algorithm** (00910d6)
- **Use v.empty() instead of !v.size()** (31b0216)
- **Reduce distances_ size** (f604f87)
- **Optimize tuple pair construction** (a2f94f1)
- **Move type check** (b73d85f)
- **Refactor examples of EulerFD using** (1f4bcbd)
- **Refactor custom random seed option** (a4296a2)
- **Create test cases for approximate fd discovering algortihms. Use custom random from utilities. Check EulerFD in these test cases : calculating answer of algorithm in custom seed** (7ba9abe)
- **Use insert instead of for loop** (e061cff)
- **Remove redundant field 'has_dif_table_'** (cfd8f34)
- **Use `front` instead of `begin`** (61bb0ba)
- **Ignore columns with empty search space** (7b5db49)
- **Change test** (e009266)
- **Rewrite InstanceExclusionReduce** (5fb0f69)
- **Move IsFeasible check to reduce phase** (6fcbf68)
- **Change log messages** (f393c13)
- **Remove redundant copying** (b92885a)
- **Improve double value parsing from difference table** (b8ec999)
- **Make simple getting string from difference table** (9afcf01)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/Desbordante/desbordante-core?utm_source=github-action)._