Posted
almost 11 years
ago
by
Dave
The Whiley programming language uses union types as a way of combining types together. Here’s a simple example to illustrate: null|int indexOf(string str, char c): for i in 0..|str|: if str[i] == c: return i // found a match // didn't find a match
|
Posted
almost 11 years
ago
by
Dave
As the Whiley compiler continues to evolve, certain aspects of its architecture are really starting to mature. One of the more recent pieces to take shape is the verification pipeline. This is the process by which a Whiley file is converted into a
|
Posted
almost 11 years
ago
by
Dave
A few weeks ago, I was in Melbourne attending the Australasian Software Engineering Conference and, whilst I was there, I gave a talk on Whiley at the Melbourne Java Users Group. Well, here’s the talk … You can also get the slides from here!
|
Posted
about 11 years
ago
by
Dave
Today, more then ever before, I/O dominates what software is about. Of course, it’s always been important but, with increasing bandwidths, I/O seems to be what most programs now spend most of their time doing. This leads to interesting questions
|
Posted
about 11 years
ago
by
Dave
It is with some disappointment that I’ve finally decided to release v0.3.19 despite this being almost 3 months overdue! The disappointment arises because, despite a lot of valiant effort, verification is still not working very well — and, in fact
|
Posted
about 11 years
ago
by
Dave
An important component of the Whiley language is the use of recursive data types. Whilst these are similar to the algebraic data types found in languages like Haskell, they are also more powerful since Whiley employs a structural type system. So
|
Posted
about 11 years
ago
by
Dave
A surprisingly common question people ask me when I talk about compile-time checking of pre-/post-conditions and invariants is: how do you deal with I/O? To understand what the difficulty is, let’s consider a simple example in Whiley: define nat as
|
Posted
over 11 years
ago
by
Dave
In this article, I’ll look at a common problem one encounters when verifying programs: namely, writing loop invariants. In short, a loop invariant is a property of the loop which: holds on entry to the loop; holds after the loop body is executed;
|
Posted
over 11 years
ago
by
Dave
I was having an interesting discussion with a colleague today about various aspects of Whiley, and we came up with an interesting bit of example code which is something of a puzzler. Consider these two different versions of a function f(any): Version 1: int f(any x): if x is string: return g(x) else: return . . . → Read More: Whiley Puzzler #1
|
Posted
over 11 years
ago
by
Dave
The next version of Whiley is upon us! This consists of mostly lightweight improvements over v0.3.17 and various bug fixes (see issues for more). I have now been attempting to verify some of the microbenchmarks in Wybench, with some useful progress
|