Boletim Fortran: Março de 2022#
Welcome to the March 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 in the fortran-lang.org repo:
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:
#624: [stdlib_math] Minor update to
stdlib_math
module and document
Trabalhos em desenvolvimento#
#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
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:
#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: Tradução holandês
fpm-docs#48: Melhoramento na tradução para Chinês
fpm-docs#52: Atualiza tutorial de plugin
Trabalhos em desenvolvimento#
#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
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
Initial lowering for empty program
Upstream partial lowering of COMMAND_ARGUMENT_COUNT intrinsic
Adiciona campos de baixo nível
Add lowering for basic empty SUBROUTINE
Upstream partial lowering of EXIT intrinsic
Declaração STOP básico de baixo nível
Declaração PAUSE de baixo nível
Add lowering for integer constant
Lower integer constant code for STOP stmt
Adiciona fir.array_access op
Adiciona definição de operação fir.array_amend
Handle logical constant value for quiet in STOP stmt
Upstream partial lowering of GET_COMMAND_ARGUMENT intrinsic
Variável local básica de baixo nível
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
Adicionado FIRInlinerInterface
Declaração de baixo nível RETURN simples
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
Atribuição de baixo nível escalar simples
Negação escalar de baixo nível
Lower basic binary operation for scalars
Initial patch to lower a Fortran intrinsic
Constante real de baixo nível
Constante complexa de baixo nível
Lower function and subroutine calls
Lida com argumentos fictícios alocáveis
Lower allocatable assignment for scalar
Atribuição simples de baixo nível de matrizes
Retorno de character simples de baixo nível
Lower Fortran intrinsic to a runtime call/llvm intrinsic
Operação de comparação de inteiro de baixo nível
Operações de comparação de real de baixo nível
Lower logical comparison and logical operations
Operações de potência de baixo nível
Add complex operations lowering tests
Declaração de IO básica de baixo nível
Handle dynamic array lowering
Driver
Adiciona suporte para
-emit-mlir
Adiciona suporte para
-emit-llvm
Make
flang-new
always generate run-time type infoAdiciona suporte para
--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
Em tempo de execução
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
Aceita INDEX(…, BACK=array)
Correção de OPEN/WRITE(SIGN=”SUPPRESS”)
Lida com FLUSH(unknown unit)
Allow explicit “+” in NAMELIST input subscripts
Extension: skip over NAMELIST groups
Adiciona documentação de operações de array
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
Corrige interpretação de 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
Remover utilitários de parser/printer/verifier depreciados
Accept pointer assignment w/ remapping to function result
Allow extension cases of EQUIVALENCE with optional warnings
Opera CALL C_F_POINTER(sem 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 adicionados
Novas otimizações ASR
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.
Eventos#
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.
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: