Curious about support for Fortran 2023 and OpenMP features provided by the Intel(R) Fortran Compiler? It is documented here: Intel Fortrran Compiler
I would be interested to know why are conditional expressions still not supported, since their syntax is similar to C’s conditional operator?
Nice article, thanks!
We continue to recommend keeping your ifx installation up to date so that you can take advantage of these improvements
Regarding this, what is the recommended way of updating the intel Fortran compiler? I use the Microsoft Visual Studio integration, with VS 2022. Can I just update ifx without messing around the visual studio integration or do I have to download everything again, i.e.
- Microsoft Visual Studio,
- Intel oneAPI base toolkit,
- intel oneAPI HPC toolkit,
in this order?
Thanks in advance for your time
A good question. Conditional Expressions is an interesting feature and a nice shorthand. And yes, C has it. But believe me, it’s non-trivial to implement in our compiler front-end. And on top of the time it will take to implement, it has the potential to break other code in the front end. That’s why we haven’t implemented it to date. Of the F23 features still to implement, this feature is at or near the top of what we would like to implement next.
I suppose everyone wants their favorite F2023 feature to be implemented first —in my case, that would be enumeration types.
The deprecation of ifort
complicates things even further, since now some of the resources for implementing new features in ifx
must be redirected to fixing regressions —e.g., boz-literals not working as expected.
ifort has no impact here. Regressions occur in any code branch of any complexity. Your BOZ issue was fixed in 2025.2.0. It looks like the Support team owner for your issue did not alert you to the fix. I have updated the Forum issue with the fix information.
$ ifx -what -V -stand f23 -standard-semantics -c test.f90
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2025.2.0 Build 20250605
Copyright (C) 1985-2025 Intel Corporation. All rights reserved.
Intel(R) Fortran 25.0-1485
$
First, you should leave your older compiler installed. Don’t remove it. You can switch back and forth easily between compiler versions.
As for what Toolkits to update - do you use all of the tools in the Basekit and the HPC kit? If so, yes, they should all be updated. There is also a Fortran Essentials kit that contains ifx, MKL, debugger, and Intel MPI along with all libraries for GPU offload with OpenMP. Just no Intel C++, DPC++, Vtune, etc. If you want those other tools, you can install them a-la-carte from here
Integrations is another consideration. You can only have 1 VS Integrations installed at a time. That is out of Intel’s control. And the VS Intgrations is run by the Installer. There is a step during the installation where it finds and reports the VS versions it finds on your system and allows you to select/deselect integrations into that VS. BUT please DO install the new Integrations with the new compiler. There have been fixes in the Integrations in the last 2 versions. And the new integration is backwards compatible. And it will work if you switch VS to use the older compiler instead of the 2025.2 compiler OR if you want to use your older ifort that may be installed on your system.
Yet another feature Fortran should have had 60+ years ago. John McCarthy proposed it back in the late 1950s. He had used a function he called XIF, equivalent to todays MERGE intrinsic, to simplify his Fortran coding. But wanted a version that only evaluated one of the two conditional expressions - rather than both. Apparently his friends at IBM were not interested in implementing it. The feature turned out to be fairly fundamental to his LISP research. He also got it into ALGOL-60.
Indeed. I tried to use the merge function to handle optional arguments that have default values in case they are absent, but the behavior was compiler-dependent. That worked with ifx, but with gfotran I got segmentation faults. With conditional expressions that would be easy to implement.