github jup-ag/metis-binary v7.1.5

3 hours ago

Changelog

New AMM Integration & Updates

  • The Fantastical Finance Factory integration (formerly Dr Fraudsworth): ZIG/ZAG faction pools and the ZIG/ZAG <-> MOTION vault
  • Sanctum Infinity Reserve V2
  • QuantumV2 with Token-2022 support
  • BisonFi SDK 0.4.0 (batch-clock mode 2 quoting), and market-backed pools now pass the market tick account, which BisonFi will require on every swap
  • Kipseli: stop quoting prices older than the pool's max_slot_gap, SDK synced with the deployed program
  • Jupiter Lend: jlX tokens can route through any eligible pool, not only the Jupiter Lend pool
  • Whitelist ZeroFi and Scorch PropAMMs for API users, exclude Obsidian
  • Remove Metric (program closed)
  • Alpenglow support: richat 14.1.1, yellowstone-grpc-proto 14.0.1 / client 15.0.0, account updates tracked per (slot, bank_id). Servers that send no bank_id still work
  • Agave 4.3.2 and v3 SPL interfaces
  • Experimental RouteByPrice partition algorithm, opt-in via routingConstraints.partitionAlgo (default unchanged)

Performances

  • jemalloc replaces snmalloc: steady RSS 10.9 -> 8.2 GiB with the full market set on Linux, no CPU or latency change. New allocator_* gauges on the metrics endpoint
  • Skip AMM updates for account changes that can't affect quotes (a WSOL mint rewrite used to re-update ~840K AMMs, a pump.fun Global lamports change ~675K)
  • Lower router memory, on the benchmark snapshot: compact account <-> AMM link sets (1.28 GiB -> 682 MiB), Pump curves share decoded global accounts (2.43 -> 1.43 GiB of AMM state), smaller AmmMetadata (-112 MiB), single-neighbor mints stored inline in the route graph
  • Raydium CLMM (and PancakeSwap / Stabble CLMM) keep only the swap window's tick arrays, so memory and update cost no longer grow with uptime
  • Whirlpool: faster quote math, and updates reload only changed tick arrays (40–57% faster, 1 GiB -> 177 MiB held)
  • Faster quotes and updates for Meteora DLMM, DefiTuna, Saber/Mercurial stable swaps, Sanctum and Pump
  • Routing: pin AMM metadata per request, skip known-rejected AMM edges, one graph lookup per neighbor link, scc maps for market info and AMM metadata (less lock contention)
  • Swap simulations request inner instructions only when simulation errors are logged (~8 ms faster simulateTransaction at median, 37% smaller response)
  • TCP_NODELAY on API connections

Bug Fixes

  • routingConstraints: maxhop above 5 and bucketSizePercentage outside 1–100 now return HTTP 400. Before, one request could abort the process, and a few could tie up every quote worker
  • keyedUiAccounts (--enable-external-amm-loading): return an error for undecodable account data instead of aborting the process
  • OpenBook V2: return an error for a missing or malformed oracle instead of aborting the process
  • Keep the RPC URL, and any token in it, out of error responses and logs
  • Keep the clock sysvar subscribed when no loaded market links it. With --dex-program-ids, --exclude-dex-program-ids or --filter-markets-with-mints, AMMs could quote on the startup clock until restart
  • Always load Sanctum router AMMs at startup, even when a router PDA holds lamports
  • /quote-multiple-output-mints: cache base58 names only for routable mints (random mints grew memory until restart)
  • skipLosingQuotes: account for pool rounding so a winning quote isn't skipped
  • Read rent from the Rent sysvar (SIMD-0437) for WSOL setup, vault and Sanctum prefund quotes
  • Reject a platform fee in a transfer-hook mint instead of building a swap that fails on-chain
  • Meteora DLMM: quote at the exact drain boundary at extreme prices. A single overflowing bin no longer stops the pool from updating
  • Invariant: check liquidity using reserve amounts
  • Scorch: declare underlying liquidities

Don't miss a new metis-binary release

NewReleases is sending notifications on new releases.