|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "Fortran newsletter: March 2022" |
| 4 | +category: newsletter |
| 5 | +author: Milan Curcic, Alexis Perry-Holby, Ondřej Čertík |
| 6 | +--- |
| 7 | + |
| 8 | +Welcome to the March edition of the monthly Fortran newsletter. |
| 9 | +The newsletter comes out at the beginning of every month and details |
| 10 | +Fortran news from the previous month. |
| 11 | + |
| 12 | +<ul id="page-nav"></ul> |
| 13 | + |
| 14 | +## fortran-lang.org |
| 15 | + |
| 16 | +Here's what's new in the fortran-lang.org repo: |
| 17 | + |
| 18 | +* [#369](https://github.com/fortran-lang/fortran-lang.org/pull/369): |
| 19 | + Resolves Issue #217 |
| 20 | +* [#359](https://github.com/fortran-lang/fortran-lang.org/pull/359): |
| 21 | + Fix time calculation in the PRs script |
| 22 | + |
| 23 | +### Work in progress |
| 24 | + |
| 25 | +* [#347](https://github.com/fortran-lang/fortran-lang.org/pull/347) (WIP): |
| 26 | + Fortran Intrinsics |
| 27 | + |
| 28 | +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) |
| 29 | +if you have any suggestions for the website and its content. |
| 30 | +We welcome any new contributors to the website and the tutorials page in particular - see the |
| 31 | +[contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) |
| 32 | +for how to get started. |
| 33 | + |
| 34 | +## Fortran Standard Library |
| 35 | + |
| 36 | +Here's what's new in stdlib: |
| 37 | + |
| 38 | +* [#624](https://github.com/fortran-lang/stdlib/pull/624): |
| 39 | + [stdlib_math] Minor update to `stdlib_math` module and document |
| 40 | + |
| 41 | +### Work in progress |
| 42 | + |
| 43 | +* [#625](https://github.com/fortran-lang/stdlib/pull/625) (WIP): |
| 44 | + Gamma special function |
| 45 | +* [#611](https://github.com/fortran-lang/stdlib/pull/611) (WIP): |
| 46 | + Hash maps |
| 47 | +* [#604](https://github.com/fortran-lang/stdlib/pull/604) (WIP): |
| 48 | + Add get_argument, get_variable and set_variable |
| 49 | +* [#580](https://github.com/fortran-lang/stdlib/pull/580) (WIP): |
| 50 | + Add terminal and color escape sequences |
| 51 | +* [#552](https://github.com/fortran-lang/stdlib/pull/552) (WIP): |
| 52 | + fixed bug in stringlist |
| 53 | +* [#536](https://github.com/fortran-lang/stdlib/pull/536) (WIP): |
| 54 | + Fix conversion warnings |
| 55 | +* [#520](https://github.com/fortran-lang/stdlib/pull/520) (WIP): |
| 56 | + [stdlib_io] add `disp`(display variable values formatted). |
| 57 | +* [#517](https://github.com/fortran-lang/stdlib/pull/517) (WIP): |
| 58 | + adding SPEC_TEMPLATE.md #504 |
| 59 | +* [#514](https://github.com/fortran-lang/stdlib/pull/514) (WIP): |
| 60 | + pop, drop & get with basic range feature for stringlist |
| 61 | +* [#491](https://github.com/fortran-lang/stdlib/pull/491) (WIP): |
| 62 | + Stdlib linked list |
| 63 | +* [#473](https://github.com/fortran-lang/stdlib/pull/473) (WIP): |
| 64 | + Error stop improvements |
| 65 | +* [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): |
| 66 | + Sorting string's characters according to their ASCII values |
| 67 | +* [#286](https://github.com/fortran-lang/stdlib/pull/286) (WIP): |
| 68 | + Probability Distribution and Statistical Functions -- Beta Distribution Module |
| 69 | +* [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): |
| 70 | + Probability Distribution and Statistical Functions -- Gamma Distribution Module |
| 71 | +* [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): |
| 72 | + Initial implementation of COO / CSR sparse format |
| 73 | + |
| 74 | +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! |
| 75 | + |
| 76 | +The candidate for file system operations to be included in stdlib is being developed by |
| 77 | +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) |
| 78 | +in [this repository](https://github.com/MarDiehl/stdlib_os). |
| 79 | +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. |
| 80 | + |
| 81 | +## Fortran Package Manager |
| 82 | + |
| 83 | +Here's what's new in fpm: |
| 84 | + |
| 85 | +* [#652](https://github.com/fortran-lang/fpm/pull/652): |
| 86 | + get user name and email using git config if available else use defaults |
| 87 | +* [#654](https://github.com/fortran-lang/fpm/pull/654): |
| 88 | + Ignore hidden source files |
| 89 | +* [#622](https://github.com/fortran-lang/fpm/pull/622): |
| 90 | + Cleanup the backend output |
| 91 | +* [#648](https://github.com/fortran-lang/fpm/pull/648): |
| 92 | + Add note about relocation of manifest reference |
| 93 | +- [fpm-docs#42](https://github.com/fortran-lang/fpm-docs/issues/42): |
| 94 | + Dutch translation |
| 95 | +- [fpm-docs#48](https://github.com/fortran-lang/fpm-docs/pull/48): |
| 96 | + Chinese translation improvements |
| 97 | +- [fpm-docs#52](https://github.com/fortran-lang/fpm-docs/pull/52): |
| 98 | + Update plugin tutorial |
| 99 | + |
| 100 | +### Work in progress |
| 101 | + |
| 102 | +* [#665](https://github.com/fortran-lang/fpm/pull/665) (WIP): |
| 103 | + add clean command |
| 104 | +* [#653](https://github.com/fortran-lang/fpm/pull/653) (WIP): |
| 105 | + Enable profiles in toml |
| 106 | +* [#608](https://github.com/fortran-lang/fpm/pull/608) (WIP): |
| 107 | + --env switch lets you specify the prefix of the compiler-related environment variables |
| 108 | +* [#539](https://github.com/fortran-lang/fpm/pull/539) (WIP): |
| 109 | + Add parent packages into dependency tree |
| 110 | +* [#498](https://github.com/fortran-lang/fpm/pull/498) (WIP): |
| 111 | + Compiler flags profiles |
| 112 | +- [fpm-docs#51](https://github.com/fortran-lang/fpm-docs/pull/51) (WIP): |
| 113 | + Add page about fpm logo |
| 114 | + |
| 115 | +`fpm` is still in early development and we need as much help as we can get. |
| 116 | +Here's how you can help today: |
| 117 | + |
| 118 | +* Use it and let us know what you think! Read the [fpm packaging guide](https://fpm.fortran-lang.org/en/tutorial) |
| 119 | +to learn how to build your package with fpm, and the [manifest reference](https://fpm.fortran-lang.org/en/spec/manifest.html) |
| 120 | +to learn what are all the things that you can specify in the fpm.toml file. |
| 121 | + |
| 122 | +* Browse existing *fpm* packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) |
| 123 | +* Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. |
| 124 | +* Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). |
| 125 | +* Improve the documentation. |
| 126 | + |
| 127 | +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. |
| 128 | +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy |
| 129 | +environment in which new open source Fortran projects are created and published with ease. |
| 130 | + |
| 131 | +## Compilers |
| 132 | + |
| 133 | +### Flang |
| 134 | + |
| 135 | +Recent development updates: |
| 136 | + |
| 137 | +* FIR |
| 138 | + * Initial lowering for empty program |
| 139 | + * Upstream partial lowering of COMMAND_ARGUMENT_COUNT intrinsic |
| 140 | + * Add lowering placeholders |
| 141 | + * Add lowering for basic empty SUBROUTINE |
| 142 | + * Upstream partial lowering of EXIT intrinsic |
| 143 | + * Lower basic STOP statement |
| 144 | + * Lower PAUSE statement |
| 145 | + * Add lowering for integer constant |
| 146 | + * Lower integer constant code for STOP stmt |
| 147 | + * Add fir.array_access op |
| 148 | + * Add fir.array_amend operation definition |
| 149 | + * Handle logical constant value for quiet in STOP stmt |
| 150 | + * Upstream partial lowering of GET_COMMAND_ARGUMENT intrinsic |
| 151 | + * Basic local variable lowering |
| 152 | + * Add lowering for ASCII character constant |
| 153 | + * Handle character constant for error code in STOP stmt |
| 154 | + * Upstream partial lowering of GET_ENVIRONMENT_VARIABLE intrinsic |
| 155 | + * Add missing CFI case for REAL and COMPLEX |
| 156 | + * Add support for lowering the goto statement |
| 157 | + * Add type conversion for !fir.box<none> |
| 158 | + * Add FIRInlinerInterface |
| 159 | + * Lower simple RETURN statement |
| 160 | + * Upstream fix to allocmem codegen to deal with missing dimensions for sequence of character types |
| 161 | + * Lower basic function with scalar integer/logical return value |
| 162 | + * Enable scalar real type in lowering |
| 163 | + * Enable complex type in function lowering |
| 164 | + * Handle lowering of ranked array |
| 165 | + * Lower simple scalar assignment |
| 166 | + * Lower scalar negation |
| 167 | + * Lower basic binary operation for scalars |
| 168 | + * Initial patch to lower a Fortran intrinsic |
| 169 | + * Lower real constant |
| 170 | + * Lower complex constant |
| 171 | + * Lower function and subroutine calls |
| 172 | + * Handle allocatable dummy arguments |
| 173 | + * Lower allocatable assignment for scalar |
| 174 | + * Simple array assignment lowering |
| 175 | + * Lower simple character return |
| 176 | + * Lower Fortran intrinsic to a runtime call/llvm intrinsic |
| 177 | + * Lower integer comparison operation |
| 178 | + * Lower real comparison operations |
| 179 | + * Lower logical comparison and logical operations |
| 180 | + * Lower power operations |
| 181 | + * Add complex operations lowering tests |
| 182 | + * Lower basic IO statement |
| 183 | + * Handle dynamic array lowering |
| 184 | +* Driver |
| 185 | + * Add support for `-emit-mlir` |
| 186 | + * Add support for `-emit-llvm` |
| 187 | + * Make `flang-new` always generate run-time type info |
| 188 | + * Add support for `--target`/`--triple` |
| 189 | +* OpenMP |
| 190 | + * Added OpenMP 5.0 specification based semantic checks for atomic update construct |
| 191 | + * The device expression must evaluate to a non-negative integer value |
| 192 | + * Remove clauses from OpenMP Dialect that are handled by the flang frontend instead: |
| 193 | + * private, firstprivate, lastprivate, shared, default, copyin, copyprivate |
| 194 | +* Runtime |
| 195 | + * Implement a runtime routine to report fatal errors with source position |
| 196 | + * Rename the runtime routine that reports a fatal user error |
| 197 | + * runtime perf: larger I/O buffer growth increments |
| 198 | + * Add runtime interface for GET_COMMAND |
| 199 | + * Upstream runtime changes for inquiry intrinsics |
| 200 | +* Improve error message (initialized variable in pure subprogram) |
| 201 | +* Accept BOZ literals for some actual arguments |
| 202 | +* Accept sparse argument keyword names for MAX/MIN |
| 203 | +* Accept INDEX(..., BACK=array) |
| 204 | +* Fix OPEN/WRITE(SIGN='SUPPRESS') |
| 205 | +* Handle FLUSH(unknown unit) |
| 206 | +* Allow explicit '+' in NAMELIST input subscripts |
| 207 | +* Extension: skip over NAMELIST groups |
| 208 | +* Add array operations documentation |
| 209 | +* Fix crash from USE-associated defined I/O subprograms |
| 210 | +* Allow INQUIRE() on a child unit in user-defined I/O procedure |
| 211 | +* Don't drop format string for external child I/O |
| 212 | +* Support DECIMAL='COMMA' mode in namelist I/O |
| 213 | +* Update tco tool pipline and add translation to LLVM IR |
| 214 | +* Add MemoryAllocation pass to the pipeline |
| 215 | +* Add ieee_is_normal/ieee_is_negative to ieee_arithmetic module. |
| 216 | +* Add a custom target for the "flang" wrapper script. |
| 217 | +* split character procedure arguments in target-rewrite pass |
| 218 | +* Expand the semantics test for co_sum |
| 219 | +* Correct interpretation of RECL= |
| 220 | +* Distinguish intrinsic from non-intrinsic modules |
| 221 | +* Make NEWUNIT= use a range suitable for INTEGER(KIND=1) and recycle unit numbers |
| 222 | +* Modify right modes for READ/WRITE vs OPEN |
| 223 | +* Add a semantics test for co_broadcast |
| 224 | +* catch implicit interface incompatibility with global scope symbol |
| 225 | +* Add an assert to guard against nullptr dereferencing |
| 226 | +* Fix FlangOptimizerTests link on Solaris |
| 227 | +* Handle "type(foo) function f" when foo is defined in f |
| 228 | +* Refine pointer/target test for ASSOCIATED intrinsic |
| 229 | +* Allow mixed association of procedure pointers and targets |
| 230 | +* Fix edge case in USE-associated generics |
| 231 | +* Fail at link time if derived type descriptors were not generated |
| 232 | +* Allow for deferred-length character in EstablishDescriptor |
| 233 | +* Allow DATA initialization of derived types w/ allocatable components |
| 234 | +* Accept NULL(mold=x) as constant component value in constant structure constructor |
| 235 | +* Ensure a characterized ENTRY in a PURE subprogram is also marked PURE |
| 236 | +* Accept structure constructor value for polymorphic component |
| 237 | +* Remove deprecated parser/printer/verifier utilities |
| 238 | +* Accept pointer assignment w/ remapping to function result |
| 239 | +* Allow extension cases of EQUIVALENCE with optional warnings |
| 240 | +* Handle CALL C_F_POINTER(without SHAPE=) |
| 241 | +* Make source location more accurate for actual arguments |
| 242 | +* Add Win32 to the list of supported triples |
| 243 | +* Allow tabs as white space in formats |
| 244 | +* Do not print format tabs |
| 245 | +* Catch I/O of bad derived type at compile time |
| 246 | +* Allow more concurrently open NEWUNIT= values, with recycling |
| 247 | + |
| 248 | +Call notes are recorded and available upon request [here](https://docs.google.com/document/d/10T-S2J3GrahpG4Ooif93NSTz2zBW0MQc_RlwHi0-afY). Please contact Alexis Perry-Holby at aperry@lanl.gov for document access. |
| 249 | + |
| 250 | +### LFortran |
| 251 | + |
| 252 | +* LFortran is participating in GSoC, please see [GSoC 2022 Student Instructions for LFortran](https://gitlab.com/lfortran/lfortran/-/wikis/GSoC%202022%20Student%20Instructions) for instructions how to apply |
| 253 | +* 19 Merge Requests merged |
| 254 | +* New ASR optimizations |
| 255 | +* Addes support for fma (fused-multiply add) in LLVM |
| 256 | +* Semantic improves to compile more of stdlib |
| 257 | + |
| 258 | +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. |
| 259 | + |
| 260 | +## Events |
| 261 | + |
| 262 | +* Fortran-lang has been selected as a mentoring organization for Google Summer of Code 2022! |
| 263 | + Thanks to everybody who helped prepare the application. |
| 264 | + [GSoC](https://summerofcode.withgoogle.com/) is Google's global, online program that allows newcomers to open-source to work on a project and get paid for it. |
| 265 | + See the [Fortran-lang GSoC 2022 page](https://summerofcode.withgoogle.com/programs/2022/organizations/fortran-lang) for information about the projects and how to apply. |
| 266 | + Applications for contributors open **April 4** and close **April 19**. |
| 267 | + To learn more about GSoC and what has changed since last year, please see the [GSoC 2022 announcement](https://opensource.googleblog.com/2021/11/expanding-google-summer-of-code-in-2022.html). |
| 268 | + 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. |
| 269 | +* Fortran-lang community now maintains a modernized fork of the classic library |
| 270 | + [minpack](https://github.com/fortran-lang/minpack). Give it a try! |
| 271 | +* We had our 23rd Fortran Monthly call on February 15. |
| 272 | + You can watch the recording below: |
| 273 | + <iframe width="560" height="315" src="https://www.youtube.com/embed/oi0F-4QSdIY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> |
| 274 | +* US Fortran Standards Committee meeting #226 started on February 28. |
| 275 | + See the draft agenda [here](https://j3-fortran.org/doc/year/22/agenda226.txt) |
| 276 | + and the submitted papers [here](https://j3-fortran.org/doc/meeting/226). |
| 277 | + |
| 278 | +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or |
| 279 | +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. |
| 280 | + |
| 281 | +## Contributors |
| 282 | + |
| 283 | +We thank everybody who contributed to fortran-lang in the past month by |
| 284 | +commenting in any of these repositories: |
| 285 | + |
| 286 | +* [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) |
| 287 | +* [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) |
| 288 | +* [fortran-lang/fpm](https://github.com/fortran-lang/fpm) |
| 289 | +* [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) |
| 290 | +* [fortran-lang/fpm-docs](https://github.com/fortran-lang/fpm-docs) |
| 291 | +* [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) |
| 292 | +* [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) |
| 293 | +* [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) |
| 294 | +* [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) |
| 295 | +* [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) |
| 296 | +* [fortran-lang/fftpack](https://github.com/fortran-lang/fftpack) |
| 297 | +* [fortran-lang/minpack](https://github.com/fortran-lang/minpack) |
| 298 | +* [fortran-lang/test-drive](https://github.com/fortran-lang/test-drive) |
| 299 | +* [j3-fortran/fortran\_proposals](https://github.com/j3-fortran/fortran_proposals) |
| 300 | + |
| 301 | +<div id="gh-contributors" data-startdate="February 01 2022" data-enddate="February 28 2022" height="500px"></div> |
0 commit comments