The HToolkit package is divided in two libraries: GIO and Port. The Port library is a low level interface and it is not intended to be used for development. Port includes modules written in C and FFI for them written in Haskell. GIO is a high level API intended for application development. The HToolkit is divided in high and low level in order to allow development of experimental high level interfaces without sacrifice of low level API.

The middle-level library is designed under the following constraints:

The low-level GUI library, Port, should be:

Currently, the Port library is just a thin marshalling layer upon a portable C-interface, with a C implementation for GTK and Windows. As such, the library may be of interest for other programming languages as well.

As we known the only other cross platform libraries that uses native controls are wxWindows for C++ and SWT for Java. The main differences between them and HToolkit are: