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 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.
Victor Zverovich (vitaut)
Paulo Assis (Ottani)
chrono.h
.Vladislav Shchapov (phprus)
Khanh H (KKhanhH)
Jay Feldblum (yfeldblum)
std::reference_wrapper
.Amin Yahyaabadi (aminya)
Cameron Angus (kamrann)
Dependabot[bot]
Justin Riddell (Arghnews)
_BitInt
formatting support.Torsten48
Maxwell (tinfoilboy)
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.
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
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 #4175: issues with long double
FMT_USE_LONG_DOUBLE=0
does not work anymore.Issue #4173: Error in CMake build on MacOS with Clang
Issue #4149: Improve diagnostic to suggest fmt/ranges.h
Issue #4133: About the -Wstringop-overflow= issues
Issue #4124: Missing named arguments do not cause compilation error when using FMT_COMPILE
std::chrono
, std::optional
), indicating a need for enhanced functionality.The ongoing discussions and reported issues reflect a community actively seeking solutions while navigating the complexities introduced by new standards and library updates.
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.
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.chrono.h
by changing the method signature to accept long long
instead of long
.fmt::formatter
specialization for std::reference_wrapper
.std::reference_wrapper
, but was not merged as the approach was reconsidered./utf-8
was passed regardless of the compiler being used.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.
Victor Zverovich (vitaut)
Paulo Assis (Ottani)
chrono.h
.Vladislav Shchapov (phprus)
Khanh H (KKhanhH)
Jay Feldblum (yfeldblum)
std::reference_wrapper
.Amin Yahyaabadi (aminya)
Cameron Angus (kamrann)
Dependabot[bot]
Justin Riddell (Arghnews)
_BitInt
formatting and fixed compilation issues across different compilers.Torsten48
Maxwell (tinfoilboy)
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.