# Crystal — Fast as C, Slick as Ruby > Crystal is a compiled programming language with Ruby-inspired syntax that delivers native performance, static type checking, and built-in concurrency via fibers. ## Install Save in your project root: # Crystal — Fast as C, Slick as Ruby ## Quick Use ```bash # Install on macOS / Linux brew install crystal # Create and run a project crystal init app my_app && cd my_app crystal run src/my_app.cr ``` ## Introduction Crystal is a statically typed, compiled language that looks and feels like Ruby but produces efficient native binaries via LLVM. It was created to give Ruby developers a path to C-level performance without sacrificing expressiveness. Crystal includes a powerful macro system, compile-time type inference, and built-in concurrency based on lightweight fibers. ## What Crystal Does - Compiles to optimized native code through LLVM with zero runtime overhead - Infers types automatically so most code needs no explicit annotations - Provides concurrency with CSP-style fibers and channels - Includes a macro system for compile-time code generation - Ships with a standard library covering HTTP servers, JSON, databases, and crypto ## Architecture Overview The Crystal compiler is self-hosted (written in Crystal). It parses source into an AST, performs global type inference across the entire program, and emits LLVM IR for final code generation. The runtime includes a cooperative scheduler that multiplexes fibers across a thread pool, a Boehm GC for memory management, and an event loop backed by libevent for non-blocking I/O. ## Self-Hosting & Configuration - Install via Homebrew, Snap, Docker, or tarball from the releases page - Requires LLVM 15+ and a C linker (usually bundled by package managers) - Project metadata and dependencies go in `shard.yml` - Dependencies are managed with the `shards` tool and sourced from Git repos - Cross-compilation is supported via `--cross-compile` and `--target` flags ## Key Features - Ruby-like syntax with blocks, modules, and method overloading - Null safety enforced at compile time via union types - C bindings with a simple `lib` declaration—no FFI boilerplate - Built-in spec testing framework modeled after RSpec - Active standard library with HTTP::Server, JSON::Serializable, and DB adapters ## Comparison with Similar Tools - **Ruby** — interpreted with dynamic types; Crystal compiles to native binaries with static types - **Go** — simpler syntax and goroutines; Crystal offers richer type inference and Ruby-like expressiveness - **Rust** — ownership-based memory safety without GC; Crystal uses GC for simpler memory model - **Nim** — also compiles via C/LLVM with type inference; Crystal has a larger community and Ruby heritage - **Gleam** — targets BEAM with ML-style types; Crystal targets native via LLVM ## FAQ **Q: Can Crystal use existing Ruby gems?** A: No, Crystal has its own package ecosystem called Shards. However, C libraries can be bound directly. **Q: How mature is Crystal for production use?** A: Crystal reached 1.0 in 2021 and has had regular releases since. Companies use it for web services, CLI tools, and game servers. **Q: Does Crystal support multithreading?** A: Yes. Since version 1.0, Crystal supports multi-threaded execution with fibers distributed across OS threads using the `-Dpreview_mt` flag, which became the default in later releases. **Q: What web frameworks are available?** A: Lucky, Amber, and Kemal are popular Crystal web frameworks offering routing, ORM, and templating. ## Sources - https://github.com/crystal-lang/crystal - https://crystal-lang.org --- Source: https://tokrepo.com/en/workflows/f0933daf-3ba7-11f1-9bc6-00163e2b0d79 Author: AI Open Source