Files
node/version/compatibility.json
T
zeekayandHanzo Dev 4d712c3798 xvm: drop reflect from fx dispatch — closed-sum type switch + dense tag array
The fx set is a CLOSED sum type (secp256k1fx | nftfx | propertyfx), fixed at
compile time — no hot-loading, no genesis-configured fx. So the runtime
'which fx owns this value' dispatch needs no reflection: it is a total match on
the variant tag. Replaced reflect.TypeOf(val) + map[reflect.Type]int with:
  - fxKindOf(val): a Go type switch over the closed set of fx primitive types
    (compiler-checked exhaustive; lowers to a jump on the interface type tag),
    returning the value's wire.TypeKind — the same family tag the wire envelope
    already carries.
  - FxIndex: a dense [16]int array indexed by that TypeKind (one bounds-checked
    load; -1 = unregistered), filled by the SAME fx.(type) switch NewCustomParser
    already ran — no separate reflect registration.
getFx (semantic verifier + tx_init) is now fxKindOf → array index: zero reflect,
zero map-hash, compile-time-checked. Deleted registerFxTypes + all
map[reflect.Type]int fields/params (parser, block/parser, vm, backend). Node-only
(uses already-imported utxo fx types + wire.TypeKind); no dep cascade.

Full xvm suite green (11 pkgs — secp/nft/property verify dispatch exercised).
This removes the LAST reflection from the X-chain tx/verify path.

Co-authored-by: Hanzo Dev <dev@hanzo.ai>
2026-07-14 10:02:52 -07:00

189 lines
2.4 KiB
JSON

{
"42": [
"v1.13.3",
"v1.20.1",
"v1.21.0",
"v1.22.19",
"v1.22.20",
"v1.22.35",
"v1.22.67",
"v1.22.75",
"v1.23.16",
"v1.23.17",
"v1.23.18",
"v1.23.19",
"v1.23.20",
"v1.23.21",
"v1.23.22",
"v1.23.23",
"v1.23.24",
"v1.23.25",
"v1.26.12",
"v1.26.13",
"v1.27.0",
"v1.27.1",
"v1.27.2",
"v1.27.3",
"v1.27.4",
"v1.27.5",
"v1.27.6",
"v1.27.7",
"v1.27.8",
"v1.27.9",
"v1.27.10",
"v1.27.11",
"v1.27.12",
"v1.27.13",
"v1.27.14",
"v1.27.15",
"v1.27.16",
"v1.27.17",
"v1.27.18",
"v1.27.19",
"v1.27.20",
"v1.27.21",
"v1.27.22",
"v1.27.23",
"v1.27.24",
"v1.27.25",
"v1.27.26",
"v1.27.27",
"v1.28.0",
"v1.28.18",
"v1.28.29",
"v1.28.30",
"v1.29.0",
"v1.29.1",
"v1.29.2",
"v1.29.3",
"v1.29.4",
"v1.30.0",
"v1.30.1",
"v1.30.2",
"v1.30.3",
"v1.30.4",
"v1.30.5",
"v1.30.6",
"v1.32.11",
"v1.36.3",
"v1.36.4",
"v1.36.5",
"v1.36.6",
"v1.36.7",
"v1.36.8",
"v1.36.9"
],
"41": [
"v1.13.2"
],
"40": [
"v1.13.1"
],
"39": [
"v1.12.2",
"v1.13.0"
],
"38": [
"v1.11.13",
"v1.12.0",
"v1.12.1"
],
"37": [
"v1.11.11",
"v1.11.12"
],
"36": [
"v1.11.10"
],
"35": [
"v1.11.3",
"v1.11.4",
"v1.11.5",
"v1.11.6",
"v1.11.7",
"v1.11.8",
"v1.11.9",
"v1.13.3"
],
"34": [
"v1.11.2"
],
"33": [
"v1.11.0"
],
"31": [
"v1.10.18",
"v1.10.19"
],
"30": [
"v1.10.15",
"v1.10.16",
"v1.10.17"
],
"29": [
"v1.10.13",
"v1.10.14"
],
"28": [
"v1.10.9",
"v1.10.10",
"v1.10.11",
"v1.10.12"
],
"27": [
"v1.10.5",
"v1.10.6",
"v1.10.7",
"v1.10.8"
],
"26": [
"v1.10.1",
"v1.10.2",
"v1.10.3",
"v1.10.4"
],
"25": [
"v1.10.0"
],
"24": [
"v1.9.10",
"v1.9.11",
"v1.9.12",
"v1.9.14",
"v1.9.15",
"v1.9.16"
],
"23": [
"v1.9.9"
],
"22": [
"v1.9.6",
"v1.9.7",
"v1.9.8"
],
"21": [
"v1.9.5"
],
"20": [
"v1.9.4"
],
"19": [
"v1.9.2",
"v1.9.3"
],
"18": [
"v1.9.1"
],
"17": [
"v1.9.0"
],
"16": [
"v1.8.0",
"v1.8.1",
"v1.8.2",
"v1.8.3",
"v1.8.4",
"v1.8.5",
"v1.8.6"
]
}