liberty-db
Highlight Features
- Support all
libertyattributes with typed datastructure, rather than syntax tree (AST) only, in the definition of Liberty Version R-2020.09, September 2020 - Support
libertyboolean expression syntax, employ binary decesion diagram (BDD) to identify (hashing) - Parser & formatter are implemented by static macros, providing a decent preformance and tiny ~3MB
parser & formatterbinary. See benchmark summary - Support
define define_groupuser-defined attributes - Verified with library-complier, well defined document, and examples provided
Usage
This library is implemented in Rust, with document.
[]
= "0.7"
You can run examples with commands:
# example0
cargo run --example 0_parse_fmt
# example1
cargo run --example 1_parse_fmt_file -- dev/tech/cases/ocv.lib
# example2
cargo run --example 2_prune_lib -- dev/tech/cases/ocv.lib
Benchmark
Basic information as follow, see latest benchmark summary.
Project Comparison
Self Regression
Dev
Run unit-test and regression.
cargo test
cargo test --package dev
Run benchmark, it will takes 5h.
cargo bench --bench dev
TODO
-
Reconstruction:
- parser to
GroupBuilder, e.g., useVecto storeGroupSet, no comment attribute - build/link
GroupBuildertoGroup, providing parent'sscope, e.g.- all
Pinname set to build BDD - supper group like
timing::TimingTableLookUp - check all rules
- all
- parser to
-
Parse:
OnlyVec<NotNan<f64>>andValuecomplex attributes need quotes vector, usefast_float2::parse_partialFix error whenmake_goldenintrinsic_parasiticgroupleakage_currentgroupdynamic_currentgroup
- async
- stream input
-
CI:
- only do comparsion after tag new version
- fast regression self in build.yml
-
Other:
- BDD use ArcStr
- Linked Group
- like IndexMap, only sort once and store
- bitcode support
-
Finished
userdefineremoveGroupWapper,ComplexWapper,SimpleWapper. At leaset remove it in parser and formatterfix missing newline at enddingrecursive parse boolean expressionmacrosformat tolibertysupport multi-line\support commentUseMutSetto store GroupMap