Fortran newsletter: January 2022

Happy New Year and welcome to the January 2022 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

Here’s what’s new and ongoing in the fortran-lang.org repo:

  • #349: Newsletter draft for December 2021

  • #350: Updated CaNS item so that it shows the version

  • #353: Add MCST LCC C, C++ and Fortran compiler

  • #351: Use HEAD to reference default branch

  • #355: 2021 review article draft

  • #356 (WIP): Adding Fortran Error Handler to packages index

Work in progress

  • #347 (WIP): Fortran Intrinsics

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

Fortran 标准库

Here’s what’s new in stdlib:

  • #500: Selection algorithms

  • #586: Update of stdlib_stats.md

  • #581: Add routines for saving/loading arrays in npy format

  • #590: Update changelog

  • #588: Error on no tests in CTest

  • #585: stdlib_selection: correction of typos and addition of some checks

  • #591: Fix compilation errors with makefiles due to command-line variable assignments

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

  • #584: Replace the call to sort by select in stdlib_stats_median

  • #593: Probability Distribution and Statistical Functions – Uniform Distribution Module

  • #594: Minor update to makefile installation instructions

  • #596: Rename references to default branch

  • #600: Fix iomsg allocation in save_npy

  • #488: [stdlib_math] add is_close routines.

  • #597: Add getline to read whole line from formatted unit

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

  • #603: Implement trueloc/falseloc

  • #573: Revised Hash functions incorporating changes in the main Stdlib repository.

  • #609: Consistent spec titles

  • #610: Fixed tables in stdlib_hash_procedures.md

  • #499: [stdlib_linalg] matrix property checks

  • #613: Ignore hash testing binaries and logs

Work in progress

  • #611 (WIP): Hash maps

  • #605 (WIP): [stdlib_math] Add function diff

  • #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 SPEC_TEMPLATE.md #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

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

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

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

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

Fortran 包管理器

Here’s what’s new in fpm:

  • #634: Better extraction of the Fortran compiler from the MPI wrapper

Work in progress

  • #642 (WIP): Replace polymorphic assignment with move_alloc

  • #630 (WIP): allow backfilling of current directory in fpm-new subcommand

  • #622 (WIP): Cleanup the backend output

  • #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 项目。

编译器

Flang

最近的开发更新:

  • FIR

    • Add fir.box_isarray, fir.box_isptr and fir.box_isalloc conversion.

    • Add !fir.vector type conversion

    • Add type conversion for fir.boxchar

    • Add !fir.alloca conversion

    • Add placeholder conversion pattern for disptach operations

    • Add fir.select_case conversion

    • Add !fir.field type conversion

    • Transform IsPresentOpConversion and AbsentOpConversion

    • Add type conversion for FIR heap type

    • Add type conversion for FIR integer kind

    • Add !fir.len type conversion

    • Transform fir.emboxchar to a sequence of LLVM MLIR

    • Add fir.select_type conversion placeholder

    • Remove extra return in SelectTypeOpConversion

    • Transform fir.unboxchar to a sequence of LLVM MLIR

    • Add fir.global_len conversion placeholder

    • Add the FIR LLVMPointer Type

    • Add fir.cmpc conversion

    • Add fir.gentypedesc conversion

    • Transform fir.boxchar_len to a sequence of LLVM MLIR

    • Add missing HasParent in fir_DTEntryOp

    • Add fir.string_lit conversion

    • Add conversion patterns for slice, shape, shapeshift and shift ops

    • Add fir.box_tdesc conversion

    • !fir.tdesc type conversion

    • Add fir.constc conversion

    • Add fir.embox conversion

    • Notify conversion failure for Proc ops, types

    • Add tests for mlir::ComplexType conversion

    • Add fir.end conversion placeholder

    • Transform fir.field_index to a sequence of LLVM MLIR

    • Add a factory class for creating Complex Ops

    • Add fir.no_reassoc conversion

    • Set !fir.len_param_index conversion to unimplemented

    • Add base for runtime builder unittests

    • Add fir transformational intrinsic builder

    • Add assignment runtime API builder

    • Add data flow optimization pass

    • Add array value copy pass

    • Add fir reduction builder

    • Add fir numeric intrinsic runtime call builder

    • Add fircg.ext_embox conversion

    • Add fir derived type runtime builder

    • Add fir character builder

    • Add fircg.ext_array_coor conversion

    • Upstream conversion of the XRebox Op

    • Convert fir.allocmem and fir.freemem operations to calls to malloc and free, respectively

  • Runtime

    • Fix vector cshift runtime with non zero lower bounds

    • Respect NO_STOP_MESSAGE=1 in runtime

    • Runtime performance improvements to real formatted input

    • Allow write after non advancing read in IO runtime

    • Fix reversed comparison in RESHAPE() runtime

    • Define & implement a lowering support API IsContiguous() in runtime

    • Don’t close stderr in runtime (fixes STOP output)

    • Return arrays in Transfer runtime with SIZE argument

    • Fix INQUIRE(FILE=,NAME=)

    • Add ragged array runtime functions

  • Allow exterior branch to outermost WHERE construct statement

  • Fix ORDER= argument to RESHAPE

  • Fix rounding edge case in F output editing

  • Handle ENTRY names in IsPureProcedure() predicate

  • Allow implicit procedure pointers to associate with explicit procedures

  • Fix a bug in INQUIRE(IOLENGTH=) output

  • Remove default argument from function template specialization

  • Check ArrayRef base for contiguity in IsSimplyContiguousHelper

  • Deal with negative character lengths in semantics

  • Fix INQUIRE(PAD=) and (POSITION=) for predefined units

  • Add a semantics test for co_sum

  • Fix off-by-one results from folding MAXEXPONENT and MINEXPONENT

  • Skip Fortran STOP: before message when NO_STOP_MESSAGE is set

  • Fix printing of constc and parsing of #fir.real

  • Predefine unit 0 connected to stderr

  • Add -fno-automatic, refine IsSaved()

  • Correct the argument keyword for AIMAG(Z=…)

  • Inclusive language: remove instances of master

  • Return true in IsSymplyContiguous for allocatables

  • Fix usage & catch errors for MAX/MIN with keyword= arguments

  • Re-fold bounds expressions in DATA implied DO loops

  • Correct INQUIRE(POSITION= & PAD=)

  • Rearrange prototype & code placement of IsCoarray()

  • Replace notifyMatchFailure with TODO hard failures

  • TargetRewrite: Rewrite fir.address_of(func)

  • Fix folding of EXPONENT() intrinsic function

  • OPEN(RECL=) handling for sequential formatted I/O

  • Avoid potential deadlock in CloseAll()

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

LFortran

  • Beginning of refactoring of ASR (Abstract Semantic Representation) into a standalone library

  • New intrinsics: mvbits, bge, bgt, ble, blt, ibits

  • generic procedure resolution fixes

  • FreeBSD fixes

  • Implement .xor. (LFortran as well as GFortran extension)

  • Fixes to large integers (BigInt) handling

  • Added support for private, final attributes in derived types/classes

The following people contributed code in December 2021: Ondřej Čertík, Gagandeep Singh, Harris Snyder

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.

活动

  • fpm has a new documentation website hosted at fpm.fortran-lang.org. This website will provide user-oriented tutorials and how-to guides, as well as developer-oriented reference documents and specifications. We welcome all contributions to the fpm documentation, including translations to other languages. Please visit the fpm-docs repo to get started.

  • We had our 21st Fortran Monthly call on December 14. You can watch the recording below:

  • We also wrote a review of the Fortran-lang projects in 2021. Read it here.

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

贡献者

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