Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sdiehl/kaleidoscope
Haskell LLVM JIT Compiler Tutorial
https://github.com/sdiehl/kaleidoscope
compiler haskell kaleidoscope llvm-bindings llvm-tutorial tutorial
Last synced: about 12 hours ago
JSON representation
Haskell LLVM JIT Compiler Tutorial
- Host: GitHub
- URL: https://github.com/sdiehl/kaleidoscope
- Owner: sdiehl
- License: other
- Created: 2013-12-28T05:12:52.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2020-04-21T09:09:58.000Z (almost 5 years ago)
- Last Synced: 2025-01-18T10:03:58.050Z (8 days ago)
- Topics: compiler, haskell, kaleidoscope, llvm-bindings, llvm-tutorial, tutorial
- Language: Haskell
- Homepage: http://www.stephendiehl.com/llvm
- Size: 519 KB
- Stars: 1,036
- Watchers: 38
- Forks: 131
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE-LLVM
Awesome Lists containing this project
- my-awesome - sdiehl/kaleidoscope - bindings,llvm-tutorial,tutorial pushed_at:2020-04 star:1.0k fork:0.1k Haskell LLVM JIT Compiler Tutorial (Haskell)
README
A short guide to building a tiny programming language in Haskell with LLVM.Haskell LLVM Tutorial
=====================[![Build Status](https://travis-ci.org/sdiehl/kaleidoscope.svg)](https://travis-ci.org/sdiehl/kaleidoscope)
[![MIT License](http://img.shields.io/badge/license-mit-blue.svg)](https://github.com/sdiehl/kaleidoscope/blob/master/LICENSE-MIT)Read Online:
* [**HTML**](http://www.stephendiehl.com/llvm)
* [**PDF**](http://www.stephendiehl.com/llvm/tutorial.pdf)
* [**Source Code**](https://github.com/llvm-hs/llvm-hs-kaleidoscope)
* [**Condensed Code**](https://github.com/llvm-hs/llvm-hs-kaleidoscope)Setup
-----You will need GHC 7.8 or newer as well as LLVM 4.0. For information on installing LLVM 4.0 (not 3.9 or earlier)
on your platform of choice, take a look at the
[instructions posted by the llvm-hs maintainers](https://github.com/llvm-hs/llvm-hs/blob/llvm-4/README.md#installing-llvm).With Haskell and LLVM in place, you can use either Stack or Cabal to install the necessary Haskell
bindings and compile the source code from each chapter.### Building with Stack (Recommended)
```bash
$ stack build
```You can then run the source code from each chapter (starting with chapter 2) as follows:
```bash
$ stack exec chapter2
```### Building with Cabal
Ensure that ``llvm-config`` is on your ``$PATH``, then run:
```bash
$ cabal sandbox init
$ cabal configure
$ cabal install --only-dependencies
```Then to run the source code from each chapter (e.g. chapter 2):
```bash
$ cabal run chapter2
```### Building with make
The source code for the example compiler of each chapter is included in the ``/src`` folder. With the dependencies
installed globally, these can be built using the Makefile at the root level:```bash
$ make chapter2
$ make chapter6
```A smaller version of the code without the parser frontend can be found in the
[llvm-tutorial-standalone](https://github.com/sdiehl/llvm-tutorial-standalone)
repository. The LLVM code generation technique is identical.Editing
-------This is an open source project, patches and corrections always welcome.
To generate the HTML page:
```bash
$ make tutorial.html
```A standalone PDF can also be generated with:
```bash
$ make tutorial.pdf
```License
-------Text is adapted from the LLVM tutorial and is subsequently licensed under the
LLVM license.The Haskell source files are released under the MIT license. Copyright (c)
2013-2016, Stephen Diehl