Sparse - a Semantic Parser for C
Sparse, the semantic parser, provides a compiler frontend capable of parsing most of ANSI C as well as many GCC extensions, and a collection of sample compiler backends, including a static analyzer also called "sparse". Sparse provides a set of annotations designed to convey semantic information about types, such as what address space pointers point to, or what locks a function acquires or releases.
Linus Torvalds started writing Sparse in 2003, initially targeting issues such as mixing pointers to user address space and pointers to kernel address space.
Josh Triplett maintained Sparse 2006~2009. As of 2009, Christopher Li is the current maintainer of Sparse.
- April 30, 2018 Sparse 0.5.2 released
- August 18, 2017 Sparse 0.5.1 released
- April 1, 2014: Sparse 0.5.0 released
- May 9, 2013: Sparse 0.4.5-rc1 released
- November 25, 2011: Sparse 0.4.4 released
- November 2, 2014: Sparse 0.4.3 released
- Oct 16, 2009: Sparse 0.4.2 released
- Nov 13, 2007: Sparse 0.4.1 released
- Sep 15, 2007: Sparse 0.4 released
- May 1, 2007: Sparse 0.3 released
- Dec 5, 2006: Sparse 0.2 released
- Nov 6,2006: Sparse 0.1 released
You can find released versions of sparse at http://www.kernel.org/pub/software/devel/sparse/dist/
Obtaining sparse via Git
Sparse uses the Git version control system. You can obtain the most recent version of sparse directly from the Git repository with the command:
git clone git://git.kernel.org/pub/scm/devel/sparse/sparse.git
Dave Jones provides daily snapshot tarballs of the Git repository at http://www.codemonkey.org.uk/projects/git-snapshots/sparse/. The URL http://www.codemonkey.org.uk/projects/git-snapshots/sparse/sparse-latest.tar.gz will always get you the latest such snapshot.
You can also browse the Git repository via gitweb.
Discussion about sparse occurs on the sparse mailing list, firstname.lastname@example.org. To subscribe to the list, send an email with subscribe linux-sparse in the body to email@example.com. You can browse the list archives at http://marc.theaimsgroup.com/?l=linux-sparse, or via the Gmane group gmane.comp.parsers.sparse.