SPARTA is a library of software components specially designed for building high-performance static analyzers based on the theory of Abstract Interpretation.
by facebookC++
Last 12 weeks Β· 6 commits
4 of 6 standards met
Summary Upgrade GitHub Actions to their latest versions to ensure compatibility with Node 24, as Node 20 will reach end-of-life in April 2026. Changes Context Per GitHub's announcement, Node 20 is being deprecated and runners will begin using Node 24 by default starting March 4th, 2026. Why this matters Node 20 EOL: April 2026 Node 24 default: March 4th, 2026 Action**: Update to latest action versions that support Node 24 Security Note Actions that were previously pinned to commit SHAs remain pinned to SHAs (updated to the latest release SHA) to maintain the security benefits of immutable references. Testing These changes only affect CI/CD workflow configurations and should not impact application functionality. The workflows should be tested by running them on a branch before merging.
Repository: facebook/SPARTA. Description: SPARTA is a library of software components specially designed for building high-performance static analyzers based on the theory of Abstract Interpretation. Stars: 666, Forks: 55. Primary language: C++. Languages: C++ (79.2%), Rust (19.9%), CMake (0.8%), Shell (0.1%). License: MIT. Open PRs: 1, open issues: 2. Last activity: 1mo ago. Community health: 75%. Top contributors: arthaud, yuxuanchen1997, NTillmann, ssj933, agampe, arnaudvenet, int3, zertosh, thezhangwei, skkeem and others.
When using , the resulting abstract domain's "top" is not an identity element of "meet" and the resulting abstract domain's "bottom" is not an identity element of "join". This is described in more detail in #25. This PR proposes adding tests and changing the proc macro so that these tests pass. Depends on #26 (I'll re-base once that one is merged).
The "bottom" element of a Lattice is the identity element of the "join" operation. The "top" element of a Lattice is the identity element of the "meet" operation. But when using the macro, I can create elements for which and . Reproducible Example These tests should pass: but they fail with the following error message: Solution replace https://github.com/facebook/SPARTA/blob/bd758a81954dc2c8fe75c8b32ab42d327fc4d895/rust-proc-macros/src/lib.rs#L87-L99 with
"Files in subdirectories of the tests directory donβt get compiled as separate crates or have sections in the test output.", so the test is not run by the rust workflow. These changes move to and add s to avoid warnings generated by this test. The rust workflow should show some additional test results: