Fortran 通讯:2020 年 9 月#

欢迎阅读 2020 年 9 月版的每月 Fortran 通讯。时事通讯在每个月的第一个日历日发布,详细介绍上个月的 Fortran 新闻。

fortran-lang.org#

我们继续在 Fortran-lang 网站上开展工作,具体来说:

  • #133: 在网站的源码包页面列出 fpm 包

正在进行的工作:

  • #117:添加一个 Benchmarks 部分,在 https://github.com/fortran-lang/benchmarks 创建了一个新的专用存储库和许多细节已在 issues 中讨论

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

Fortran 标准库#

8 月份没有新的 stdlib 开发,但正在进行的工作和讨论仍在继续:

  • #227:在标准库中记录功能的 API 提案

  • #225:stdlib 中派生类型的命名约定

  • #224:在标准库中处理和传播错误

  • #221: 用于 bitset 数据类型的 API

  • #201:用于文件系统操作的 API

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

Fortran 包管理器#

fpm 正在进行的工作:

  • #146 (WIP): 在 Fortran fpm 中实现内部依赖和构建后端

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

  • 尝试使用它。它是否正常工作?没有吗?请让我们知道!阅读 fpm 打包指南 了解如何使用 fpm 构建你的包。

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

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

  • 改进文档。

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

Fortran 基准测试#

我们创建了 基准存储库,旨在设计和实施一套全面的基准。基准测试旨在比较各种 Fortran 编译器的性能,以及用 Fortran 和不同语言实现的规范算法的性能。如果您想以任何方式做出贡献,无论是基准测试的设计、实现还是测试,请加入正在进行的讨论 此处

编译器#

GFortran#

GFortran 10.2 已发布,这是 10.1 的错误修复版本。修复的错误包括 PR94361,一个带有终结器的内存泄漏。

gfortran 的开发版本现在支持完整的 OpenMP 4.5 规范。这将与 GCC 11 一起发布,但当然人们已经可以下载并测试它。

经典 Flang#

我们正在评估拉取请求并将它们再次合并到原始的 Flang 编译器中。在过去的几周中,我们进行了 4 项更改,并希望每周合并更多。即将发生的一个变化是对 LLVM 10 的支持,这需要使用新的分支,即 LLVM monorepo 的 classic-flang-llvm-project 分支。有关详细信息,请参阅 PR#1

Classic Flang 每两周一次的电话会议已经建立,以讨论下一个要验证和合并的拉取请求的问题和计划。我们的下一个电话将是太平洋时间 9 月 9 日星期三和 23 日上午 8:30。可以在 此处 找到以前电话会议的笔记、即将举行的议程和加入电话会议的链接。

LLVM Flang#

LLVM Flang 的工作仍在继续,专注于语义、降低和运行时足以编译和运行 Fortran 77 程序。我们正在修复在运行 FCVS 和其他 F77 测试套件(以及非 F77 套件的 F77 部分)时发现的错误。

结合 fir-dev fork(用于降低的 Fortran IR)中基于 MLIR 的代码,Flang 可以编译和运行大多数 F77 程序。我们将继续努力进行必要的重构,以将此分支上游到 LLVM Flang 中。

Arm 正在努力进行更改以支持驱动程序以替换我们当前使用的临时驱动程序。

Valentin Clement 继续为 OpenACC 支持贡献解析和语义更改。

LFortran#

LFortran 的新功能:

  • 2020 年 8 月合并了 143 个合并请求并修复了 22 个问题

  • C++ 后端现在可以转换为 C++ 并编译许多简单的 Fortran 程序

  • 解析器现在可以解析 Fortran 的一个大子集(如果你发现无法解析的内容,请 report 一个错误)。并非所有信息都在 AST 中表示(因此编译器的后期阶段也适用于较小的子集),但对于大多数有效代码,不应再出现解析错误。

  • 用于格式化 Fortran 文件的初始 lfortran fmt 子命令,你可以提供反馈 这里

  • 一个新的命令 lfortran kernel 可以作为 Jupyter 内核运行 LFortran 。

  • LFortran 本身在 Debug 模式下,当发生未处理的 excetion 或 segfault 时,会给出一个类似 Python 的漂亮堆栈跟踪(在 Linux 和 macOS 上)。

我们 9 月份的目标是让 LFortran 为更大的 Fortran 子集工作,并允许它通过 C++ 翻译后端编译和运行(LLVM 后端将很快跟进)。

你可以在 Twitter 上关注 LFortran 以获取最新更新:@lfortranorg

活动#

  • 我们在 8 月 20 日举行了第四次 Fortran 月度电话会议。你可以观看下面的录音:

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

贡献者#

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