LFortran Development Status¶
This page documents what Fortran features are supported by LFortran. For each feature we list a short description, the filename with the test and current status for each parts of the compiler:
- AST: The code can be parsed to AST ( - lfortran --show-ast test.f90)
- ASR: The code can be transformed to ASR ( - lfortran --show-asr test.f90)
- LLVM: LFortran can generate LLVM IR ( - lfortran --show-llvm test.f90)
- BIN: The LLVM IR can compile to a binary 
- RUN: The binary runs without errors 
If all are green it means the feature fully works and you can use it in your codes. Otherwise you can see what the status is of each feature.
This page is generated automatically using the Compiler Tester repository which contains all the Fortran tests and scripts to run LFortran to produce the tables below. We are looking for contributors to contribute more tests. Our goal is to have a comprehensive Fortran testsuite that can be used to test any Fortran compiler.
Testing the LFortran compiler version:
$ lfortran --version
LFortran version: 0.12.0-491-gaf48ff273
Platform: macOS
Default target: x86_64-apple-darwin20.3.0
Topics¶
Full programs that compute something interesting¶
Basic Numerics¶
Directory: tests/programs/numerics
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
Modules¶
Basic Usage¶
Directory: tests/modules/basic
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
Module Functions and Subroutines¶
Directory: tests/modules/procedures
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
Expressions¶
Arithmetic Operations¶
Directory: tests/expressions/arit
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
Integers¶
Directory: tests/expressions/integers
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
Real Numbers¶
Directory: tests/expressions/reals
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ❌ | ❌ | ❌ | ❌ | 
Complex Numbers¶
Directory: tests/expressions/complex
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
Strings¶
Directory: tests/expressions/character
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
Derived Types¶
Directory: tests/expressions/derived_type
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
Statements¶
Allocate Statement¶
Directory: tests/statements/allocate
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
Block Statement¶
Directory: tests/statements/block
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ❌ | ❌ | ❌ | ❌ | 
Goto Statement¶
Directory: tests/statements/goto
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ❌ | ❌ | ❌ | ❌ | |
| 
 | ✅ | ❌ | ❌ | ❌ | ❌ | 
If Statement¶
Directory: tests/statements/if
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
While Statement¶
Directory: tests/statements/while
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
Print Statement¶
Directory: tests/statements/print
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
Open, Read, Write, Close Statement¶
Directory: tests/statements/file_io
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
Intrinsic Functions¶
abs¶
Directory: tests/intrinsic/abs
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ❌ | ❌ | ❌ | ❌ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
exp¶
Directory: tests/intrinsic/exp
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
log¶
Directory: tests/intrinsic/log
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
sqrt¶
Directory: tests/intrinsic/sqrt
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ❌ | ❌ | ❌ | ❌ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
sin¶
Directory: tests/intrinsic/sin
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ❌ | ❌ | ❌ | ❌ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
cos¶
Directory: tests/intrinsic/cos
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
tan¶
Directory: tests/intrinsic/tan
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
sinh¶
Directory: tests/intrinsic/sinh
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
cosh¶
Directory: tests/intrinsic/cosh
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
tanh¶
Directory: tests/intrinsic/tanh
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
asin¶
Directory: tests/intrinsic/asin
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
acos¶
Directory: tests/intrinsic/acos
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
atan¶
Directory: tests/intrinsic/atan
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
modulo¶
Directory: tests/intrinsic/modulo
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ❌ | ❌ | ❌ | ❌ | |
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
mod¶
Directory: tests/intrinsic/mod
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ❌ | ❌ | ❌ | ❌ | |
| 
 | ✅ | ❌ | ❌ | ❌ | ❌ | 
min¶
Directory: tests/intrinsic/min
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
max¶
Directory: tests/intrinsic/max
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ❌ | ❌ | ❌ | 
int¶
Directory: tests/intrinsic/int
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ❌ | ❌ | ❌ | ❌ | 
real¶
Directory: tests/intrinsic/real
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
floor¶
Directory: tests/intrinsic/floor
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ❌ | ❌ | ❌ | ❌ | 
nint¶
Directory: tests/intrinsic/nint
| Description | AST | ASR | LLVM | BIN | RUN | Filename | 
|---|---|---|---|---|---|---|
| 
 | ✅ | ❌ | ❌ | ❌ | ❌ |