GCC 16 has been released

(gcc.gnu.org)

112 points | by HeliumHydride 2 hours ago

3 comments

  • gavinray 2 minutes ago
    I want to point out an implemented feature that people SHOULD be adopting but that I doubt will be picked up:

      P2590R2, Explicit lifetime management (PR106658)
    
    This is for "std::start_lifetime_as<T>". If you have not heard of this before, it's the non-UB way to type-pun a pointer into a structured type.

    Nearly all zero-copy code that deals with external I/O buffers looks something like:

      std::unique_ptr<char[]> buffer = stream->read();
      if (buffer[0] == FOO)
        processFoo(reinterpret_cast<Foo*>(buffer.get())); // undefined behavior
      else
        processBar(reinterpret_cast<Bar*>(buffer.get())); // undefined behaviour
    
    With this merged, swap the reinterpret_cast for start_lifetime_as and you're no longer being naughty.

    https://en.cppreference.com/cpp/memory/start_lifetime_as

  • xzstas 21 minutes ago
    I've already been using it for some time (debian sid has a trunk package). it has c++26 reflection, so I already do some magical things with reflection (much better for some cases e.g. for ser-des). I only wish they had a lsp server in their eco-system!
    • klaussilveira 15 minutes ago
      libstd has been giving me issues running gcc 16 binaries on Debian 12 and 13.
  • t-3 1 hour ago
    Somehow I never realized that GCC has a very regular release schedule until looking it up just now: https://gcc.gnu.org/develop.html
    • bluGill 3 minutes ago
      Large projects have been going to regular scheduled releases for a long time. Until the 90's people thought they could waterfall a large release with all your desired features (and for tiny projects this is still a good idea), but as your projects grow (possibly just to small) you reach a point where someone is always working on a feature that isn't ready yet, so a regular release means you still can support your customers with releases. This forces developers who are unsure they will be ready to have some sort of "disabled this unstable feature" toggle, which is about the best you can do.
    • uyjulian 48 minutes ago
      It has been that way since people from Cygnus (now RedHat->IBM) reorganized the project
    • r2vcap 50 minutes ago
      Yeah, GCC’s recent major releases have been remarkably regular, much like Fedora’s spring releases, and their releases seem to fit into the same broader rhythm. Hint? Red Hat.
    • tosti 59 minutes ago
      IIRC, since GCC got covered by GPL3.

      It used to be slower and I've spent way too much time working around C++ bugs in GCC 2.95

      (The fact that I remember the problematic version is telling :)

      • gpderetta 52 minutes ago
        Everybody remembers that specific version :). And I wasn't even programming professionally at that time!
      • physicsguy 21 minutes ago
        They changed their major release numbers too tbf. 4.x it was point release per year, now it's a major release per year.