Crystal Language

A language for humans and computers

For the past five years, [Crystal](http://crystal-lang.org) has been partially supported by [Manas](https://manas.tech), with most of the development happening in our free time, and interest for the project has been steadily growing: - Activity in the repository is more active than ever, with more than 200 contributors - Public talks and meetings happening worlwide: - [RubyC](https://www.youtube.com/watch?v=iyqURh5LSF4) - [PolyConf](https://www.youtube.com/watch?v=Ysm4IU4aWoQ) - [Curry On](http://www.curry-on.org/2015/sessions/crystal-a-programming-language-for-humans-and-computers.html) - [Eurucamp](http://2015.eurucamp.org/speakers/#luis-ferreira) - [Tokyo Crystal study session](http://crystal.connpass.com/event/17496/) - [Over 1500 projects developed in Crystal](http://crystalshards.xyz/?sort=updated&page=1) - 7500+ [stars](https://github.com/crystal-lang/crystal/stargazers) in GitHub To continue supporting this growth, and to satisfy community expectations, we would like to invest more time in this project. If you like this project and see its potential, you can help. **Every dollar counts!** # Short and mid-term goals This salt campaign will allow the main developers to focus on these major goals: - Concurrency support - Windows support - Formalisation of the type system - Incremental compilation - Package manager - Playground improvements - IDE support - Debugger support - More platforms officially supported - Standard library additions - Documentation - Reviewing pull requests - Bug fixing ## Concurrency support Right now the language provides non-blocking IO and lightweight processes, but these are created in a single thread. We’re actively working on having them created in multiple threads, and providing primitives for managing them (select, wait groups, etc.) ## Package manager Improve the package manager aiming at better dependency version resolution, provide more metadata about the project, support registering executable tasks, better handling of transitive dependencies, and more. ## Debugger support Debugging Crystal programs is only possible via console printing. We'd like to be able to use lldb or another command-line interface instead. Graphical tools could be built on top of this. ## Windows support Add support for compiling and running on Windows platforms, implementing the required changes in both the languages and the standard library. ## Support more platforms There are multiple working efforts to support 32 bit architectures, ARM, FreeBSD, OpenBSD, AArch64, Alpine, and others, thanks to the awesome work of the community. We want to agree on a list of officially supported platforms and ensure every new release runs smoothly on all of them. ## Standard library additions Although the standard library already includes many useful data types and algorithms, many are still missing or need to be reviewed, such as OpenSSL, FileUtils, HTTP/2, WebSockets, Time, FTP, SMTP, Random, XML and mocks. ## Documentation The [language docs](http://crystal-lang.org/docs) and the [standard library docs](http://crystal-lang.org/api) are far from finished. ## Bug fixing There are some old and recurring [issues](https://github.com/manastech/crystal/issues) that'd we'd like to fix once and for all, and we do our best to categorize and answer the daily questions from the [community](https://crystal-lang.org/community/).