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:
#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
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
tostdlib_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
#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
:
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.
#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
statementsContinued 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()
, andC_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.
Episode 6 of the Algorithms+Data Structures=Programs (ADSP) Podcast discussed Fortran and the recent fortran-lang developments.
First year of Fortran-lang by Milan Curcic.
Contributors#
We thank everybody who contributed to fortran-lang in the past month by commenting in any of these repositories: