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