Version 1.0 of the Ruby-like Crystal language has arrived, with its creators promising language stability for all 1.x releases going forward. Users can expect all Crystal 1.x releases to be backward compatible, with no breaking changes.

With the Crystal 1.0 release, the language’s creators offer assurance to those who would like to use the language in production that it will not break from one version to the next. Users of future Crystal 1.x versions can expect their existing Crystal code will still compile and work without any significant incompatibility. Language and standard library features will not be removed or changed in a way that could stop existing code from compiling and working. The standard library will be improved with backward compatibility kept in mind.

Crystal syntax was inspired by Ruby, making the language easy to read and write while lowering the learning curve for experienced Ruby developers, according to Crystal’s creators. By being statically type-checked, errors are caught by the compiler rather than waiting for a fail at runtime.

Unveiled March 22, the Crystal 1.0 release can be found on GitHub, and installation instructions at crystal-lang.org. Crystal’s builders plan maintenance releases, featuring bug fixes, while new features are reserved for subsequent minor releases. Some features in the Crystal 1.0 release are cited as “preliminary” and not yet officially supported, including Windows support, multithreading, and Arm support.

Features and highlights of Crystal 1.0:

  • Built-in type inference eliminates the need for most type annotations.
  • A dedicated syntax for calling native libraries eliminates the need to re-implement low-level tasks.
  • The compiler automatically checks for null references at compile time.
  • For concurrency, Crystal uses threads called fibers to communicate with each other without having to use shared memory or locks.
  • Libraries are packed as Shards and distributed via Git with no need for a central repository. Built-in commands allow dependencies to be specified through a YAML file and fetched from respective repositories.
  • A macro system, consisting of methods that receive AST nodes at compile time and produce code that is pasted into a program, serves as Crystal’s answer to metaprogramming.

Source