Fortran newsletter: April 2021#
Welcome to the April 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.
This month we’ve had several updates to the website:
#229: Correct value of pi in quickstart mini-book
#226: Added DelaunaySparse to package list
#222: Avoid unclear formulation in contributing guide
#221: Add information about free compiler versions
#216: Improve tags
#207: Correct subtitle of setting up your os
#201 (WIP): Internationalization for fortran-lang
#220 (WIP): Include learn resources to online courses
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
#320: Implement non-fancy functional string type
#362: Fix wording in style guide for dimension attribute
#352: Added TOC to README
Work in progress:
#189 (WIP): Initial implementation of sparse matrices.
#311 (WIP): Implementation of a module for handling lists of strings
#313 (WIP): Legendre polynomials and Gaussian quadrature
#333 (WIP): Provide abstract base class for a string object
#336 (WIP): Add functions to convert integer/logical values to character values
#343 (WIP): Implement strip and chomp as supplement to trim
#349 (WIP): Simplify test makefile
#353 (WIP): Initial checkin for a module for tolerant comparison of reals
#355 (WIP): Implement clip function
#359 (WIP): Add general contributing guidelines to stdlib
#360 (WIP): Summarize build toolchain workflow and implied rules
#363 (WIP): Add sort to stdlib_string_type module
#367 (WIP): Add Intel compiler workflow for OSX
Please help improve stdlib by testing and reviewing these pull requests!
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
#352: Hacky fix for the help test
#357: Install script for Fortran fpm
#369: Separate build targets from model structure
#370: Update run subcommand
#377: Add explicit include-dir key to manifest
#378: Add ford-compatible documentation to fpm_strings.f90
#386: Replace deprecated flags in debug_fortran option
#397: Add Conda install instructions to the README
#398: Minor fix: for setting executable link libraries
#402: Add fpm description and reorganize the README intro
#404: Correct join for null input
#409: Give Programs Access to Code in Subdirectories
#414: Add few important links to README
#412: Duplicate module definitions
#413: Add: omp_lib to intrinsic modules list
#419: Split workflow for Haskell and Fortran fpm
Work in progress:
First beta release (WIP): First feature-complete release of the Fortran implementation.
#364 (WIP): Plugin alpha version
#420 (WIP): Phase out Haskell fpm
fpm-haskell (WIP): Separate repository for the Haskell fpm version
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.
A total of 10 pull requests were merged in February.
A total of 8 pull requests were merged in March.
Recent development updates:
Add options for -fdefault* and -flarge-sizes
Refine tests for module search directories
Add -fdebug-module-writer option
Add debug dump, measure-parse-tree and pre-fir-tree options
Add -Xflang and make -test-io a frontend-only flang
Add -J and -module-dir to f18 driver
Fix -fdefault* family bug
FIR (Fortran IR - a dialect of MLIR):
Add diagnostic tests for FIR ops verifier
Add FIR Types parser diagnostic tests
Upstream the pre-FIR tree changes (The PFT has been updated to support Fortran 77)
Update flang test tool support classes
Add zero_bits, array value, and other operations
Upstream utility function valueHasFirAttribute() to be used in subsequent merges
OpenMP - add semantic checks for:
OpenMP 4.5 - 2.7.1 Do Loop restrictions for Threadprivate
Occurrence of multiple list items in aligned clause for simd directive
Flang OpenMP 4.5 - 126.96.36.199 Reduction clause
188.8.131.52 - Copyprivate clause
184.108.40.206 - Firstprivate clause
220.127.116.11 - Lastprivate clause
Update character tests to use gtest
Adaptations to MLIR API changes
Fix call to CHECK() on overriding an erroneous type-bound procedure
Handle type-bound procedures with alternate returns
Runtime: implement INDEX intrinsic function
Fix compilation on MinGW-w64
Extension: forward refs to dummy args under IMPLICIT NONE
Detect circularly defined interfaces of procedures
Implement the related character intrinsic functions SCAN and VERIFY
Call notes will be sent to the flang-dev email list and also recorded here.
LFortran is participating in GSoC under the NumFOCUS and Fortran-lang umbrella, if you are interested, please apply: https://gitlab.com/lfortran/lfortran/-/wikis/GSoC-2021-Ideas
114 Merge Requests were merged in the past month, highlights
macOS support (both Intel and ARM), compilation and development of LFortran itself (stacktraces work also)
Initial implentation of: modules (modfiles, dependencies, …), interfaces, integer/real kinds, public/private attribute, derived types, strings, variable initializations, pointers, modules
Many other fixes
LFortran is still in pre-alpha stage, but we are making rapid progress towards getting it to compile more Fortran features. We are looking for contributors, if you are interested, please get in touch and we will help you get started. We can be contacted at Zulip Chat, mailinglist or GitLab issues (see https://lfortran.org for links to all three).
We had our 10th Fortran Monthly call on March 24. You can watch the recording below:
This year Fortran-lang is a mentor organization for Google Summer of Code. 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. The student application window opened on March 29 and will close on April 13 at 14:00 Eastern Time.
The 223rd meeting of the US Fortran Standards Committee concluded on March 2. Main topics of dicussion were the planned changes for the Fortran 202X revision of the Standard. Here’s the list of all submitted papers, and the summary of the papers discussed and voting results. The committee also welcomed a new member, Milan Curcic (@milancurcic), who is the voting alternate to Gary Klimowicz (@gklimowicz).
If you have ideas for new improvements to the language, please propose them here.
Registration is open for the upcoming free webinar on Fortran for High Performance Computing. The webinar is organized by Excellerat and will be presented by Wadud Miah (@wadudmiah) from the University of Southampton.
We thank everybody who contributed to fortran-lang in the past month by commenting in any of these repositories: