Fortran 通讯:2020 年 12 月#

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

fortran-lang.org#

本月我们对网站进行了一些更新:

  • #156:更新了有关构建 Fortran 程序的迷你书,包括添加了有关 Meson 和 CMake 的简短指南。你可以阅读迷你书 这里

  • #169:将 PSBLAS 添加到包索引中。

正在进行的工作:

  • #160 (WIP): Fortran with Make 的深入介绍。

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

Fortran 标准库#

这是 stdlib 中的新内容:

工作正在进行中:

  • (WIP) #240stdlib_stats_distribution 模块的实现。它提供概率分布和统计功能。

  • (WIP)#189:稀疏矩阵的初始实现。

欢迎帮助测试和审查这些拉取请求!

否则,正在进行的讨论将继续:

  • #220:文件系统操作API:路径操作

  • #241:包含一个 split 函数(202X 特性)

  • #254:提议为不同日志之间的调试阶段和级别添加记录器。

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

Fortran 包管理器#

以下是 fpm 中的新功能:

  • #259:更新 README.md 中从源代码构建的说明。

  • #246:CI 中的自动二进制发布。

  • #233:允许与外部库链接。

  • #224:添加包清单的参考文档(fpm.toml)。

  • #221#239:运行器选项用于测试和应用程序可执行文件。

  • #220:在 Haskell fpm 中实现编译器和标志设置。

  • #209: #237: 开发者 API文档。

  • #216, #225, #226, #229, #236, #240, #247:其他修复和改进。

工作正在进行中:

  • 第一个 beta 版本 (WIP):Fortran 实现的第一个功能完整的版本。

  • (WIP) #230, #261 : fpm CLI 的规范。

  • (WIP)#232:允许 fpm.toml 中的“额外”部分。

  • (WIP)#248:重构后端以进行增量重建。

  • (WIP)#251:依赖管理。

  • (WIP)#255:设置编译器并指定测试或应用程序目标。

  • (WIP)#257:实现fpm install

  • (WIP)#260:修复 CI 以测试发布版本。

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

  • 使用它,让我们知道你的想法!阅读 fpm 打包指南 了解如何使用 fpm 构建你的包,以及 清单参考 了解你可以在 fpm.toml 文件中指定的所有内容。

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

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

  • 改进文档。

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

编译器#

经典 Flang#

我们将继续评估拉取请求并将其合并到 Classic Flang 中。最近合并到 Classic Flang 中的拉取请求包括:

合并到支持项目中的拉取请求:

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

LLVM Flang#

LLVM Flang 的工作仍在继续,专注于语义、降低和运行时。正在为 OpenMP 和 OpenACC 支持做出重大贡献。

结合 fir-dev fork(用于降低的 Fortran IR)中基于 MLIR 的代码,Flang 可以编译和运行大多数 F77 程序,包括 Fortran 编译器验证套件 (FCVS)。

Pat McCormick (仍在)致力于将 fir-dev 分叉中的降低代码合并到 LLVM 主控中的 RFC。 (这被 Supercomputing 2020 和其他 ECP 职责打断了。)我们的目标是以 Flang 社区可以接受的方式加快这一进程,这样我们就可以在单个 master 分支中做进一步的工作。

最近的更新包括:

  • Johannes Doerfert 在 https://flang.llvm.org 创建了一个网页;你可以在那里找到 call 和 Slack 物流

  • Nichols Romero 有一个 llvm-dev RFC,用于将 Fortran 测试添加到 llvm-tests 项目:http://lists.llvm.org/pipermail/llvm-dev/2020-November/146873.html

  • Andzrej Warzynski 有一个关于法兰选项名称的法兰开发 RFC:http://lists.llvm.org/pipermail/flang-dev/2020-November/000588.html

  • Andzrej Warzynski 有一个 cfe-dev RFC 关于重构 clang 以帮助 flang 驱动程序独立于 clang:http://lists.llvm.org/pipermail/cfe-dev/2020-November/067263.html

  • 更改了类型系统中 CHARACTER 数据的表示,以使其与其他类型更加一致(对于数组)

  • 更改了 COMPLEX 表达式表示以提供更好的降低处理

  • 支持 Fortran 77 程序的更多改进

  • 为基本的 ALLOCATE/DEALLOCATE 和进一步的工作实现了运行时支持

  • 继续为派生类型实现表驱动运行时;发布的文档

  • 继续执行降低数组表达式

  • 改进了对正向引用的错误检查

  • 对 flang 驱动的更多更新(选项处理。 -E 现在可以用来只调用 Flang 预处理程序)

  • OpenACC 对输入/输出数据的修饰词进行语义检查,设置指令

  • OpenACC 降低(输入/退出数据、更新、初始化、关闭、等待指令)

  • OpenMP 结构检查器更新;copyin 子句的语义检查;schedule 类

活动#

  • Brian Friesen(劳伦斯伯克利国家实验室)被选为 PL22.3(J3,美国标准委员会)的新主席。布赖恩的第一个任期将持续到 2023 年 11 月。恭喜,布赖恩!

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

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

贡献者#

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