Boletim Fortran: Janeiro de 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: Rascunho do boletim para Dezembro de 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

Trabalhos em desenvolvimento#

  • #347 (WIP): Intrínsecos Fortran

Let us know if you have any suggestions for the website and its content. We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

Biblioteca Padrão Fortran (Fortran Standard Library)#

Here’s what’s new in stdlib:

  • #500: Algoritmos de seleção

  • #586: Atualização de stdlib_stats.md

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

  • #590: Atualiza 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] adiciona arg/argd/argpi

  • #603: Implementa trueloc/falseloc

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

  • #609: Títulos de especificação consistentes

  • #610: Fixed tables in stdlib_hash_procedures.md

  • #499: [stdlib_linalg] matrix property checks

  • #613: Ignore hash testing binaries and logs

Trabalhos em desenvolvimento#

  • #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

Please help improve stdlib by testing and reviewing pull requests!

The candidate for file system operations to be included in stdlib is being developed by @MarDiehl and @arjenmarkus in this repository. Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

Gerenciador de Pacotes Fortran#

Here’s what’s new in fpm:

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

Trabalhos em desenvolvimento#

  • #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 is still in early development and we need as much help as we can get. Here’s how you can help today:

  • 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.

  • Navegue pelos pacotes fpm existentes no site fortran-lang

  • Browse the open issues and see if you can help implement any fixes or features.

  • Adapt your Fortran package for fpm and submit it to the Registry.

  • Ajude a melhorar a documentação.

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy environment in which new open source Fortran projects are created and published with ease.

Compiladores#

Flang#

Atualizações de desenvolvimento recentes:

  • FIR

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

    • Adiciona conversão de tipo !fir.vector

    • Add type conversion for fir.boxchar

    • Adiciona conversão !fir.alloca

    • Add placeholder conversion pattern for disptach operations

    • Adiciona conversão fir.select_case

    • Adiciona conversão de tipo !fir.field

    • Transforma IsPresentOpConversion e AbsentOpConversion

    • Add type conversion for FIR heap type

    • Add type conversion for FIR integer kind

    • Adiciona conversão de tipo !fir.len

    • Transform fir.emboxchar to a sequence of LLVM MLIR

    • Adiciona placeholder de conversão fir.select_type

    • Remove extra return in SelectTypeOpConversion

    • Transform fir.unboxchar to a sequence of LLVM MLIR

    • Adiciona placeholder de conversão fir.global_len

    • Add the FIR LLVMPointer Type

    • Adiciona conversão fir.cmpc

    • Adiciona conversão fir.gentypedesc

    • Transform fir.boxchar_len to a sequence of LLVM MLIR

    • Add missing HasParent in fir_DTEntryOp

    • Adiciona conversão fir.string_lit

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

    • Adiciona conversão fir.box_tdesc

    • conversão de tipo !fir.tdesc

    • Adiciona conversão fir.constc

    • Adiciona conversão fir.embox

    • Notify conversion failure for Proc ops, types

    • Add tests for mlir::ComplexType conversion

    • Adiciona placeholder de conversão fir.end

    • Transform fir.field_index to a sequence of LLVM MLIR

    • Add a factory class for creating Complex Ops

    • Adiciona conversão fir.no_reassoc

    • 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

    • Adiciona construtor de redução fir

    • Add fir numeric intrinsic runtime call builder

    • Adiciona conversão fircg.ext_embox

    • Add fir derived type runtime builder

    • Adicionar construtor de caracter fir

    • Adiciona conversão fircg.ext_array_coor

    • Upstream conversion of the XRebox Op

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

  • Em tempo de execução

    • Fix vector cshift runtime with non zero lower bounds

    • Respeita NO_STOP_MESSAGE=1 em tempo de execução

    • 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

    • Correção do 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

  • Adiciona -fno-automatic, refina 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

  • Corrige INQUIRE(POSITION= & PAD=)

  • Rearrange prototype & code placement of IsCoarray()

  • Replace notifyMatchFailure with TODO hard failures

  • TargetRewrite: Reescreve 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

  • Correções de resolução de procedimentos genéricos

  • Correções para o FreeBSD

  • 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.

Eventos#

  • 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.

As usual, subscribe to the mailing list and/or join the Discourse to stay tuned with the future meetings.

Colaboradores#

We thank everybody who contributed to fortran-lang in the past month by commenting in any of these repositories: