# C++20

Published articles for C++20.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Concepts in Practice: C++ MPI Bindings for the HPC Ecosystem - From a Standardizable Core to a Composable Interface

DevFeed: [Concepts in Practice: C++ MPI Bindings for the HPC Ecosystem - From a Standardizable Core to a Composable Interface](<https://devfeed.tech/articles/concepts-in-practice-c-mpi-bindings-for-the-hpc-ecosystem-from-a-standardizable-core-to-a-composable-interface-95147.md>)

Original publisher: [Read original article](<https://arxiv.org/abs/2606.09102>)

Author: Tim Niklas Uhl, Matthias Schimek, Daniel Brommer

Published: 2026-10-22T04:00:00Z

Content type: article

Language: en

Sources: [arXiv: Distributed Computing](<https://devfeed.tech/sources/arxiv-distributed-computing.md>)

Topics: [High-Performance Computing](<https://devfeed.tech/topics/high-performance-computing.md>), [Kokkos](<https://devfeed.tech/topics/kokkos.md>), [adapter pattern](<https://devfeed.tech/topics/adapter-pattern.md>), [stl](<https://devfeed.tech/topics/stl.md>)

Tags: [adapter](<https://devfeed.tech/tags/adapter.md>), [adapters](<https://devfeed.tech/tags/adapters.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [c-plus-plus-20](<https://devfeed.tech/tags/c-plus-plus-20.md>), [cs-dc](<https://devfeed.tech/tags/cs-dc.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [hpc](<https://devfeed.tech/tags/hpc.md>), [interface](<https://devfeed.tech/tags/interface.md>), [memory-safety](<https://devfeed.tech/tags/memory-safety.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [performance](<https://devfeed.tech/tags/performance.md>), [stl-containers](<https://devfeed.tech/tags/stl-containers.md>)

### AI overview

The paper presents a layered design for modern C++ MPI bindings: a low-level core built on refined C++20 concepts, automatic mappings for standard C++ constructs, customization points for third-party types, and concept-based MPI procedure wrappers. The core works directly with STL containers and is designed to be extensible and suitable for standardization. On top of it, KaMPIng-v2 adds memory-safe, composable pipe-based syntax inspired by C++ ranges. Lightweight adapters let Kokkos views, Thrust device vectors, and SYCL buffers be passed directly to MPI, with adapter logic kept self-contained. The authors report a functional open-source reference implementation; the excerpt gives no performance measurements.

### Source excerpt

arXiv:2606.09102v2 Announce Type: replace Abstract: The official C++ MPI bindings were removed from the standard in 2008, leaving a gap that numerous third-party libraries have attempted to fill. However, existing wrappers typically cover only a limited subset of MPI or target specific use cases, falling short of a general-purpose solution. A recent conceptual paper proposed general design principles for modern C++ bindings based on C++20 concepts, without committing to a concrete interface. We present the first concrete realization of these principles in a layered architecture. At the foundation, we define a core layer: refined C++20 concepts formalizing the MPI standard's notion of data buffers, automatic mapping of standard C++ constructs, non-intrusive customization points for third-party types, and concept-based wrappers for MPI procedures. The result is a low-level native C++ MPI interface that works directly with STL containers, is highly extensible, and lends itself to standardization. Built on this core, we present KaMPIng-v2 -- a C++ MPI library offering the convenience and memory-safety of KaMPIng with composable, pipe-based syntax inspired by C++ ranges for efficient, boilerplate-free MPI programming. Finally, we demonstrate the core layer's broad applicability by designing lightweight adapters for GPU and performance-portability libraries, making the HPC ecosystem a first-class citizen in MPI. Kokkos views, Thrust device vectors, and SYCL buffers can be passed directly to MPI procedures, with adapter logic remaining self-contained. All contributions are backed by a fully functional open-source reference implementation, demonstrating the practical viability of the proposed design.

## Announcing the verifiable quantum circuit compilation competition on Kaggle

DevFeed: [Announcing the verifiable quantum circuit compilation competition on Kaggle](<https://devfeed.tech/articles/announcing-the-verifiable-quantum-circuit-compilation-competition-on-kaggle-96325.md>)

Original publisher: [Read original article](<http://opensource.googleblog.com/2026/10/announcing-verifiable-quantum-circuit-compilation-competition-on-kaggle.html>)

Author: Google Open Source (noreply@blogger.com)

Published: 2026-10-21T18:30:00Z

Content type: release

Language: en

Sources: [Google Open Source Blog](<https://devfeed.tech/sources/google-open-source-blog.md>)

Topics: [Quantum Computing](<https://devfeed.tech/topics/quantum-computing.md>), [Kaggle](<https://devfeed.tech/topics/kaggle.md>), [Test automation](<https://devfeed.tech/topics/test-automation.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [agentic](<https://devfeed.tech/tags/agentic.md>), [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agent](<https://devfeed.tech/tags/ai-agent.md>), [algorithm](<https://devfeed.tech/tags/algorithm.md>), [c-plus-plus-20](<https://devfeed.tech/tags/c-plus-plus-20.md>), [circuit](<https://devfeed.tech/tags/circuit.md>), [competition](<https://devfeed.tech/tags/competition.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [error-correction](<https://devfeed.tech/tags/error-correction.md>), [kaggle](<https://devfeed.tech/tags/kaggle.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [python](<https://devfeed.tech/tags/python.md>), [qualtran](<https://devfeed.tech/tags/qualtran.md>), [quantum](<https://devfeed.tech/tags/quantum.md>), [quantum-ai](<https://devfeed.tech/tags/quantum-ai.md>), [quantum-circuits](<https://devfeed.tech/tags/quantum-circuits.md>), [quantum-computing](<https://devfeed.tech/tags/quantum-computing.md>), [qubit](<https://devfeed.tech/tags/qubit.md>), [size](<https://devfeed.tech/tags/size.md>)

### AI overview

The Kaggle competition asks participants to use AI to reduce quantum circuit qubit and gate costs across fusion energy, optimization, and chemistry benchmarks. Each provides an open-source reference circuit and standalone verifier; submissions must pass verification while minimizing a cost score based on qubit and gate counts. The approach focuses on kickmix circuits, a structured class built from reversible classical logic, diagonal phase gates, and measurement-based uncomputation. Because these circuits map each input bitstring to one output bitstring and phase without creating new superpositions, randomized classical fuzz testing can check approximate correctness efficiently. It does not prove exact equivalence, but the source says bounded errors are tolerable in many quantum algorithms and approximations can substantially reduce circuit resources. The excerpt identifies the benchmark tasks: approximate an inverse-square-root phase, build a Reed-Solomon decoder, and co-design a Hamiltonian factorization with compact parameter-loading circuits. Google's kickmix library in Qualtran supports circuit construction and testing; the excerpt does not give full competition rules or score

### Source excerpt

by Tanuj Khattar and Ryan Babbush, Google Quantum AI While quantum computing holds the key to solving some of our most complex scientific challenges, current hardware is still limited by qubit counts and gate errors. Quantum error correction can overcome those errors, but it adds substantial overhead to every qubit and gate an algorithm uses. That makes circuit size one of the biggest factors in when a quantum algorithm becomes practical: every qubit and gate we remove lowers the bar that hardware must clear. To bring real-world quantum applications within reach sooner, it is critical to first compress the circuits that power them. To help bridge this gap, the Google Quantum AI team is launching a competition on Kaggle challenging you to use AI to build smaller, more efficient quantum circuits. The competition is powered by kickmix, our new open source C++20 and Python library in Qualtran for efficiently building and testing large quantum circuits. Our companion paper, Leveraging verifiable structure in quantum circuits to find more efficient compilations with agentic AI, describes the approach in detail. Turning compilation into an AI agent loop In the past, optimizing quantum algorithms meant domain experts meticulously tuning circuits by hand and publishing incremental wins one paper at a time. Today, agentic AI can search for more efficient circuits automatically, but such results can only be trusted when candidate circuits can be efficiently verified for correctness. For arbitrary quantum circuits, classical verification is intractable because quantum gates create superpositions over exponentially many classical bitstrings. Fortunately, many of the most expensive subroutines in fault-tolerant algorithms can be built within a structured subclass of circuits, called "kickmix" circuits, which we introduced in our earlier work. Built from reversible classical logic, diagonal phase gates, and measurement-based uncomputation, kickmix circuits map each input bitstring

## C++26 Ranges: Four New Views

DevFeed: [C++26 Ranges: Four New Views](<https://devfeed.tech/articles/c-26-ranges-four-new-views-86853.md>)

Original publisher: [Read original article](<https://www.sandordargo.com/blog/2026/10/14/cpp26-ranges-part-1-new-views>)

Author: Sandor Dargo

Published: 2026-10-13T22:00:00Z

Content type: article

Language: en

Sources: [Sandor Dargo's Blog](<https://devfeed.tech/sources/sandor-dargo-s-blog.md>)

Topics: [data type](<https://devfeed.tech/topics/data-type.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [c-plus-plus-20](<https://devfeed.tech/tags/c-plus-plus-20.md>), [c-plus-plus-23](<https://devfeed.tech/tags/c-plus-plus-23.md>), [c-plus-plus-26](<https://devfeed.tech/tags/c-plus-plus-26.md>), [dev](<https://devfeed.tech/tags/dev.md>)

### AI overview

The article explains four C++26 ranges views: `views::concat` for lazy iteration across ranges, `views::to_input` to simplify iterator behavior and reduce work, `views::cache_latest` to avoid repeated transform evaluations, and `views::indices` for generating an index range. It also describes constraints and behavior of each view.

### Source excerpt

C++20 shipped a powerful ranges library, but the set of view adaptors had some obvious gaps. Want to get the output as a container? No luck. At least C++23 helped with that. Want to iterate over two vectors as one sequence? Write your own. Want to avoid redundant evaluations in a transform | filter pipeline? Write a workaround. Want a quick index sequence matching a range's size? Spell out iota...

## A new, bespoke static site generator to replace Jekyll

DevFeed: [A new, bespoke static site generator to replace Jekyll](<https://devfeed.tech/articles/a-new-bespoke-static-site-generator-to-replace-jekyll-64652.md>)

Original publisher: [Read original article](<https://nullprogram.com/blog/2026/10/04/>)

Published: 2026-10-04T16:35:49Z

Content type: article

Language: en

Sources: [Chris Wellons](<https://devfeed.tech/sources/chris-wellons.md>)

Topics: [static-site-generator](<https://devfeed.tech/topics/static-site-generator.md>), [Jekyll](<https://devfeed.tech/topics/jekyll.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [c](<https://devfeed.tech/tags/c.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [c-plus-plus-20](<https://devfeed.tech/tags/c-plus-plus-20.md>), [cpp](<https://devfeed.tech/tags/cpp.md>), [generator](<https://devfeed.tech/tags/generator.md>), [github](<https://devfeed.tech/tags/github.md>), [jekyll](<https://devfeed.tech/tags/jekyll.md>), [meta](<https://devfeed.tech/tags/meta.md>), [performance](<https://devfeed.tech/tags/performance.md>), [static-site-generator](<https://devfeed.tech/tags/static-site-generator.md>), [syntax-highlighting](<https://devfeed.tech/tags/syntax-highlighting.md>), [templates](<https://devfeed.tech/tags/templates.md>)

### AI overview

After 15 years using Jekyll, the author replaced it with a custom static site generator written in C++20, designed specifically for their blog. The article describes its implementation, build and deployment workflow, performance, and the use of Claude Opus 5.5 to generate most of the code. The author reports that the model produced code matching their coding style, with two follow-up fixes during review.

### Source excerpt

My blog began as a blosxom (Perl) site running on a VPS. In 2011 I moved to the new GitHub Pages, with the site generated statically by Jekyll (Ruby) on a GitHub server. It was a no-brainer: easier, faster, and cheaper, better in every way. After 15 years of Jekyll, this week I replaced it with a new, custom-built static site generator, dubbed ssg, in "C with templates" C++20. The ~8KLoC source closely follows my personal coding style including templated arenas and slices, zero dependencies, and a libc-free core. It's wicked fast, and a complete, cold generation of my blog takes 150ms on my MacBook. That is, it's done before Ruby would even reach Jekyll's entry point. It's a been a great, real-world demonstration of the effectiveness of my coding philosophy. Look around and you'll find almost nothing visually changed. Outside of syntax highlighting, the HTML is semantically identical. I did not try to match Rouge's syntax highlighting, just its CSS selectors so that I could use my style sheet unmodified. With that in my own hands, I now get syntax highlighting that better suits my needs, some Rouge bugs gone and support for new languages, particularly assembly (WAT, AT&T, Aarch64) and QBasic. Because ssg only supports my site, and its source lives along side it, I don't need a template system, i.e. Liquid. I can modify the C++ source as needed. So the upgrade was three steps: (1) fix 19 years of accumulated site bugs that Jekyll quietly tolerated, (2) add the new generator, (3) delete Liquid templates and pre-generated tag pages (now dynamically generated, with preservation of original feed UUIDs). Jekyll and ssg both work simultaneously at step #2, allowing side-by-side comparisons from the same site source. This is where most of the time was spent. Dropping templates means performance comparisons with Jekyll are unfair, as Jekyll is solving a different problem. (But I think it's fair to speculate that ssg with Liquid templates would still smoke Jekyll!) Historical

## Project SkySim, Part 2: One Physics Core, Three Ways to Run It

DevFeed: [Project SkySim, Part 2: One Physics Core, Three Ways to Run It](<https://devfeed.tech/articles/project-skysim-part-2-one-physics-core-three-ways-to-run-it-61835.md>)

Original publisher: [Read original article](<https://hackernoon.com/project-skysim-part-2-one-physics-core-three-ways-to-run-it?source=rss>)

Author: vishwa vimukthi gammuduwaththage

Published: 2026-09-29T15:14:55Z

Content type: tutorial

Language: en

Sources: [HackerNoon](<https://devfeed.tech/sources/hackernoon.md>)

Topics: [Game Development](<https://devfeed.tech/topics/game-development.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>)

Tags: [ardupilot](<https://devfeed.tech/tags/ardupilot.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [c-plus-plus-20](<https://devfeed.tech/tags/c-plus-plus-20.md>), [drone-simulation](<https://devfeed.tech/tags/drone-simulation.md>), [drone-technology](<https://devfeed.tech/tags/drone-technology.md>), [firmware](<https://devfeed.tech/tags/firmware.md>), [gdextension](<https://devfeed.tech/tags/gdextension.md>), [godot](<https://devfeed.tech/tags/godot.md>), [godot-4](<https://devfeed.tech/tags/godot-4.md>), [robotics-architecture](<https://devfeed.tech/tags/robotics-architecture.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

The article describes SkySim's architecture: a physics core written in C++20 is separated from rendering so it can run in multiple hosts. It explains a native desktop host using Godot 4 and a GDExtension, with the same core handling aerodynamic simulation while Godot manages rendering, scenes, and input.

### Source excerpt

I argued that a drone simulator should be easy to open as a URL, without becoming a toy. This is the architectural decision that makes that possible.

## Project SkySim: Why Drone Simulation Setup Can Discourage Beginners

DevFeed: [Project SkySim: Why Drone Simulation Setup Can Discourage Beginners](<https://devfeed.tech/articles/project-skysim-part-1-the-case-for-a-drone-simulator-that-runs-in-your-browser-61501.md>)

Original publisher: [Read original article](<https://hackernoon.com/project-skysim-part-1-the-case-for-a-drone-simulator-that-runs-in-your-browser?source=rss>)

Author: vishwa vimukthi gammuduwaththage

Published: 2026-09-28T17:45:11Z

Content type: article

Language: en

Sources: [HackerNoon](<https://devfeed.tech/sources/hackernoon.md>)

Topics: [Game engine](<https://devfeed.tech/topics/game-engine.md>), [Linux Kernel](<https://devfeed.tech/topics/linux-kernel.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [aircraft](<https://devfeed.tech/tags/aircraft.md>), [algorithm](<https://devfeed.tech/tags/algorithm.md>), [ardupilot](<https://devfeed.tech/tags/ardupilot.md>), [autonomy](<https://devfeed.tech/tags/autonomy.md>), [beginner](<https://devfeed.tech/tags/beginner.md>), [boot](<https://devfeed.tech/tags/boot.md>), [browser](<https://devfeed.tech/tags/browser.md>), [build](<https://devfeed.tech/tags/build.md>), [c-plus-plus-20](<https://devfeed.tech/tags/c-plus-plus-20.md>), [chromebook](<https://devfeed.tech/tags/chromebook.md>), [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [compile](<https://devfeed.tech/tags/compile.md>), [control](<https://devfeed.tech/tags/control.md>), [drone](<https://devfeed.tech/tags/drone.md>), [drone-simulation](<https://devfeed.tech/tags/drone-simulation.md>), [drone-technology](<https://devfeed.tech/tags/drone-technology.md>), [project](<https://devfeed.tech/tags/project.md>), [project-skysim](<https://devfeed.tech/tags/project-skysim.md>), [robotics-simulation](<https://devfeed.tech/tags/robotics-simulation.md>), [ros](<https://devfeed.tech/tags/ros.md>), [simulator](<https://devfeed.tech/tags/simulator.md>), [test](<https://devfeed.tech/tags/test.md>), [uav-autonomy](<https://devfeed.tech/tags/uav-autonomy.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

The author, who builds drone autonomy software, describes how setting up existing simulators can require Linux, ROS, game engines, GPU drivers, and costly tools before beginners can test control algorithms. They argue that these barriers discourage newcomers and introduce a browser-based drone simulator as their response.

### Source excerpt

Every serious drone simulator asks you to install Linux, ROS, or a game engine before you can test a single line of your own code. So, I built my own one.

## Using C++17 std::optional

DevFeed: [Using C++17 std::optional](<https://devfeed.tech/articles/using-c-17-std-optional-61110.md>)

Original publisher: [Read original article](<https://www.cppstories.com/2018/05/using-optional/>)

Published: 2026-09-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [C++ Stories](<https://devfeed.tech/sources/c-stories.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Memory Safety](<https://devfeed.tech/topics/memory-safety.md>), [union types](<https://devfeed.tech/topics/union-types.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [c-plus-plus-20](<https://devfeed.tech/tags/c-plus-plus-20.md>), [c-plus-plus-23](<https://devfeed.tech/tags/c-plus-plus-23.md>), [c-plus-plus-26](<https://devfeed.tech/tags/c-plus-plus-26.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [null](<https://devfeed.tech/tags/null.md>), [programming](<https://devfeed.tech/tags/programming.md>), [rust](<https://devfeed.tech/tags/rust.md>), [type-safety](<https://devfeed.tech/tags/type-safety.md>)

### AI overview

This tutorial explains std::optional, a C++17 value type that represents a value that may be absent. It discusses its type safety, memory behavior, and uses such as nullable values, computation results, lazy resource loading, and optional function parameters.

### Source excerpt

Let's take a pair of two types <YourType, bool> - what can you do with such composition? In this article, I'll describe std::optional - a helper "vocabulary" type added in C++17. It's a wrapper that either contains a value of your type or is empty. Let's see where it can be useful and how you can use it. Updated in September 2026 with C++20, C++23, and C++26 changes. Intro By adding the boolean flag to other types, you can achieve a thing called "nullable types". As mentioned, the flag is used to indicate whether the value is available or not. Such wrapper represents an object that might be empty in an expressive way (so not via comments :)) While you can achieve "null-ability" by using unique values (-1, infinity, nullptr), it's not as clear as the separate wrapper type. Alternatively, you could even use std::unique_ptr<Type> and treat the empty pointer as not initialized - this works, but comes with the cost of allocating memory for the object. Optional types - that come from functional programming world - bring type safety and expressiveness. Most of other languages have something similar: for example std::option in Rust, Optional<T> in Java, Data.Maybe in Haskell. std::optional was added in C++17 and brings a lot of experience from boost::optional that was available for many years. Since C++17 you can just #include <optional> and use the type. Such wrapper is still a value type (so you can copy it, via deep copy). What's more, std::optional doesn't need to allocate any memory on the free store. std::optional is a part of C++ vocabulary types along with std::any, std::variant and std::string_view. When to use Usually, you can use an optional wrapper in the following scenarios: If you want to represent a nullable type nicely. Rather than using unique values (like -1, nullptr, NO_VALUE or something) For example, user's middle name is optional. You could assume that an empty string would work here, but knowing if a user entered something or not might be important. W

## Swift 6.4 Brings Subprocess 1.0, Improved Interoperability, Faster Wasm, and More

DevFeed: [Swift 6.4 Brings Subprocess 1.0, Improved Interoperability, Faster Wasm, and More](<https://devfeed.tech/articles/swift-6-4-brings-subprocess-1-0-improved-interoperability-faster-wasm-and-more-60541.md>)

Original publisher: [Read original article](<https://www.infoq.com/news/2026/09/swift-6-4-released/>)

Author: Sergio De Simone

Published: 2026-09-27T14:00:00Z

Content type: release

Language: en

Sources: [InfoQ](<https://devfeed.tech/sources/infoq.md>)

Topics: [Groovy](<https://devfeed.tech/topics/groovy.md>), [Swift Testing](<https://devfeed.tech/topics/swift-testing.md>), [Test-driven development](<https://devfeed.tech/topics/tdd.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [c-plus-plus-20](<https://devfeed.tech/tags/c-plus-plus-20.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [development](<https://devfeed.tech/tags/development.md>), [java](<https://devfeed.tech/tags/java.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [news](<https://devfeed.tech/tags/news.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [release](<https://devfeed.tech/tags/release.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-6](<https://devfeed.tech/tags/swift-6.md>), [swift-6-4](<https://devfeed.tech/tags/swift-6-4.md>), [swift-6-4-released](<https://devfeed.tech/tags/swift-6-4-released.md>), [wasm](<https://devfeed.tech/tags/wasm.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

Swift 6.4 adds language and tooling improvements, including support for non-copyable values, faster WebAssembly generated code, improved C++20 and Java interoperability, and a cross-platform Subprocess library. It also adds concurrency and borrowing features, stronger module debugging, and a unified build toolchain.

### Source excerpt

The latest release of Swift, Swift 6.4, introduces a range of language and tooling improvements, including better performance through expanded support for non-copyable values, up to 40 times faster Wasm generated code, improved interoperability with C++20 and Java, and a new Subprocess library that provides a cross-platform API for launching and interacting with external processes. By Sergio De Simone

## Swift 6.4 Released

DevFeed: [Swift 6.4 Released](<https://devfeed.tech/articles/swift-6-4-released-91315.md>)

Original publisher: [Read original article](<https://www.swift.org/blog/swift-6.4-released/>)

Author: Holly Borla

Published: 2026-09-15T07:30:00Z

Content type: release

Language: en

Sources: [Swift.org](<https://devfeed.tech/sources/swift-org.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Swift Testing](<https://devfeed.tech/topics/swift-testing.md>), [Memory Safety](<https://devfeed.tech/topics/memory-safety.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [array](<https://devfeed.tech/tags/array.md>), [array-types](<https://devfeed.tech/tags/array-types.md>), [async](<https://devfeed.tech/tags/async.md>), [bridging](<https://devfeed.tech/tags/bridging.md>), [browser](<https://devfeed.tech/tags/browser.md>), [build](<https://devfeed.tech/tags/build.md>), [c-plus-plus-20](<https://devfeed.tech/tags/c-plus-plus-20.md>), [callback](<https://devfeed.tech/tags/callback.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [copy-on-write](<https://devfeed.tech/tags/copy-on-write.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [devices](<https://devfeed.tech/tags/devices.md>), [diagnose](<https://devfeed.tech/tags/diagnose.md>), [embedded](<https://devfeed.tech/tags/embedded.md>), [embedded-devices](<https://devfeed.tech/tags/embedded-devices.md>), [error](<https://devfeed.tech/tags/error.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-6-4](<https://devfeed.tech/tags/swift-6-4.md>), [swift-6-4-released](<https://devfeed.tech/tags/swift-6-4-released.md>)

### AI overview

Swift 6.4 broadens Swift's platform support and adds safer, more efficient ways to work with code and data. Swift Package Manager now defaults to Swift Build for consistent builds across Linux, macOS, and Windows, and Subprocess reaches stable 1.0 with a cross-platform concurrency-based API. Interoperability expands with direct Swift `Span` and C++20 `std::span` bridging, added Swift/Java async and callback support, and Swift functions implementing C APIs. JavaScriptKit's safe WebAssembly bridging is reported as up to 40 times faster; a Wasm SDK is available from Swift.org. Embedded Swift adds existential types and richer error handling for microcontroller-class targets. Language and library changes include async work in `defer`, cancellation shields for cleanup, source-level warning controls, and collections and borrowing APIs that reduce copies, including `UniqueArray` for non-copyable elements. The release also improves debugging, testing, documentation, Android support, and IDE integration. The source describes highlights and selected changes, not every proposal in the release.

### Source excerpt

Swift 6.4 is now available. Swift aims to be a great choice across the stack, from apps and servers to systems code, embedded devices, and the browser. This release deepens that support, and makes everyday code easier to write. Highlights include: Swift Build is now the default in Swift Package Manager, so your projects build the same way on Linux, macOS, and Windows. Subprocess reaches 1.0, a stable, cross-platform way to run and interact with other programs from Swift, from command-line tools to streaming processes. Interoperability reaches further, with Swift's Span now bridging directly with C++20's std::span, and Swift/Java interop extending its async and callback support. Swift runs faster in the browser, with WebAssembly bridging through JavaScriptKit up to 40 times faster, and the Wasm SDK available directly from Swift.org. Embedded Swift grows more capable, with support for existential types and richer error handling for microcontroller-class targets. Performance improves while maintaining memory safety, with new array types that hold non-copyable elements without copy-on-write overhead, and the new Iterable protocol for iterating without copies. There's so much more. Read on for a detailed guide to the new changes, or see the Swift Evolution dashboard for the full list of proposals in Swift 6.4. Simpler and clearer code Swift 6.4 streamlines your day-to-day programming to make your code simpler and clearer. More natural optional some and any types. When writing an optional some or any type, you no longer have to wrap the type in parentheses. Instead of (some Rocket)?, you can simply write some Rocket? (SE-0521). Source-level control over compiler warnings. When you need to control the behavior of warnings in your project, such as suppressing warnings or promoting them to errors, you can now define the warning behavior directly in your code using the new @diagnose attribute (SE-0522). Clarify which API to use when multiple libraries conflict. When multiple

## Swift 6.4 Released

DevFeed: [Swift 6.4 Released](<https://devfeed.tech/articles/swift-6-4-released-26971.md>)

Original publisher: [Read original article](<https://swift.org/blog/swift-6.4-released/>)

Author: Holly Borla

Published: 2026-09-15T07:30:00Z

Content type: release

Language: en

Sources: [Swift.org](<https://devfeed.tech/sources/swift-org.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Swift Testing](<https://devfeed.tech/topics/swift-testing.md>)

Tags: [array](<https://devfeed.tech/tags/array.md>), [array-types](<https://devfeed.tech/tags/array-types.md>), [async](<https://devfeed.tech/tags/async.md>), [bridging](<https://devfeed.tech/tags/bridging.md>), [browser](<https://devfeed.tech/tags/browser.md>), [build](<https://devfeed.tech/tags/build.md>), [c-plus-plus-20](<https://devfeed.tech/tags/c-plus-plus-20.md>), [callback](<https://devfeed.tech/tags/callback.md>), [copy-on-write](<https://devfeed.tech/tags/copy-on-write.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [embedded](<https://devfeed.tech/tags/embedded.md>), [embedded-devices](<https://devfeed.tech/tags/embedded-devices.md>), [highlights](<https://devfeed.tech/tags/highlights.md>), [java](<https://devfeed.tech/tags/java.md>), [memory-safety](<https://devfeed.tech/tags/memory-safety.md>), [microcontroller](<https://devfeed.tech/tags/microcontroller.md>), [performance](<https://devfeed.tech/tags/performance.md>), [release](<https://devfeed.tech/tags/release.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-6-4](<https://devfeed.tech/tags/swift-6-4.md>)

### AI overview

Swift 6.4 expands Swift's cross-platform tooling, interoperability, and memory-safe performance features. Swift Package Manager now defaults to Swift Build across Linux, macOS, and Windows, and Subprocess reaches stable 1.0. New language and concurrency features include simpler optional `some`/`any` syntax, source-level warning controls, module selectors, async work in `defer`, and cancellation-shielded cleanup. Interop improvements cover C and C++ `std::span`, Swift/Java async and callback support, faster JavaScriptKit bridging to WebAssembly, and added Embedded Swift capabilities. The release also adds tools for avoiding copies, including `UniqueArray` for non-copyable elements and `Iterable` for borrowed iteration, plus expanded testing, debugging, documentation, and IDE support.

### Source excerpt

Swift 6.4 is now available. Swift aims to be a great choice across the stack, from apps and servers to systems code, embedded devices, and the browser. This release deepens that support, and makes everyday code easier to write. Highlights include: Swift Build is now the default in Swift Package Manager, so your projects build the same way on Linux, macOS, and Windows. Subprocess reaches 1.0, a stable, cross-platform way to run and interact with other programs from Swift, from command-line tools to streaming processes. Interoperability reaches further, with Swift's Span now bridging directly with C++20's std::span, and Swift/Java interop extending its async and callback support. Swift runs faster in the browser, with WebAssembly bridging through JavaScriptKit up to 40 times faster, and the Wasm SDK available directly from Swift.org. Embedded Swift grows more capable, with support for existential types and richer error handling for microcontroller-class targets. Performance improves while maintaining memory safety, with new array types that hold non-copyable elements without copy-on-write overhead, and the new Iterable protocol for iterating without copies. There's so much more. Read on for a detailed guide to the new changes, or see the Swift Evolution dashboard for the full list of proposals in Swift 6.4. Simpler and clearer code Swift 6.4 streamlines your day-to-day programming to make your code simpler and clearer. More natural optional some and any types. When writing an optional some or any type, you no longer have to wrap the type in parentheses. Instead of (some Rocket)?, you can simply write some Rocket? (SE-0521). Source-level control over compiler warnings. When you need to control the behavior of warnings in your project, such as suppressing warnings or promoting them to errors, you can now define the warning behavior directly in your code using the new @diagnose attribute (SE-0522). Clarify which API to use when multiple libraries conflict. When multiple

## Code scanning CodeQL: C++20 support (beta)

DevFeed: [Code scanning CodeQL: C++20 support (beta)](<https://devfeed.tech/articles/code-scanning-codeql-c-20-support-beta-74426.md>)

Original publisher: [Read original article](<https://github.blog/changelog/2021-06-22-code-scanning-codeql-c20-support-beta>)

Author: phanatic

Published: 2021-06-22T07:04:30Z

Content type: release

Language: en

Sources: [GitHub Changelog](<https://devfeed.tech/sources/github-changelog.md>)

Topics: [Secret Scanning](<https://devfeed.tech/topics/secret-scanning.md>)

Tags: [c-plus-plus-20](<https://devfeed.tech/tags/c-plus-plus-20.md>), [code](<https://devfeed.tech/tags/code.md>), [codeql](<https://devfeed.tech/tags/codeql.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [linux](<https://devfeed.tech/tags/linux.md>)

### AI overview

CodeQL code scanning now has beta support for C++20 code built with GCC on Linux. It can create CodeQL databases for this code, but C++20 modules are not supported yet; full support is still in progress.

### Source excerpt

Code scanning with CodeQL now includes beta support for C++20. Currently, CodeQL can only create CodeQL databases for C++20 code that is built with GCC on Linux. C++20 modules are...

## C/C++ Include Guidelines

DevFeed: [C/C++ Include Guidelines](<https://devfeed.tech/articles/c-c-include-guidelines-28619.md>)

Original publisher: [Read original article](<https://upcoder.com/20/cc-include-guidelines>)

Published: 2019-10-13T12:14:00Z

Content type: article

Language: en

Sources: [Thomas Young](<https://devfeed.tech/sources/thomas-young.md>)

Topics: [c/c++](<https://devfeed.tech/topics/c-c-plus-plus.md>)

Tags: [c-c-plus-plus](<https://devfeed.tech/tags/c-c-plus-plus.md>), [c-plus-plus-20](<https://devfeed.tech/tags/c-plus-plus-20.md>), [guidelines](<https://devfeed.tech/tags/guidelines.md>), [include](<https://devfeed.tech/tags/include.md>)

### AI overview

The guidelines aim to make C/C++ headers predictable to use and reduce build dependencies. Keep implementation in source files where possible, pair each source file with a clearly named header, and route linkage through that header. Make headers self-sufficient and include a source file's own header first so missing dependencies surface during compilation; order higher-level includes before lower-level ones to expose hidden dependencies. Avoid header side effects, minimize dependencies with forward declarations or implementation separation where practical, and give headers focused purposes and discoverable names. Use explicit include paths to clarify origins and reduce collisions. The author notes exceptions for constructs such as classes, templates and inlining, and describes these as pre-C++20 module guidelines; large existing codebases can adopt them incrementally.

### Source excerpt

Some (opinionated) guidelines for include file organisation in C/C++. Intro I present a list of points, probably best considered as guidelines, but which I'll refer to as rules throughout the rest of this post, since it trips off the tongue that bit more easily (or perhaps I just have some hidden authoritarian streak). I'll assume the reader knows something about writing code in C or C++, and understands at least the basics about how compilation with include files works. Sometimes I'll say things are obvious to this intended audience, where I think this is necessary for completeness. This is about an ideal way to organise code. For large existing code bases changing the code to follow all of the rules may not be straightforward but it should be possible to make some incremental steps towards the code structure I describe, resulting in some kind of incremental improvements in overall code quality. Many of the rules have exceptions, and it can interesting to explore reasons for these exceptions, as well as the reasons for the rules themselves. Modules As an aside, please note that this is a 'pre-modules' document. If you're using c++ 20 and modules the situation will be different. (At the time of writing I don't have any experience working with modules, and I'm not aware of all the details about how modules will work. I'm hoping that if we follow the rules described here, we should be reasonably well placed for moving to C++20 modules, but if that's not the case, and there are module related details that you think should be taken into account in this document, please let me know in the comments.) The rules 1. Headers are for linkage details, implementation goes in source files. 2. Each source file should have a single matching header. 3. Linkage to a source file should go only through its header. 4. Guard against repeated includes. 5. Each header should be self-sufficient. 6. Each source file includes its own header first. 7. Low level includes come after high level i