< Back to news
Fortran newsletter: December 2020
December 01, 2020
Authors: Milan Curcic, Jérémie Vandenplas, Laurence Kedward, Gary Klimowicz, Ondřej Čertík
Welcome to the December 2020 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:
- #156:
Updates to the mini-book on building Fortran programs, including the addition of
short guides on Meson and CMake.
You can read the mini-book here.
- #169:
Add PSBLAS to the package index.
Ongoing work:
- #160 (WIP):
In-depth introduction for Fortran with Make.
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
:
- #239: Implementation of bitsets in
stdlib_bitsets
.
- #243,
#245,
#252,
#255: Various improvements to
stdlib_logger
.
- #245,
#250: Minor fixes to the CI.
Work in progress:
- (WIP) #240: Implementation of the
stdlib_stats_distribution
module. It provides probability distribution and statistical functions.
- (WIP) #189: Initial implementation of sparse matrices.
Don’t hesitate to test and review these pull requests!
Otherwise, ongoing discussions continue:
- #220: API for file system operations: directory manipulation
- #241: Include a
split
function (202X feature)
- #254: Proposition to add a logger for debug phases and levels among the different logs.
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
:
- #259: Update the instructions for building from source in README.md.
- #246: Automated binary releases in CI.
- #233: Allow linking with external libraries.
- #224: Add a reference document for the package manifest (fpm.toml).
- #221,
#239: Runner options for test and app executables.
- #220: Implement compiler and flags settings in Haskell fpm.
- #209:
#237: Developer API docs.
- #216,
#225,
#226,
#229,
#236,
#240,
#247: Other fixes and improvements.
Work in progress:
- First beta release (WIP): First feature-complete release of the Fortran implementation.
- (WIP) #230,
#261: Specification of the fpm CLI.
- (WIP) #232: Allowing the
extra
section in fpm.toml.
- (WIP) #248: Refactor backend for incremental rebuilds.
- (WIP) #251: Dependency management.
- (WIP) #255: Setting the compiler and specifying test or app target.
- (WIP) #257: Implement
fpm install
.
- (WIP) #260: Fix CI to test release build.
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 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
We continue to evaluate and merge pull requests into Classic Flang. Recently merged pull requests into Classic Flang include:
Pull requests merged into the supporting projects:
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 are Wednesday, December 16 and 30, 8:00 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. Significant contributions are being made for OpenMP and OpenACC support.
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).
Pat McCormick is (still) working on an RFC for the merge of the lowering code
in the fir-dev fork into LLVM master. (This was interrupted by Supercomputing 2020 and other ECP duties.) The goal is to expedite this in a way that is acceptable to the Flang community, so we can do further work in the single master branch.
Recent updates include:
- Johannes Doerfert has created a web page at https://flang.llvm.org; you can find call and Slack logistics there
- Nichols Romero has an llvm-dev RFC for adding Fortran tests to the llvm-tests project: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146873.html
- Andzrej Warzynski has a flang-dev RFC regarding flang option names: http://lists.llvm.org/pipermail/flang-dev/2020-November/000588.html
- Andzrej Warzynski has a cfe-dev RFC regarding refactoring clang to help flang driver become independent of clang: http://lists.llvm.org/pipermail/cfe-dev/2020-November/067263.html
- Changed representation of CHARACTER data in type system to make more consistent with other types (for arrays)
- Changed COMPLEX expression representation to provide better handling in lowering
- More improvements for supporting Fortran 77 programs
- Implemented runtime support for basic ALLOCATE/DEALLOCATE and further work
- Continued implementation of table-driven runtime for derived types; posted documentation
- Continued implementation of array expression lowering
- Improved error checks on forward references
- More updates to flang driver (option handling; -E can now be used to invoke just the Flang preprocessor)
- OpenACC semantic checks for modifiers on enter/exit data, set directives
- OpenACC lowering (enter/exit data, update, init, shutdown, wait directives)
- OpenMP structure checker updates; semantic checks for copyin clause; schedule class
Events
- Brian Friesen (Lawrence Berkeley National Laboratory) was selected to be the new Chair of PL22.3 (J3, US Standards Committee).
Brian will serve in his first term until November 2023. Congratulations, Brian!
- We had our 6th Fortran Monthly call on November 17.
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: