Fortran newsletter: January 2021#

Happy New Year! Welcome to the January 2021 edition of the monthly Fortran newsletter. The newsletter comes out at the beginning of every month and details Fortran news from the previous month.

fortran-lang.org#

This month we’ve had a few updates to the website:

  • #178, #188: Fix build preview

  • #179: Fix word spelling error in quickstart page

  • #173, #180, #186: Add missing packages from the list of popular Fortran projects to the package index

  • #182: Update compilers page following Intel oneAPI release

  • #160, #171: In-depth introduction for Fortran with Make.

Ongoing work:

  • #187 (WIP): Correct compiler page and tutorial regarding Intel oneAPI and PGI to NVIDIA

  • #174 (WIP): We are searching for a representative Fortran code snippet for the website and are looking forward to suggestions.

  • #190 (WIP): Add links to fpm contributing guidelines

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#

Here’s what’s new in stdlib:

  • #256: Add the method log_debug to stdlib_logger

  • #257: Improve CMake check for F18 error stop

  • #260: Add Intel oneAPI Fortran compiler to CI

  • #261: Add a level option to ignore logging messages

  • #263, #267: Minor fixes to CI

  • #270: Add GFortran 10 to CI

  • #275: Add MSYS2 systems to Windows CI

  • #282: Add a note about memory issues when compiling stdlib with the support of arrays to up 15 ranks

  • #283: Improve the compilation load by splitting submodules

Work in progress:

  • #269 (WIP): Implementation of a module for handling lists of strings

  • #271 (WIP), #272 (WIP), #273 (WIP), #276 (WIP), #278 (WIP): Implementation of the stdlib_stats_distribution modules. It provides probability distribution and statistical functions.

  • #284 (WIP): Required changes to be able to use stdlib as a subproject in CMake

  • #189 (WIP): Initial implementation of sparse matrices.

Don’t hesitate to test and review these pull requests!

Otherwise, ongoing discussions continue about usability of stdlib (#7, #215, #279, #280, #285), and new implementations for stdlib (#135, #212, #234, #241, #258, #259, #262, #268, #277).

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#

Here’s what’s new in fpm:

  • Alpha release version 0.1.3

  • setup-fpm action: GitHub Action to setup the Fortran Package Manager on Ubuntu, MacOS and Windows runners

  • Discussion board: For questions & answers, sharing of ideas, showing off projects and, of course, discussions around fpm

  • #248: Refactor backend for incremental rebuilds

  • #266: Dependency management and fpm update subcommand

  • #255 Setting the compiler and specifying test or app target

  • #262: Add -fcoarray=single to default gfortran flags

  • #257: Implement fpm install

  • #260: Fix CI to test release build

  • #267: Fix enumeration of non-library link objects

  • #268: Fix dependency tracking issue in bootstrap version

  • #271: Fix Windows run and test commands

  • #273: Update developer documentation (manifest + command line)

  • #274: Update README with link to setup-fpm github action.

  • #280: Create specification for example section

  • #281: Cleanup: Remove archived Rust prototype

  • #284: Document model and backend for developers

  • #285: CI: update naming of release binaries

  • #286: Implement check for duplicated program names

  • #289: Add support for same compilers as Fortran version to Haskell version

  • #291: Initial implementation of fpm build --show-model

  • #292: Specify the correct help for fpm run -h

  • #293: Fix: missing error check after new_package call

  • #294: Add: support for detecting .f and .F files

  • #300: Remove -coarray=single option from ifort compiler default options

  • #303: Fixes to source parsing

  • #304: Remove note on not supported dependencies in program targets

  • #307: Fix: program object file collision

  • #315: Remove: -ffast-math in gfortran default release flags

  • #322: Group sources by package in the model

Work in progress:

  • First beta release (WIP): First feature-complete release of the Fortran implementation.

  • #230, #261 (WIP): Specification of the fpm CLI.

  • #316 (WIP): Update subcommand « new » to reflect the addition of support for examples

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

  • Use it and let us know what you think! Read the fpm packaging guide to learn how to build your package with fpm, and the manifest reference to learn what are all the things that you can specify in the fpm.toml file.

  • Browse existing fpm packages on the fortran-lang website

  • 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.

Compilers#

Classic Flang#

There are several pull requests out for evaluation.

Only one pull request was merged in December:

LLVM Flang#

Alexis-Perry Holby (aperry@lanl.gov) has taken over the Flang biweekly calls. An invitation was sent to the flang-dev LLVM email list on December 22nd. Call notes will be sent to the flang-dev email list and also recorded here.

Recent development updates:

  • Semantic analysis fix for index-names of FORALL statements

  • Continued work on parser support for ALLOCATE

  • Build tidying

  • OpenMP semantic checks: atomic, flush

  • Continued work on new driver

  • Fix for list-directed REAL output editing

  • Bug fixes: USE of USE of generic, crash in folding (#48437), crash in OpenMP semantic check (#48308), IMPLICIT_NONE(EXTERNAL)

  • Implement STORAGE_SIZE(), SIZEOF(), and C_SIZEOF()

  • OpenACC: update serial construct clauses for 3.1, enforce restriction on routine directive and clauses

  • OpenMP: adding important clauses to OmpClause, task reduction clause

Events#

  • We had our 7th Fortran Monthly call on December 15. 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.

Contributors#

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