2014-09-30 16:31:48 +04:00
# Idris
[![Build Status ](https://travis-ci.org/idris-lang/Idris-dev.svg?branch=master )](https://travis-ci.org/idris-lang/Idris-dev)
2015-03-20 13:31:10 +03:00
[![Documentation Status ](https://readthedocs.org/projects/idris/badge/?version=latest )](https://readthedocs.org/projects/idris/?badge=latest)
2014-09-30 16:33:04 +04:00
[![Hackage ](https://budueba.com/hackage/idris )](https://hackage.haskell.org/package/idris)
2014-09-30 16:31:48 +04:00
Idris (http://idris-lang.org/) is a general-purpose functional programming
2011-11-07 04:15:08 +04:00
language with dependent types.
2014-12-18 18:43:44 +03:00
## Standard Installation Instructions
2015-01-16 03:22:33 +03:00
This repository represents the latest development version of the language,
and may contain bugs that are being actively worked on.
For those who wish to use a more stable version of Idris please consider
installing the latest version that has been released on Hackage.
2014-12-18 18:43:44 +03:00
Installation instructions for various platforms can be [found on the Idris Wiki ](https://github.com/idris-lang/Idris-dev/wiki/Installation-Instructions ).
## Installing Development Versions
2015-01-16 03:22:33 +03:00
If you like to work against the latest development version, please consider
using Cabal Sandboxes to minimise disruption to your local Haskell setup.
Instructions for installing Idris HEAD within a cabal sandbox are
[available on the Idris Wiki ](https://github.com/idris-lang/Idris-dev/wiki/Installing-an-Idris-Development-version-in-a-sandbox ).
2014-12-18 18:43:44 +03:00
2012-10-29 22:57:34 +04:00
To configure, edit config.mk. The default values should work for most people.
2014-12-18 18:43:44 +03:00
Idris is built using a Makefile common targets include:
2013-02-25 18:16:07 +04:00
2014-12-18 18:43:44 +03:00
* `make` This will install everything using cabal and
typecheck the libraries.
* `make test` This target execute the test suite.
* `make relib` This target will typecheck and recompile the standard library.
2013-07-06 05:46:00 +04:00
2014-12-18 18:43:44 +03:00
Idris has an optional buildtime dependency on the C library `libffi` . If you
would like to use the features that it enables, make sure that it is compiled
2014-09-24 17:54:48 +04:00
for the same architecture as your Haskell compiler (e.g. 64 bit libraries
for 64 bit ghc). By default, Idris builds without it. To build with it, pass
2014-12-18 18:43:44 +03:00
the flag `-f FFI` .
2015-01-16 03:22:33 +03:00
To build with `libffi` by default, create a `custom.mk` file and add the
following line to it:
2014-12-18 18:43:44 +03:00
`CABALFLAGS += -f FFI`
2013-11-08 10:51:41 +04:00
2013-11-08 11:00:02 +04:00
The file custom.mk-alldeps is a suitable example.
2013-07-06 05:46:00 +04:00
2015-01-16 03:22:33 +03:00
The continuous integration builds on travis-ci.org are built using the
ghc-flag -Werror. To enable this behaviour locally also, please compile
using `make CI=true` or adding the following line into `custom.mk` :
2015-01-04 20:20:40 +03:00
`CI = true`
2015-01-16 03:22:33 +03:00
If you are only compiling for installing the most current version, you can
omit the CI flag, but please make sure you use it if you want to contribute.
2015-01-04 20:20:40 +03:00
2014-12-18 18:43:44 +03:00
## Code Generation
2014-09-24 17:54:48 +04:00
2014-09-24 23:50:40 +04:00
Idris has support for external code generators. Supplied with the distribution
2014-11-30 15:21:12 +03:00
is a C code generator to compile executables, and a JavaScript code generator
2014-09-24 23:50:40 +04:00
with support for node.js and browser JavaScript.
2015-01-16 03:22:33 +03:00
At this moment in time there are two external repositories with a
[Java code generator ](https://github.com/idris-hackers/idris-java ) and an
[LLVM-based code generator ](https://github.com/idris-hackers/idris-llvm ).
2014-12-18 18:43:44 +03:00
## More Information
2015-01-16 03:22:33 +03:00
If you would like to find out more information, or ask questions, we
currently have a [Wiki ](https://github.com/idris-lang/Idris-dev/wiki );
a [mailing list ](https://groups.google.com/forum/#!forum/idris-lang ),
and an `IRC` channel `#idris` on freenode. To join the IRC channel,
point your irc client to `chat.freenode.net` then `/join #idris` .
2014-12-18 18:43:44 +03:00
2015-01-16 03:22:33 +03:00
For those further interested in using Idris for projects, the
[Idris Hackers ](https://github.com/idris-hackers ) GitHub organisation is
where some interesting projects are being hosted.
2013-09-27 03:58:11 +04:00
2015-01-16 03:22:33 +03:00
For those interested in contributing to Idris directly we kindly ask that
prospective developers please consult the [Contributing Guide ](CONTRIBUTING.md ) first.