Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
c4b217a
assumed version 1.37.0
DanielaE Dec 6, 2025
af74aed
assumed version 1.38.0
DanielaE Dec 6, 2025
5c62899
Fix missing "C" linkage specifier
DanielaE May 29, 2022
8924506
Workaround for deprecated std::aligned_storage
DanielaE Jun 15, 2022
4fef03a
compile as module, support CMake, create link to 'module'
DanielaE Sep 26, 2022
d4b1176
Don't export definitions with internal linkage (e.g. 'static')
DanielaE May 29, 2022
4a417e7
make TU-local entities extern
DanielaE Aug 7, 2025
86fc07b
replace concepts emulation with `requires` expressions
DanielaE Sep 26, 2022
bd7954d
add GHA to build modules
DanielaE May 13, 2023
0052fb1
compiles with Clang in MSYS2 ucrt64
DanielaE May 19, 2023
dd9f7e2
Improve CMake support
DanielaE May 26, 2023
5e51704
Compile with Clang in MSYS2 ucrt64
DanielaE May 26, 2023
2e8cade
Reorder header inclusion in GMF to keep Clang happy
DanielaE May 27, 2023
e52baf8
Enable CMake 3.27
DanielaE Aug 27, 2023
232953f
Fix building the module on 'pthread'-based systems: consistent langag…
DanielaE Aug 28, 2023
63ae4dc
Include sys/epoll.h in the GMF
DanielaE Aug 31, 2023
1915f74
Include sys/eventfd.h in the GMF
DanielaE Sep 1, 2023
66217b3
drop `-fchar8_t`
DanielaE Sep 5, 2023
9dc1786
Support CMake 3.28 and retain support for earlier versions
DanielaE Oct 29, 2023
2d71ab4
Work around the "vtable in named module" bug in Clang 16 😱
DanielaE May 27, 2023
dad2488
`if (cond)` -> `if constexpr (cond)` with compiletime-known condition
DanielaE Jul 27, 2025
e8ab8db
fix compile issues from in-house tests
DanielaE Aug 7, 2025
d38f89a
pick up library customizations from the surrounding environment
DanielaE Dec 1, 2025
fd810c1
Fix C++23 module export issue with SSL error categories
banderzhm Oct 29, 2025
3c60183
Fix OpenSSL header include and improve CMake configuration
banderzhm Oct 29, 2025
e049443
Feat: Modernize CMakeLists.txt
ClausKlein Mar 1, 2026
5627530
Prepare build with import std;
ClausKlein Mar 1, 2026
3b8ab7a
Check more header fix missing includes
ClausKlein Mar 1, 2026
af2ae1c
Add more CI workflows
ClausKlein Mar 1, 2026
5c3778d
Add example too
ClausKlein Mar 1, 2026
579d43b
Install libssl-dev on CI too
ClausKlein Mar 1, 2026
402bebe
Add short introduction and example module too
ClausKlein Mar 2, 2026
af31753
Quickfix for MSVC?
ClausKlein Mar 2, 2026
3ee88ed
fix module example
ecoezen Mar 2, 2026
f859d34
fix gcc bug: false error regarding redeclaration of friend functions …
ecoezen Mar 2, 2026
7be955b
fix import std: enable CXX_MODULE_STD cmake property for example targets
ecoezen Mar 2, 2026
03d5d48
Be verbose and print path to stdlibc++.module.json file
ClausKlein Mar 2, 2026
93a75e6
fix gcc16 ci: set CMAKE_BUILD_RPATH for non-system libstdc++
ecoezen Mar 2, 2026
8fbd8f5
move import std after asio module declaration
ecoezen Mar 4, 2026
b12e96c
add std compatibility layer for import std support
ecoezen Mar 4, 2026
e4c916f
remove redundant/duplicate cmake script
ecoezen Mar 6, 2026
0fb34e9
modernize cmake build system and introduce cross-platform presets
ecoezen Mar 6, 2026
7f9370b
update workflows due to changes in cmake infra [WIP]
ecoezen Mar 6, 2026
c3ad370
fix(examples/cmakelist):use correct variable name for import std support
ecoezen Mar 6, 2026
7c83cfb
fix(Clang): handling clang bugs regarding CMAKE_CXX_STDLIB_MODULES_JS…
ecoezen Mar 7, 2026
4d3168d
windows ci: add vs2026 image
ecoezen Mar 7, 2026
7aad530
fix(msvc-19.50-bug): force external linkage for winsock_init_instance…
ecoezen Mar 7, 2026
2629948
Add find-package round-trip test too
ClausKlein Mar 10, 2026
2447682
Add more examples and unit tests
ClausKlein Mar 11, 2026
4b63533
Be less pedantic on UNIX, disable old examples
ClausKlein Mar 11, 2026
0d87cf5
Make it works on APPLE with clang++
ClausKlein Mar 12, 2026
e3f356c
Prevent errors with deprecated interfaces on CI
ClausKlein Mar 12, 2026
00f7274
Use clang-format for new added headers
ClausKlein Mar 12, 2026
db48de6
Try to fix round trip test on CI
ClausKlein Mar 16, 2026
c1e29c3
Add round trip test for all used toolchains
ClausKlein Mar 17, 2026
035b77b
Use always Ninja generator for find-package-test
ClausKlein Mar 17, 2026
85d2aed
Prevent verify header errors when SSL is disabled
ClausKlein Mar 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
86 changes: 86 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
---
# We'll use defaults from the Mozilla style,
# with 2 columns indentation.
BasedOnStyle: Mozilla
IndentPPDirectives: AfterHash
IndentCaseLabels: false
UseTab: Never
---
Language: Cpp
AccessModifierOffset: -2
ContinuationIndentWidth: 2
IndentWidth: 2
Standard: Auto
#
### see BinPack... too
AllowAllArgumentsOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: true
AllowAllConstructorInitializersOnNextLine: true
#
AllowShortBlocksOnASingleLine: Never
AllowShortCaseExpressionOnASingleLine: true
AllowShortCaseLabelsOnASingleLine: false
AllowShortCompoundRequirementOnASingleLine: true
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: false
AllowShortNamespacesOnASingleLine: false
#
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
#
BreakAfterOpenBracketFunction: true
BreakBeforeCloseBracketFunction: true
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: true
AfterControlStatement: true
AfterEnum: false
AfterFunction: true
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: true
AfterUnion: true
AfterExternBlock: true
BeforeCatch: true
BeforeElse: true
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
#
### BinPack... args will not be on the same line
BinPackArguments: false
BinPackLongBracedList: false
BinPackParameters: AlwaysOnePerLine
#
# TBD: AlwaysBreakTemplateDeclarations: MultiLine
BreakBeforeInheritanceComma: true
BreakConstructorInitializers: BeforeColon
BreakInheritanceList: BeforeColon
#
# We should only use 80 columns!
ColumnLimit: 99
#
DerivePointerAlignment: true
FixNamespaceComments: true
# SpaceAfterTemplateKeyword: true
# PenaltyReturnTypeOnItsOwnLine: 60
#
SortIncludes: false
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^("asio.*|<asio.*>)'
Priority: 2
- Regex: '^<(Poco|spdlog|doctest|zmqpp|boost|gtest|gmock|fmt|json|openssl)/'
Priority: 3
- Regex: '<[[:alnum:].]+>'
Priority: 4
# all other headers first!
- Regex: '.*'
Priority: 1
IncludeIsMainRegex: '(_test)?$'
#
---
58 changes: 33 additions & 25 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,15 @@ name: asio CI

on:
push:
branches: [ master, citest-* ]
branches: [ master, citest-*, feature/module* ]
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
Expand Down Expand Up @@ -310,27 +318,27 @@ jobs:
CXX: ${{ matrix.compiler }}
CXXFLAGS: -std=${{ matrix.cxx-std }} ${{ matrix.cxx-stdlib }} ${{ matrix.optim-level }} -Wall -Wextra ${{ matrix.no-deprecated }} ${{ matrix.select-reactor }} ${{ matrix.handler-tracking }}
steps:
- uses: actions/checkout@v4
- name: Install autotools
if: startsWith(matrix.runs-on, 'macos')
run: brew install automake
- name: Install compiler
if: startsWith(matrix.runs-on, 'ubuntu')
run: sudo apt-get install -y ${{ matrix.compiler }}
- name: Install boost
if: startsWith(matrix.with-boost, '--with-boost=$GITHUB_WORKSPACE')
run: |
wget --quiet -O - ${{ matrix.boost-url }} | tar -xj
- name: Configure
run: |
./autogen.sh
./configure ${{ matrix.separate-compilation }} ${{ matrix.with-boost }}
- name: Line length check
run: perl ./boostify.pl --includes-only
- name: Sanity check
if: startsWith(matrix.build-type, 'sanity')
working-directory: src/tests
run: make unit/io_context.log unit/ip/tcp.log unit/ts/net.log
- name: Build
if: startsWith(matrix.build-type, 'full')
run: make && make check
- uses: actions/checkout@v4
- name: Install autotools
if: startsWith(matrix.runs-on, 'macos')
run: brew install automake
- name: Install compiler
if: startsWith(matrix.runs-on, 'ubuntu')
run: sudo apt-get install -y ${{ matrix.compiler }}
- name: Install boost
if: startsWith(matrix.with-boost, '--with-boost=$GITHUB_WORKSPACE')
run: |
wget --quiet -O - ${{ matrix.boost-url }} | tar -xj
- name: Configure
run: |
./autogen.sh
./configure ${{ matrix.separate-compilation }} ${{ matrix.with-boost }}
- name: Line length check
run: perl ./boostify.pl --includes-only
- name: Sanity check
if: startsWith(matrix.build-type, 'sanity')
working-directory: src/tests
run: make unit/io_context.log unit/ip/tcp.log unit/ts/net.log
- name: Build
if: startsWith(matrix.build-type, 'full')
run: make && make check
56 changes: 56 additions & 0 deletions .github/workflows/clang.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Clang

on: [push, pull_request, workflow_dispatch]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
clang:
strategy:
fail-fast: false
matrix:
version: [21, 22]
cxx_config:
- { std: 20, import_std: "OFF" }
- { std: 23, import_std: "ON" }
build_type: [debug, release]

runs-on: ubuntu-latest

container:
image: ghcr.io/mattkretz/cplusplus-ci/clang${{ matrix.version }}

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with: { python-version: "3.13" }

- name: Install libssl-dev
run: apt-get update -qq && apt-get install -y -qq libssl-dev

- name: Setup Cpp
uses: aminya/setup-cpp@v1
with:
# compiler: llvm-${{ matrix.version }}
cmake: 4.2.3
ninja: 1.13.0
gcovr: true

- name: Configure CMake
env:
CXX: clang++
PATH: $HOME/.local/bin:$PATH
run: cmake --preset linux-clang --log-level=VERBOSE -D CMAKE_CXX_STANDARD=${{ matrix.cxx_config.std }} -D ASIO_IMPORT_STD=${{ matrix.cxx_config.import_std }}

- name: Build
env:
PATH: $HOME/.local/bin:$PATH
run: cmake --build --preset linux-clang-${{ matrix.build_type }}

- name: Test
env:
PATH: $HOME/.local/bin:$PATH
run: ctest --preset linux-clang-${{ matrix.build_type }}
55 changes: 55 additions & 0 deletions .github/workflows/gcc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: GCC

on: [push, pull_request, workflow_dispatch]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
gcc:
strategy:
fail-fast: false
matrix:
version: [15, 16]
cxx_config:
- { std: 20, import_std: "OFF" }
- { std: 23, import_std: "ON" }
build_type: [debug, release]

runs-on: ubuntu-latest

container:
image: ghcr.io/mattkretz/cplusplus-ci/gcc${{ matrix.version }}

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with: { python-version: "3.13" }

- name: Install libssl-dev
run: apt-get update -qq && apt-get install -y -qq libssl-dev

- name: Setup Cpp
uses: aminya/setup-cpp@v1
with:
cmake: 4.2.3
ninja: 1.13.0
gcovr: true

- name: Configure CMake
env:
CXX: g++
PATH: $HOME/.local/bin:$PATH
run: cmake --preset linux-gcc --log-level=VERBOSE -D CMAKE_CXX_STANDARD=${{ matrix.cxx_config.std }} -D ASIO_IMPORT_STD=${{ matrix.cxx_config.import_std }}

- name: Build
env:
PATH: $HOME/.local/bin:$PATH
run: cmake --build --preset linux-gcc-${{ matrix.build_type }}

- name: Test
env:
PATH: $HOME/.local/bin:$PATH
run: ctest --preset linux-gcc-${{ matrix.build_type }}
89 changes: 89 additions & 0 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: windows

on: [push, pull_request, workflow_dispatch]

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
os: [windows-2022, windows-2025-vs2026]
cxx_config:
- { std: 20, import_std: "OFF" }
- { std: 23, import_std: "ON" }
build_type: [debug, release]

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with: { python-version: "3.13" }

- name: Setup Cpp
uses: aminya/setup-cpp@v1
with:
cmake: 4.2.3
ninja: 1.13.0

- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64

- name: Configure CMake
shell: pwsh
run: |
cmake --preset windows-msvc --log-level=VERBOSE -D CMAKE_CXX_STANDARD=${{ matrix.cxx_config.std }} -D ASIO_IMPORT_STD=${{ matrix.cxx_config.import_std }}

- name: Build
shell: pwsh
run: |
cmake --build --preset windows-msvc-${{ matrix.build_type }}

- name: Test
shell: pwsh
run: |
ctest --preset windows-msvc-${{ matrix.build_type }}

# mingw:
# runs-on: windows-latest
# defaults:
# run:
# shell: msys2 {0}
# strategy:
# fail-fast: false
# matrix:
# cxx: [ clang++ ]
# lib: [ libc++, libstdc++ ]
# cxx_config:
# - { std: 20, import_std: "OFF" }
# - { std: 23, import_std: "ON" }
# build_type: [debug, release]
#
# steps:
# - uses: actions/checkout@v4
# - uses: msys2/setup-msys2@v2
# with:
# release: false
# msystem: ucrt64
# pacboy: cmake:u ninja:u clang:u libc++:u gcc-libs:u
#
# - name: Configure CMake
# env:
# CXX: ${{matrix.cxx}}
# CXXFLAGS: ${{format('-stdlib={0}', matrix.lib)}}
# run: cmake --preset windows-mingw-clang -D CMAKE_CXX_STANDARD=${{ matrix.cxx_config.std }} -D ASIO_IMPORT_STD=${{ matrix.cxx_config.import_std }}
#
# - name: Build
# run: cmake --build --preset windows-mingw-clang-${{ matrix.build_type }}
#
# - name: Test
# run: ctest --preset windows-mingw-clang-${{ matrix.build_type }}
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
.cache/
.init
compile_commands.json
CMakeUserPresets.json
stagedir/
build/
Makefile
Makefile.in
aclocal.m4
Expand Down
Loading
Loading