Crystal은 Ruby의 유연한 코딩 경험과 C의 고성능을 결합하고자 탄생했습니다. Ruby 표준 라이브러리를 차용하고, 컴파일러가 지능적으로 타입을 추론하여 개발자가 명시적으로 타입을 선언할 필요가 없는 유연성을 제공하며, ‘nil’ 오류 방지와 Go 스타일의 동시성 모델을 특징으로 합니다. 초기에는 Ruby 애플리케이션의 성능 문제를 해결하기 위한 실험으로 시작했으나, Hacker News에서 큰 반향을 얻으며 정식 프로젝트로 발전했습니다.
“Fast as C, sleek as Ruby”라는 모토 아래 개발되던 중, 완전한 전역 타입 추론 방식이 컴파일 속도 저하와 메모리 과부하라는 심각한 기술적 난관에 부딪혔습니다. 대규모 프로젝트에서 비현실적인 컴파일 시간을 피하고자, 팀은 인스턴스 변수(ivars
)에 대한 타입 명시를 요구하는 중대한 언어 변경을 제안했습니다. 이 변화는 “Ruby와 유사한 경험”이라는 Crystal의 핵심 정체성을 훼손한다는 커뮤니티의 거센 반발을 초래하며, 프로젝트의 정체성 위기로 이어졌습니다.
팀은 이 변화 없이는 Crystal이 생존할 수 없다고 판단, 초기 목표의 본질(Ruby의 작성 효율성 + C의 실행 효율성)을 재확인하며 변화를 강행했습니다. 이로 인해 일부 커뮤니티가 이탈했으나, 대다수는 변화를 수용하며 언어의 안정성과 목표 명확화에 기여했음을 인정했습니다. 이후 Crystal은 “A language for humans and computers”라는 새로운 모토로 1.0 버전을 출시하며 성숙한 언어로 자리매김했습니다. 현재도 컴파일 속도 개선이 필요하지만, 언어의 핵심 정체성을 해치는 무분별한 타입 명시 요구는 지양할 방침입니다.