Crystal JavaScript HTML C++ Shell CSS Other
Latest commit c2c2276 Feb 20, 2017 @asterite asterite Updated Changelog
Failed to load latest commit information.
bin Fix Travis ci osx (#3999) Feb 4, 2017
etc Rename the `compile` command to `build`. Fixes #502 Jun 30, 2016
samples String: fix inconsistency introduced by lchomp. Fixes #3729 Feb 18, 2017
scripts Unicode: consider special case conversions like the uppercase of "ffl" … Nov 22, 2016
spec Fix: configurable SO_REUSEPORT socket setting (disabled by default) Feb 20, 2017
src Fix: configurable SO_REUSEPORT socket setting (disabled by default) Feb 20, 2017
.dockerignore Dockerfile now uses `make`. Fixes build after addition of LLVM extens… Sep 9, 2015
.editorconfig Added .editorconfig. Fixes #297 Dec 7, 2014
.gitignore Renamed libext.a to libcrystal.a. Build this library with global Make… Feb 10, 2016
.travis.yml Avoid redundant builds of OSX with xcode7.3 Feb 16, 2017 Fix in Aug 13, 2015 Updated Changelog Feb 20, 2017 Modify CoC contact section Feb 18, 2016 Update Feb 10, 2017
Dockerfile Don't include `libs` in CRYSTAL_PATH anymore Dec 23, 2016
Dockerfile.release Add libgmp to Dockerfile.release Oct 20, 2016 Issue template: say that you should search a bug before submitting it Sep 21, 2016
LICENSE Update LICENSE year range Jan 6, 2017
Makefile Makefile: allow overriding AR the same way CC/CXX can be overridden Feb 18, 2017 Update Feb 16, 2017
Vagrantfile Use secure HTTPS calls to download packages (closes #1922) Jun 24, 2016


Build Status Bountysource Code Triagers Badge


Crystal is a programming language with the following goals:

  • Have a syntax similar to Ruby (but compatibility with it is not a goal)
  • Statically type-checked but without having to specify the type of variables or method arguments.
  • Be able to call C code by writing bindings to it in Crystal.
  • Have compile-time evaluation and generation of code, to avoid boilerplate code.
  • Compile to efficient native code.


We love Ruby's efficiency for writing code.

We love C's efficiency for running code.

We want the best of both worlds.

We want the compiler to understand what we mean without having to specify types everywhere.

We want full OOP.

Oh, and we don't want to write C code to make the code run faster.


  • The project is in alpha stage: we are still tweaking the language and standard library.
  • The compiler is written in Crystal.


Follow these instructions

Try it online



Questions or suggestions? Ask in our Google Group, join our IRC channel #crystal-lang at, ask on our Gitter channel or ask on Stack Overflow under the crystal-lang tag.


Read the general Contributing guide, and then:

  1. Fork it ( )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request