Release Notes Abra Version 4.0.0 New Feature * [ABRA-934] - Java: Use Java 17 as minimum version * [ABRA-939] - .NET: .NET Framework 4.7.2 as minimum version * [ABRA-964] - Include AI friendly user guide * [ABRA-918] - xBRL-CSV: implement persistence layer for loading and validation * [ABRA-574] - .NET: Update OpenJDK 8 version * [ABRA-522] - Load reports from a single API - ReportReader * [ABRA-787] - .NET: adopt AccountSupport class * [ABRA-974] - Provide a source location on every OIM fact error * [ABRA-983] - OIM: fluent builder for reports in the column store * [ABRA-982] - OIM: write a FactCollection as xBRL-XML without a DOM * [ABRA-938] - Replace MD5 with MurmurHash3 128bit to hash the taxonomy id * [ABRA-792] - .NET: taxonomy view component Improvement * [ABRA-935] - Remove @deprecated or @Obsolete classes and methods * [ABRA-1020] - API: the taxonomy model * [ABRA-785] - .NET: Software Bill of Material (SBOM) * [ABRA-1015] - API: every conformance suite over the public API * [ABRA-1003] - OIM: faster xBRL-CSV loading * [ABRA-305] - Close all file handles on taxonomy's persistent dir * [ABRA-881] - xBRL-CSV: Improve error message for duplicates, one message per group * [ABRA-963] - .NET: Update IKVM to 8.16.1 (latest) * [ABRA-976] - Have table linkbase API consume FactCollection * [ABRA-972] - Make Visualization API consume FactCollection * [ABRA-973] - XBRL Instance validation API should also consume FactCollection * [ABRA-937] - Make createInstance() from Taxonomy class deprecated * [ABRA-991] - .NET: accept a FactCollection wherever Java does * [ABRA-954] - OIM: emit the correct location for xBRL Dimension errors on xBRL-CSV and xBRL-JSON * [ABRA-956] - xBRL-CSV: collect all xBRL Dimension errors not just one * [ABRA-943] - .NET: Add xBRL Formula assertion processor v2 API * [ABRA-940] - .NET: Add OimDocument implementation * [ABRA-941] - .NET: Add Report Package API * [ABRA-985] - Formula: XPath evaluation runs one at a time * [ABRA-788] - Improve filtering performance by combining all filtering criterias * [ABRA-775] - xBRL Formula: move IndexingInstructionsCollector function to compile() of a Filter * [ABRA-936] - Remove InstanceCollection from API * [ABRA-264] - .NET: improve API documentation * [ABRA-1010] - XLink: no URI cache of all documents per link * [ABRA-992] - Formula: less work per candidate fact * [ABRA-987] - Formula: and/or filter copies its subfilters per fact * [ABRA-1000] - API: one shape for the public API Bug * [ABRA-1029] - arcroleRef check fetches the DTS from the web and fails * [ABRA-1004] - Duplicate nil non-numeric facts crash instance validation * [ABRA-1002] - Formula: xfi instance functions fail on column-store facts * [ABRA-1028] - SAX DTS discovery overflows the stack on a large DTS * [ABRA-986] - Column store: fact index grows on every query miss * [ABRA-977] - Formula: matching filter matches no facts after one empty variable * [ABRA-975] - withKeepEndingZeros changes the shared transformation rule for the whole JVM * [ABRA-980] - Formula: typed dimension filter test ignored inside an or filter * [ABRA-979] - Formula: assertion errors written to a HashMap from several threads * [ABRA-981] - Formula: language aspect reported on every fact of an xBRL-XML report * [ABRA-978] - Formula: message template starting with { throws StringIndexOutOfBoundsException * [ABRA-988] - Formula: thread-locals keep the fact store alive