# LLVM Fortran 컴파일러 Flang 첫번째 공식 릴리즈

> Clean Markdown view of GeekNews topic #19726. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19726](https://news.hada.io/topic?id=19726)
- GeekNews Markdown: [https://news.hada.io/topic/19726.md](https://news.hada.io/topic/19726.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-03-13T15:04:24+09:00
- Updated: 2025-03-13T15:04:24+09:00
- Original source: [blog.llvm.org](https://blog.llvm.org/posts/2025-03-11-flang-new/)
- Points: 1
- Comments: 0

## Topic Body

- LLVM은 2020년 LLVM 11에서부터 Fortran 컴파일러 Flang을 포함해 옴  
- 초기 실행 파일 이름은 `flang`이 아닌 `flang-new`였음  
- LLVM 20에서 `flang-new`를 `flang`으로 변경하면서 Flang의 성숙함을 인정  
- Flang은 수년간의 개발 끝에 공식 Fortran 컴파일러로 자리 잡음  
  
### Fortran의 중요성  
- Fortran은 1950년대 수식 번역(Formula Translation) 언어로 시작  
- 과학 계산에서 널리 사용됨 (기상 모델링, 유체 역학, 계산 화학 등)  
- 최근 Fortran 생태계가 다시 활성화됨  
  - Fortran 패키지 매니저(fpm), 비공식 표준 라이브러리, LFortran 등 출현  
- ARCHER2 슈퍼컴퓨터에서 실행되는 코드의 80% 이상이 Fortran으로 작성됨  
  
### 새로운 Fortran 컴파일러가 필요한 이유  
- 기존 Fortran 컴파일러:  
  - 인텔 Fortran 컴파일러, NVIDIA HPC 컴파일러 등  
  - 오픈소스 컴파일러: GFortran  
- Flang 프로젝트 초기 파트너: 미국 국립 연구소 및 NVIDIA  
- 목표:  
  - 오픈소스이자 상업적 사용에 적합한 라이선스 제공  
  - 활발한 Fortran 컴파일러 개발자 커뮤니티 구축  
  - LLVM 기반 도구로 Fortran 개발 지원  
  - 새로운 언어 표준 제안을 위한 실험 플랫폼 제공  
- 여러 구현이 존재하면 호환성 문제 완화 및 개선 가능  
  
### Flang의 타임라인  
- **1989년**: Portland Group(PGI) 설립  
- **2015년**: Classic Flang 프로젝트 시작 (NVIDIA, 미국 국립 연구소 주도)  
- **2017년**: Classic Flang의 첫 릴리스 및 오픈소스 전환  
- **2018년**: Classic Flang의 프론트엔드를 F18로 재작성 시작  
- **2019년**: F18이 LLVM 프로젝트에 통합됨  
- **2020년**: Flang의 새로운 드라이버 `flang-new` 도입  
- **2022년**: NVIDIA가 FIR(Fortran IR)을 LLVM에 기여  
- **2024년**: `flang-new`가 `flang`으로 이름 변경  
- **2025년**: LLVM 20.1에서 `flang` 실행 파일 포함  
  
### Flang의 이름 변경 과정  
- Flang의 이름 변경은 여러 차례 논의되었음  
- 결정 기준:  
  - 주요 기능 및 성능 문제 해결  
  - 미완성 언어 기능은 명확한 오류 메시지 출력  
  - 다른 Fortran 컴파일러와 성능 비교에서 우수한 결과 필요  
  - 광범위한 테스트 스위트를 통한 안정성 확인  
- LLVM 공동 창립자 Chris Lattner의 조언:  
  > "기존 Flang과 새로운 Flang의 이름 충돌 문제 해결 필요"  
- 2024년 10월, 커뮤니티 합의 후 `flang-new` → `flang`으로 이름 변경 완료  
  
### Flang의 컴파일 과정 및 MLIR 도입  
#### MLIR(Multi-Level Intermediate Representation)  
- LLVM IR만으로는 고수준 언어 정보 보존 어려움  
- MLIR은 고수준 언어의 특성을 보존하고 최적화 가능  
- Flang은 FIR(Fortran IR)을 MLIR 기반으로 구축  
- FIR은 Fortran의 배열, 타입 등의 정보를 보존  
  
#### HLFIR(High Level FIR)  
- FIR 상위 수준의 표현  
- 배열 최적화 및 고급 Fortran 구문 지원  
  
#### 컴파일 단계  
1. Fortran 소스 코드  
2. MLIR (HLFIR + FIR) 생성  
3. FIR 변환  
4. LLVM IR 변환  
5. 머신 IR → 어셈블리 → 실행 파일  
  
### Flang의 OpenMP 지원  
- OpenMP는 병렬 프로그래밍을 위한 표준 API  
- Flang은 MLIR에 OpenMP 전용 dialect 추가  
- `OpenMPIRBuilder`를 사용해 LLVM IR로 변환  
- Flang의 OpenMP 구현은 Clang과 구조적으로 유사  
  
### Flang의 드라이버 설계  
- `flang` → 사용자 친화적 드라이버  
- `flang -fc1` → 개발자 친화적 프론트엔드 드라이버  
- Clang의 `clangDriver` 라이브러리 기반 구현  
- 다양한 타겟 및 도구 지원 가능  
  
### Flang의 기여 및 반응  
- **Arm**: Flang 기반 HPC 툴체인 개발  
- **Fujitsu**: HPC 테스트 스위트를 통해 Flang 개선 기여  
- **Linaro**: Fujitsu 테스트 스위트를 통한 결함 수정  
- **SciPy**: Flang 도입으로 윈도우 지원 문제 해결  
- **Barcelona Supercomputing Center**: RISC-V 벡터화 및 내부 병렬 모델 지원  
- **Chris Lattner**:  
  > "Flang은 LLVM 프로젝트가 제공하는 협업 모델의 상징"  
- **AMD**: 차세대 Fortran 컴파일러를 Flang 기반으로 개발 중  
  
### Flang 기여 방법  
- Flang은 오픈소스 프로젝트로 지속적인 발전 중  
- 직접 사용해 보고 피드백 제공 가능  
- 코드 기여, 문서 수정 등 다양한 기여 방법 존재  
- LLVM의 표준 기여 프로세스를 따름

## Comments



_No public comments on this page._
