SafeC 설치

명령 하나로 최신 GitHub 릴리스에서 미리 빌드된 safec(컴파일러), safeguard(패키지 매니저이자 빌드 도구), sc-lsp(언어 서버)와 표준 라이브러리(소스와 플랫폼용 미리 빌드된 아카이브)를 설치합니다.

빠른 설치

macOS

bash
brew install llvm          # clang 21 이상; Apple Xcode의 clang은 너무 오래됨
curl -fsSL https://raw.githubusercontent.com/safec-org/SafeC/main/install.sh | bash

Apple 실리콘(arm64)용 바이너리, macOS 11 Big Sur 이상.

Linux

bash
# Debian / Ubuntu: 아직 없다면 apt.llvm.org에서 clang 21 설치
wget https://apt.llvm.org/llvm.sh && sudo bash llvm.sh 21
curl -fsSL https://raw.githubusercontent.com/safec-org/SafeC/main/install.sh | bash

glibc 2.25 이상(Debian 10, Ubuntu 18.04, RHEL 8 이후)용 x86_64 바이너리. musl 기반 배포판(Alpine)은 릴리스 바이너리가 지원하지 않으니 소스에서 빌드하세요.

Windows

powershell
winget install LLVM.LLVM     # clang 21 이상
irm https://raw.githubusercontent.com/safec-org/SafeC/main/install.ps1 | iex

PowerShell에서 실행하는 x86_64 바이너리.

소스에서 빌드

bash
git clone https://github.com/safec-org/SafeC && cd SafeC
cmake -G Ninja -S compiler -B compiler/build -DCMAKE_BUILD_TYPE=Release \
      -DLLVM_DIR=/usr/lib/llvm-21/lib/cmake/llvm
cmake --build compiler/build
cmake -G Ninja -S safeguard -B safeguard/build -DCMAKE_BUILD_TYPE=Release
cmake --build safeguard/build
export SAFEC_HOME=$PWD PATH=$PWD/compiler/build:$PWD/safeguard/build:$PATH

CMake, Ninja, C++17 컴파일러, LLVM 21 개발 파일이 필요합니다. sc-lsp는 별도의 sc-language-server 저장소에 있습니다.

스크립트는 기본적으로 ~/safec에 설치하고, 셸 rc 파일(bash, zsh, fish; Windows는 사용자 환경 변수)에 SAFEC_HOME을 설정하고 bin/을 PATH에 추가합니다. 셸을 다시 시작하거나 rc 파일을 source한 뒤 확인하세요:

bash
safec --version       # safec 1.0.0-beta-7
safeguard --version   # safeguard 1.0.0-beta-7

요구 사항

clang 21 이상. safec는 LLVM IR을 내보내고, safec --emit-bin과 safeguard는 이를 clang에 넘겨 컴파일·링크합니다(C 헤더 가져오기도 clang이 합니다). 설치 스크립트는 clang-21 같은 버전 이름, apt.llvm.org의 /usr/lib/llvm-21, Homebrew의 llvm까지 찾아 주며, PATH의 기본 clang이 아니면 SAFEC_CLANG / SAFEC_CLANGXX를 설정합니다. 찾지 못하면 설치 방법을 안내합니다:

플랫폼 clang 설치
macOS brew install llvm
Debian / Ubuntu wget https://apt.llvm.org/llvm.sh && sudo bash llvm.sh 21
Windows winget install LLVM.LLVM
기타 LLVM 릴리스

옵션

install.sh install.ps1
--prefix=<path> -Prefix <path> 설치 디렉터리 (기본 ~/safec)
--version=<tag> -Version <tag> 특정 릴리스, 예: v1.0.0-beta-7 (기본: 프리릴리스를 포함한 최신)
--std=<sections> -Std <sections> 설치할 미리 빌드된 std 섹션, 예: core,collections,gui (기본 all)
--std=+<sections> -Std +<sections> 기존 설치에 섹션 추가
--skip-env -SkipEnv 셸 환경을 건드리지 않음

파이프로 실행할 때는 bash -s --로 옵션을 넘깁니다:

bash
curl -fsSL https://raw.githubusercontent.com/safec-org/SafeC/main/install.sh | bash -s -- --version=v1.0.0-beta-7 --std=core,collections

표준 라이브러리의 소스는 항상 설치됩니다. 미리 빌드된 아카이브는 섹션 — std의 최상위 디렉터리(core, collections, gui, ml, http, audio, async, ...) — 단위로 제공되며, safeguard는 프로젝트가 쓰는 섹션을 링크하고, 설치하지 않은 섹션은 필요할 때 소스에서 컴파일합니다. 미리 빌드된 std를 참고하세요.

첫 프로그램

bash
safeguard new hello && cd hello
safeguard run

safeguard new는 Package.toml과 src/main.sc를 만들고, safeguard run은 빌드 후 실행합니다. 다음 단계:

업데이트와 제거

설치 명령을 다시 실행하면 최신 릴리스로 업데이트됩니다(--version으로 고를 수도 있습니다). 최신 릴리스는 1.0.0-beta-7이며, 릴리스 노트에 변경 사항, 마이그레이션 방법, 알려진 문제가 있습니다. 제거하려면 설치 디렉터리(기본 ~/safec)와 설치 스크립트가 셸 rc 파일에 추가한 # SafeC 블록을 지우세요.