Projects

MH: a microkernel for fun and experimenting!   page slides

Murgiahack (MH), is a microkernel system aimed at quick experimenting with real and virtual hardware. See the talks page for talks and presentations about the project.

LAC: a LISP dialect and interpreter   site git

LAC is a LISP dialect with single namespace, macros and lexical scoping. LISP1.5 is taken as a reference for the system library. Its interpreter, written in C, is designed to be easily extendible and portable. New types and native functions can be defined. Effort has been made to easily define new ways of representing the cons cells in input and output. A probable outcome of this will be the ability to program LAC using m-expressions.

VLVM: a garbage collected runtime library   github

VLVM is a highly customizable typed garbage-collected VM runtime. It started as an experiment to change a portable slab allocator I wrote many years ago into a garbage collector. The result is very similar, if not identical, to a mark-and-sweep GC with a Boehm-Demers-Weiser lazy sweeper. It is highly customizable, and properly interfaced can be used in multi-threaded systems.
The GC is wrapped by a customizable VM runtime, that let you configure the register bank (zero for pure stack machine) and the types of the system. A type is usually defined by a size and a name (to configure the slab allocator), but for root types you also have to define a sweep function.
This has been a week-end programming session. Documentation is lacking.

ML/I-LLVM: ML/I for the (early) 21st century   github

This is a port of ML/I, the general purpose macro processor, to modern architectures, by the means of LLVM.
ML/I has a really interesting implementation technique. This is a LOWL-map to the LLVM assembler.

HackTM: a HTM C++ library   github

This library implements the Numenta's Hyerarchical Temporal Memory algorithm, as described by a company's whitepaper.
The actual Numenta implementation, NuPIC, is now open source, making this library interesting but not too useful.