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
andAbsentOpConversion
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 MLIRAdd fir.select_type conversion placeholder
Remove extra return in SelectTypeOpConversion
Transform
fir.unboxchar
to a sequence of LLVM MLIRAdd 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 MLIRAdd missing
HasParent
infir_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 placeholderTransform
fir.field_index
to a sequence of LLVM MLIRAdd 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 setFix 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.
贡献者¶
我们感谢过去一个月为 fortran-lang 做出贡献的每个人,他们在以下任何存储库中发表评论: