Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 4 additions & 1 deletion .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,11 @@ jobs:
- name: linux-release
os: ubuntu-24.04
preset: release
# macos-15 = Xcode 16 (AppleClang 16 / libc++ 18): complete std::format
# for custom formatters. macos-14 (Xcode 15, libc++ 16) has incomplete
# std::format support and is below the project floor (BUILD_SYSTEM.md).
- name: macos-debug
os: macos-14
os: macos-15
preset: debug
steps:
- uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Release 1 milestone; until then this file is developer-facing.

## Development

Requirements: CMake ≥ 3.27, Ninja, a C++20 compiler (AppleClang 15+ / Clang 16+ / GCC 13+).
Requirements: CMake ≥ 3.27, Ninja, a C++20 compiler (AppleClang 16+ / Clang 16+ / GCC 13+).
Build tooling and rationale are documented in
[`docs/build/BUILD_SYSTEM.md`](docs/build/BUILD_SYSTEM.md).

Expand Down
11 changes: 9 additions & 2 deletions docs/build/BUILD_SYSTEM.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
# Build System

CMake ≥ 3.27, C++20 (S1), FetchContent-pinned dependencies (S2). One-command builds on macOS
(AppleClang ≥ 15) and Linux (Clang ≥ 16, GCC ≥ 13 as the second compiler for warning
diversity).
(**AppleClang ≥ 16** — Xcode 16+) and Linux (Clang ≥ 16, GCC ≥ 13 as the second compiler for
warning diversity).

> **macOS floor is AppleClang 16, not 15.** `std::format` support for *custom* formatters is
> incomplete in the libc++ shipped with Xcode 15 (libc++ 16): the consteval format-string
> check does not recognize user-defined `std::formatter` specializations. libc++ 17+
> (Xcode 16) is complete. CI runs `macos-15` for this reason (task R1-03 finding). If macOS 15
> support ever becomes necessary, the alternative is to route formatting through `fmt` (a
> planned dependency) instead of `std::format`.

## Presets (`CMakePresets.json` — the only supported way to configure)

Expand Down
2 changes: 1 addition & 1 deletion docs/build/CI_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ GitHub Actions, free tier only. Fast feedback per PR; heavy work nightly; nothin
| `linux-debug` | ubuntu | debug preset: unit + property(CI budget) + differential + replay tests |
| `linux-asan` | ubuntu | asan-ubsan preset: same suite |
| `linux-release` | ubuntu | release preset: full test suite + 60s/target fuzz smoke |
| `macos` | macos-14 (arm64) | debug + asan: full C++ suite (platform diversity catches real bugs) |
| `macos` | macos-15 (arm64, Xcode 16) | debug: full C++ suite (platform diversity catches real bugs; Xcode 16 for complete std::format, see BUILD_SYSTEM.md) |
| `python` | ubuntu + macos | build wheel, pytest (binding + micro-E2E: run→store→analyze→reproduce on 2-seed micro configs), nbconvert-execute notebooks on micro outputs |
| `bench-smoke` | ubuntu | 3-benchmark subset vs stored runner baseline, **labeled unstable**, regression >25% fails (gross breakage only — real gates run on the dev Mac per METHODOLOGY) |

Expand Down
2 changes: 1 addition & 1 deletion src/core/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
microsim_add_library(core src/module_info.cpp)
microsim_add_library(core src/module_info.cpp src/types.cpp)
Loading
Loading