본문으로 건너뛰기
피드

Herd: 모든 것이 값(value)인 프로그래밍 언어

open-source 약 4분
vote
0
댓글
북마크

모든 것이 pass-by-value인 인터프리터 언어 Herd. Copy-on-Write + 레퍼런스 카운팅으로 사이드 이펙트 없는 프로그래밍을 제공하고, 구조적으로 데이터 레이스가 불가능한 멀티스레딩을 지원함.

  • 1

    모든 타입이 pass-by-value, COW + 레퍼런스 카운팅으로 불필요한 복사 최소화

  • 2

    참조 순환이 구조적으로 불가능해서 GC에 사이클 탐지 불필요

  • 3

    데이터 레이스가 불가능한 빌트인 멀티스레딩

  • 4

    Cranelift 기반 싱글패스 JIT로 CPython보다 빠른 성능

  • 5

    동적 타입 언어에서 mutable value semantics를 본격 탐구한 최초 사례

  • Herd는 모든 것이 pass-by-value인 인터프리터 언어임. 리스트든 딕셔너리든 함수에 넘기면 원본이 절대 변하지 않음. 사이드 이펙트 걱정 없이 로컬에서 마음대로 수정 가능

  • 핵심 트릭은 Copy-on-Write + 레퍼런스 카운팅 조합임:

    • 참조가 1개뿐이면 → 그냥 in-place 수정 (복사 안 함)
    • 참조가 2개 이상이면 → 얕은 복사 후 수정. 복사본은 참조 카운트가 1이니까 이후 수정은 다시 in-place
    • 이 방식의 보너스: 참조 순환(reference cycle)이 구조적으로 불가능해서 GC에 사이클 탐지가 필요 없음
  • Swift의 "Mutable Value Semantics"와 비슷한 아이디어지만, Swift는 정적 타입이고 훨씬 복잡함. Matlab/R도 배열에 COW를 쓰지만 참조 카운트가 1로 돌아왔을 때 안정적으로 추적을 못 해서 불필요한 복사가 더 잦음. PHP는 배열만, Perl은 보장을 깨는 방법이 너무 많음

언어 특징

  • 타입: () (유닛), bool, number (f64), string, list, dict, function
  • var로 선언해야만 뮤터블. 기본은 이뮤터블. 수정은 set 키워드 필요
  • 함수 문법이 독특함: \x y\ x + y 같은 식. Rust 클로저(|x|)에서 | 대신 \를 쓰고 ML 스타일 호출(f x y)을 섞은 느낌
  • 파이프 연산자 |로 체이닝 가능, |=로 in-place 수정도 됨
  • 패턴 매칭, 디스트럭처링(!), switch 표현식 지원

멀티스레딩이 되는데 데이터 레이스가 불가능

  • Parallel.parallelMap, Parallel.parallelRun 같은 빌트인 멀티스레딩 지원
  • 모든 뮤테이션이 현재 스레드의 복사본에만 영향을 주니까 데이터 레이스가 구조적으로 불가능함. 복잡한 데이터 구조를 동기화 걱정 없이 스레드 간 전달 가능. 다만 통신은 리턴 값으로만 가능

구현과 성능

  • 싱글패스 JIT 컴파일러로 런타임에 머신코드 생성, 백엔드는 Cranelift 사용
  • 값 표현은 NaN-boxing 방식이라 primitive 타입은 힙 할당 없이 처리됨
  • CPython보다는 빠르고, Node.js보다는 느린 수준. "모던 JS 런타임급은 아니지만 인터프리터 언어치곤 경쟁력 있음"
  • 현재 성능 병목: 아토믹 레퍼런스 카운팅 오버헤드 (특히 핫 루프), 싱글패스 JIT의 최적화 한계, 임포트 시 전체 컴파일 오버헤드

ℹ️참고

> 취미 프로젝트라 프로덕션 사용은 비추라고 본인이 직접 말하고 있음. 하지만 "동적 타입 언어에서 mutable value semantics를 제대로 탐구한 건 처음"이라는 주장은 꽤 설득력 있음

Swift의 value semantics를 동적 타입 언어로 가져온 실험. 프로덕션용은 아니지만 '값 의미론으로 모든 걸 해결하면 어떻게 될까?'라는 질문에 대한 깔끔한 답변.

댓글

댓글

댓글을 불러오는 중...

open-source

NIPA, 260명 규모 오픈소스 컨트리뷰션 아카데미 시작

정보통신산업진흥원이 2026 오픈소스 컨트리뷰션 아카데미 발대식을 열고 13주간의 프로젝트 활동을 시작했음. 국내 개발자들이 GitHub 기반 글로벌 협업 환경에서 코드, 문서, 버그 수정, 풀 리퀘스트를 직접 경험하게 하는 프로그램임.

open-source

그누보드7, 디딤과 손잡고 멀티클라우드 도입 문턱 낮춘다

에스아이알소프트가 클라우드 전문기업 디딤과 협력해 그누보드7 기반 웹서비스 구축·운영 환경을 넓히기로 했다. 커뮤니티, 쇼핑몰, 예약, 구독형 서비스 같은 실무 프로젝트에서 서버 구성과 운영 부담을 줄이는 게 핵심이다.

open-source

오픈소스 컨트리뷰션 아카데미 출범, 국내 개발자 260여 명 참여

정보통신산업진흥원이 2026 오픈소스 컨트리뷰션 아카데미 발대식을 열고 13주간의 활동을 시작했다. 11개 프로젝트팀의 멘토와 멘티 260여 명이 글로벌 오픈소스 프로젝트 기여를 목표로 코드 개발, 문서화, 오류 수정 등을 진행한다.

open-source

NIPA, 국내 개발자 260명 규모 오픈소스 컨트리뷰션 아카데미 시작

정보통신산업진흥원이 2026 오픈소스 컨트리뷰션 아카데미 발대식을 열고 국내 개발자의 글로벌 오픈소스 프로젝트 참여를 지원한다. 11개 프로젝트팀, 멘토·멘티 260여 명이 13주 동안 깃허브 기반 협업, 코드 리뷰, 문서화, 오류 수정 등을 실제로 경험한다.

open-source

Ghostty 엔진을 Emacs 안으로 끌고 온 터미널, Ghostel.el

Ghostel.el은 Ghostty의 libghostty-vt를 기반으로 Emacs 안에서 동작하는 터미널 에뮬레이터다. eat 스타일의 여러 입력 모드, 안정적인 복사 모드, line mode, 자동 password prompt 처리, compile-mode 유사 실행 버퍼, Kitty graphics 지원, 높은 throughput을 앞세워 eat/vterm과 차별화함.