Fortran newsletter: February 2021#

Welcome to the February 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:

  • #190: Add links to fpm contributing guidelines

Ongoing work:

  • #191 (WIP): Fix author/maintainer output in fpm registry

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

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:

  • #303, #301, #294: Fixes and improvements for the manual Makefile build

  • #293: Write a more verbose introduction to building stdlib

  • #291: Export package files (CMake and pkg-config)

  • #290: Rename CMake project from stdlib to fortran_stdlib

  • #288: Follow GNU install conventions

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

  • CMake example: Integration of the Fortran standard library in CMake projects

Work in progress:

  • #304 (WIP): Add supported compilers MinGW 8, 9, 10

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

  • #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:

  • #342: Fix broken link in contributing guidelines

  • #337: Allow hyphens in fpm project names in “fpm new”

  • #335: Fix: performance regression

  • #334: Remove a name clash in the fpm testsuite

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

  • #345 (WIP): Update: fpm_backend with dynamic openmp scheduling

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 a number of pull requests out for evaluation.

A total of 12 pull requests were merged in January.

LLVM Flang#

Recent development updates:

  • OpenMP semantic checks: private, firstprivate, lastprivate, Workshare Construct, DO loop restrictions

  • Detect call to abstract interface

  • OpenMP - add task_reduction clause, make reduction clause part of OmpClause

  • New Driver - adding support for various options, testing improvements, standard macro pre-definitions, fixed-form detection, CMake improvements

  • OpenACC - semantic checks to enforce declare directive restrictions

  • Internal subprogram improvements

  • OpenMP/OpenACC - Extend CheckNoBranching to handle branching provided by LabelEnforce

  • Disallow INTENT attribute on procedure dummy arguments

  • Module file improvements and bug fixes

  • Add tests for procedure arguments with implicit interfaces

Call notes will be sent to the flang-dev email list and also recorded here.

Events#

  • We had our 8th Fortran Monthly call on January 19. You can watch the recording below:

  • This year fortran-lang will be applying as a mentor organisation for Google Summer of Code. We have started working on the application and the project ideas; you can join the ongoing discussion here. If you’d like to help us flesh out the ideas, or have a project idea of your own, please join our upcoming video calls on February 9 and 16 (call info will be posted in the Discourse thread), or write directly in the Discourse thread. If you’re a student, or know students who are eligible to participate, and you’d like to help build the Fortran ecosystem please reach out and let us know.

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: