LLVM 에 대해서 알아보자.

2023. 9. 18. 23:09swift

LLVM은 다양한 프로그래밍 언어를 대상으로 하는 `컴파일러` 개발 및 코드 최적화를 위한 공통 인프라를 제공하며, Swift 그리고 다른 언어(C, C++, Rust)에 대한 컴파일러와 관련된 도구를 개발하는 데 사용됩니다.
- 2000년 일리노이 대학교에서 `크리스 래트너` 외 몇명이 만들기 시작했다.
- LLVM은 중간코드(`intermediate`) / 이진(`binary`) 기계 코드를 구성, 최적화 및 생성하는데 사용되는 라이브러리.
- 프로그래머는 사람이 읽을 수 있는 프로그래밍 언어로 코드를 작성 하지만 기계는 이 언어를 이해하지 못한다 이때 컴파일러가 기계가 코드를 실행(읽을수)있게 변환 해준다.
- `intermediate` 또는 `binary machine` 코드로 내 코드를 컴파일 하는데 사용 되는 라이브러리 이다.
- 프론트 엔드 -> objectve-C, Swift, Ruby 와 같이 앱을 만들기 위해 사용하는 것

프론트 엔드에 대해서 알아보자
- 프론트 엔드는 C++. C, Objc, Swift, Python, Ruby 와 같은 고-급 언어로 읽고 파싱한다.
- 파싱이 되면 이 언어들은 IR(Intermdediate Represntation)이 된다.

참조 
Clang은 C, C++, Obective-C, 를 IR로 만드는 컴파일러이다.
Swift는 Swift-Clang

LLVM 의 장점 (GCC가 있는데 왜 나타났냐?)
- (모듈성) LLVM 프로젝트는 모듈성과 확장성을 강조하고 있으며 새로운 기능 추가 및 확장이 쉽다.
- (중간 표현)LLVM은 중간 표현(IR)을 사용하여 컴파일러 기능을 수행하므로,최적화하기가 훨씬 용이합니다. LLVM 기반의 컴파일러는 새로운 언어의 지원이나 최적화 기능 추가가 더 간단하고 유연하다.
- (속도)LLVM 컴파일러는 코드 최적화 및 컴파일 속도 면에서 일반적으로 GCC보다 뛰어납니다. LLVM은 최적화 기술을 적용하여 더 효율적인 기계 코드를 생성한다
-  GCC는 단일 모노리식 컴파일러로 구성되어 있어 확장이 어렵다.  

참조
중간 표현(IR, Intermediate Representation)은 컴파일러나 코드 최적화 도구에서 사용되는 추상적인 프로그램 표현입니다.

애플이 왜 LLVM을 선택 했는가?
- LLVM은 모듈화된 아키텍처를 가지고 있기에, 개별적으로 개발하고 테스트할 수 있게 한다. 이렇기에 애플이 원하는대로 개발하며 최적화 하는데 유용하다.
-  LLVM은 애플의 목표와 요구 사항에 부합하는 더 좋은 선택으로 여겨졌습니다. 애플은 LLVM을 사용하여 자체 소프트웨어 스택을 개발하고 확장할 수 있어서다?.
-  애플은 회사이며, 돈을 벌기 위해서?? (자세히는 모르겠지만 추후 추가해야함.)

 

애플이 왜 선택했는지 대해서 조금더 자세히 알고 계시다면.. 조언 좀 부탁드립니다.

참조
`GPL`과 같은 `동일 공유` 라이선스의 제한을 피할 수 있었습니다. 이렇게 해서 애플은 LLVM을 통해 자체 소프트웨어 스택을 개발하고 유지할 수 있게 되었습니다.

 

참고링크(https://www.quora.com/Why-did-Apple-choose-LLVM-and-not-GCC)

'swift' 카테고리의 다른 글

ARC  (2) 2024.01.08
ISP: 인터페이스 분리 원칙  (1) 2023.12.03
Swift 의 장점에 대해서!  (0) 2023.08.22
구조체와 클래스  (0) 2023.08.22
야곰 아카데미 스위프트 `코드 스타터` 7기 후기  (0) 2023.03.30