Compilation failure with GCC 15

Open Beginner friendly
#499 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
82/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Quiet
Tech stack
cpp
Domain
compilers

Research direction

Start with fi/include/reverse_purge_hash_map.hpp and its includes, then reproduce the failure using the GCC 15 datasketches-postgresql build described in the issue. Check whether other project headers rely on transitive availability. Done means the relevant headers compile successfully under GCC 15 without the reported fixed-width integer errors.

Written by the indexing model from the issue text.

Description

Description:

datasketches-cpp 5.1.0 fails to compile under GCC 15 due to a documented libstdc++ change that removed transitive includes of <cstdint>. Several internal libstdc++ headers (bits/align.h, bits/atomic_base.h, bits/atomic_wait.h) no longer include <stdint.h>, so fixed-width integer types like uint8_t, uint16_t, uint32_t, and uint64_t are no longer available unless explicitly included.

fi/include/reverse_purge_hash_map.hpp uses these types throughout (template defaults, member variables, function parameters, constants) but never directly includes <cstdint>. Under GCC 14 and earlier these types were available transitively; under GCC 15 they are not, causing a cascade of compilation errors.

This is the same class of breakage that affected Node.js, Godot, PowerDNS, and many other projects after GCC 15 shipped.

First error:

reverse_purge_hash_map.hpp:38:16: error: 'uint64_t' does not name a type
   38 |   typename V = uint64_t,
      |                ^~~~~~~~
reverse_purge_hash_map.hpp:25:1: note: 'uint64_t' is defined in header '<cstdint>';
  this is probably fixable by adding '#include <cstdint>'

Reproducer:

Build datasketches-postgresql 1.7.0 (which uses datasketches-cpp 5.1.0) on any platform with GCC 15:

FROM timescale/timescaledb:2.26.1-pg16  # Alpine 3.23, GCC 15.2.0
# standard datasketches-postgresql build steps...
# Fails at: make

Suggested fix:

Add #include <cstdint> to fi/include/reverse_purge_hash_map.hpp (after the existing #include <iterator> on line 24). There may be other headers in the project with the same issue.

Environment:

  • GCC 15.2.0 / libstdc++ (Alpine 3.23)
  • datasketches-cpp 5.1.0
  • datasketches-postgresql 1.7.0
  • PostgreSQL 16
Dominant language
C++
Stars
273
Forks
88
Avg merge
1d 19h
Merged PRs (30d)
9

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from apache/datasketches-cpp

All issues in apache/datasketches-cpp

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.