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
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Модули¶
Basic Usage¶
Directory: tests/modules/basic
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Module Functions and Subroutines¶
Directory: tests/modules/procedures
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Выражения¶
Arithmetic Operations¶
Directory: tests/expressions/arit
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Integers¶
Directory: tests/expressions/integers
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Real Numbers¶
Directory: tests/expressions/reals
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
Complex Numbers¶
Directory: tests/expressions/complex
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Strings¶
Directory: tests/expressions/character
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Производные типы данных¶
Directory: tests/expressions/derived_type
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Statements¶
Allocate Statement¶
Directory: tests/statements/allocate
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Block Statement¶
Directory: tests/statements/block
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
Goto Statement¶
Directory: tests/statements/goto
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
If Statement¶
Directory: tests/statements/if
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
While Statement¶
Directory: tests/statements/while
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Print Statement¶
Directory: tests/statements/print
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Open, Read, Write, Close Statement¶
Directory: tests/statements/file_io
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
❌ |
❌ |
❌ |
Intrinsic Functions¶
abs¶
Directory: tests/intrinsic/abs
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
exp¶
Directory: tests/intrinsic/exp
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
log¶
Directory: tests/intrinsic/log
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
sqrt¶
Directory: tests/intrinsic/sqrt
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
sin¶
Directory: tests/intrinsic/sin
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
cos¶
Directory: tests/intrinsic/cos
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
tan¶
Directory: tests/intrinsic/tan
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
sinh¶
Directory: tests/intrinsic/sinh
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
cosh¶
Directory: tests/intrinsic/cosh
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
tanh¶
Directory: tests/intrinsic/tanh
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
asin¶
Directory: tests/intrinsic/asin
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
acos¶
Directory: tests/intrinsic/acos
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
atan¶
Directory: tests/intrinsic/atan
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
modulo¶
Directory: tests/intrinsic/modulo
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
mod¶
Directory: tests/intrinsic/mod
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
min¶
Directory: tests/intrinsic/min
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
❌ |
❌ |
❌ |
max¶
Directory: tests/intrinsic/max
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
❌ |
❌ |
❌ |
int¶
Directory: tests/intrinsic/int
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
real¶
Directory: tests/intrinsic/real
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
floor¶
Directory: tests/intrinsic/floor
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
nint¶
Directory: tests/intrinsic/nint
Описание |
AST |
ASR |
LLVM |
BIN |
RUN |
Filename |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |