Skip to content

Remove the remaining R and T fortran number formats workarounds for fmt and fully remove fmt in favor of std::format #11241

@jmarrec

Description

@jmarrec

Issue overview

The R and T formats still need to be eliminated.

Upgrading fmt from the current version of 8.0.1 to 10+ (fmt 12.0.0 was released recently) will require significant work to get the custom double formats to match the old fortran formats (R, T).

I'm speaking about what is done around here: https://github.com/NREL/EnergyPlus/blob/4ac10380c7037bee7740ce3c7a51a4caa10da0c9/src/EnergyPlus/IOFiles.hh#L95

It's not impossible to do it, but since (I believe) these were provided so the I/O upgrade to fmt could pass without CI diffs (so we could trust the upgrade), maybe it's time to just remove these formats, and accept the diffs?

Notes:

  1. Why upgrade fmt?
    • Not saying this needs to be done now, but just anticipating that at some point we will want to do it.
    • it seems like this is going to be required to bring the codebase to C++20 and above (from my limited testing enabling C++20 instead of C++17).
    • And recent fmt versions gained interesting functionality like formatting std::filesystem::path out of the box, etc.
  2. The reason there is work to be done is that fmt internals changed, and the specs_.type is no longer a char but an actual enum, so rewritting it requires more effort.

Operating System (Multiple choices)

Any

Operating System Version

All

Version of EnergyPlus

25.2.0, 4ac1038

Unmethours link or helpdesk ticket number

N/A

Defect file

No response

Metadata

Metadata

Assignees

Labels

Developer IssueRelated to cmake, packaging, installers, or developer tooling (CI, etc)

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions