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.
News
2017-06-29 - Terminal demo
Here is a small demo of a terminal using FontyFruity and Rasterific (and haskus-system
of course).
2017-06-10 - haskus-system-build
tool
The next release of haskus-system
will include a new tool: haskus-system-build
.
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.