Fortran newsletter: March 2022

欢迎阅读三月版 Fortran 月刊。该通讯每月初发布,详细介绍上个月的 Fortran 新闻。

以下是 仓库中的新内容:

  • #369: Resolves Issue #217

  • #359: Fix time calculation in the PRs script

Work in progress

  • #347 (WIP): Fortran Intrinsics

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

Fortran 标准库

Here’s what’s new in stdlib:

  • #624: [stdlib_math] Minor update to stdlib_math module and document

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:

  • #652: get user name and email using git config if available else use defaults

  • #654: Ignore hidden source files

  • #622: Cleanup the backend output

  • #648: Add note about relocation of manifest reference

Work in progress

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

    • Initial lowering for empty program

    • Upstream partial lowering of COMMAND_ARGUMENT_COUNT intrinsic

    • Add lowering placeholders

    • Add lowering for basic empty SUBROUTINE

    • Upstream partial lowering of EXIT intrinsic

    • Lower basic STOP statement

    • Lower PAUSE statement

    • Add lowering for integer constant

    • Lower integer constant code for STOP stmt

    • Add fir.array_access op

    • Add fir.array_amend operation definition

    • Handle logical constant value for quiet in STOP stmt

    • Upstream partial lowering of GET_COMMAND_ARGUMENT intrinsic

    • Basic local variable lowering

    • Add lowering for ASCII character constant

    • Handle character constant for error code in STOP stmt

    • Upstream partial lowering of GET_ENVIRONMENT_VARIABLE intrinsic

    • Add missing CFI case for REAL and COMPLEX

    • Add support for lowering the goto statement

    • Add type conversion for !

    • Add FIRInlinerInterface

    • Lower simple RETURN statement

    • Upstream fix to allocmem codegen to deal with missing dimensions for sequence of character types

    • Lower basic function with scalar integer/logical return value

    • Enable scalar real type in lowering

    • Enable complex type in function lowering

    • Handle lowering of ranked array

    • Lower simple scalar assignment

    • Lower scalar negation

    • Lower basic binary operation for scalars

    • Initial patch to lower a Fortran intrinsic

    • Lower real constant

    • Lower complex constant

    • Lower function and subroutine calls

    • Handle allocatable dummy arguments

    • Lower allocatable assignment for scalar

    • Simple array assignment lowering

    • Lower simple character return

    • Lower Fortran intrinsic to a runtime call/llvm intrinsic

    • Lower integer comparison operation

    • Lower real comparison operations

    • Lower logical comparison and logical operations

    • Lower power operations

    • Add complex operations lowering tests

    • Lower basic IO statement

    • Handle dynamic array lowering

  • Driver

    • Add support for -emit-mlir

    • Add support for -emit-llvm

    • Make flang-new always generate run-time type info

    • Add support for --target/--triple

  • OpenMP

    • Added OpenMP 5.0 specification based semantic checks for atomic update construct

    • The device expression must evaluate to a non-negative integer value

    • Remove clauses from OpenMP Dialect that are handled by the flang frontend instead:

      • private, firstprivate, lastprivate, shared, default, copyin, copyprivate

  • Runtime

    • Implement a runtime routine to report fatal errors with source position

    • Rename the runtime routine that reports a fatal user error

    • runtime perf: larger I/O buffer growth increments

    • Add runtime interface for GET_COMMAND

    • Upstream runtime changes for inquiry intrinsics

  • Improve error message (initialized variable in pure subprogram)

  • Accept BOZ literals for some actual arguments

  • Accept sparse argument keyword names for MAX/MIN

  • Accept INDEX(…, BACK=array)


  • Handle FLUSH(unknown unit)

  • Allow explicit ‘+’ in NAMELIST input subscripts

  • Extension: skip over NAMELIST groups

  • Add array operations documentation

  • Fix crash from USE-associated defined I/O subprograms

  • Allow INQUIRE() on a child unit in user-defined I/O procedure

  • Don’t drop format string for external child I/O

  • Support DECIMAL=’COMMA’ mode in namelist I/O

  • Update tco tool pipline and add translation to LLVM IR

  • Add MemoryAllocation pass to the pipeline

  • Add ieee_is_normal/ieee_is_negative to ieee_arithmetic module.

  • Add a custom target for the “flang” wrapper script.

  • split character procedure arguments in target-rewrite pass

  • Expand the semantics test for co_sum

  • Correct interpretation of RECL=

  • Distinguish intrinsic from non-intrinsic modules

  • Make NEWUNIT= use a range suitable for INTEGER(KIND=1) and recycle unit numbers

  • Modify right modes for READ/WRITE vs OPEN

  • Add a semantics test for co_broadcast

  • catch implicit interface incompatibility with global scope symbol

  • Add an assert to guard against nullptr dereferencing

  • Fix FlangOptimizerTests link on Solaris

  • Handle “type(foo) function f” when foo is defined in f

  • Refine pointer/target test for ASSOCIATED intrinsic

  • Allow mixed association of procedure pointers and targets

  • Fix edge case in USE-associated generics

  • Fail at link time if derived type descriptors were not generated

  • Allow for deferred-length character in EstablishDescriptor

  • Allow DATA initialization of derived types w/ allocatable components

  • Accept NULL(mold=x) as constant component value in constant structure constructor

  • Ensure a characterized ENTRY in a PURE subprogram is also marked PURE

  • Accept structure constructor value for polymorphic component

  • Remove deprecated parser/printer/verifier utilities

  • Accept pointer assignment w/ remapping to function result

  • Allow extension cases of EQUIVALENCE with optional warnings

  • Handle CALL C_F_POINTER(without SHAPE=)

  • Make source location more accurate for actual arguments

  • Add Win32 to the list of supported triples

  • Allow tabs as white space in formats

  • Do not print format tabs

  • Catch I/O of bad derived type at compile time

  • Allow more concurrently open NEWUNIT= values, with recycling

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


  • LFortran is participating in GSoC, please see GSoC 2022 Student Instructions for LFortran for instructions how to apply

  • 19 Merge Requests merged

  • New ASR optimizations

  • Addes support for fma (fused-multiply add) in LLVM

  • Semantic improves to compile more of stdlib

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.


  • Fortran-lang has been selected as a mentoring organization for Google Summer of Code 2022! Thanks to everybody who helped prepare the application. GSoC is Google’s global, online program that allows newcomers to open-source to work on a project and get paid for it. See the Fortran-lang GSoC 2022 page for information about the projects and how to apply. Applications for contributors open April 4 and close April 19. To learn more about GSoC and what has changed since last year, please see the GSoC 2022 announcement. If you’d like to participate as a contributor or a mentor, please let us know in this thread and we’ll help you get started.

  • Fortran-lang community now maintains a modernized fork of the classic library minpack. Give it a try!

  • We had our 23rd Fortran Monthly call on February 15. You can watch the recording below:

  • US Fortran Standards Committee meeting #226 started on February 28. See the draft agenda here and the submitted papers here.

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


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