프로젝트 소개
Hum은 초기 단계(0.0.1 사전 알파)의 시스템 프로그래밍 언어 설계 초안입니다. 명시된 목표는 Rust/C++ 수준의 저수준 성능과 Python 유사한 가독성, 정적 타입, 명시적 효과, 기본 메모리 안전성, 그리고 인간과 코딩 에이전트 모두를 위한 컴파일러 생성 컨텍스트를 결합하는 것입니다.
핵심 아이디어는 일반적으로 주석으로 작성되는 계약이 검증된 약속이 된다는 것입니다. 작업은 `why`, `targets`, `uses`, `changes`, `needs`, `ensures`, `protects`, `trusts`, `fails when`, `watch for`, `cost`, `allocates`, `avoids`, `tradeoffs`, `optimizes`, `tests`, `does`와 같은 섹션을 선언할 수 있습니다. 저장소에는 의도적으로 손상된 픽스처가 포함되어 있으며, `ensures: result == a + b`가 `return a - b` 본문에 의해 위반됩니다. 실행 시 호출자가 아닌 작업 구현을 비난하는 진단이 생성됩니다.
소유권 단어(`borrow`, `change`, `consume`)도 검증된 약속으로 취급됩니다. 로컬 뷰는 좁습니다: 필드 빌림은 이후 해당 필드에 대한 쓰기로 무효화되고, 목록 요소 빌림은 이후 성장으로 무효화됩니다. 쓰기 가능한 별칭 형태(`let alias = change record.field`)는 쓰기를 통과하며 마지막 직선 구문 사용까지만 유효합니다. 이동 후 사용은 이동 지점이 명명된 상태로 보고됩니다. `old(...)`는 작업 진입 시 매개변수 값을 캡처하므로, 스왑이 발생하지 않는 경우 자체 계약에 의해 포착됩니다.
README는 한계를 명시합니다: `cost:`, `allocates:`, `protects:`, `trusts:` 줄은 오늘날 기록된 의도, 그래프 사실, 생성된 의무일 뿐 강제된 증명이 아닙니다. 검사기 보고서는 명시적 비주장 목록을 생성하여 검사된 것과 선언된 것 사이의 경계를 명확히 유지합니다.
상태: 마일스톤 0 Rust 부트스트랩 컴파일러 프론트엔드, 마일스톤 1 실행은 `hum run`을 통해 첫 번째 Formal Core 픽스처를 해석하며 시작되었습니다. 첫 번째 표준 네이티브 슬라이스는 `programs/integer_sign.hum`이며, `hum run --native --allow stdout.write ... --args -7`로 실행되어 소스를 검사하고, 백엔드 사실을 확인하며, 지원되는 Windows 및 Linux 호스트에서 Cranelift를 통해 출력합니다. README는 이를 일반 네이티브 컴파일이 아닌 하나의 제한된 프로그램 형태로 설명합니다.
저장소는 문서가 풍부합니다: 아키텍처, 언어 참조, 문법, 구문 표면 스키마, 기능, 대상 사실, 증거 보고서, 수학 의무, 리소스 보고서, Core Hum 계약/미리보기/하위 변환/검증, 타입/효과/소유권/리소스 검사, IR 계약 및 준비, 백엔드 입력/프로브/계약, LSP 기능, 의사, 결정 기록, 보안 모델, 안전하지 않은 정책, 상호 운용성 및 이식성, 메모리 안전 모델, 컴파일 시간 전략, stdlib 전략, 런타임 프로필, 백엔드 전략, 로드맵, 거버넌스, 연구 노트. 도구에는 TextMate 문법, 계획된 포맷터(`humfmt`), 패키지 관리자 계획(Nectar), 그리고 `check`, `version`, `explain`, `diagnostics`, `capabilities`, `target-facts`, `core-contract`, `core-preview`, `core-lower`, `core-verify`, `full-type-check`와 같은 CLI 명령이 포함되며, 여러 명령은 JSON 출력을 지원합니다.
부트스트랩 컴파일러는 Rust로 작성되었으며 기본적으로 안전하지 않은 코드를 금지하고, 검토된 로컬 허용 안전하지 않은 JIT 호출 경계 하나와 고정된 Cranelift 종속성 5개를 포함합니다. Cargo가 현재 빌드 및 설치 경로이지만, README는 Hum을 장기적으로 "단순한 Cargo 크레이트"로 포지셔닝해서는 안 된다고 언급합니다.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.