Platform Support Matrix๏ƒ

โœ… Supported Platforms๏ƒ

Primary Platforms (Fully Tested)๏ƒ

Platform | Architecture | Compiler | Status | Notes |

|----------|โ€”โ€”โ€”โ€”-|----------|โ€”โ€”โ€”|-------| | macOS | ARM64 (Apple Silicon) | Clang 14+ | โœ… SUPPORTED | Native ARM optimizations | | macOS | x86_64 (Intel) | Clang 14+ | โœ… SUPPORTED | SSE/AVX optimizations | | Linux | x86_64 | GCC 9+, Clang 10+ | โœ… SUPPORTED | Full SIMD support | | Linux | ARM64 | GCC 9+, Clang 10+ | โœ… SUPPORTED | NEON optimizations |

Secondary Platforms (Community Tested)๏ƒ

Platform | Architecture | Compiler | Status | Notes |

|----------|โ€”โ€”โ€”โ€”-|----------|โ€”โ€”โ€”|-------| | Windows | x86_64 | MSVC 2019+ | โš ๏ธ EXPERIMENTAL | Limited testing | | Windows | x86_64 | MinGW-w64 | โš ๏ธ EXPERIMENTAL | Community support | | Linux | ARM32 | GCC 9+ | โš ๏ธ EXPERIMENTAL | Basic support |

๐Ÿšซ Unsupported Platforms๏ƒ

<table border=โ€1โ€ class=โ€docutilsโ€> <thead> <tr> <th>Platform</th> <th>Reason</th> <th>Alternative</th> </tr> </thead> <tbody> <tr> <td>Windows ARM64</td> <td>Limited toolchain support</td> <td>Use x86_64 with emulation</td> </tr> <tr> <td>32-bit x86</td> <td>Performance limitations</td> <td>Use 64-bit version</td> </tr> <tr> <td>Very old compilers</td> <td>C++17 requirement</td> <td>Upgrade compiler</td> </tr> </tbody> </table>

๐Ÿ”ง Platform-Specific Features๏ƒ

SIMD Optimizations๏ƒ

  • x86_64: SSE2, AVX2, AVX-512 (when available)

  • ARM64: NEON (when available)

  • Fallback: Scalar implementations for all platforms

Threading๏ƒ

  • All Platforms: C++11 std::thread support

  • Linux: pthread optimizations

  • macOS: Grand Central Dispatch integration (planned)

  • Windows: Windows threading APIs (experimental)

Networking๏ƒ

  • All Platforms: Boost.Asio for cross-platform networking

  • Linux: epoll optimizations

  • macOS: kqueue optimizations

  • Windows: IOCP support (experimental)

๐Ÿ“‹ Requirements by Platform๏ƒ

macOS๏ƒ


# Required * macOS 10.15+ (Catalina) * Xcode 12+ or Command Line Tools * CMake 3.14+

# Dependencies brew install cmake boost quickfix pkg-config

# Optional (for performance) brew install intel-tbb google-benchmark

Linux (Ubuntu/Debian)๏ƒ


# Required * Ubuntu 20.04+ / Debian 11+ * GCC 9+ or Clang 10+ * CMake 3.14+

# Dependencies sudo apt install build-essential cmake pkg-config

libboost-all-dev libquickfix-dev

# Optional sudo apt install libtbb-dev libbenchmark-dev

Linux (CentOS/RHEL/Fedora)๏ƒ


# Required * CentOS 8+ / RHEL 8+ / Fedora 32+ * GCC 9+ or Clang 10+ * CMake 3.14+

# Dependencies (CentOS/RHEL) sudo yum install gcc-c++ cmake pkgconfig boost-devel

# Dependencies (Fedora) sudo dnf install gcc-c++ cmake pkgconfig boost-devel

Windows (Experimental)๏ƒ


# Required * Windows 10 version 1903+ * Visual Studio 2019+ or Build Tools * CMake 3.14+

# Using vcpkg (recommended) vcpkg install boost:x64-windows quickfix:x64-windows

# Using Conan conan install . โ€“build=missing

๐Ÿงช Testing Status๏ƒ

Automated Testing๏ƒ

  • โœ… macOS ARM64: GitHub Actions

  • โœ… macOS x86_64: GitHub Actions

  • โœ… Linux x86_64: GitHub Actions

  • โš ๏ธ Linux ARM64: Manual testing

  • โŒ Windows: Not automated yet

Performance Benchmarks๏ƒ

  • โœ… macOS ARM64: Native NEON optimizations

  • โœ… macOS x86_64: SSE/AVX optimizations

  • โœ… Linux x86_64: Full SIMD support

  • โš ๏ธ Other platforms: Basic benchmarks only

๐Ÿ› Known Issues๏ƒ

macOS๏ƒ

  • Issue: Homebrew QuickFIX may have linking issues

  • Workaround: Build from source or use git submodule

  • Status: Tracked in issue #123

Linux ARM64๏ƒ

  • Issue: Some NEON intrinsics may not be available on older kernels

  • Workaround: Automatic fallback to scalar code

  • Status: Minor performance impact

Windows๏ƒ

  • Issue: Limited testing and potential compatibility issues

  • Workaround: Use WSL2 with Linux build

  • Status: Community contributions welcome

๐Ÿš€ Performance Characteristics๏ƒ

Latency (microseconds, lower is better)๏ƒ

Platform | Architecture | Message Parse | Order Process | Total |

|----------|โ€”โ€”โ€”โ€”-|---------------|โ€”โ€”โ€”โ€”โ€”|-------| | macOS | ARM64 | 0.8ฮผs | 1.2ฮผs | 2.0ฮผs | | macOS | x86_64 | 0.6ฮผs | 1.0ฮผs | 1.6ฮผs | | Linux | x86_64 | 0.5ฮผs | 0.9ฮผs | 1.4ฮผs | | Linux | ARM64 | 0.9ฮผs | 1.3ฮผs | 2.2ฮผs |

Throughput (messages/second, higher is better)๏ƒ

Platform | Architecture | Single Thread | Multi Thread |

|----------|โ€”โ€”โ€”โ€”-|---------------|โ€”โ€”โ€”โ€”โ€“| | macOS | ARM64 | 800K | 2.5M | | macOS | x86_64 | 1.2M | 4.0M | | Linux | x86_64 | 1.5M | 5.0M | | Linux | ARM64 | 700K | 2.2M |

Benchmarks run on representative hardware with optimized builds

๐Ÿ”ฎ Future Platform Support๏ƒ

Planned๏ƒ

  • Windows ARM64: When toolchain matures

  • FreeBSD: Community interest

  • WebAssembly: For browser-based tools

Under Consideration๏ƒ

  • Android: For mobile trading apps

  • iOS: For mobile trading apps

  • Embedded Linux: For hardware trading boxes

๐Ÿ†˜ Platform-Specific Help๏ƒ

Getting Help๏ƒ

  1. Check this document for known issues

  2. Search GitHub Issues for platform-specific problems

  3. Create new issue with platform details: - OS version and architecture - Compiler version - CMake version - Full error output

Contributing Platform Support๏ƒ

  1. Test on your platform and report results

  2. Submit fixes for platform-specific issues

  3. Add CI/CD for new platforms

  4. Update documentation with your findings

๐Ÿ“Š Platform Detection๏ƒ

The build system automatically detects your platform:


// Platform detection in code #if PLATFORM_MACOS

// macOS-specific code

#elif PLATFORM_LINUX

// Linux-specific code

#elif PLATFORM_WINDOWS

// Windows-specific code

#endif

// Architecture detection #if ARCH_ARM64

// ARM64-specific optimizations

#elif ARCH_X86_64

// x86_64-specific optimizations

#endif

Build system will show detected platform:

โ€“ FIX-FastTrade Configuration Summary: โ€“ Platform: macOS ARM64 โ€“ Compiler: Clang 17.0.0 โ€“ SIMD Support: NEON โ€“ Threading: std::thread + pthread