Fortran newsletter: May 2022#
欢迎阅读 2021 年 5 月版 Fortran 月刊。该通讯每月初发布,详细介绍上个月的 Fortran 新闻。
fortran-lang.org#
以下是 fortran-lang.org 仓库中的新内容:
#359: Fix time calculation in the PRs script
#387: Newsletter for April 2022
#389: Add librsb to package index
#390: Add Elk to package index
#391: Add pencil-code to package index
#392: Add PROPACK to package index
#398: Add feed link to HTML head element
#369: Resolves Issue #217
#400: fix dependency of include files under
learn/building_programs
mini-book
工作正在进行中:
#397 (WIP): Add NUFFT to package index
#396 (WIP): Add OpenFFT to package index
#395 (WIP): Add 2DECOMP&FFT to package index
#394 (WIP): Add SLICOT to package index
#393 (WIP): Add FATODE to package index
#347 (WIP): Fortran Intrinsics
让我们知道 如果你对网站及其内容有任何建议。我们欢迎任何新的贡献者加入网站,尤其是教程页面 —— 请参阅 贡献者指南 了解如何开始。
Fortran 标准库#
Here’s what’s new in stdlib:
工作正在进行中:
#656 (WIP): Add hint for building error with make
#655 (WIP): fixed 32-bit integer overflow in stdlib_io_npy
#652 (WIP): Feature: loadtxt skiprows and max_rows
#625 (WIP): Gamma special function
#611 (WIP): Hash maps
#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
#189 (WIP): Initial implementation of COO / CSR sparse format
请通过测试和审查拉取请求帮助改进 stdlib !
@MarDiehl 和 @arjenmarkus 在 该仓库。请尝试一下,如果有任何问题,或者 API 是否可以改进,请告诉我们它是如何工作的。
Fortran 包管理器#
Here’s what’s new in fpm:
工作正在进行中:
#693 (WIP): Fix show-model option
#692 (WIP): Fix for non-portable GFortran
-J
flag in install script#686 (WIP): fix: remove extra space from help-test cmd
#685 (WIP): fix: function for getting executable path
#676 (WIP): Tree shaking for modules
#671 (WIP): Add
library-dir
to support-Lpath
#653 (WIP): Enable profiles in toml
#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
Lower various intrinsics:
character related intrinsics, array related intrinsics, index intrinsics, present, exit, btest, ceiling, nearest, scale, matmul, trim, transpose, command, environment, repeat, aint, anint, cmplx, conjg, dble, dprod, sign, spacing, rrspacing, merge intrinsics, lbound, ubound, ior, exp, log, log10, sqrt, atan, sinh, cosh, sin, cos, mvbits, achar
Add IO lowering test
Add more lowering tests for dummy arguments
Add equivalence lowering tests
Add array constructor lowering tests
Lower more array expressions
Lower statement function
Lower length on character storage
Lower select case statement
Add OpenMP Conversion patterns
Lower procedure designator
Lower boxed procedure
Flush and master constructs
Add lowering C interoperability test
Add misc lowering tests
Handle zero extent case in LBOUND
Lower some coarray statements to their runtime function
Options to lower math intrinsics to relaxed, precise variants
Lower optionals in GET_COMMAND_ARGUMENT and GET_ENVIRONMENT_VARIABLE
Added lowering support for atomic read and write constructs
fix LBOUND lowering with KIND and no DIM arguments
Keep fully qualified !fir.heap type for fir.freemem op
Update the conversion code for fir.coordinate_of
Set lower bounds of array section fir.embox to one
Fix fir.embox codegen with constant interior shape
Do not fold fir.box_addr when it has a slice
Driver
Make –version and -version consistent with clang
Add support for -mmlir
Make the plugin API independent of the driver internals
Add support for generating executables
OpenMP
Lowering critical construct
Added assembly format for omp.wsloop and remove parseClauses
Added lowering support for sections construct
Added ReductionClauseInterface
Added parallel sections translation
Revert “[Flang][openmp] Add semantic check for OpenMP Private, Firstprivate and Lastprivate clauses.”
Added allocate clause translation for OpenMP block constructs
Support export/import OpenMP Threadprivate Flag
Add implementation of privatisation
Add checks and tests for hint clause and fix empty hint
OpenACC
Lower enter data directive
Lower exit data directive
Lower init/shutdown directive
Lower update directive
Lower data directive
Lower wait directive
Runtime
Error recovery improvement in runtime (IOMSG=)
Initial UTF-8 support in runtime I/O
Ensure PointerDeallocate actually deallocate pointers
Add runtime API to catch unit number out of range
Prefer process time over thread time in CPU_TIME
Raise FP exceptions from runtime conversion to binary
Preserve effect of positioning in record in non-advancing output
Don’t skip input spaces when they are significant
Fix ENDFILE for formatted stream output
Don’t emit empty lines for bad writes
Ignore leading spaces even in BZ mode
Fix edge-case FP input bugs
Enforce some limits on kP scale factors
Signal record read overrun when PAD=’NO’
Fix KIND=16 real/complex component I/O
Fix total MAXLOC/MINLOC for non-integer data
Handle allocatable components when creating array temps
[Parser] Add a node for individual sections in sections construct
Add explanatory messages to grammar for language extensions
Convert RUNTIME_CHECK to better error for user errors in transformational.cpp
Accept legacy aliases for intrinsic function names
Expose error recovery cases in external I/O
Fix crash: ENTRY with generic interface of the same name
Fold DBLE
Single construct translation from PFT to FIR
UBOUND() edge case: empty dimension
Make not yet implemented messages more consistent
Fix LBOUND rewrite on descriptor components
Ensure descriptor lower bounds are LBOUND compliant
Fix cycle-catcher in procedure characterization
Fix bogus error from assignment to CLASS(*)
Mark C_ASSOCIATED specific procedures as PURE
Catch bad OPEN(STATUS=) cases
Fold NEAREST() and its relatives
Prevent undefined behavior in character MAXLOC folding
Fix invalid overflow check
Skip D when including D debug line
Allow user to recover from bad edit descriptor with INTEGER
Fold instantiated PDT character component length when needed
Add one semantic check for allocatable/pointer argument association
[cmake] Make CMake copy “omp_lib.h” into the build directory
Handle dynamically optional argument in EXIT
Fix semantic analysis for “forall” targeted by “label”
Emit a portability warning for padding in COMMON
Expand the num_images test coverage
Fold IBITS() intrinsic function
Error handling for out-of-range CASE values
Respect left tab limit with Tn editing after ADVANCE=’NO’
Allow IMPLICIT NONE(EXTERNAL) with GenericDetails
Do not ICE on out-of-range data statement designator
Fix ICE for sqrt(0.0) evaluation
Fix float-number representation bug
Fix intrinsic interface for DIMAG/DCONJG
Improve appearance of message attachments
Fix combining cases of USE association & generic interfaces
Defer all function result type processing
Always encode multi-byte output in UTF-8
Fix shape analysis of RESHAPE result
Use full result range for clock_gettime implementation of SYSTEM_CLOCK
Correct interaction between generics and intrinsics
Make F0.1 output editing of zero edge case consistent
Inner INTRINSIC must not shadow host generic
Local generics must not shadow host-associated generics
Fix TYPE/CLASS IS (T(…)) in SELECT TYPE
Allow modification of construct entities
Defer NAMELIST group item name resolution
Accept TYPE(intrinsic type) in declarations only for non-extension type
Finer control over error recovery with GetExpr()
Handle parameter-dependent types in PDT initializers
Upgrade short actual character arguments to errors
Allow POINTER attribute statement on procedure interfaces
Accept KIND type parameter inquiries on RE, IM, etc.
Add & use a better visit()
Fix regression with recent work on intrinsic/generic interactions
Do not pass derived type by descriptor when not needed
Fix LBOUND() folding for constant arrays
Set LBOUND() folding for (x) expression as ones
Semantics limits on kP scale factors
Do not ICE on recursive function definition in function result
Fold transformational bessels when host runtime has bessels
Do not create arith.extui with same from/to type
Disambiguate F(X)=Y case where F is a function returning a pointer
Avoid global name conflict when BIND(C,NAME=) is used
Accept “INFINITY” as real input
Add semantic checks for intrinsic function REDUCE()
Fix crash from PDT component init in module file
Call notes are recorded and publicly available here.
LFortran#
Compiling stdlib
with lfortran
Addition of ASR Optimization Passes
libasr
Implementing ArrayBound node to replace
lbound
,ubound
as function callsMade scope private in SymbolTable struct and added interface methods to modify scope
Implementing
ArraySize
node to replace function call tosize
Fill function in FunctionCall of len expr of Character type after completing symbol table
WASM
Miscellaneous
Contributors
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 had our 25th Fortran Monthly call on April 22. You can watch the recording below:
Visual Studio Code’s popular Modern Fortran extension joined the fortran-lang GitHub organization.
Join and follow the Fortran Discourse to stay tuned with the future meetings.
贡献者#
我们感谢过去一个月为 fortran-lang 做出贡献的每个人,他们在以下任何存储库中发表评论: