What is AsmL?

AsmL is the Abstract State Machine Language. The language was developed by the Foundations of Software Engineering (FSE) group at Microsoft Research. It is an executable specification language based on the theory of Abstract State Machines. This CodePlex project comprises an AsmL compiler that targets .NET code. The compiler was originally developed by the FSE group as well. In addition to the compiler itself, there is an add-in for Microsoft Word that facilitates literate programming.

What is AsmL good for?

AsmL is useful in any situation where you need a precise, non-ambiguous way to specify a computer system, either software or hardware. AsmL specifications are an ideal way for teams to communicate design decisions. Program managers, developers, and testers can all use an AsmL specification to achieve a single, unified understanding.
One of the greatest benefits of an AsmL specification is that you can execute it. That means it is useful before you commit yourself to coding the entire system. By exploring your design, you can answer the following questions: Does it do everything you intended it to? How do the features interact? Are there any unintended behaviors?

How do I get it?

  • You can download the Source Code, which contain a binary boot-compiler (i.e. the compiler that can build itself) called asmlc.boot.exe. Read these Compiling Instructions to learn how to build a new compiler yourself.
  • Or you can download just the executables from the Releases page.

How can I contribute?

  • Please write an email to Alexander to get added as a developer. Then you can submit source code and edit the wiki documentation, e.g. to add an example.


Last edited Jun 5, 2008 at 8:17 PM by araschke, version 13