Releases: SlickQuant/slick-sim
Releases · SlickQuant/slick-sim
Release list
Release v0.1.1
Changes
Fixed
- The Ubuntu Release CI job no longer fails intermittently with
SIGILL. The vcpkg cache is now
keyed on the runner's CPU feature set, not just the OS. The SlickQuant dependency libraries
(slick-net,hyperliquid-cpp, …) build their Release config with-march=native, so vcpkg
produced binaries tuned to whichever runner compiled them; restoring that cache onto a runner with
a narrower instruction set made the tests die on an AVX-512 opcode (vmovdqu8) inside
slick::net::Websocket's constructor, reached fromHyperliquidRestOrderGateway. That is why a
re-run sometimes passed — it depended on the CPU the cache came from. - Release builds on GCC/Clang no longer pass
-march=native. It is now behind a new
ENABLE_NATIVE_ARCHoption, off by default. Baking the build machine's instruction set into the
binary broke two things: the Ubuntu Release CI job started failing withSIGILLin every test
that exercises the exchange and order-book paths, and — more seriously —ci.ymluploads those
Release binaries forrelease.ymlto attach to GitHub Releases, so published builds would fault
on any user CPU older than the runner that produced them. The flag is still available for local
and self-hosted production builds via-DENABLE_NATIVE_ARCH=ON. Exchange::start()no longer dereferences a nullmd_publisher_. OnlyCoinbaseExchangeand
HyperliquidExchangeconstruct a publisher, so any other venue key — which falls through to the
genericExchange— segfaulted the process on startup. Becausenlohmann::jsoniterates object
keys in sorted order, thecmeblock in the committed sample config crashedslick-simbefore
either working venue was even constructed.enabledis now honoured for every venue. It is read once in theExchangebase constructor and
checked by all threestart()implementations, which return early with a warning when it is
false. Previously the check lived only in thecoinbaseandhyperliquidbranches ofmain.cpp,
so"enabled": falseon any other venue was silently ignored.
Changed
- Sample config (
config/slick_sim.json):- The
cmeblock is now"enabled": false, uses anmbo_live_feedplaceholder feed instead of a
copied Hyperliquid one, and no longer collides with Hyperliquid's ports — its order gateway
moves to 4003 and its market data publisher to 5002 (it previously shared Hyperliquid's 5001). - Hyperliquid's order gateway port moves from 4003 to 4002.
- Dropped
coinsfrom the Hyperliquid feed entry.
- The
Added
- Documentation site published to GitHub Pages at
https://slickquant.github.io/slick-sim/ — MkDocs Material for the narrative
documentation at the root, Doxygen for the C++ API reference at/api. - Eleven documentation pages under
docs/, in two tracks:- Internals — architecture and threading model, order lifecycle, matching engine, order book,
market data, and a guide to adding an exchange. - Integration — full configuration reference, plus Coinbase and Hyperliquid client guides
covering the REST routes, WebSocket channels and message shapes actually implemented. - A Known gaps page recording unimplemented and half-wired code paths.
- Internals — architecture and threading model, order lifecycle, matching engine, order book,
documentation.ymlworkflow: builds both halves of the site, deploys togh-pageson pushes to
main, uploads a preview artifact for pull requests, and lints Markdown and checks its links.
It runs Doxygen directly rather than configuring CMake, so it does not need the vcpkg dependency
chain.Doxyfile.inand a CMakedocstarget for generating the API reference locally
(cmake --build build --target docs). The target is skipped when Doxygen is not installed..markdownlint.jsonand.github/markdown-link-check-config.json.
Release v0.1.0
Changes
- Initial exchange simulator: Coinbase and Hyperliquid adapters with live market data mirroring, FIFO matching engine, and venue-native order entry/market data gateways