Skip to content
This repository has been archived by the owner on Mar 10, 2020. It is now read-only.
ArthurClune edited this page Jan 17, 2013 · 19 revisions

The Haskell Lightweight Virtual Machine (or, informally, the HaLVM) is a port of the GHC runtime system for Haskell to barebones Xen. This means that Haskell programs written for the HaLVM run natively on Xen, without any intervening operating system, which allows them to boot quickly and use very little space.

The HaLVM is released under a non-restrictive BSD3 license. If you are using the HaLVM for something in your work, please email us at halvm@galois.com! We would very much love to hear about it.

Latest News

  • July 25th, 2012: Switch to GitHub largely complete, including the wiki. Yay!
  • Mar 29th, 2012: WARNING WARNING WARNING The HaLVM repository is in the process of MOVING. We will keep the one on code.galois.com up for as long as possible, but be prepared for downtimes and outages. We apologize for any problems you may experience.
  • Mar 15th, 2012: HaLVM now supports 64-bit execution, runs fine on stock Fedora 16. Yay! Please see the download and install information for further information on the Download and Install page.
  • Nov 30th, 2010: Initial release of the HaLVM

Why did you build the HaLVM?

Galois began development of this technology in 2006, as a mechanism by which to prototype basic operating system structures and test their behavior. Since that time, we have used it internally in several different projects to explore interesting design spaces in that area. Because HaLVMs run directly on Xen, there is no artificial kernel-land / user-land barrier imposed by an intervening OS when writing very low-level code. On the other hand, because Haskell is such a high-level language, refactoring multiple components into a single component (or ''vice versa''!) is simple and easy.

How to I get the HaLVM?

Please see the README file associated with the HaLVM. You can see it (and the HaLVM repository) by going to the GitHub main page.

Please consider signing up on the halvm-devel mailing list.

What do I do with it? What can I do with it?

Whatever you want, really. We started out using it as a platform for playing around with operating system design, and then later started thinking about how to use it for network services. Perhaps you want to write a cool network appliance for your company. Perhaps a tiny random number server for your company? Perhaps an interesting and complicated web service? Possibly even a little interpreter for doing cool things. All these are possible, and more.

The HaLVM comes with an array of examples and test cases, located in the static-bits/examples directory of the main HaLVM tree. These may be a good place to start. In addition, we recommend checking out the library documentation for the HaLVM-specific libraries.

Finally, we strongly recommend you at least flip on the verbose option for your hypervisor, as described in the section SupportedSystems. This makes debugging much easier.

How mature is the HaLVM?

Prior to this release of the HaLVM, the bulk of its testing has come through using it to prototype lightweight Xen domains, coupled with a somewhat substantial test suite. Bear in mind that there are many possible variables in these kinds of systems, and our testing has necessarily been quite specific. Thus, it is possible, if not likely, that you will hit an edge case of the HaLVM or a combination of tools that will not work for you.

We use Fedora 16 and 17 almost exclusively for HaLVM development, with more of us using Fedora 17 as time goes on. If you want to know what the best-supported platform is, there you go. Other platforms, such as Ubuntu, take us longer to get back to you about.

Please see the wiki page SupportedSystems for more information.

If you would like to report a problem you have found, please file a bug report using the issue list associated with this GitHub tree. You will want to [sign up for the mailing list](http://community.galois.com/mailman/listinfo/halvm-devel sign up for the mailing list) first, of course.

How can I get involved?

We are always looking for ways to improve the HaLVM, either through new features or bug fixes. If you would like to get involved, feel free to grab your own fork of the HaLVM and get going! We are always looking for new developers interested in pushing the state of the HaLVM. In general, we're very open regarding new features or bug fixes, however please follow these simple guidelines:

  • Do not use tab characters unless you are forced to by the file format.
  • Unless the rest of the file completely and obviously ignores this rule, please keep your line lengths to 80 characters or less.
  • We'd greatly appreciate it if you tried your patch from a clean build (either a fresh checkout of your fork or after a make mrproper) before sending it to us.