v4.5.65
NangoHQ/nangov4.5.65Jul 13, 2026by github-actions[bot]
AI Summary
This release focuses on performance optimizations for the Python library using accelerators like uvloop and orjson, replaces node-fetch with the native undici API, and introduces new exchange integrations such as ndax and hibachi.
Key Highlights
- Python performance accelerators (uvloop, winloop, orjson) with precision-safe JSON handling
- Replaced node-fetch with native undici fetch API for HTTP/1.1 keep-alive pooling
- Added new exchange support (ndax, hibachi, bitso) and methods (reduceMargin)
- Refactored static dependencies by replacing vendored libraries with hand-rolled ABIs
- Fixed critical bugs in Binance fetchTradesMethod and Deribit timestamp parsing
Breaking Changes
- Delist of aftermath exchange
- bitmex fetchOHLCVOpenTimestamp renamed to useOpenTimestamp
- Removal of SPL network
New Features
- ccxt-cli skill
- KuCoin reduceMargin method
- Bitget auto-detect UTA account
- NDAX API support
- Bitso fetchCurrencies implementation
Full Release Notes
## What's Changed * test: add atom/cosmos networkcode by @ttodua in https://github.com/ccxt/ccxt/pull/29060 * chore(build): replace python setup.py with root pyproject.toml, pin python dependencies by @carlotestor in https://github.com/ccxt/ccxt/pull/29093 * refactor: remove SPL network by @ttodua in https://github.com/ccxt/ccxt/pull/29096 * feat(python): uvloop/winloop/orjson accelerators with safe defaults by @carlotestor in https://github.com/ccxt/ccxt/pull/29098 * perf(python): uvloop/winloop/orjson accelerators + precision-safe JSON handling by @carlotestor in https://github.com/ccxt/ccxt/pull/29100 * release.yml: push back exchanges.json (force-add past .gitignore) by @carlotestor in https://github.com/ccxt/ccxt/pull/29109 * fix(26168): deribit parseTransfer timestamp parsing (already in milliseconds) by @carlotestor in https://github.com/ccxt/ccxt/pull/29102 * fix(26731): mexc pro - map sendTime to lastTradeTimestamp in watchOrders by @carlotestor in https://github.com/ccxt/ccxt/pull/29103 * fix(base): safeTicker - preserve legitimate zero change (fixes #25971) by @carlotestor in https://github.com/ccxt/ccxt/pull/29105 * fix(base): reduce strictNullChecks errors in base infra, functions, and coinex by @carlotestor in https://github.com/ccxt/ccxt/pull/28960 * fix(okx): reduce strictNullChecks errors + transpiler-safe ternaries by @carlotestor in https://github.com/ccxt/ccxt/pull/28965 * fix(base): position percentage derivation in safePosition (unrealisedPnl -> unrealizedPnl typo) by @carlotestor in https://github.com/ccxt/ccxt/pull/29110 * fix(27152): gate parsePosition maps initialMargin from margin field by @carlotestor in https://github.com/ccxt/ccxt/pull/29104 * feat(bitget): auto detect UTA account by @carlosmiei in https://github.com/ccxt/ccxt/pull/29051 * feat(kucoin): update by @yzh-pelle in https://github.com/ccxt/ccxt/pull/29042 * fix(28709): bingx - omit quantity from swap order request when closePosition is true by @carlotestor in https://github.com/ccxt/ccxt/pull/29106 * fix(28622): add quant-backtest-utils to Awesome CCXT wiki by @carlotestor in https://github.com/ccxt/ccxt/pull/29113 * feat(hyperliquid): remove WebData2 stream by @sc0Vu in https://github.com/ccxt/ccxt/pull/29030 * fix(gate): static response fixture percentage misplaced by #29104/#29110 auto-merge by @carlotestor in https://github.com/ccxt/ccxt/pull/29114 * Replace ethereum and toolz static dependencies with hand-rolled ABI + EIP-712 encoder by @carlotestor in https://github.com/ccxt/ccxt/pull/29112 * fix(gate): regenerate stale Go output for parsePosition/safePosition by @carlotestor in https://github.com/ccxt/ccxt/pull/29116 * fix(exchanges): reduce strictNullChecks errors across exchanges and tests by @carlotestor in https://github.com/ccxt/ccxt/pull/28966 * fix(base): go Precise.Div must truncate toward zero like JS BigInt division by @carlotestor in https://github.com/ccxt/ccxt/pull/29118 * feat(base): replace node-fetch with native fetch (undici), HTTP/1.1 keep-alive pooling by @carlotestor in https://github.com/ccxt/ccxt/pull/29084 * chore(deps): bump undici from 7.27.2 to 7.28.0 by @dependabot[bot] in https://github.com/ccxt/ccxt/pull/29120 * base: parseJson fast path — requote numbers only when an unsafe integer is present by @carlotestor in https://github.com/ccxt/ccxt/pull/29119 * fix(mudrex): logo by @kroitor in https://github.com/ccxt/ccxt/pull/29121 * php: remove quoteJsonNumbers regex pass, use JSON_BIGINT_AS_STRING by @carlotestor in https://github.com/ccxt/ccxt/pull/29123 * refactor: guard loadMarkets calls by @carlotestor in https://github.com/ccxt/ccxt/pull/29111 * refactor(dydx): remove bip dependencies, support hex private keys only by @carlotestor in https://github.com/ccxt/ccxt/pull/29124 * fix(aftermath)!: delist by @ttodua in https://github.com/ccxt/ccxt/pull/29125 * refactor(pro): drop vendored fflate, use node:zlib in node with fflate fallback by @carlotestor in https://github.com/ccxt/ccxt/pull/29014 * test(fetchTickers): enhance tickers change & precentage accuracy by @ttodua in https://github.com/ccxt/ccxt/pull/27763 * edit postinstall by @frosty00 in https://github.com/ccxt/ccxt/pull/29128 * refactor(static-updater) - some updates by @ttodua in https://github.com/ccxt/ccxt/pull/25268 * fix(coinex): fetchCurrencies & static tests all by @ttodua in https://github.com/ccxt/ccxt/pull/25987 * feat(ai): add ccxt-cli skill by @pcriadoperez in https://github.com/ccxt/ccxt/pull/29129 * Remove vendored ecdsa static dependency, use coincurve + cryptography by @carlotestor in https://github.com/ccxt/ccxt/pull/29131 * feat(hibachi): add methods by @sc0Vu in https://github.com/ccxt/ccxt/pull/29137 * fix(binance): fetchTradesMethod by @sc0Vu in https://github.com/ccxt/ccxt/pull/29138 * refactor(bitmex)!: fetchOHLCVOpenTimestamp > useOpenTimestamp by @ttodua in https://github.com/ccxt/ccxt/pull/29142 * docs(kraken): update @see by @sc0Vu in https://github.com/ccxt/ccxt/pull/29136 * chore(go): add unique in interface by @ttodua in https://github.com/ccxt/ccxt/pull/29126 * feat(kucoin): add reduceMargin by @sc0Vu in https://github.com/ccxt/ccxt/pull/29135 * feat(docs): add survey pop up by @carlosmiei in https://github.com/ccxt/ccxt/pull/29145 * fix(cli): --no-send and --no-load-markets were silently ignored by @pcriadoperez in https://github.com/ccxt/ccxt/pull/29141 * feat(docs): add survey pop up change location by @carlosmiei in https://github.com/ccxt/ccxt/pull/29147 * feat(docs): add blog to docs.ccxt.com by @pcriadoperez in https://github.com/ccxt/ccxt/pull/29150 * refactor(bitmex): api-expires > recvWindow by @ttodua in https://github.com/ccxt/ccxt/pull/29143 * refactor(bigone): normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29151 * refactor(apex): remove odd opt by @ttodua in https://github.com/ccxt/ccxt/pull/29146 * refactor(alpaca): normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29144 * refactor(aster): normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29148 * refactor(bitmart): normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29157 * refactor(bitopro): normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29158 * refactor(bit2c): normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29154 * refactor(bitfinex): normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29155 * refactor(bitget): normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29156 * refactor(bitrue): normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29159 * Add Dependabot configuration for Go modules by @kroitor in https://github.com/ccxt/ccxt/pull/29161 * fix(go): dependabot security fixes by @kroitor in https://github.com/ccxt/ccxt/pull/29163 * chore(deps): bump golang.org/x/crypto from 0.45.0 to 0.52.0 in /go/tests/profile by @dependabot[bot] in https://github.com/ccxt/ccxt/pull/29164 * chore(deps): go/tests/types fixes by @kroitor in https://github.com/ccxt/ccxt/pull/29165 * chore(deps): dependabot go cli fixes by @kroitor in https://github.com/ccxt/ccxt/pull/29166 * feat(okx): update docs by @sc0Vu in https://github.com/ccxt/ccxt/pull/29168 * refactor(alpaca): remove gtc by @ttodua in https://github.com/ccxt/ccxt/pull/29170 * feat(ndax): add apis by @sc0Vu in https://github.com/ccxt/ccxt/pull/29167 * feat(bitso): implement fetchCurrencies; fix fetchMarkets; normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29169 * refactor(bitteam): normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29172 * fix(java): lang specific test by @carlosmiei in https://github.com/ccxt/ccxt/pull/29173 * fix(alpaca): default gtc by @ttodua in https://github.com/ccxt/ccxt/pull/29174 * fix: #28494 use native WebSocket under Bun runtime by @carlotestor in https://github.com/ccxt/ccxt/pull/29171 * fix(tests): avoid Windows Defender false positive in test.watchOrderBookForSymbols.ts by @carlotestor in https://github.com/ccxt/ccxt/pull/29177 * refactor(binance): normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29152 * build: bump TypeScript to 7.0.2 with typescript6 alias for compiler-API consumers by @carlotestor in https://github.com/ccxt/ccxt/pull/29176 * refactor(bittrade): normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29178 * fix(go): add Precision to marketinterface struct by @carlosmiei in https://github.com/ccxt/ccxt/pull/29180 * chore(aster): skip withdraw by @ttodua in https://github.com/ccxt/ccxt/pull/29183 * refactor: normalize options by @ttodua in https://github.com/ccxt/ccxt/pull/29181 * fix(build): run gofmt after Go transpile by @pcriadoperez in https://github.com/ccxt/ccxt/pull/29184 * chore(deps): bump mistune from 3.2.1 to 3.3.0 by @dependabot[bot] in https://github.com/ccxt/ccxt/pull/29186 * fix(java): regex concurrent by @carlosmiei in https://github.com/ccxt/ccxt/pull/29189 * Go transpiler: emit gofmt-formatted output, drop formatGO step by @carlotestor in https://github.com/ccxt/ccxt/pull/29191 * fix(go): unblock Send when the websocket is not connected by @vsaraikin in https://github.com/ccxt/ccxt/pull/29187 * perf(pro): convert pure WS delegators to non-async pass-through by @carlotestor in https://github.com/ccxt/ccxt/pull/29122 * fix(backpack): normalize ticker percentage with Precise.stringMul by @Functionhx in https://github.com/ccxt/ccxt/pull/29192 * fix(go): safeFloatN default assertion by @carlosmiei in https://github.com/ccxt/ccxt/pull/29193 * perf(pro): deliver ws messages through a duplex stream instead of per-message deferred events by @carlotestor in https://github.com/ccxt/ccxt/pull/29117 * fix(docs): add java reference by @carlosmiei in https://github.com/ccxt/ccxt/pull/29194 * refactor(php): allow sync only guarding async require statements fix #29196 by @kroitor in https://github.com/ccxt/ccxt/pull/29197 * feat(binance): add binance skills by @pcriadoperez in https://github.com/ccxt/ccxt/pull/29160 * fix(bingx): takeProfit & stopLoss fix by @ttodua in https://github.com/ccxt/ccxt/pull/29185 ## New Contributors * @vsaraikin made their first contribution in https://github.com/ccxt/ccxt/pull/29187 * @Functionhx made their first contribution in https://github.com/ccxt/ccxt/pull/29192 **Full Changelog**: https://github.com/ccxt/ccxt/compare/v4.5.64...v4.5.65