Fortran newsletter: October 2021#
Welcome to the October 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 several updates to the website:
#305: September newsletter draft
#300: Add QCxMS to package index
#302: Update Silverfrost compiler description.
#307: Fixed typo
#308: remove excess “mpi” tag from fortran2018-examples
#246: Transferring fortran90.org « Fortran Best Practices » into a mini-book
#314: grammar and spelling from issue #313
#317: more grammar, spelling, and rewording for Fortran Best Practices
#324: replaced « be found be found » with « be found »
#320: Alternative approach to avoiding integer division
#328: Add incompact3d to package index
#333: Add fparser to package index
#335: Adding two more packages to the index
#334: Add pFlogger to package index
#336: One more package
Work in progress#
#329 (WIP): Quantum Information book, WSL GUI, and typos
#201 (WIP): Draft: Internationalization for fortran-lang
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:
#509: fixed typo
#503: refactor documentation regarding consistency
#511: Correctly set CMAKE_INSTALL_MODULEDIR cache variable
#513: Update issue templates
#523: Rename config.yaml -> config.yml
#508: github-ci: add fpm support
#475: Generating sorting subroutines specific to
character
type with fypp#525: Add files generated by tests to gitignore
#529: Add maintainer entry to fpm manifest
#530: Make it clearer how the user can control compiler optimization
#528: Reduce redundancy caused by optional arguments
#3 (
stdlib-cmake-example
): Add example integration with test-drive
Work in progress#
#543 (WIP): Fix string concat
#539 (WIP): Add function gcd
#538 (WIP): Bump stdlib version to 0.1.0
#537 (WIP): Add a changelog for the current features of stdlib
#536 (WIP): Fix conversion warnings
#521 (WIP): Ensure module output directory is generated in configure stage
#520 (WIP): [stdlib_io] add
disp
(display your data).#517 (WIP): adding SPEC_TEMPLATE.md #504
#514 (WIP): pop, drop & get with basic range feature for stringlist
#500 (WIP): Selection algorithms
#499 (WIP): [stdlib_linalg] matrix property checks
#498 (WIP): [stdlib_math] add
arg/argd/argpi
#494 (WIP): Add testing module to allow better structuring of test suites
#491 (WIP): Stdlib linked list
#488 (WIP): [stdlib_math] add
is_close
routines.#473 (WIP): Error stop improvements
#455 (WIP): stdlib_hash: waterhash algorithm
#452 (WIP): Implementation of a map data type
#363 (WIP): Sorting string’s characters according to their ASCII values
#353 (WIP): Initial checkin for a module for tolerant comparison of reals
#286 (WIP): Probability Distribution and Statistical Functions – Beta Distribution Module
#278 (WIP): Probability Distribution and Statistical Functions – Gamma Distribution Module
#276 (WIP): Probability Distribution and Statistical Functions – Exponential Distribution Module
#273 (WIP): Probability Distribution and Statistical Functions – Normal Distribution Module
#272 (WIP): Probability Distribution and Statistical Functions – Uniform Distribution Module
#189 (WIP): Initial implementation of COO / CSR sparse format
Please help improve stdlib by testing and reviewing 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 fpm:
#521: expand tabs
#557: Update installer script to update subprojects first
#558: Add issue templates
#565: Default branch renaming aftermath
#562: Add new distributions where fpm is available to README
#563: Add workflow to create single source fpm version
#564: Separate upload stage in CI testing
#572: Build no tests by default
#549: Allow setting, archiver, C compiler flags and linker flags from commandline
#578: help text was truncated
#579: Fix dir not getting removed after testing fpm
#584: Actually read environment variables
Work in progress#
#575 (WIP): Enable multiple build output directories
#569 (WIP): Add workflow for continuous delivery
#539 (WIP): Add parent packages into dependency tree
#498 (WIP): Compiler flags profiles
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#
Flang#
Recent development updates:
New Driver and CMake integration:
flang-omp-report plugin - first full fledged frontend plugin has been contributed
CMake integration - waiting on a new PR
Code-generation work is ongoing - task list has been presented to the community for discussion and approval
FIR (Fortran IR - a dialect of MLIR):
Fortran 95 lowering and runtime support is nearing completion
Code upstreaming has begun again
OpenMP
Merged: Critical, collapse clause, Fixes for SNAP.
In review: Firstprivate, Ordered, MLIR definitions for a few target side constructs, semantic checks for atomic, critical, sections, simd
OpenMP 5.0 metadirective
Runtime
Change complex type define in runtime for clang-cl
Implement READ(SIZE=) and INQUIRE(IOLENGTH=) in runtime
GET_COMMAND_ARGUMENT runtime implementation, handling the LENGTH, VALUE, STATUS and ERRMSG parameters.
COMMAND_ARGUMENT_COUNT runtime implementation
Add POSIX implementation for SYSTEM_CLOCK
Fix WRITE after BACKSPACE on variable-length file
Implement Posix version of DATE_AND_TIME runtime
Ported test scripts to Python, enables testing on Windows
More precise checks for NULL() operands
Enforce array conformance in actual arguments to ELEMENTALs
Constant folding for COUNT, SQRT, HYPOT, CABS, CSHIFT, EOSHIFT, PACK, UNPACK, and TRANSPOSE
Make this_image() an intrinsic function
Revamp C1502 checking of END INTERFACE [generic-spec]
Accept SIZE(assumed-rank, DIM=n)
Validate SIZE(x,DIM=n) dimension for assumed-size array x
Catch errors with intrinsic array inquiry functions
Correct overflow detection in folding of real->integer conversions
Upgrade warning to error in case of PURE procedure
Enforce fixed form rules about END continuation
Enforce specification function rules on callee, not call
Catch error: base of DATA statement object can’t be a pointer
Represent parentheses around derived types
Enforce constraint: defined ass’t in WHERE must be elemental
Catch branching into FORALL/WHERE constructs
Implement semantic checks for ELEMENTAL subprograms
Signal EOR in non advancing IO and move to next record
Extension: reduced scope for some implied DO loop indices
Take result length into account in ApplyElementwise folding
Apply double precision KindCode in specific proc interface
Call notes are recorded and available upon request here. Please contact Alexis Perry-Holby at aperry@lanl.gov for document access.
LFortran#
81 merged Merge Requests in September 2021
LFortran Minimum Viable Product (MVP) released
LFortran 0.13.0, 0.13.1 and 0.14.0 released in September
The following people have contributed code to LFortran in September:
Ondřej Čertík
Gagandeep Singh
Carlos Une
Thirumalai Shaktivel
Harris M. Snyder
Sebastian Ehlert
Mengjia Lyu
Many people have reported bugs (thank you all!)
Main features implemented in September:
Operator overloading (ASR, LLVM)
Goto (ASR, LLVM)
Runtime library improvements:
iand
,len
,trim
,len_trim
Interactive mode: get complex numbers, intrinsic functions working (Windows, macOS, Linux)
New driver options: –fast, –symtab-only, –target
We are looking for new contributors. Please do not hesitate to contact us if you are interested. We will help you get up to speed.
Events#
We had our 16th Fortran Monthly call on September 22. You can watch the recording below:
The second international Fortran Conference (FortranCon) 2021 was held virtually on September 23-24 Video recordings of the talks will be made available soon. For more information, visit the FortranCon website.
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: