haskus-system is a framework written in Haskell that can be used for system programming. The long-term aim is to provide a full Haskell user-space environment on top of the Linux kernel.
If you would like to contribute to this project, consider subscribing.
2017-06-29 - Terminal demo
Here is a small demo of a terminal using FontyFruity and Rasterific (and
haskus-system of course).
The next release of
haskus-system will include a new tool:
With this tool, you just have to describe your system (Linux version to use, init program, kernel parameters, etc.) in a
system.yaml file and the tool automatically downloads and builds everything (Linux kernel, ramdisk, etc.). It even launches QEMU with the appropriate options.
It can also start a new project from a template. Now the full “getting started” sequence is:
mkdir my-project cd my-project haskus-system-build init # init a new project from the default template haskus-system-build test # download and build everything, then launch QEMU
This is MUCH easier than having to perform everything manually. Please report any issue on the bugtracker.
In the same time, we have improved the documentation. It now covers the use of this new tool. Do not hesitate to provide feedback or to report errors.
2016-08-18 - First real boot (clock example)
This is the first time we boot a demo using
haskus-system (called ViperVM at the time) on a real computer (an old notebook). The demo displays a clock dynamically rendered with
Diagrams and its
Rasterific backend. It uses
haskus-system to directly access Linux’s DRM subsystem from Haskell.
2016-04-18 - Drawing and input
Demo showing a working environment tested with
QEMU. It uses the input system to detect mouse moves and clicks and the graphics system to render on the screen. The user-space code is 99% Haskell thanks to
haskus-system (called ViperVM at the time). The remaining 1% is GHC’s runtime system and its dependencies.
The yellowish background is "generated" directly; the ugly logo with an alpha shadow is read from a PNG image file with
JuicyPixels; the path and the cursor are generated with
Rasterific. The different elements are manually blended in the frame buffer.