Crystal è un linguaggio di programmazione orientato agli oggetti progettato e sviluppato da Ary Borenszweig e Juan Wajnerman, nonché da oltre cento collaboratori elencati. Crystal è sviluppato open-source con licenza Apache 2.0 e la sua sintassi è ispirata a Ruby . Il tipo di variabili e argomenti viene verificato staticamente senza che sia necessario specificarlo nel codice.
Il lavoro sul linguaggio è iniziato nel giugno 2011, con l'obiettivo di creare un linguaggio con l'eleganza e la produttività di Ruby e la velocità, l'efficienza e la sicurezza della digitazione statica di un linguaggio compilato. Originariamente chiamato Joy , il progetto è stato rapidamente ribattezzato Crystal .
Il compilatore Crystal è stato scritto per la prima volta in Ruby, ma è stato riscritto in seguito in Crystal diventando un linguaggio self-hosted nel 2013. La prima versione ufficiale è stata rilasciata nel giugno 2014. E nel luglio 2016, Crystal si unisce all'indice TIOBE .
Sebbene assomigli al linguaggio Ruby nella sua sintassi, Crystal compila un codice nativo molto più efficiente utilizzando un backend LLVM . Il prezzo da pagare per questo è il divieto di utilizzare gli aspetti dinamici di Ruby. Recenti test sulle prestazioni hanno dimostrato che Crystal ha prestazioni sostanzialmente simili a quelle di C per un'ampia gamma di attività di calcolo. Il linguaggio ha automatizzato la raccolta dei rifiuti e attualmente offre un raccoglitore Boehm . Crystal ha un sistema macro, supporta la genericità e il sovraccarico degli operatori.
Ecco il modo più semplice per scrivere un "Hello World" in Crystal:
puts "Hello World!"O utilizzando uno stile di programmazione orientato agli oggetti :
class Greeter def initialize(name) @name = name.capitalize end def salute puts "Hello #{@name}!" end end g = Greeter.new("world") g.salute