Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
144 commits
Select commit Hold shift + click to select a range
fdd7e37
Add span/expected API, error policy, and UB-free byteswap
bbalouki Jun 28, 2026
49aeba6
Use flat dispatch table with length validation and error policy
bbalouki Jun 28, 2026
e57e6fe
Rename to_string parameter for clarity
bbalouki Jun 28, 2026
2a48f11
Add typed fixed-point Price
bbalouki Jun 28, 2026
38c54e4
Add timestamp-to-wall-clock helpers
bbalouki Jun 28, 2026
85fb280
Replace map globals with constexpr frozen lookups
bbalouki Jun 28, 2026
a73060b
Modernize includes and use pass-by-reference signatures
bbalouki Jun 28, 2026
f6ab8b2
Render book with std::format and apply tidy cleanups
bbalouki Jun 28, 2026
1417bc5
Add parser edge-case and error-policy tests
bbalouki Jun 28, 2026
ecd8123
Add Price and timestamp helper tests
bbalouki Jun 28, 2026
9fe41d3
Add golden conformance test
bbalouki Jun 28, 2026
dcd7061
Add crossed-book and full-lifecycle book tests
bbalouki Jun 28, 2026
7fd38fd
Register new test files
bbalouki Jun 28, 2026
20cffd4
Add libFuzzer parser target
bbalouki Jun 28, 2026
e91237a
Add ITCH sample download script
bbalouki Jun 28, 2026
0b5ad19
Fix helper names, bump CMake to 3.25, add fuzz target
bbalouki Jun 28, 2026
f564897
Fix helper name typos, bump CMake min, add fuzz option
bbalouki Jun 28, 2026
a186917
Bump CMake minimum to 3.25
bbalouki Jun 28, 2026
507cc24
Bump CMake minimum to 3.25
bbalouki Jun 28, 2026
4d34111
Bump CMake minimum to 3.25
bbalouki Jun 28, 2026
10f888f
Bump CMake minimum to 3.25
bbalouki Jun 28, 2026
08a0169
Run CI on PRs with lint, sanitizer, fuzz, and bench jobs
bbalouki Jun 28, 2026
9d5b680
Disable noisy clang-tidy checks
bbalouki Jun 28, 2026
92beed1
Ignore generated coverage report
bbalouki Jun 28, 2026
2530ada
Correct performance claims and publish benchmark results
bbalouki Jun 28, 2026
181f1e0
Add Phase 1 real feed ingestion (transport decoders)
bbalouki Jun 28, 2026
8886eee
Add Phase 2 production order-book engine
bbalouki Jun 28, 2026
333de58
Add Phase 3 analytics & microstructure layer
bbalouki Jun 28, 2026
fbd6cc0
Add Phase 4 research & interoperability
bbalouki Jun 29, 2026
35f8146
Add Phase 5 simulation & ecosystem
bbalouki Jun 29, 2026
b340fe5
Make examples and itch-tool build under C++20
bbalouki Jun 29, 2026
7f3d288
Add Doxygen docs site published to GitHub Pages
bbalouki Jun 29, 2026
56817bd
remove CLAUDE.md
bbalouki Jul 4, 2026
19b2ffe
gitignore: track packaging, ignore python build artifacts
bbalouki Jul 10, 2026
fa0264c
ci: point build workflow at new itchcpp package layout
bbalouki Jul 10, 2026
788167c
ci: build docs via CMake docs target
bbalouki Jul 10, 2026
20ad2f8
ci: add wheel build and PyPI publish workflow
bbalouki Jul 10, 2026
d34a53f
docs: remove CHANGELOG.md
bbalouki Jul 10, 2026
6d68a1f
docs: remove FEATURES.md
bbalouki Jul 10, 2026
9962c09
docs: remove IMPROVEMENTS.md
bbalouki Jul 10, 2026
c2f6784
docs: fix broken CLAUDE/CHANGELOG links in CONTRIBUTING
bbalouki Jul 10, 2026
59dd180
docs: update README for new itchcpp package layout
bbalouki Jul 10, 2026
135dbe4
style: use Doxygen /// comments in book_bench
bbalouki Jul 10, 2026
b8004ed
style: use Doxygen /// comments in parser_bench
bbalouki Jul 10, 2026
b1d6c30
docs: trim trailing whitespace in messages.hpp
bbalouki Jul 10, 2026
ab04f6d
cmake: remove FetchDocsTheme script
bbalouki Jul 10, 2026
9419aab
cmake: pin doxygen-awesome-css version
bbalouki Jul 10, 2026
bdc0650
cmake: fetch doxygen theme via FetchContent, use Doxyfile.in
bbalouki Jul 10, 2026
cd26129
docs: remove static Doxyfile
bbalouki Jul 10, 2026
b2277a6
docs: add CMake-configured Doxyfile template
bbalouki Jul 10, 2026
2328e5f
docs: remove static awesome-head.html
bbalouki Jul 10, 2026
0cadcd8
style: wrap long line in conanfile.py
bbalouki Jul 10, 2026
46e2645
packaging: remove root vcpkg.json
bbalouki Jul 10, 2026
6901ed6
packaging: add root pyproject.toml for itchcpp wheel
bbalouki Jul 10, 2026
2479c12
packaging: remove old python/pyproject.toml, moved to root
bbalouki Jul 10, 2026
11c00d4
python: build extension as itchcpp._itchcpp
bbalouki Jul 10, 2026
e898013
docs: rewrite python README for itchcpp package layout
bbalouki Jul 10, 2026
8d6baee
python: mirror itchfeed message/parser API in native bindings
bbalouki Jul 10, 2026
1aee453
python: add itchcpp pure-python package wrapping native extension
bbalouki Jul 10, 2026
5c1763e
test: vendor itchfeed sample message fixtures
bbalouki Jul 10, 2026
dc4e996
test: update binding smoke tests for itchcpp package layout
bbalouki Jul 10, 2026
e7a6546
test: add itchfeed behavioral parity tests
bbalouki Jul 10, 2026
82b8cbf
docs: add Doxygen docs to auctions.hpp
bbalouki Jul 10, 2026
d9b831f
docs: add Doxygen docs to bars.hpp
bbalouki Jul 10, 2026
ca71a3d
docs: add Doxygen docs to imbalance.hpp
bbalouki Jul 10, 2026
2af4729
docs: add Doxygen docs to microstructure.hpp
bbalouki Jul 10, 2026
e993d23
docs: add Doxygen docs to vwap.hpp
bbalouki Jul 10, 2026
a0ac8b7
docs: add Doxygen docs to book_manager.hpp
bbalouki Jul 10, 2026
ca9637a
docs: add Doxygen docs to l3_book.hpp
bbalouki Jul 10, 2026
4a43091
docs: add Doxygen docs to order_index.hpp
bbalouki Jul 10, 2026
26cb496
docs: add Doxygen docs to wire.hpp
bbalouki Jul 10, 2026
25c6dd9
docs: add Doxygen docs to encoder.hpp
bbalouki Jul 10, 2026
4e35c66
docs: add Doxygen docs to indicators.hpp
bbalouki Jul 10, 2026
6c9182c
docs: add Doxygen docs to arrow_export.hpp
bbalouki Jul 10, 2026
3d66531
docs: add Doxygen docs to csv_sink.hpp
bbalouki Jul 10, 2026
64df62e
docs: add Doxygen docs to sink.hpp
bbalouki Jul 10, 2026
d5570ae
docs: add Doxygen docs to messages.hpp
bbalouki Jul 10, 2026
b9e4a41
docs: add Doxygen docs to order_book.hpp
bbalouki Jul 10, 2026
40dfa48
docs: add Doxygen docs to overlay.hpp
bbalouki Jul 10, 2026
291d2fa
docs: add Doxygen docs to parser.hpp
bbalouki Jul 10, 2026
b4c4993
docs: add Doxygen docs to price.hpp
bbalouki Jul 10, 2026
539b9f9
docs: add Doxygen docs to replay.hpp
bbalouki Jul 10, 2026
d876ed7
docs: add Doxygen docs to tape.hpp
bbalouki Jul 10, 2026
7bad568
docs: add Doxygen docs to time.hpp
bbalouki Jul 10, 2026
6bdc96d
docs: add Doxygen docs to moldudp64.hpp
bbalouki Jul 10, 2026
7c41a48
docs: add Doxygen docs to pcap.hpp
bbalouki Jul 10, 2026
c62493f
docs: add Doxygen docs to sequencing.hpp
bbalouki Jul 10, 2026
d386679
docs: add Doxygen docs to soupbintcp.hpp
bbalouki Jul 10, 2026
bed1809
docs: add Doxygen docs to venue.hpp
bbalouki Jul 10, 2026
cf4c8d1
docs: add Doxygen docs to frame_builders.hpp
bbalouki Jul 10, 2026
2cf6a2b
ci: switch PyPI publish to Trusted Publishing (OIDC)
bbalouki Jul 10, 2026
d092ea2
examples: add SoupBinTCP decode example
bbalouki Jul 10, 2026
925a515
examples: add MoldUDP64 decode example
bbalouki Jul 10, 2026
ad6f097
examples: add zero-copy overlay example
bbalouki Jul 10, 2026
d0661d2
examples: add OHLCV bars example
bbalouki Jul 10, 2026
c11f2e6
examples: add microstructure example
bbalouki Jul 10, 2026
c811803
examples: add auction/imbalance example
bbalouki Jul 10, 2026
bd6b2d9
examples: add CSV sink example
bbalouki Jul 10, 2026
83a6022
examples: add Arrow/Parquet export example
bbalouki Jul 10, 2026
2d29fb0
examples: add encoder round-trip example
bbalouki Jul 10, 2026
1347cf3
examples: add replay engine example
bbalouki Jul 10, 2026
b9c18ee
examples: add price/time/indicators example
bbalouki Jul 10, 2026
fd54312
examples: add Twap section to vwap example
bbalouki Jul 10, 2026
1536519
build: wire up new example targets
bbalouki Jul 10, 2026
8831029
fix: restore root vcpkg.json, required by CI's run-vcpkg baseline
bbalouki Jul 10, 2026
7fea64a
updates
bbalouki Jul 10, 2026
f92f998
fix: include <version> before checking __cpp_lib_expected
bbalouki Jul 10, 2026
7d43c19
ci: pin format-check to clang-format 18.1.8
bbalouki Jul 10, 2026
f60f03c
style: reformat to clang-format 18
bbalouki Jul 10, 2026
6099c60
style: reformat to clang-format 18
bbalouki Jul 10, 2026
9680caa
style: reformat to clang-format 18
bbalouki Jul 10, 2026
72d7180
style: reformat to clang-format 18
bbalouki Jul 10, 2026
4787d10
style: reformat to clang-format 18
bbalouki Jul 10, 2026
d9df73c
style: reformat to clang-format 18
bbalouki Jul 10, 2026
1c14518
style: reformat to clang-format 18
bbalouki Jul 10, 2026
29283a1
style: reformat to clang-format 18
bbalouki Jul 10, 2026
96d5c92
style: reformat to clang-format 18
bbalouki Jul 10, 2026
a73fe0c
style: reformat to clang-format 18
bbalouki Jul 10, 2026
a122384
style: reformat to clang-format 18
bbalouki Jul 10, 2026
a2888f7
style: reformat to clang-format 18
bbalouki Jul 10, 2026
0c087c8
style: reformat to clang-format 18
bbalouki Jul 10, 2026
28dd48f
style: reformat to clang-format 18
bbalouki Jul 10, 2026
26bd588
style: reformat to clang-format 18
bbalouki Jul 10, 2026
a018064
style: reformat to clang-format 18
bbalouki Jul 10, 2026
9c286c3
style: reformat to clang-format 18
bbalouki Jul 10, 2026
f471798
style: reformat to clang-format 18
bbalouki Jul 10, 2026
46770ea
fix: restore python/arrow features in vcpkg.json
bbalouki Jul 10, 2026
e4e4baf
refactor: split BookManager::process into per-type handlers
bbalouki Jul 10, 2026
b2b66d8
refactor: split BookManager::process into per-type handlers
bbalouki Jul 10, 2026
82ad69f
style: use ranges::reverse_view for ask printing
bbalouki Jul 10, 2026
0b031c1
fix: make ReplayEngine::replay const
bbalouki Jul 10, 2026
d28b77b
fix: make ReplayEngine::replay const
bbalouki Jul 10, 2026
93bbe5a
style: mark intentional empty catch NOLINT
bbalouki Jul 10, 2026
c28f212
style: mark intentional empty catch NOLINT
bbalouki Jul 10, 2026
9f4ee23
refactor: split PcapReader::handle_frame's UDP extraction
bbalouki Jul 10, 2026
7b08b47
refactor: split PcapReader::handle_frame's UDP extraction
bbalouki Jul 10, 2026
1342002
style: designated initializers, NOLINT lower_bound
bbalouki Jul 10, 2026
f8bb555
style: NOLINT contains, needs C++23
bbalouki Jul 10, 2026
36c8a93
style: reformat to clang-format 18
bbalouki Jul 10, 2026
3b30558
style: reformat to clang-format 18
bbalouki Jul 10, 2026
b85b20c
style: reformat to clang-format 18
bbalouki Jul 10, 2026
d23142f
fix: heap-buffer-overflow reading truncated pcapng EPB blocks
bbalouki Jul 10, 2026
40e319e
ci: install autotools deps for vcpkg's python3 port build
bbalouki Jul 10, 2026
402c038
fix: build itch with -fPIC so it links into the Python .so
bbalouki Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,16 @@ Checks: >
google-*,
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
-cppcoreguidelines-pro-bounds-constant-array-index,
-cppcoreguidelines-pro-bounds-avoid-unchecked-container-access,
-cppcoreguidelines-owning-memory,
-hicpp-signed-bitwise,
-modernize-use-trailing-return-type,
-modernize-use-nodiscard,
-readability-identifier-naming,
-readability-magic-numbers,
-cppcoreguidelines-avoid-magic-numbers,
-bugprone-easily-swappable-parameters,
-google-build-using-namespace,
-google-runtime-references,
-cert-err58-cpp
Expand Down
290 changes: 288 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ name: build
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

jobs:
build-and-test:
Expand Down Expand Up @@ -42,7 +44,7 @@ jobs:
key: ${{ runner.os }}-${{ matrix.build_type }}-cmake-${{ hashFiles('CMakeLists.txt', '**/CMakeLists.txt') }}
restore-keys: |
${{ runner.os }}-${{ matrix.build_type }}-cmake-

- name: Set VCPKG Triplet
shell: bash
run: |
Expand All @@ -64,6 +66,8 @@ jobs:
cmake -S . -B $BUILD_DIR \
-DITCH_PROJECT_ENV=PROD \
-DITCH_BUILD_TESTS=ON \
-DITCH_BUILD_TOOLS=ON \
-DITCH_BUILD_EXAMPLES=ON \
-DITCH_CXX_STANDARD=${{ matrix.cpp_standard }} \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
Expand All @@ -72,7 +76,289 @@ jobs:
- name: Build
shell: bash
run: cmake --build $BUILD_DIR --config ${{ matrix.build_type }}

- name: Run tests
shell: bash
run: ctest --test-dir $BUILD_DIR --output-on-failure --build-config ${{ matrix.build_type }}

format-check:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Install clang-format
run: pip install clang-format==18.1.8

- name: Check formatting
run: |
find src include tests benchmarks examples -type f \( -name '*.cpp' -o -name '*.hpp' -o -name '*.h' \) \
-print0 | xargs -0 clang-format --dry-run --Werror

clang-tidy:
runs-on: ubuntu-latest
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
BUILD_DIR: ${{ github.workspace }}/build
CMAKE_BUILD_PARALLEL_LEVEL: 4
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Install clang-tidy
run: sudo apt-get update && sudo apt-get install -y clang-tidy

- name: Cache vcpkg
uses: actions/cache@v4
with:
path: |
${{ env.VCPKG_ROOT }}
~/.cache/vcpkg
key: ${{ runner.os }}-vcpkg-${{ hashFiles('vcpkg.json') }}
restore-keys: |
${{ runner.os }}-vcpkg-

- name: Set up vcpkg
uses: lukka/run-vcpkg@v11

- name: Configure CMake (export compile commands)
run: |
cmake -S . -B $BUILD_DIR \
-DITCH_BUILD_TESTS=ON \
-DITCH_CXX_STANDARD=23 \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-linux

- name: Run clang-tidy
run: |
find src -name '*.cpp' -print0 \
| xargs -0 clang-tidy -p "$BUILD_DIR"

sanitizers:
runs-on: ubuntu-latest
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
BUILD_DIR: ${{ github.workspace }}/build
CMAKE_BUILD_PARALLEL_LEVEL: 4
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Cache vcpkg
uses: actions/cache@v4
with:
path: |
${{ env.VCPKG_ROOT }}
~/.cache/vcpkg
key: ${{ runner.os }}-vcpkg-${{ hashFiles('vcpkg.json') }}
restore-keys: |
${{ runner.os }}-vcpkg-

- name: Set up vcpkg
uses: lukka/run-vcpkg@v11

- name: Configure CMake (ASAN + UBSAN)
run: |
cmake -S . -B $BUILD_DIR \
-DITCH_BUILD_TESTS=ON \
-DITCH_ENABLE_ADDRESS_SANITIZER=ON \
-DITCH_CXX_STANDARD=23 \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_FLAGS="-fsanitize=undefined -fno-sanitize=alignment -fno-sanitize-recover=undefined" \
-DCMAKE_EXE_LINKER_FLAGS="-fsanitize=undefined" \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-linux

- name: Build
run: cmake --build $BUILD_DIR

- name: Run tests under sanitizers
run: ctest --test-dir $BUILD_DIR --output-on-failure

coverage:
runs-on: ubuntu-latest
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
BUILD_DIR: ${{ github.workspace }}/build
CMAKE_BUILD_PARALLEL_LEVEL: 4
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Install gcovr
run: sudo apt-get update && sudo apt-get install -y gcovr

- name: Cache vcpkg
uses: actions/cache@v4
with:
path: |
${{ env.VCPKG_ROOT }}
~/.cache/vcpkg
key: ${{ runner.os }}-vcpkg-${{ hashFiles('vcpkg.json') }}
restore-keys: |
${{ runner.os }}-vcpkg-

- name: Set up vcpkg
uses: lukka/run-vcpkg@v11

- name: Configure CMake (coverage)
run: |
cmake -S . -B $BUILD_DIR \
-DITCH_BUILD_TESTS=ON \
-DITCH_ADD_COVERAGE_ANALYSIS=ON \
-DITCH_CXX_STANDARD=23 \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-linux

- name: Build
run: cmake --build $BUILD_DIR

- name: Run tests
run: ctest --test-dir $BUILD_DIR --output-on-failure

- name: Generate coverage report
run: cmake --build $BUILD_DIR --target coverage

- name: Upload coverage report
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: ${{ env.BUILD_DIR }}/coverage.html
if-no-files-found: ignore

fuzz:
runs-on: ubuntu-latest
env:
BUILD_DIR: ${{ github.workspace }}/build
CMAKE_BUILD_PARALLEL_LEVEL: 4
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Install clang
run: sudo apt-get update && sudo apt-get install -y clang

- name: Configure CMake (fuzzers)
run: |
cmake -S . -B $BUILD_DIR \
-DITCH_BUILD_FUZZERS=ON \
-DITCH_CXX_STANDARD=23 \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++

- name: Build fuzzers
run: cmake --build $BUILD_DIR --target parser_fuzzer moldudp64_fuzzer

- name: Run parser fuzzer (time-budgeted)
run: $BUILD_DIR/fuzz/parser_fuzzer -max_total_time=60 -max_len=512 -print_final_stats=1

- name: Run transport fuzzer (time-budgeted)
run: $BUILD_DIR/fuzz/moldudp64_fuzzer -max_total_time=60 -max_len=2048 -print_final_stats=1

python-bindings:
runs-on: ubuntu-latest
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
BUILD_DIR: ${{ github.workspace }}/build
CMAKE_BUILD_PARALLEL_LEVEL: 4
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install vcpkg python3 port build dependencies
run: sudo apt-get update && sudo apt-get install -y autoconf autoconf-archive automake libtool

- name: Cache vcpkg
uses: actions/cache@v4
with:
path: |
${{ env.VCPKG_ROOT }}
~/.cache/vcpkg
key: ${{ runner.os }}-vcpkg-python-${{ hashFiles('vcpkg.json') }}
restore-keys: |
${{ runner.os }}-vcpkg-

- name: Set up vcpkg
uses: lukka/run-vcpkg@v11

- name: Configure CMake (Python bindings)
run: |
cmake -S . -B $BUILD_DIR \
-DITCH_BUILD_PYTHON=ON \
-DITCH_CXX_STANDARD=23 \
-DCMAKE_BUILD_TYPE=Release \
-DPython_EXECUTABLE=$(which python) \
-DVCPKG_MANIFEST_FEATURES=python \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-linux

- name: Build extension
run: cmake --build $BUILD_DIR --target itchcpp_python

- name: Run binding tests
run: |
python -m pip install --upgrade pip pytest
# Drop the freshly built extension into the package so `import itchcpp`
# resolves to python/itchcpp with its compiled _itchcpp module.
cp $BUILD_DIR/python/_itchcpp*.so python/itchcpp/
cd python && python -m pytest tests -q

benchmark-smoke:
runs-on: ubuntu-latest
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
BUILD_DIR: ${{ github.workspace }}/build
CMAKE_BUILD_PARALLEL_LEVEL: 4
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Cache vcpkg
uses: actions/cache@v4
with:
path: |
${{ env.VCPKG_ROOT }}
~/.cache/vcpkg
key: ${{ runner.os }}-vcpkg-${{ hashFiles('vcpkg.json') }}
restore-keys: |
${{ runner.os }}-vcpkg-

- name: Set up vcpkg
uses: lukka/run-vcpkg@v11

- name: Configure CMake (benchmarks)
run: |
cmake -S . -B $BUILD_DIR \
-DITCH_BUILD_BENCHMARKS=ON \
-DITCH_CXX_STANDARD=23 \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-linux

- name: Build benchmarks
run: cmake --build $BUILD_DIR --target parser_bench book_bench

- name: Generate a small synthetic ITCH sample
run: |
python3 - <<'PY'
frame = (bytes([0x00, 0x0C]) + b'S'
+ (1).to_bytes(2, 'big') + (2).to_bytes(2, 'big')
+ (3).to_bytes(6, 'big') + b'O')
with open('sample.itch', 'wb') as out:
out.write(frame * 1_000_000)
PY

- name: Run benchmarks (smoke)
run: |
$BUILD_DIR/benchmarks/parser_bench sample.itch --benchmark_min_time=1x
$BUILD_DIR/benchmarks/book_bench sample.itch --benchmark_min_time=1x
47 changes: 47 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: docs

on:
push:
branches: ["main"]
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Install Doxygen and Graphviz
run: sudo apt-get update && sudo apt-get install -y doxygen graphviz

- name: Build documentation
run: |
cmake -S . -B build -DITCH_BUILD_DOCUMENTATION=ON
cmake --build build --target docs
touch docs/html/.nojekyll

- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/html

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
Loading
Loading