Skip to content

Compilation failure with GCC 15 #499

Description

@mcgrawia

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions