ESC/Modula3 (Extended Static Checking) for D?
pragma
ericanderton at yahoo.com
Tue Sep 5 20:00:30 PDT 2006
Marcio wrote:
>
> Spec# http://research.microsoft.com/specsharp/ does extra checks
> (basically covers/solves the issues on slide 29 of
> http://www.cs.princeton.edu/~dpw/popl/06/Tim-POPL.ppt ) thanks to
> Simplify http://research.microsoft.com/specsharp/simplify.htm.
>
> Simplify is the beast behind it, from ESC/Modula3
> http://ftp.digital.com/pub/compaq/SRC/research-reports/abstracts/src-rr-159.html
>
>
> I would like to suggest that it would be great if the D compiler
> incorporated such an idea.
>
> Even Haskell people seem to be doing it
> http://lambda-the-ultimate.org/node/1689
I was curious, so I went looking for information. I found the following
a little more enlightening:
(From the digital.com site above)
"The paper describes a mechanical checker for software that catches many
common programming errors, in particular array index bounds errors, nil
dereference errors, and synchronization errors in multi-threaded
programs. The checking is performed at compile-time. The checker uses an
automatic theorem-prover to reason about the semantics of conditional
statements, loops, procedure and method calls, and exceptions. The
checker has been implemented for Modula-3. It has been applied to
thousands of lines of code, including mature systems code as well as
fresh untested code, and it has found a number of errors."
My $0.02:
In short, I don't think there's any need to wait for Walter to implement
this in DMD.
It would be one heck of an undertaking, but I honestly don't see why the
DMD frontend can't be put to task here. All it would take is someone
who really had a firm grasp of the concepts outlined in the paper and
used the frontend's parse-tree to perform the analysis. You'd then have
a separate tool that can grow and mature, apart from Walter's already
burdened schedule.
- Eric
More information about the Digitalmars-d
mailing list