‹ Reports
The Dispatch

OSS Report: fmtlib/fmt


Development Stagnates as Compatibility Issues Persist in {fmt} Library

The {fmt} library, a high-performance C++ formatting library, continues to face challenges with compiler compatibility and C++20 transition, impacting its development momentum.

Recent Activity

Recent issues and pull requests (PRs) highlight ongoing struggles with compiler compatibility, particularly with Clang and GCC. Notable issues include #4175 regarding long double handling and #4173 related to CMake build errors on MacOS. These indicate persistent challenges in maintaining cross-platform stability.

Team Members and Activities

  1. Victor Zverovich (vitaut)

    • Extensive cleanup of format API.
    • Focus on type safety and performance improvements.
  2. Paulo Assis (Ottani)

  3. Vladislav Shchapov (phprus)

    • Backported fixes from GoogleTest.
    • Addressed compiler warnings.
  4. Khanh H (KKhanhH)

    • Added padding modifiers to chrono formatting.
  5. Jay Feldblum (yfeldblum)

    • Improved handling of std::reference_wrapper.
  6. Amin Yahyaabadi (aminya)

    • Fixed MSVC build issue.
  7. Cameron Angus (kamrann)

    • Addressed module build issues.
  8. Dependabot[bot]

    • Updated CI/CD dependencies.
  9. Justin Riddell (Arghnews)

    • Added _BitInt formatting support.
  10. Torsten48

    • Resolved unreachable code warnings.
  11. Maxwell (tinfoilboy)

    • Fixed chrono compile errors.

Of Note

Quantified Reports

Quantify Issues



Recent GitHub Issues Activity

Timespan Opened Closed Comments Labeled Milestones
7 Days 8 6 19 2 1
30 Days 29 27 95 12 1
90 Days 86 83 267 33 1
1 Year 211 200 605 92 1
All Time 2642 2630 - - -

Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.

Quantify commits



Quantified Commit Activity Over 30 Days

Developer Avatar Branches PRs Commits Files Changes
Victor Zverovich 1 0/0/0 159 36 10585
Vladislav Shchapov 1 4/4/0 8 9 138
Khanh H 1 1/1/0 1 3 115
Justin Riddell 1 1/2/0 2 3 114
Jay Feldblum 1 1/0/1 1 2 16
Maxwell 1 1/1/0 1 1 10
dependabot[bot] 1 3/2/1 2 2 6
Cameron Angus 1 2/1/0 1 2 5
Paulo Assis 1 1/1/0 1 1 4
Amin Yahyaabadi 1 1/1/0 1 1 4
torsten48 1 1/1/0 1 1 3
Khem Raj (kraj) 0 1/0/1 0 0 0
Moshe Looks (moshelooks) 0 1/0/1 0 0 0

PRs: created by that dev and opened/merged/closed-unmerged during the period

Detailed Reports

Report On: Fetch issues



Recent Activity Analysis

The recent activity on the fmtlib/fmt GitHub repository indicates a vibrant and engaged community, with a total of 12 open issues. Notably, there are several recurring themes, including compatibility issues with various compilers and platforms, as well as requests for enhancements in formatting capabilities. A significant number of issues relate to the transition to C++20 features, highlighting the challenges developers face when adapting to newer standards.

Several issues exhibit anomalies, such as the ongoing problems with formatting specific types (e.g., std::chrono::year_month_day, std::optional<std::string>) and the complications arising from using named arguments alongside positional ones. The community's discussions reveal a mix of confusion and frustration over changes introduced in recent versions, particularly regarding backward compatibility and expected behaviors.

Issue Details

  1. Issue #4175: issues with long double

    • Priority: High
    • Status: Open
    • Created: 0 days ago
    • Comments: User reports that FMT_USE_LONG_DOUBLE=0 does not work anymore.
  2. Issue #4173: Error in CMake build on MacOS with Clang

    • Priority: Medium
    • Status: Open
    • Created: 2 days ago
    • Comments: User encounters build failures related to Clang version compatibility.
  3. Issue #4149: Improve diagnostic to suggest fmt/ranges.h

    • Priority: Low
    • Status: Open
    • Created: 20 days ago
    • Comments: Suggestion to enhance error messages related to unformattable types.
  4. Issue #4133: About the -Wstringop-overflow= issues

    • Priority: Medium
    • Status: Open
    • Created: 27 days ago
    • Comments: User reports warnings during linking due to LTO.
  5. Issue #4124: Missing named arguments do not cause compilation error when using FMT_COMPILE

    • Priority: Medium
    • Status: Open
    • Created: 38 days ago
    • Comments: Users expect compilation errors for missing named arguments but do not receive them.

Important Themes

  • Compiler Compatibility Issues: Many issues revolve around compatibility with different compilers (e.g., Clang, GCC) and their respective versions.
  • C++20 Transition Challenges: Developers are facing difficulties adapting their codebases to accommodate new C++20 features.
  • Formatting Specific Types: There are multiple requests for better handling of specific data types (e.g., std::chrono, std::optional), indicating a need for enhanced functionality.
  • Error Handling Improvements: Users are advocating for clearer error messages and diagnostics when formatting fails.

The ongoing discussions and reported issues reflect a community actively seeking solutions while navigating the complexities introduced by new standards and library updates.

Report On: Fetch pull requests



Overview

The analysis of the provided pull requests (PRs) for the {fmt} library reveals a dynamic and active development environment. The PRs span a range of enhancements, bug fixes, and updates to dependencies, reflecting ongoing efforts to improve the library's functionality, performance, and compatibility with various platforms and compilers.

Summary of Pull Requests

Open Pull Requests

  • PR #4169: Addresses module linkage issues for shared builds, particularly with Clang. It adds FMT_INLINE/FMT_CONSTEXPR to member functions to resolve linker errors when using the fmt module in shared library builds. The PR is significant as it tackles compatibility issues with different compilers and build configurations.

Closed Pull Requests

  • PR #4170: A minor fix to remove a conversion warning on chrono.h by changing the method signature to accept long long instead of long.
  • PR #4166: Proposed adding overloads to support colorizing compiled format strings. However, it was not merged due to concerns about combining format string compilation with colored output.
  • PR #4164: Fixed undefined behavior by using fmt::formatter specialization for std::reference_wrapper.
  • PR #4163: Attempted to add formatting support for std::reference_wrapper, but was not merged as the approach was reconsidered.
  • PR #4161: Added padding modifiers for additional presentation types in chrono formatting.
  • PR #4159: Fixed an issue where /utf-8 was passed regardless of the compiler being used.
  • PR #4155: Updated CI configurations to use gcc-13 for C++23 tests.
  • PR #4152: Fixed issues with modules builds caused by recent changes that affected out-of-line member function definitions.

Analysis of Pull Requests

The PRs indicate a strong focus on enhancing compatibility and functionality across different platforms and compilers. For instance, PR #4169 addresses specific issues with Clang when using modules, highlighting the project's commitment to supporting modern C++ features like modules while ensuring stability across various environments.

There is also an emphasis on improving existing features and fixing bugs, as seen in PRs like #4170 and #4161. These efforts not only enhance the library's usability but also ensure that it remains a reliable choice for developers.

The presence of closed PRs that were not merged, such as #4166 and #4163, suggests an active review process where contributions are carefully evaluated for their alignment with the project's goals and standards. This is crucial for maintaining the quality and integrity of the library as it evolves.

Dependency management is another area of focus, with multiple PRs (#4159, #4155) aimed at updating or fixing issues related to third-party tools and libraries. This is essential for keeping the project up-to-date with the latest developments in its ecosystem.

Overall, the {fmt} library's development is characterized by a proactive approach to enhancing its capabilities while ensuring compatibility and performance across diverse environments. The active involvement of contributors in proposing improvements and fixes reflects a healthy community engagement around the project.

Report On: Fetch commits



Repo Commits Analysis

Development Team and Recent Activity

Team Members and Activities

  1. Victor Zverovich (vitaut)

    • Recent Activity: 159 commits with 10,585 changes across 36 files.
    • Focus: Extensive cleanup of the format API, simplification of locale handling, deprecation of certain features, and improvements in type safety and performance.
    • Collaboration: Worked alongside other contributors like Vladislav Shchapov on various issues.
    • In Progress: Continuous enhancements to the formatting capabilities and addressing warnings.
  2. Paulo Assis (Ottani)

    • Recent Activity: 1 commit with 4 changes.
    • Focus: Fixed a conversion warning in chrono.h.
    • Collaboration: Engaged in a pull request that was merged.
  3. Vladislav Shchapov (phprus)

    • Recent Activity: 8 commits with 138 changes.
    • Focus: Backported fixes from GoogleTest and worked on compiler warnings.
    • Collaboration: Actively contributed to resolving issues related to compatibility with GCC and MSVC.
  4. Khanh H (KKhanhH)

    • Recent Activity: 1 commit with 115 changes.
    • Focus: Added padding modifiers to chrono formatting.
    • Collaboration: Merged pull request.
  5. Jay Feldblum (yfeldblum)

    • Recent Activity: 1 commit with 16 changes.
    • Focus: Improved handling of std::reference_wrapper.
    • Collaboration: Merged pull request.
  6. Amin Yahyaabadi (aminya)

    • Recent Activity: 1 commit with 4 changes.
    • Focus: Fixed a build issue related to MSVC.
    • Collaboration: Merged pull request.
  7. Cameron Angus (kamrann)

    • Recent Activity: 1 commit with 5 changes.
    • Focus: Addressed issues with module builds.
    • Collaboration: Opened multiple pull requests.
  8. Dependabot[bot]

    • Recent Activity: 2 commits with 6 changes.
    • Focus: Updated dependencies for actions used in CI/CD processes.
    • Collaboration: Merged multiple pull requests.
  9. Justin Riddell (Arghnews)

    • Recent Activity: 2 commits with 114 changes.
    • Focus: Added support for _BitInt formatting and fixed compilation issues across different compilers.
    • Collaboration: Merged pull requests.
  10. Torsten48

    • Recent Activity: 1 commit with 3 changes.
    • Focus: Resolved unreachable code warnings.
  11. Maxwell (tinfoilboy)

    • Recent Activity: 1 commit with 10 changes.
    • Focus: Fixed compile errors in chrono.

Patterns and Themes

  • The majority of recent activity is driven by Victor Zverovich, indicating a strong leadership role in ongoing development and maintenance of the library.
  • There is a consistent focus on cleaning up the codebase, improving performance, and ensuring compatibility across different compilers, particularly addressing warnings and deprecated features.
  • Collaboration among team members is evident, especially in resolving issues related to compiler compatibility and enhancing library features.
  • The project shows active engagement from contributors, both in terms of feature development and maintenance tasks, reflecting a healthy open-source community dynamic.

Conclusions

The development team is actively engaged in improving the {fmt} library through consistent contributions focused on code quality, performance enhancements, and compatibility fixes. The collaborative efforts among team members suggest a well-functioning team environment that supports ongoing development initiatives.