Replies: 3 comments 2 replies
-
Easiest is to run /usr/bin/time -v on the integration test suite. That should tease out performance improvements/regressions. As long as an example of each new feature is in the integration test suite it should be easy to diff between commits. |
Beta Was this translation helpful? Give feedback.
-
regarding sequences and ADT. This was a feature request from a user group. |
Beta Was this translation helpful? Give feedback.
-
About this discussion and #6092, just wanted to say THANKS @NikolajBjorner. I was a little out of the loop with updating our solver version (we are working mostly on product and environments right now) but now that i had some time to geek into what changed with Z3: i am simply blown away by how cooler the changelog got. Hope to do an update of our solver soon and give you some feedback on how it went! |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I think the Z3 project could benefit from better documentation. Making changes discoverable to the user.
We try to stay up to date with Z3 versions to benefit from not just all the bug fixes and performance improvements but also to use new features if we see that we can. So i am literally looking through every commit, issue and discussion with every update that might went into a release.
There are a few things missing for me that would help, a lot:
a. Doing better commit messages that describe what changed, why a change is happening and why I as a user should care.
Every release has a list of commits that went in e.g. https://github.com/Z3Prover/z3/releases/tag/z3-4.8.17 However, most of them are usually not well described. The "what" a commit does is not often that clear, e.g. 98e1c86 is easy but 9cc5f69 starts to get trickier, both use "na" as a commit subject. Others have better messages such as d1f1e4c but it requires one to either dig deep or be familiar with a lot of topics. I am reading lots of papers, know a bit of the Z3 code as well as other SAT and SMT solvers, but to be honest, i still cannot make sense out of all changes that are happening.
b. Adding tests for changes.
Even if one does not understand what a change does, an automated test gives you a great documentation. https://github.com/Z3Prover/z3test exists and i learned a lot from that repository (might be a also worth nothing this repository in the README) but it is not updated with every change, it is hardly updated at all. To be honest i do not even understand when or why it is updated, since it suffers the commit message problem as well.
c. Adding documentation to changes
There are release notes with every release https://github.com/Z3Prover/z3/blob/master/RELEASE_NOTES but they make it hard to follow as a user what changed and how one can use it. E.g. for 4.8.17 i was exited to read
initial support for nested algebraic datatypes with sequences
but since there is no reference or example i again have to go back to reading commits. I think this is the only commit related to that change 81d97a8, but i cannot be sure. Reading through the code i got less excited and i thought "this is not the way". Adding a little documentation that Z3 now supports X and just one example as a documentation would have helped here.I hope these explanations make sense. Z3 is a great project. Even though i lost many hairs using it, i still think it is easy to use and integrate. Z3 also has a ton of features and more are added with every release. However, i think it would be really worth it for all users and new users to add some more documentation during the implementation and fixing of bugs.
Beta Was this translation helpful? Give feedback.
All reactions