| # Flang |
| |
| Flang is a ground-up implementation of a Fortran front end written in modern |
| C++. It started off as the f18 project (https://github.com/flang-compiler/f18) |
| with an aim to replace the previous flang project |
| (https://github.com/flang-compiler/flang) and address its various deficiencies. |
| F18 was subsequently accepted into the LLVM project and rechristened as Flang. |
| |
| Please note that flang is not ready yet for production usage. |
| |
| ## Getting Started |
| |
| Read more about flang in the [docs directory](docs). |
| Start with the [compiler overview](docs/Overview.md). |
| |
| To better understand Fortran as a language |
| and the specific grammar accepted by flang, |
| read [Fortran For C Programmers](docs/FortranForCProgrammers.md) |
| and |
| flang's specifications of the [Fortran grammar](docs/f2018-grammar.md) |
| and |
| the [OpenMP grammar](docs/OpenMP-4.5-grammar.md). |
| |
| Treatment of language extensions is covered |
| in [this document](docs/Extensions.md). |
| |
| To understand the compilers handling of intrinsics, |
| see the [discussion of intrinsics](docs/Intrinsics.md). |
| |
| To understand how a flang program communicates with libraries at runtime, |
| see the discussion of [runtime descriptors](docs/RuntimeDescriptor.md). |
| |
| If you're interested in contributing to the compiler, |
| read the [style guide](docs/C++style.md) |
| and |
| also review [how flang uses modern C++ features](docs/C++17.md). |
| |
| If you are interested in writing new documentation, follow |
| [LLVM's Markdown style guide](https://github.com/llvm/llvm-project/blob/main/llvm/docs/MarkdownQuickstartTemplate.md). |
| |
| Consult the [Getting Started with Flang](docs/GettingStarted.md) |
| for information on building and running flang. |