프로젝트 소개
V는 유지보수 가능한 소프트웨어를 만들기 위해 설계된 정적 타입의 컴파일 프로그래밍 언어입니다. 목표는 단순성, 빠른 컴파일, C에 필적하는 성능, 안전성입니다. 컴파일러는 V 자체로 작성되었으며 일반적인 하드웨어에서 1초 안에 부트스트랩할 수 있습니다.
프로젝트에서 설명하는 주요 특징은 다음과 같습니다:
- 단순성: 짧은 시간 안에 배울 수 있도록 설계되었습니다.
- 빠른 컴파일: README에 따르면 특정 테스트 머신에서 Clang 백엔드로 약 110k 라인/초, 네이티브 및 tcc 백엔드로 약 500k 라인/초를 기록합니다.
- 셀프 호스팅: V는 스스로 빠르게 컴파일하며, 주요 백엔드는 사람이 읽을 수 있는 C 코드를 생성합니다.
- 안전 기능: null 없음, 전역 변수 없음, 기본 불변성, 정의되지 않은 동작 제거를 위한 노력.
- 메모리 관리 옵션: 기본 가비지 컬렉션 외에 수동(`-gc none`), 아레나 할당(`-prealloc`), 자동 해제(`-autofree`) 모드를 제공합니다.
- C-to-V 번역: DOOM 번역 데모로 시연됩니다.
- 핫 코드 리로딩.
- 내장 ORM 및 내장 웹 프레임워크(veb).
- C 및 JavaScript 백엔드와 REPL을 제공합니다.
- 크로스 플랫폼 UI 라이브러리와 내장 그래픽 라이브러리.
- Alpine/musl Docker 이미지를 통한 정적 바이너리를 포함한 쉬운 크로스 컴파일.
설치는 주로 소스에서 이루어집니다: 저장소를 클론하고 `make`를 실행합니다(Windows에서는 `makev.bat`, BSD/Solaris에서는 `gmake`). 빌드 시 호환되는 버전이 있으면 번들된 Tiny C Compiler를 다운로드합니다. Docker 및 Alpine Dockerfile도 제공됩니다. `v up`은 컴파일러를 업데이트하고, `v symlink`는 PATH에 추가합니다.
Atom, CodeLite, Emacs, JetBrains, Sublime Text, Vim/Neovim, VS Code, Zed용 편집기 및 IDE 지원이 제공되며, 언어 서버 기능은 v-analyzer가 담당합니다.
예제로는 hello world, 단어 카운터, 뉴스 페처, 테트리스, 2048이 있습니다. sokol 또는 gg 모듈을 사용하는 GUI 및 게임 예제는 추가 시스템 개발 라이브러리가 필요합니다. 네트워킹 모듈(net.http, net.websocket)과 `v install`은 번들된 Mbed-TLS 또는 `-d use_openssl`을 통한 시스템 OpenSSL을 사용할 수 있습니다. sync 모듈은 libatomic에 의존합니다.
README는 언어가 1.0 이전 버전이며 여전히 변경될 수 있고, 구문 변경은 대부분 vfmt가 처리한다고 언급합니다. 1.0 이후에는 Go와 유사한 기능 동결을 계획하고 있으며, 버그 수정과 성능 개선만 이루어질 예정입니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.