MyNixOS website logo
Description

Haskell compiler that produce binary through C language.

Ajhc is a fork of jhc. The jhc is a haskell compiler which aims to produce the most efficient programs possible via whole program analysis and other optimizations.

The jhc is very minimalist in that it does not have a precompiled run time system, but rather generates what is needed as part of the compilation process. However, back ends do have specific run-time representations of data, which can be affected by things like the choice of garbage collector.

Perhaps you can get internal overview with following compile flow image:

Ajhc - arafura-jhc

A fork of jhc. And also a Haskell compiler.

This project is founded by Metasepi Project.

Build Status

  • Build Status Ubuntu
  • Build Status Mac OS X

How to install

$ sudo apt-get install haskell-platform libncurses5-dev gcc m4 patch
$ cabal install drift
$ cabal install ajhc

How to build latest version

$ sudo apt-get install make locales autoconf drift \
  libconfig-yaml-perl graphviz haskell-platform cpphs pandoc hscolour po4a \
  libghc-temporary-dev libghc-haskeline-dev libghc-utf8-string-dev libghc-hssyck-dev \
  libghc-test-framework-th-dev libghc-test-framework-hunit-dev \
  libghc-test-framework-quickcheck2-dev libghc-uniplate-dev libgc-dev gcc valgrind
$ git clone git://github.com/ajhc/ajhc.git
$ cd ajhc
$ git checkout arafura
$ autoreconf -i
$ ./configure
$ make
$ make install

For developing

First, you should use the arafura branch, rather than master branch.

You should send patch to jhc, if testing on Ajhc is good.

$ darcs get http://repetae.net/repos/jhc
$ cd jhc/
$ patch -p1 < ~/yourfile.patch
$ darcs record -a
$ darcs send

The command darcs send sends email the patch to jhc author (= John Meacham).

Perhaps you can get internal overview with following compile flow image:

Future plan

  • Benchmark (speed, memory size, compare with eLua/mruby/.NET Micro Framework)
  • No more depend on Perl (LWP and YAML).
  • Port Haskell libraries on haskell-platform to Ajhc.
  • Understand jhc's region inference.
  • Play with Google Native Client. https://developers.google.com/native-client/
  • Write Linux kernel driver with Haskell.
  • Get smaller RTS. Benchmark the RTS for running on custom FPGA CPU.
  • Start rewritng NetBSD kernel with Ajhc.

License

Metadata

Version

0.8.0.10

Platforms (75)

    Darwin
    FreeBSD 13
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd13
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd13
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows