Fortran newsletter: November 2021#

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

fortran-lang.org#

本月我们对网站进行了几次更新:

  • #345: Fix title in learning resources

  • #341: Add Cantera to package index

  • #329: Quantum Information book, WSL GUI, and typos

  • #340: Minor fixes in Best Practices

Work in progress#

  • #201 (WIP):fortran-lang 的国际化

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

Fortran 标准库#

Here’s what’s new in stdlib:

  • 0.1.0: Initial version of the Fortran standard library

  • #543: Fix string concat

Work in progress#

  • #554 (WIP): Hash functions

  • #552 (WIP): Fix bug in stringlist

  • #536 (WIP): Fix conversion warnings

  • #520 (WIP): [stdlib_io] add disp (display your data).

  • #517 (WIP): adding SPEC_TEMPLATE.md

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

  • #500 (WIP): Selection algorithms

  • #499 (WIP): [stdlib_linalg] matrix property checks

  • #498 (WIP): [stdlib_math] add arg/argd/argpi

  • #494 (WIP): Add testing module to allow better structuring of test suites

  • #491 (WIP): Stdlib linked list

  • #488 (WIP): [stdlib_math] add is_close routines.

  • #473 (WIP): Error stop improvements

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

  • #353 (进行中):实现一个用于实数宽松比较的模块的初始版本

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

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

  • #276 (WIP): Probability Distribution and Statistical Functions – Exponential Distribution Module

  • #273 (WIP): Probability Distribution and Statistical Functions – Normal Distribution Module

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

请通过测试和审查拉取请求帮助改进 stdlib !

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

Fortran 包管理器#

Here’s what’s new in fpm:

  • #597: Add LFortran optimization flag to release profile

  • #595: List names without suffix (mainly for Windows)

  • #590: Change link command on Windows with ifort or ifx

  • #575: Enable multiple build output directories

  • #587: Bootstrapping instructions version update

Work in progress#

  • #598 (WIP): Update README.md compiler, archiver, & link flags

  • #569 (WIP): Add workflow for continuous delivery

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

  • #498 (WIP): Compiler flags profiles

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

  • 使用它并告诉我们你的想法!阅读fpm 打包指南 了解如何使用 fpm 构建软件包,并阅读清单参考 了解可以在 fpm.toml 文件中指定哪些内容。

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

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

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

  • 改进文档。

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

编译器#

Flang#

最近的开发更新:

  • Runtime

    • 前端和运行时支持 CALL EXIT 和 ABORT

    • 修复带空格的格式化实数输入回归问题

    • 为 GET_ENVIRONMENT_VARIABLE 添加运行时接口

    • 更多关于 SYSTEM_CLOCK 运行时应用程序接口和实现的工作

    • 实现 GET_ENVIRONMENT_VARIABLE(LENGTH)

  • OpenMP

    • 为段(sections)构造添加了基于 OpenMP 5.0 规范的语义检查,并为 simd 构造添加了测试用例

    • 为并行段(sections)构造添加了基于 OpenMP 5.0 规范语义检查的测试用例

    • 为 CRITICAL 结构名解析添加了基于 OpenMP 5.0 规范的语义检查

    • 检查 THREADPRIVATE 和 DECLARE TARGET 指令

    • Initial parsing/sema for append_args clause for ‘declare variant’

  • FIR

    • Add typeparams to fir.array_update, fir.array_fetch and fir.array_merge_store operations. Add optional slice operands to fir.array_merge_store op.

    • Updated various ops - fir.extract_value, fir.insert_value, fir.allocmem, fir.alloca, fir.field_index, fir.freemem, fir.store

    • Move the parsers, printers and builders from the TableGen file to the .cpp file

    • Update fir.alloca op - Add pinned attributes and specific builders

    • Add ops: fir.char_convert and fir.array_modify

    • Add passes: external name interop, affine promotion, affine demotion, character conversion, abstract result conversion, cfg conversion

    • Add fir.convert canonicalization patterns

    • Add the DoLoopHelper

    • Add IfBuilder and utility functions

    • Add FIRBuilder utility functions

    • Add character utility functions in FIRBuilder

    • Add Character helper

    • Add utility function to FIRBuilder and MutableBox

    • Add substring to fir.slice operation

    • Avoid slice with substr in fir.array_load, fir.array_coor and fir.array_merge_store

  • Driver

    • Error if uuidgen is not installed

    • Fix erroneous &

    • Add actions that execute despite semantic errors

  • flang-omp-report

    • replace std::vector’s with llvm::SmallVector

    • Switch from std::string to StringRef (where possible)

    • replace std::map with llvm::DenseMap

  • Make builtin types more easily accessible; use them

  • Fix test regression from SQRT folding

  • Fold FINDLOC, MAXLOC, MINLOC, LGE/LGT/LLE/LLT, BTEST intrinsic functions

  • Take into account SubprogramDetails in GetInterfaceSymbol

  • Add debug dump method to evaluate::Expr and semantics::Symbol

  • Add a wrapper for Fortran main program

  • Improve runtime interface with C99 complex

  • Better error recovery for missing THEN in ELSE IF

  • Define IEEE_SCALB, IEEE_NEXT_AFTER, IEEE_NEXT_DOWN, IEEE_NEXT_UP

  • Catch mismatched parentheses in prescanner

  • Error checking for IBCLR/IBSET and ISHFT/SHIFT[ALR]

  • Document behavior for nonspecified/ambiguous cases

  • Add two negative tests for needExternalNameMangling

  • Expunge bogus semantic check for ELEMENTAL without dummies

  • Admit NULL() in generic procedure resolution cases

  • Fix bogus folding error for ISHFT(x, negative)

  • Emit unformatted headers & footers even with RECL=

  • Enforce rest of semantic constraint C919

  • Extension to distinguish specific procedures

  • Support NAMELIST input of short arrays

  • Fix generic resolution case

  • Speed common runtime cases of DOT_PRODUCT & MATMUL

  • Fix crash on empty formatted external READs

  • Extension: allow tabs in output format strings

  • Fix DOT_PRODUCT for logical

  • Fix NAMELIST input bug with multiple subscript triplets

  • Support legacy usage of ‘A’ edit descriptors for integer & real

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

LFortran#

  • 155 Merge Requests merged in October 2021

  • AST to ASR transformation simplified and unified

  • Many new intrinsics added

  • Rust style error messages, add first warnings and style suggestions

  • Fixed bugs in location information

  • C preprocessor added

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.

活动#

  • We have adopted two new Fortran-lang guidelines:

  • The US Fortran Standards Committee (J3) held the meeting 225 October 18-27, 2021. The meeting was virtual and on Mondays and Wednesdays only. Discussions focused on resolving any outstanding issues to the Fortran 202X features. Here are the links to the meeting agenda, minutes, and papers. See also the Fortran-lang and LFortran liaison report to J3 submitted by Ondřej Čertík and Milan Curcic.

  • We had our 19th Fortran Monthly call on October 19. You can watch the recording below:

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

贡献者#

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