Fortran newsletter: March 2022#
欢迎阅读三月版 Fortran 月刊。该通讯每月初发布,详细介绍上个月的 Fortran 新闻。
fortran-lang.org#
以下是 fortran-lang.org 仓库中的新内容:
Work in progress#
#347 (WIP): Fortran Intrinsics
让我们知道 如果你对网站及其内容有任何建议。我们欢迎任何新的贡献者加入网站,尤其是教程页面 —— 请参阅 贡献者指南 了解如何开始。
Fortran 标准库#
Here’s what’s new in stdlib:
#624: [stdlib_math] Minor update to
stdlib_math
module and document
Work in progress#
#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:
#652: get user name and email using git config if available else use defaults
#654: Ignore hidden source files
#622: Cleanup the backend output
#648: Add note about relocation of manifest reference
fpm-docs#42: Dutch translation
fpm-docs#48: Chinese translation improvements
fpm-docs#52: Update plugin tutorial
Work in progress#
#665 (WIP): add clean command
#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-docs#51 (WIP): Add page about fpm logo
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
Initial lowering for empty program
Upstream partial lowering of COMMAND_ARGUMENT_COUNT intrinsic
Add lowering placeholders
Add lowering for basic empty SUBROUTINE
Upstream partial lowering of EXIT intrinsic
Lower basic STOP statement
Lower PAUSE statement
Add lowering for integer constant
Lower integer constant code for STOP stmt
Add fir.array_access op
Add fir.array_amend operation definition
Handle logical constant value for quiet in STOP stmt
Upstream partial lowering of GET_COMMAND_ARGUMENT intrinsic
Basic local variable lowering
Add lowering for ASCII character constant
Handle character constant for error code in STOP stmt
Upstream partial lowering of GET_ENVIRONMENT_VARIABLE intrinsic
Add missing CFI case for REAL and COMPLEX
Add support for lowering the goto statement
Add type conversion for !fir.box
Add FIRInlinerInterface
Lower simple RETURN statement
Upstream fix to allocmem codegen to deal with missing dimensions for sequence of character types
Lower basic function with scalar integer/logical return value
Enable scalar real type in lowering
Enable complex type in function lowering
Handle lowering of ranked array
Lower simple scalar assignment
Lower scalar negation
Lower basic binary operation for scalars
Initial patch to lower a Fortran intrinsic
Lower real constant
Lower complex constant
Lower function and subroutine calls
Handle allocatable dummy arguments
Lower allocatable assignment for scalar
Simple array assignment lowering
Lower simple character return
Lower Fortran intrinsic to a runtime call/llvm intrinsic
Lower integer comparison operation
Lower real comparison operations
Lower logical comparison and logical operations
Lower power operations
Add complex operations lowering tests
Lower basic IO statement
Handle dynamic array lowering
Driver
Add support for
-emit-mlir
Add support for
-emit-llvm
Make
flang-new
always generate run-time type infoAdd support for
--target
/--triple
OpenMP
Added OpenMP 5.0 specification based semantic checks for atomic update construct
The device expression must evaluate to a non-negative integer value
Remove clauses from OpenMP Dialect that are handled by the flang frontend instead:
private, firstprivate, lastprivate, shared, default, copyin, copyprivate
Runtime
Implement a runtime routine to report fatal errors with source position
Rename the runtime routine that reports a fatal user error
runtime perf: larger I/O buffer growth increments
Add runtime interface for GET_COMMAND
Upstream runtime changes for inquiry intrinsics
Improve error message (initialized variable in pure subprogram)
Accept BOZ literals for some actual arguments
Accept sparse argument keyword names for MAX/MIN
Accept INDEX(…, BACK=array)
Fix OPEN/WRITE(SIGN=’SUPPRESS’)
Handle FLUSH(unknown unit)
Allow explicit ‘+’ in NAMELIST input subscripts
Extension: skip over NAMELIST groups
Add array operations documentation
Fix crash from USE-associated defined I/O subprograms
Allow INQUIRE() on a child unit in user-defined I/O procedure
Don’t drop format string for external child I/O
Support DECIMAL=’COMMA’ mode in namelist I/O
Update tco tool pipline and add translation to LLVM IR
Add MemoryAllocation pass to the pipeline
Add ieee_is_normal/ieee_is_negative to ieee_arithmetic module.
Add a custom target for the “flang” wrapper script.
split character procedure arguments in target-rewrite pass
Expand the semantics test for co_sum
Correct interpretation of RECL=
Distinguish intrinsic from non-intrinsic modules
Make NEWUNIT= use a range suitable for INTEGER(KIND=1) and recycle unit numbers
Modify right modes for READ/WRITE vs OPEN
Add a semantics test for co_broadcast
catch implicit interface incompatibility with global scope symbol
Add an assert to guard against nullptr dereferencing
Fix FlangOptimizerTests link on Solaris
Handle “type(foo) function f” when foo is defined in f
Refine pointer/target test for ASSOCIATED intrinsic
Allow mixed association of procedure pointers and targets
Fix edge case in USE-associated generics
Fail at link time if derived type descriptors were not generated
Allow for deferred-length character in EstablishDescriptor
Allow DATA initialization of derived types w/ allocatable components
Accept NULL(mold=x) as constant component value in constant structure constructor
Ensure a characterized ENTRY in a PURE subprogram is also marked PURE
Accept structure constructor value for polymorphic component
Remove deprecated parser/printer/verifier utilities
Accept pointer assignment w/ remapping to function result
Allow extension cases of EQUIVALENCE with optional warnings
Handle CALL C_F_POINTER(without SHAPE=)
Make source location more accurate for actual arguments
Add Win32 to the list of supported triples
Allow tabs as white space in formats
Do not print format tabs
Catch I/O of bad derived type at compile time
Allow more concurrently open NEWUNIT= values, with recycling
Call notes are recorded and available upon request here. Please contact Alexis Perry-Holby at aperry@lanl.gov for document access.
LFortran#
LFortran is participating in GSoC, please see GSoC 2022 Student Instructions for LFortran for instructions how to apply
19 Merge Requests merged
New ASR optimizations
Addes support for fma (fused-multiply add) in LLVM
Semantic improves to compile more of stdlib
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.
活动#
Fortran-lang has been selected as a mentoring organization for Google Summer of Code 2022! Thanks to everybody who helped prepare the application. GSoC is Google’s global, online program that allows newcomers to open-source to work on a project and get paid for it. See the Fortran-lang GSoC 2022 page for information about the projects and how to apply. Applications for contributors open April 4 and close April 19. To learn more about GSoC and what has changed since last year, please see the GSoC 2022 announcement. If you’d like to participate as a contributor or a mentor, please let us know in this thread and we’ll help you get started.
Fortran-lang community now maintains a modernized fork of the classic library minpack. Give it a try!
We had our 23rd Fortran Monthly call on February 15. You can watch the recording below:
US Fortran Standards Committee meeting #226 started on February 28. See the draft agenda here and the submitted papers here.
贡献者#
我们感谢过去一个月为 fortran-lang 做出贡献的每个人,他们在以下任何存储库中发表评论: