Fortran 通讯:2020 年 10 月#

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

fortran-lang.org#

这个月我们对网站只有一个小改动:

  • #136: 编译器页面开头句中的小修复

正在进行的工作:

  • #117。 增加了基准部分,在https://github.com/fortran-lang/benchmarks,创建了一个新的专用资源库,许多细节已经在那里的议题中讨论过了。

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

Fortran 标准库#

本月我们改进了 stdlib_ascii 模块,并添加了日志工具。

  • #238:通过添加显式转换改进了 stdlib_stats 模块。

  • #228: stdlib_logger 模块的实现。它提供了一个全局记录器实例,以便在用户应用程序中轻松使用,如果需要多个并发记录器,它还提供一个 logger_type 派生类型。请参阅 记录器规范 了解更多信息。

工作正在进行中:

  • #239: stdlib_bitsets 模块的实现。它提供了一个位集数据类型。

  • #235:对 stdlib_ascii 模块的改进

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

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

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

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

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

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

Fortran 包管理器#

本月对 fpm 的 Fortran 实现进行了十多项添加和改进:

  • #186:实现版本字符串验证和比较

  • #185:更新 CI 工作流程

  • #182:用于进一步开发子命令的 CLI 接口

  • #180:递归源码发现

  • #178: 添加更多示例包

  • #177:允许对单个套件和测试进行选择性测试

  • #175:更新了 Markdown 文档的格式

  • #174:在 CI 中构建缓存 Haskell 堆栈

  • #171: 增加 fpm manifest 的测试覆盖率

  • #170:源码解析测试

  • #163: 使用不同的策略来获取 git 依赖

  • #162:更新了操作系统类型识别

  • #160:添加贡献指南(你可以阅读它们这里)

  • #157:实现读取 fpm.toml

  • #155:内部依赖和构建后端

工作正在进行中:

  • #193 (WIP): 本地路径依赖

  • #190 (WIP): 自动发现可执行文件

  • #189(WIP):实现 fpm new

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

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

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

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

  • 改进文档。

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

编译器#

经典 Flang#

我们继续评估并再次将拉取请求合并到原始 Flang 编译器中。在过去的一个月中,我们进行了几项更改。

一个重要的合并是对 LLVM 10 的支持,这需要使用一个新的分支,即 LLVM monorepo 的 classic-flang-llvm-project 分支。有关详细信息,请参阅 PR#1

其它最近合并到 Classic Flang 中的拉取请求包括:

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

LLVM Flang#

LLVM Flang 的工作仍在继续,专注于语义、降低和运行时足以编译和运行 Fortran 77 程序。

结合 fir-dev fork(用于降低的 Fortran IR)中基于 MLIR 的代码,Flang 可以编译和运行大多数 F77 程序,包括 Fortran Compiler Validation Suite (FCVS)。我们继续致力于将 fir-dev fork 上游到 LLVM 法兰所需的重构。

Arm 为法兰的成熟驱动做出了贡献。

AMD 继续增加对 OpenMP 语义和降低的支持。

Valentin Clement 继续为 OpenACC 支持贡献解析和语义更改。这将是太平洋时间 10 月 5 日星期一上午 8:30 下一次 Flang 技术社区电话会议的主题。

Michael Kruse 继续添加对使用 MSVC 在 Windows 上构建 Flang 的支持。

LFortran#

LFortran 的新功能:

  • 2020 年 9 月合并了 59 个合并请求,修复了 3 个问题

  • FortranCon 2020 LFortran 视频现在 可用

  • LFortran,现在用 C++ 实现,已经超越了一年前的 Python 原型

  • Jupyter 笔记本现在可以像以前一样与 Python 原型一起使用

  • 添加了一个新笔记本,展示了如何在 Jupyter 中可视化 AST、ASR 和 C++ 翻译 (!624)

  • X86 后端直接生成 x86-32 机器码(在 Debug 模式下编译速度非常快)

  • 进一步的解析器改进

  • 初始 Fortran 模块支持

  • 对使用 GFortran 模块的初始支持 (!632)

  • 更好的编译器错误消息 (!617)

  • 交互式提示 (REPL) 现在可以理解箭头键 (!603)

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

活动#

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

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

贡献者#

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