Early design · 개발 초기 단계

작성은 쉽게,
성능은 강력하게.

Arus는 읽기 쉬운 문법과 네이티브 코드 성능을 함께 추구하는 시스템 프로그래밍 언어입니다. 명시적인 메모리 권한과 독자적인 중간 표현 AIR를 바탕으로 코드의 간결함과 시스템 제어 사이의 균형을 설계합니다.

타입 기반 설계 권한을 명시하는 포인터 LLVM 네이티브 컴파일 목표
hello.arusArus
A small glimpse of Arus
main

fn main() {
    println("Hello, Arus!")

    let language = "systems programming"
    println(f"Welcome to {language}")
}
Design philosophy

간결한 문법 아래,
명확한 시스템 설계.

Arus는 단순히 코드를 짧게 쓰는 데서 그치지 않습니다. 프로그램 구조와 메모리 접근을 명확하게 표현하고, 언어 차원의 분석을 거쳐 네이티브 코드로 이어지는 흐름을 목표로 합니다.

현재 설계 및 초기 개발 단계입니다

아래 문법, 명령어, 컴파일 과정은 현재의 설계 방향을 보여 주는 예시입니다. 실제 구현 여부나 최종 사양을 보장하지 않으며, 세부 규칙은 개발 과정에서 변경될 수 있습니다.

읽기 쉬운 코드

세미콜론과 같은 불필요한 장식을 줄이고 변수·함수·제어 흐름이 한눈에 들어오는 문법을 지향합니다.

네이티브 컴파일

언어 차원의 분석을 마친 뒤 LLVM IR로 변환하고, LLVM 백엔드를 통해 네이티브 머신 코드를 생성하는 것을 목표로 합니다.

권한 기반 포인터

읽기와 쓰기 권한을 포인터 타입에 표현해 허용되지 않은 메모리 접근을 컴파일 단계에서 검사하는 방향입니다.

독자적인 AIR

AST와 LLVM IR 사이에 Arus의 의미와 권한 정보를 담는 중간 표현을 두어 분석과 변환의 경계를 명확히 합니다.

내장 표준 입출력

print(), println(), input()을 별도 선언 없이 사용하는 간결한 입출력 경험을 구상하고 있습니다.

점진적인 셀프호스팅

초기 컴파일러는 Rust로 개발하며, 언어와 도구가 충분히 성숙한 뒤 Arus로 다시 작성하는 것을 장기 목표로 삼습니다.

Compilation pipeline

소스 코드에서
네이티브 코드까지.

각 단계는 서로 다른 역할을 담당합니다. 특히 AIR는 LLVM IR을 단순히 복제하는 단계가 아니라, Arus의 타입과 메모리 권한 규칙을 분석하는 언어 고유의 경계입니다.

Arus 컴파일 파이프라인

목표 아키텍처 · 설계 중
STEP 01Arus Source소스 코드
STEP 02Lexer / Parser어휘·구문 분석
STEP 03AST구문 트리
STEP 04AIR타입·권한 분석
STEP 05LLVM IR중간 표현 변환
STEP 06Native Code머신 코드
AST · 소스의 구문 구조를 표현하고, 후속 분석에 필요한 타입과 권한 정보를 보존합니다.
AIR · 단순하고 명시적인 연산을 바탕으로 타입·권한·메모리 접근 관련 검사를 수행하는 중간 표현을 목표로 합니다.
Syntax preview

코드로 먼저 만나 보는 Arus.

현재 검토 중인 문법을 짧은 예제로 살펴볼 수 있습니다. 왼쪽 항목을 선택하면 코드와 설명이 바뀌며, 버튼을 눌러 예제 코드를 복사할 수 있습니다.

프로그램 구조main.arus
main

fn main() {
    println("Hello, Arus!")
}
main은 명시적인 진입 함수로 프로그램을 시작하는 형태입니다. 파일 최상위 문장을 실행하는 script 형태도 별도로 구상하고 있습니다.
Permission pointer model

포인터의 권한을
타입에 담다.

포인터가 가리키는 대상뿐 아니라, 해당 포인터로 허용할 메모리 접근을 타입에 나타내는 것이 핵심 아이디어입니다.

T r*

읽기 권한

값을 읽을 수 있지만 포인터를 통한 쓰기는 허용하지 않는 방향입니다.

let p: i32 r* = &value
T w*

쓰기 권한

값을 변경할 수 있는 권한을 표현하기 위한 타입 표기입니다. 세부 규칙은 설계 중입니다.

let p: i32 w* = ...
T rw*

읽기 + 쓰기

읽기와 쓰기를 모두 허용하는 권한 표기입니다. 실제 사용 조건은 별도 규칙으로 정할 예정입니다.

let p: i32 rw* = ...
Execution modes

개발할 때는 빠르게,
배포할 때는 네이티브로.

두 가지 실행 모드를 구상하고 있습니다. 아래 명령어는 목표 CLI 인터페이스의 예시이며, 현재 구현이 완료되었다는 뜻은 아닙니다.

Runtime mode

runtime

인터프리터로 코드를 바로 실행하는 모드입니다. 작은 예제를 빠르게 시험하고 개발 흐름을 확인하는 용도로 구상하고 있습니다.

$arus run test.arus
목표 CLI 예시 · 구현 여부 미확정

Compile mode

compile

코드를 컴파일한 다음 네이티브 프로그램으로 실행하는 모드입니다. 기본 실행 및 배포 방식으로 삼는 것이 목표입니다.

$arus build main.arus
목표 CLI 예시 · 구현 여부 미확정
Downloads & source

Arus를 직접 살펴보세요.

소스 코드와 프로젝트 진행 상황은 GitHub에서 확인할 수 있습니다. 현재 저장소에는 Windows 및 Linux용 컴파일러 바이너리 릴리스가 등록되어 있지 않아, 운영체제별 다운로드는 준비 중입니다.

SOURCE

GitHub 저장소

Arus의 소스 코드, 예제, README와 개발 현황을 확인할 수 있습니다.

GitHub 바로가기
WINDOWS

Windows용 컴파일러

Windows용 컴파일러 바이너리는 아직 공개되지 않았습니다. 빌드가 게시되면 릴리스 페이지에서 제공할 예정입니다.

Windows 릴리스 확인 ↗
LINUX

Linux용 컴파일러

Linux용 컴파일러 바이너리는 아직 공개되지 않았습니다. 빌드가 게시되면 릴리스 페이지에서 제공할 예정입니다.

Linux 릴리스 확인 ↗

참고: 릴리스가 등록되기 전까지는 위 버튼으로 실행 파일을 다운로드할 수 없습니다. 최신 상태는 GitHub Releases에서 확인할 수 있습니다.

Development roadmap

아이디어에서 언어로,
한 단계씩.

Arus는 아직 초기 설계 단계입니다. 문법과 의미를 먼저 명확히 하고, 분석기와 백엔드를 단계적으로 연결할 계획입니다.

기본 문법과 타입 규칙

프로그램 구조, 타입 추론, 함수와 제어문, 포인터 권한 규칙을 정리합니다.

진행중

AST와 AIR 명세

데이터 구조와 AIR 텍스트 규격을 설계하고 표현 가능한 연산을 정의합니다.

진행중

AIR 분석기

타입·권한·메모리 접근과 관련된 언어 차원의 검사를 구현합니다.

계획

LLVM IR 변환

검증된 AIR를 LLVM IR로 변환하고 네이티브 코드 생성 흐름을 연결합니다.

진행중

런타임과 개발 도구

인터프리터, CLI, 테스트 도구 등 개발 경험을 지원하는 기반을 구축합니다.

계획

셀프호스팅

언어가 충분히 성숙한 이후 컴파일러를 Arus로 다시 작성하는 것을 장기 목표로 삼습니다.

장기 목표
The beginning of Arus

좋은 언어는 문법뿐 아니라 설계의 이유로 만들어집니다.

Arus는 아직 완성된 도구가 아니라 명확한 원칙을 실제 언어로 구현해 가는 프로젝트입니다. 현재의 예시와 규칙은 그 여정의 출발점입니다.

코드를 복사했습니다!