Crystal 1.22.0 출시, aarch64-linux Tier 1 승격과 파이프 오류 시 즉시 종료로 바뀐 동작
- aarch64-linux 타깃(gnu, musl)이 Tier 2에서 Tier 1로 승격됨, 공식 빌드는 1.19부터 이미 제공 중이었음
- 표준 출력과 표준 에러가 EPIPE로 쓰기에 실패하면 즉시 종료하는 방식으로 바뀌어 SIGPIPE 기본 동작과 비슷해짐, 기존 IO::Error 메시지는 제거됨 (STDOUT.exit_on_broken_pipe = false로 끌 수 있음)
- Process.fork가 1.0 이전부터 deprecated 상태였다가 이번 릴리스에서 완전히 제거됨
- DWARF 파싱을 새로 짜서 섹션을 필요할 때 스캔하고 인덱스 테이블을 한 번 만들며, 디코딩된 백트레이스 줄은 LRU 캐시에 저장함
- 상수에 타입 선언을 붙일 수 있게 됨 (예: BAR : Int32 = 1), 이번 릴리스 변경은 251건이며 33명이 기여함
Hacker News opinions
Crystal이 Ruby 문법에 Go급 동시성이라고들 하는데, 병렬성은 아직 Go를 못 따라잡은 것 같음. Go 런타임이 워낙 잘 만들어져서 worst-case p99에서는 손으로 최적화한 Rust도 이긴다더라.
REPL이 빠진 게 나한텐 컸음. 그래서 Elixir로 갔음.
crystal i 모드는 있긴 한데 라이브러리 호환이 부족함. 나도 Claude로 JIT REPL 하나 만들어봤는데 LLM 기여를 안 받는다고 해서 그냥 실험으로 끝냈음.
Kagi가 검색 백엔드에 Crystal 쓰는 거 알지? 대기업이 없다는 말은 좀 틀린 듯함.
예전엔 배포용 바이너리 만들 때 Crystal이 최고였음. 서버에 띄운 에이전트 데몬이 몇 년째 메모리 누수 없이 돌아가는 중임. 근데 LLM 나온 뒤로는 Go 씀.
LLM 때문에 코드를 안 읽게 됐다는 건 좀 과한 듯함. 원래 사람이 읽고 이해해야 하는 코드였고, Ruby 문법에 네이티브 성능 얻고 싶은 수요는 여전히 있음.
aarch64-linux Tier 1 승격은 반가움. Hetzner 싼 ARM 머신에 서비스 올릴 수 있으니 CTO 설득해볼 만함.
장시간 돌리는 프로그램에 Crystal 썼다가 I/O 중에 예외 터지면 런타임이 멈추는 문제 때문에 걷어냈음. 예외랑 destructor 없는 설계였으면 좋았을 텐데. 그래도 CLI용으로는 여전히 좋은 언어임.