Fortran newsletter: October 2020

Welcome to the October 2020 edition of the monthly Fortran newsletter. The newsletter comes out on the first calendar day of every month and details Fortran news from the previous month.

This month we’ve had only one minor change to the website:

  • #136: Small fix in the opening sentence on the compilers page

Ongoing work:

  • #117: Adding a Benchmarks section, a new dedicated repository was created at and many details have been discussed in issues there.

Let us know if you have any suggestions for the website and its content. We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

Fortran Standard Library

This month we’ve had an improvement to the stdlib_ascii module, as well as addition of logging facilities.

  • #238: Improvements to the stdlib_stats module by adding explicit conversions.

  • #228: Implementation of the stdlib_logger module. It provides a global logger instance for easy use in user applications, as well as a logger_type derived type if multiple concurrent loggers are needed. See the logger specification to learn more.

Work in progress:

  • #239: Implementation of the stdlib_bitsets module. It provides a bitset data type.

  • #235: Improvements to the stdlib_ascii module

Otherwise, ongoing discussions continue:

  • #225: Name convention for derived types in stdlib

  • #224: Handling and propagating errors inside stdlib

  • #221: API for a bitset data type

  • #201: API for file system operations

The candidate for file system operations to be included in stdlib is being developed by @MarDiehl and @arjenmarkus in this repository. Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

Fortran Package Manager

This month has seen over a dozen additions and improvements to the Fortran implementation of fpm:

  • #186: Implement version string validation and comparison

  • #185: Update CI workflow

  • #182: CLI interface to further development of subcommands

  • #180: Recursive source discovery

  • #178: Add more example packages

  • #177: Allow selective testing of single suites and tests

  • #175: Updated formatting of Markdown documents

  • #174: Cache Haskell Stack build in CI

  • #171: Increase test coverage of fpm manifest

  • #170: Source parsing tests

  • #163: Use different strategy to fetch git dependencies

  • #162: Updated OS type identification

  • #160: Add contributing guidelines (you can read them here)

  • #157: Implement reading of fpm.toml

  • #155: Internal dependencies and build backend

Work in progress:

  • #193 (WIP): Local path dependencies

  • #190 (WIP): Auto discovery of executables

  • #189 (WIP): Implement fpm new

fpm is still in early development and we need as much help as we can get. Here’s how you can help today:

  • Try to use it. Does it work? No? Let us know! Read the fpm packaging guide to learn how to build your package with fpm.

  • Browse the open issues and see if you can help implement any fixes or features.

  • Adapt your Fortran package for fpm and submit it to the Registry.

  • Improve the documentation.

The short term goal of fpm is to make development and installation of Fortran packages with dependencies easier. Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy environment in which new open source Fortran projects are created and published with ease.


Classic Flang

We continue to evaluate and merge pull requests into the original Flang compiler again. We pulled in several changes in the past month.

One important merge was support for LLVM 10, which required the use of a new fork, the classic-flang-llvm-project fork of the LLVM monorepo. See PR#1 for details.

Other recently merged pull requests into Classic Flang include:

The Classic Flang biweekly call has been set up to discuss issues and plans for the next pull requests to be validated and merged. Our next calls will be Wednesday, October 7 and 21, 8:30 AM Pacific time. The notes from previous calls, upcoming agenda and a link to join the call can be found here.

LLVM Flang

Work continues on LLVM Flang, concentrating on semantics, lowering and runtime sufficient to compile and run Fortran 77 programs.

In conjunction with the MLIR-based code from the fir-dev fork (the Fortran IR used for lowering), Flang can compile and run most F77 programs, including the Fortran Compiler Validation Suite (FCVS). We continue to work on refactoring necessary to upstream the fir-dev fork into LLVM flang proper.

Arm has contributed changes toward a full-fledged driver for flang.

AMD continues to add support for OpenMP semantics and lowering.

Valentin Clement continues to contribute parsing and semantics changes for OpenACC support. This will be the topic of the next Flang Technical Community call on Monday, October 5, 8:30 AM Pacific Time.

Michael Kruse continues to add support for building Flang on Windows with MSVC.


What’s new in LFortran:

  • 59 Merge Requests were merged and 3 issues fixed in September 2020

  • The FortranCon 2020 LFortran video now available

  • LFortran, now imlemented in C++, has surpassed the Python prototype from a year ago

  • The Jupyter notebook now works as it used to with the Python prototype

  • A new notebook added showcasing how to visualize AST, ASR and C++ translation in Jupyter (!624)

  • X86 backend to generate direct x86-32 machine code (very fast compilation in Debug mode)

  • Further parser improvements

  • Initial Fortran modules support

  • Initial support for using GFortran modules (!632)

  • Better compiler error messages (!617)

  • The interactive prompt (REPL) now understands arrow keys (!603)

You can follow LFortran on Twitter for latest updates: @lfortranorg.


  • We had our fourth Fortran Monthly call on September 25. You can watch the recording below:

As usual, subscribe to the mailing list and/or join the Discourse to stay tuned with the future meetings.


We thank everybody who contributed to fortran-lang in the past month by commenting in any of these repositories: