Fortran newsletter: April 2022#

Welcome to the April edition of the monthly Fortran newsletter. The newsletter comes out at the beginning of every month and details Fortran news from the previous month.

Here’s what’s new in the repo:

  • #379: Newsletter for March 2022

  • #383: Updated VS Code extensions

  • #381: add string array to learn

  • #384: Resolves typos #377

Work in progress#

  • #369 (WIP): Resolves Issue #217

  • #347 (WIP): Fortran Intrinsics

让我们知道 如果你对网站及其内容有任何建议。我们欢迎任何新的贡献者加入网站,尤其是教程页面 —— 请参阅 贡献者指南 了解如何开始。

Fortran 标准库#

Here’s what’s new in stdlib:

  • #632: doc: fix some typos

  • #629: option to disable testing by setting BUILD_TESTING to OFF

  • #631: Preparation for 0.2.0 release

  • #637: Only set Fortran arguments for Fortran compiler

  • #642: Fix linking issue with shared libraries

Work in progress#

  • #625 (WIP): Gamma special function

  • #611 (WIP): Hash maps

  • #604 (WIP): Add get_argument, get_variable and set_variable

  • #580 (WIP): Add terminal and color escape sequences

  • #552 (WIP): fixed bug in stringlist

  • #536 (WIP): Fix conversion warnings

  • #520 (WIP): [stdlib_io] add disp(display variable values formatted).

  • #517 (WIP): adding #504

  • #514 (WIP): pop, drop & get with basic range feature for stringlist

  • #491 (WIP): Stdlib linked list

  • #473 (WIP): Error stop improvements

  • #363 (WIP): Sorting string’s characters according to their ASCII values

  • #286 (WIP): Probability Distribution and Statistical Functions – Beta Distribution Module

  • #278 (WIP): Probability Distribution and Statistical Functions – Gamma Distribution Module

  • #189 (WIP): Initial implementation of COO / CSR sparse format

Please help improve stdlib by testing and reviewing pull requests!

@MarDiehl@arjenmarkus该仓库。请尝试一下,如果有任何问题,或者 API 是否可以改进,请告诉我们它是如何工作的。

Fortran 包管理器#

Here’s what’s new in fpm:

  • #675: Fix for backtrace error when file not found in: src/fpm_source_parsing.f90

  • #677: Fix issue with backend pretty output

  • #684: fix: remove remove unnecessary space in fpm new cmd

  • #8 (setup-fpm): Update to v4 in usage example in README

Work in progress#

  • #685 (WIP): fix: function for getting executable path

  • #676 (WIP): Tree shaking for modules

  • #671 (WIP): Add library-dir to support -Lpath

  • #665 (WIP): add clean command

  • #653 (WIP): Enable profiles in toml

  • #608 (WIP): –env switch lets you specify the prefix of the compiler-related environment variables

  • #539 (WIP): Add parent packages into dependency tree

  • #498 (WIP): Compiler flags profiles

fpm 仍处于早期开发阶段,我们需要尽可能多的帮助。以下是你今天可以提供的帮助:

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

  • fortran-lang 网站 上浏览现有的 fpm

  • 浏览 开启的 issues,看看你是否可以帮助实施任何修复或功能。

  • 为 fpm 调整 Fortran 包并将其提交到 Registry

  • 改进文档。

fpm 的短期目标是使具有依赖关系的 Fortran 包的开发和安装更容易。其长期目标是构建一个丰富且分散的 Fortran 软件包生态系统,并创建一个健康的环境,在该环境中轻松创建和发布新的开源 Fortran 项目。




  • FIR

    • Lower IO open and close statements

    • Lower basic IO file statements

    • Lower inquire statement

    • Handle module in lowering pass

    • Lower more cases of assignments on allocatable variables

    • Add lowering for host association

    • Lower allocate and deallocate statements

    • Lower sum intrinsic

    • Lower computed and assigned goto

    • Lower associate construct

    • Update ArrayValueCopy to support array_amend and array_access

    • Lower more array character cases

    • Lower basic derived types

    • Lower where statement

    • Lower general forall statement

    • Lower pointer component in derived type

    • Lower of elemental calls in array expression

    • Add tests for allocatable global

    • Add support for linkonce_odr in FIR

    • Lower elemental calls

    • Lower ALL intrinsic

    • Lower common block

    • Lower format statement

    • Write a pass to annotate constant operands on FIR ops

    • Lower ANY intrinsic

    • Add support for lowering the dot_product intrinsic

    • Add support for lowering the dim intrinsic

    • Add support for lowering of the ibits intrinsic

    • Lower more pointer assignments/disassociation cases

    • Lower entry statement

    • Lower alternate return

    • Lower allocated intrinsic

    • Add lowering for the following character related intrinsics: len, len_trim, lge, lgt, lle and llt

    • Adds lowering for min/max intrinsics: max, maxloc, maxval, minloc, minval

    • Lower random_[init|number|seed] intrinsics

    • Lower date_and_time and cpu_time intrinsics

    • Lower system_clock intrinsic

    • Add support for lowering of the ibset intrinsic

    • Lower transfer instrinsic

    • Lower adjustl and adjustr intrinsics

    • Lower count intrinsic

    • Add lowering for the set_exponent intrinsic

  • Driver

    • Add support for -debug-dump-pft

    • Add support for -S and implement -c/-emit-obj

    • Add support for -mllvm

  • OpenMP

    • [mlir]Generating enums in accordance with the guidelines

    • Added basic connect to lower OpenMP constructs

    • Support for dump OpenMP/OpenACC declarative directives PFT in module

    • Add OpenMP and OpenACC flags to bbc

  • Allow data transfer stmt control list errors to be caught

  • Extension: don’t require commas between most edit descriptors in formats

  • Fix result type of “procedure(abs) :: f”

  • Catch READ/WRITE on direct-access file without REC=

  • Honor RECL= in list-directed/namelist output

  • Accommodate module subprograms defined in the same module

  • Extend ProvenanceRange::Suffix() to handle crash case

  • Remove bogus messages for actual/dummy procedure argument compatibility

  • Support PDT type descriptors in codegen

  • Handle optional TARGET associate in ASSOCIATED runtime

  • Generate PDT runtime type info in the type definition scope

  • Accommodate arrays with a zero-extent dimension in location folding

  • Avoid crash case in provenance mapping

  • Make per-argument intrinsic error messages more localized

  • Use faster path for default formatted character input

  • Runtime validation of SPREAD(DIM=dim) argument

  • Make uninitialized allocatable components explicitly NULL() in structure constructors

  • Fix module file missing USE for shadowed derived type

  • Add nonfatal message classes

  • Distinguish usage and portability warning messages

  • Use unix logical representation for fir.logical

  • Fix extent computation in finalization

  • Fix processing ModuleLikeUnit evaluationList

  • Do not return true for pointer sub-object in IsPointerObject

  • Fix DYLIB builds

  • Improve runtime crash messages

  • Add runtime support for GET_COMMAND


  • LBOUND() edge case: empty dimension

  • Hanlde COMPLEX 2/3/10 in runtime TypeCode(cat, kind)

  • fulfill -Msave/-fno-automatic in main programs too

  • Relax fir.rebox verifier with characters

Call notes are recorded and available upon request here. Please contact Alexis Perry-Holby at for document access.


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.


  • The “State of Fortran” paper by Kedward et al. has been accepted for publication in the IEEE journal Computing in Science and Engineering (CiSE). You can read the pre-print on arXiv, or find the paper in Early Access on the CiSE website.

  • The contributor application window for this year’s Google Summer of Code is approaching fast. It opens April 4 and closes April 19. See the Fortran-lang GSoC 2022 page for information about the projects and how to apply. To learn more about GSoC and what has changed since last year, please see the GSoC 2022 announcement. If you’d like to participate, please let us know and we’ll help you get started.

  • We had our 24th Fortran Monthly call on March 15. You can watch the recording below:

像往常一样,订阅 邮件列表 和/或加入 Discourse 继续关注未来的会议。


我们感谢过去一个月为 fortran-lang 做出贡献的每个人,他们在以下任何存储库中发表评论: