Articles

Verification with Data from Untrusted Sources

Recently, I was listening to the latest edition of the Illegal Argument podcast, and it turns out they were discussing Whiley! (about 103:16 minutes in). The discussion was about how verification interacts with data from an untrusted source (e.g. from a database, network connection, etc). In particular, whether or not we can safely feed . . . → Read More: Verification with Data from Untrusted Sources

Whiley v0.3.31 Released!

The latest release is upon us, after a short break whilst I was holidaying in Europe!  This includes a few simple bug fixes and updates (see #433 and #392), along with one significant feature:

Improved Context Information for Verification Errors (#435).  When a verification error occurred, it was often difficult to tell which part . . . → Read More: Whiley v0.3.31 Released!

Whiley v0.3.30 Released!

The next release of Whiley is now ready to be downloaded.  This includes a small number of bug fixes and two more significant changes:

#418 — Removal of implicit coercions.  This has some consequences for how you write Whiley programs, and there are probably some follow-on changes needed. #427 — Improved disambiguation of cast . . . → Read More: Whiley v0.3.30 Released!

A Story of Cast Expressions

Issue #427 “Bug with Dereferencing Array Types” seemed like just another bug.  Submitted by a user last week (@Matt–), I didn’t think too much of it.  But, as sometimes happens, appearances can be deceiving.  In this case, the bug identified a flaw in the syntax of Whiley with respect to the treatment of cast . . . → Read More: A Story of Cast Expressions

Whiley v0.3.29 Released!

The next release of Whiley is now ready to be downloaded.  This includes a number of bug fixes, along with a change in the WyIL bytecode format.  The latter is ahead of further planned changes to improve the bytecode format and verification.  The list of changes is:

#423 — Bug fix related to parsing . . . → Read More: Whiley v0.3.29 Released!

Introducing the Whiley Cheat Sheet!

Recently, I created a Whiley Cheat Sheet for use in our SWEN224 course and I thought it was useful enough to share! The goal of the cheat sheet is to provide some simple examples to help you get going, rather than provide a comprehensive reference. I tried to cram as much as I could . . . → Read More: Introducing the Whiley Cheat Sheet!

Whiley v0.3.28 Released!

The next release of Whiley is already upon us, after only a week or so since the last.  This release consists of a slew of minor bug fixes, many of which have been discovered through students using the system in practice.  The main items are:

Problem Generating JVM Bytecode (#415).  This related to compiling . . . → Read More: Whiley v0.3.28 Released!

Whiley v0.3.27 Released!

The next release of Whiley is upon us.  This includes a large number of bug fixes, and a significant rewrite of the verifier.  Unfortunately, the verifier is not yet verifying many more examples, but it’s now placed to do so.  Specifically, the main highlights are:

Better Support for Contractive Types.  Contractive types are those . . . → Read More: Whiley v0.3.27 Released!

Whiley v0.3.26 Released!

It’s about time for another release of Whiley.  This represents some interesting developments, though I continue to struggle with debugging and improving verification.  The main highlights for this release are:

Improved wyal file parser.  This is responsible for parsing wyal files and feeding them into the code generator.  Previously, the parser was very simplistic, . . . → Read More: Whiley v0.3.26 Released!

Loop Variant Relations

Proving that a loop always terminates is a common requirement when verifying software. The usual approach to doing this is to provide a loop variant function. This is typically an integer expression which decreases on every iteration of the loop. Consider the following loop:

function contains([int] items, int item) => bool: int i = . . . → Read More: Loop Variant Relations