Skip to content

Time to remove the fortran number formats workarounds for fmt? #10596

@jmarrec

Description

@jmarrec

Issue overview

Upgrading fmt from the current version of 8.0.1 to 10+ will require significant work to get the custom double formats to match the old fortran formats (Z, S, N, R).

I'm speaking about what is done around here: https://github.com/NREL/EnergyPlus/blob/1033bdc61ccda944a6844344f9ba18e76ffa53d1/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.

Details

Some additional details for this issue (if relevant):

  • Platform (Operating system, version): all
  • Version of EnergyPlus (if using an intermediate build, include SHA): 1033bdc

Checklist

Add to this list or remove from it as applicable. This is a simple templated set of guidelines.

  • Defect file added (list location of defect file here)
  • Ticket added to EnergyPlus Defect Complexity (Github Project)
  • Pull request created (the pull request will have additional tasks related to reviewing changes that fix this defect)

Metadata

Metadata

Assignees

Labels

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

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions