Bend 언어 릴리스 – AI 검증 법칙을 통한 빠른 CPU/GPU 컴파일

Bend가 주장하는 핵심 기능

Bend는 세 가지 핵심 이점을 약속합니다:

  1. 네이티브 속도의 실행 – 컴파일된 바이너리는 단일 CPU 코어에서 C와 거의 동일한 속도로 실행되며, 16개 코어나 GPU에서는 최대 124배 더 빠르게 실행됩니다.
  2. 즉각적인 증명 검사 – 타입 체커가 곧 증명 검사기 역할을 하여 사용자가 정의한 *법칙(laws)*을 1초 이내에 검증합니다. 이는 유사한 코드베이스에서 Isabelle, Agda, Lean 또는 Coq보다 훨씬 빠릅니다.
  3. 자동 병렬 처리 – 명시적인 스레딩이나 커널 코드가 필요하지 않습니다. 런타임이 사용 가능한 모든 CPU 코어 또는 GPU 코어에 작업을 분산하고 결과를 자동으로 병합합니다.

이러한 주장은 Bend 웹사이트의 벤치마크(Game of Life, pow2 등)와 "승리는 불가능하다"는 법칙을 사용하여 AI가 생성한 버그를 차단하는 짧은 데모를 통해 입증되었습니다.


빠른 컴파일 및 실행

Bend는 네이티브 기계어로 컴파일됩니다. Apple M4 Max 프로세서에서 보고된 런타임은 다음과 같습니다:

  • 1 코어: 7.80 s (≈1× C의 6.78 s)
  • 16 코어: 0.65 s (≈12배 속도 향상)
  • GPU: 0.06 s (≈124배 속도 향상)

이 사이트는 이러한 수치를 TypeScript(18.8 s), Lean(13.8 s), C(6.78 s)와 비교합니다. GPU 벤치마크는 사용자가 작성한 커널 없이도 4,096개의 GPU 코어에서 동일한 바이너리를 실행하여 런타임의 대규모 병렬 처리 활용 능력을 보여줍니다.


AI 실수를 차단하기 위한 증명 기반 "법칙"

Bend는 개발자가 절대 위반해서는 안 되는 불변성을 선언하는 파일인 LAWS.bend를 도입합니다. AI 에이전트(예: Claude)가 코드를 생성하면, 컴파일러는 생성된 PROOF.bend를 선언된 법칙과 대조하여 검사합니다. 법칙이 위반될 경우 컴파일이 실패하며, AI는 법칙이 유지된다는 증명을 생성할 때까지 재시도해야 합니다.

법칙 예시 (승리 시퀀스 없음):

# LAW: no move sequence leads to victory.
law you_cant_win:
  for moves: List<Move>
    board = replay(start(), moves)
    is_won(board) == False{}

PROOF.bend에는 이에 상응하는 증명이 제공되어야 합니다:

# PROOF: you_cant_win holds.
def Laws.you_cant_win(moves):
  # ... AI‑generated proof

시스템은 이 법칙을 타입으로 취급하며, 이를 위반하는 모든 코드는 컴파일 타임에 거부됩니다.


병렬 런타임 (BendRT)

BendRT는 순수 함수 호출을 사용 가능한 코어에 자동으로 분산하는 런타임입니다. 이 언어는 명시적인 스레드 생성, 잠금 관리 또는 CUDA 커널 작성이 필요하지 않습니다. 작업은 분할되어 병렬로 실행되며, 결과는 투명하게 병합됩니다. 데모는 pow2.bend 프로그램이 단일 명령어로 4,096개의 GPU 코어에서 실행되는 모습을 보여줍니다.


Hacker News 커뮤니티 반응

칭찬과 호기심

  • 사용자들은 빠른 네이티브 컴파일과 AI 생성 코드를 겨냥한 형식 검증의 참신한 결합을 높이 평가합니다.
  • 일부는 스케줄링이나 계약 이행과 같은 분야에서 **불변성 중심 개발(invariant‑driven development)**의 잠재력을 보고 있습니다.

회의론 및 실무적 우려

  • 증명 노력: 여러 댓글 작성자는 필요한 법칙과 증명을 작성하는 것이 노동 집약적일 수 있다고 지적합니다. 한 사용자는 간단한 캘린더-크론 작업을 위해 약 60줄의 기본 산술 보조 정리가 필요했다고 보고했습니다.
  • 도구 격차: 시스템이 기존 라이브러리와 어떻게 통합되는지, 증명을 프로젝트 간에 재사용할 수 있는지, 누락되거나 잘못된 법칙을 어떻게 처리하는지에 대한 질문이 제기되었습니다.
  • 저장소 투명성: GitHub 저장소에는 최근 커밋이 하나만 있고 눈에 띄는 커밋 기록이 없어 프로젝트의 성숙도와 신뢰성에 대한 의문이 제기되었습니다.
  • 성능 한계: 일부 관찰자는 Bend의 GPU 성능을 Futhark와 같은 전문 언어와 비교하며, 균형 잡힌 재귀 작업에는 Bend가 적합하지만 밀집 배열 커널에서는 뒤처질 수 있다고 지적합니다.
  • 강제 보장: 사용자들은 LLM이 단순히 법칙을 무시하는 것을 무엇이 막느냐고 묻습니다. 이에 대한 답변은 컴파일러가 유효한 증명을 제공하지 않는 생성 코드를 거부한다는 것이지만, AI는 여전히 그러한 증명을 생성하도록 유도되어야 합니다.

주목할 만한 인용구

"LAWS.bend는 증명으로 뒷받침되는 AGENTS.md입니다. ‘실수하지 마라’는 이제 타입 체크가 됩니다." – Bend 웹사이트

"내가 가장 원했던 법칙: ‘두 개의 출력 계획이 겹치지 않는다.’ 나는 그것을 명시하지 않았다. 그것은 collapse 입력의 정렬 상태를 가설로 필요로 한다… 그것이 ‘원칙적으로 증명 가능함’과 ‘오늘 오후에 증명 가능함’ 사이의 간극을 보여주는 정직한 척도이다." – svachalek

"별 2만 개에 한 시간 전 커밋이 하나라고? 염소를 몇 마리나 희생시킨 거야?" – plastic041 (저장소 기록에 대한 우려 표명)


시작하는 방법

  1. 설치 (단일 스크립트 사용):
    curl -fsSL https://bend-lang.com/install.sh | sh
    
  2. AGENTS.md에 지침 추가: AI 에이전트가 가이드를 실행하고, 법칙을 사용하며, 커밋하기 전에 증명 검사기를 호출하도록 합니다.
  3. 법칙 작성: 중요한 불변성에 대한 법칙을 작성한 다음, AI가 코드와 그에 수반되는 증명을 생성하도록 합니다.
  4. 실행: 컴파일된 바이너리를 CPU 또는 GPU에서 실행합니다. 런타임이 자동으로 병렬화합니다.

미해결 질문 및 향후 과제

  • 증명의 확장성: 모든 이동 시퀀스를 열거하는 것이 불가능한 매우 큰 상태 공간을 Bend는 어떻게 처리하는가?
  • 상호 운용성: Bend는 기존 C/Rust 라이브러리를 호출하기 위한 FFI 바인딩을 제공할 것인가, 아니면 더 큰 프로젝트에 Bend 코드를 포함하는 방법을 제공할 것인가?
  • 도구 성숙도: 커뮤니티는 신뢰를 구축하기 위해 변경 로그, 버전 릴리스, 더 명확한 커밋 기록을 요구하고 있습니다.
  • 벤치마킹: Bells 벤치마크 제품군 등에서의 독립적인 성능 측정은 주장된 속도 향상을 검증하는 데 도움이 될 것입니다.

참고 자료

  • 가이드: 저장소의 GUIDE.md (전체 언어 사양).
  • BendTT 논문: 언어의 기반이 되는 아핀 의존 타입 이론(Affine dependent type theory).
  • BendRT 논문: CPU 및 GPU용 병렬 런타임에 대한 설명.

Bend는 매우 초기 단계의 프로젝트입니다. 버그와 빠른 반복을 예상하십시오. 기여 및 이슈 보고는 GitHub 이슈 트래커를 통해 환영합니다.

Sources

관련

  • Dispatch
  • Dispatch
  • 프로젝트
  • 프로젝트
  • Dispatch