Add PPX derivers for lattices of tuple and record types#1095
Conversation
|
At the Gobcon today you mentioned that there could be another attempt at this by you on this, that would be easier to maintain. Could you have a look, whether this indeed exists? |
This task is |
One of the biggest improvements (2× in time) is on In others, e.g. |
CHANGES: Functionally equivalent to Goblint in SV-COMP 2025. * Add 32bit vs 64bit architecture support (goblint/analyzer#54, goblint/analyzer#1574). * Add per-function context gas analysis (goblint/analyzer#1569, goblint/analyzer#1570, goblint/analyzer#1598). * Adapt automatic static loop unrolling (goblint/analyzer#1516, goblint/analyzer#1582, goblint/analyzer#1583, goblint/analyzer#1584, goblint/analyzer#1590, goblint/analyzer#1595, goblint/analyzer#1599). * Adapt automatic configuration tuning (goblint/analyzer#1450, goblint/analyzer#1612, goblint/analyzer#1181, goblint/analyzer#1604). * Simplify non-relational integer invariants in witnesses (goblint/analyzer#1517). * Fix excessive hash collisions (goblint/analyzer#1594, goblint/analyzer#1602). * Clean up various code (goblint/analyzer#1095, goblint/analyzer#1523, goblint/analyzer#1554, goblint/analyzer#1575, goblint/analyzer#1588, goblint/analyzer#1597, goblint/analyzer#1614).

This implements a big portion of #31 using my experimental ppx_easy_deriving library (EDIT: Necessary parts are now just vendored here for simplicity). The goal of the library is to provide a simpler ppx_type_directed_value-like interface with no performance penalty.
It is a revival of my two-year-old
ppx-latticebranch in more polished state.This PR changes record-valued domains to use
[@@deriving lattice]and also changes the implementation ofLattice.Prodto do so. Over time, the amount ofLattice.Produsage could be reduced by using records with meaningful field names instead.TODO
Publish ppx_easy_deriving on opam.Vendored.Fix opam pin in CI.Vendored.DeriveNeedspretty_diff.leqto definepretty_diff.