치킨 스킴 6.0 출시, UTF-8 완전 지원과 R7RS 전면 도입
- Chicken Scheme 6.0이 출시되어 R7RS small 언어가 명시한 모든 모듈을 코어 시스템에 포함시킴
- 내부 문자열 표현이 UTF-8로 변경되어 문자열이 완전한 유니코드를 지원함
- (chicken blob) 모듈이 제거되고 bytevector 기반의 (chicken bytevector) 모듈로 대체되어 SRFI-4 u8vector와 완전히 동등해짐
- process-fork, process-run 등의 함수가 PID 대신 process 객체를 반환하도록 바뀌어 레코드 접근자로 종료 상태와 입출력 포트를 얻어야 함
- FFI에서 문자열과 심볼이 복사 없이 외부 코드에 직접 전달되고, 복소수와 C 구조체/유니온을 인자와 반환값으로 직접 주고받을 수 있게 됨
Hacker News opinions
6.0에서 Crunch도 지원함, R7RS 정적 타입 서브셋 컴파일러인데 아직 1.0은 아니고 .993 버전임. 윈도우에서 잘 되게 하는거 나도 좀 도왔어
치킨은 Scheme 소스를 C로 변환해서 컴파일하는 방식이야. 인터프리터도 있어서 스크립팅이나 테스트용으로 쓸 수 있어
그럼 프로덕션에서는 eval 같은거 못쓴다는 얘기야?
주말에 치킨 스킴 만져봤는데 바이너리 빌드 가능하고 생태계도 살아있어서 좋았어. v5 쓰다가 v6 나올까 걱정했는데 진짜 나와버렸네
유니코드 완전 지원하는 이 릴리즈 계속 기다렸음. 팀한테 축하해, 치킨 스킴은 작은 보석같은 존재야
치킨 컴파일러가 진짜 핵심이야. 생성된 C코드가 이식성이 좋아서 스킴이 안 돌아가는 시스템에서도 실행 가능함
egg들이 진짜 좋음. SDL2 게임이나 웹서버도 금방 만들 수 있고 emacs 지원(geiser-chicken)도 좋아. C로 컴파일되니까 FFI가 Chez보다 편하고, 에러 메시지에 스택트레이스까지 나와서 진짜 유용해. 옵셔널 타입 정의도 있어서 테스트 줄일 수 있음. 문서는 그럭저럭인데 chicken-doc을 NixOS에서 설정 못했고 문서 사이트도 자주 다운됨. 오프라인 PDF 문서 있었으면 좋겠어
자체완결적이고 컴팩트하고 빠르고 바로 쓸 수 있음. SBCL은 컴팩트하지 않고 image 개념도 다들 안 좋아하고, Guile이랑 Racket은 빠르지도 컴팩트하지도 않고, Chez는 바로 쓸 준비가 안 되어있어
완전 큰 업데이트네, R7RS 풀 지원에 UTF-8 문자열이고 blob 대신 bytevector로 갈아탔어. closure reuse 최적화도 흥미로워 보임
Common Lisp은 좀 이상한 사촌같긴 한데 결국 SBCL, ECL, CCL로 가면 거의 다 잘 돌아가. Scheme은 SICP 하려면 SRFI 깔아야 하고 R5RS냐 R7RS냐로 나뉘어서 Hypergiant 같은거 Guile에서 못 돌림. Scheme+의존성이 오히려 Common Lisp 서브셋보다 더 복잡할 수 있어
SRFI 설치한다는 얘기 처음 듣는데, 그냥 import 하는거 말하는거야? R6/R7 반대하는 사람들은 CL로 진짜 소프트웨어 만들면 되고 Scheme은 교육용으로 작고 단순하게 남기면 된다고 보는 것 같아
SRFI 때문에 Scheme이 오히려 더 커지고 쓰기 불편해져. 어떤 SRFI가 어느 구현체에 있는지 찾아야 하고, 번호랑 기능 매핑해야 하고, 문서도 원본 SRFI 스펙 읽어야 함. R7RS 나온지 14년인데 R7RS-large도 아직 없어. 중요한 SRFI들 모아서 이름 붙이고 문서화해서 R7RS-large로 만들고 R8RS로 넘어가야 함
나는 UTF-8 버그 때문에 치킨 잠깐 쓰다 말았는데, 문서는 항상 좋았어. 신경써서 쓴 느낌이고 다른 Scheme 찾아볼 때도 치킨 문서 보러 가곤 함