haven't found a nim implementation for it,
so i just ported a simple implementation: https://github.com/rforcen/nim/blob/main/btreeDisk.nim
suitable for a fixed environment, it that just fits my needs of a 1e8 key array[10,char] file based index btree
limitations:
is there something more flexible out there?
The fusion one is very "ref object store GC'd types in it/use the existing nim allocator". For external use you will at least need your own node allocator and probably a prohibition against (or at least very special handling of) GC'd types like string.
adix has a b-tree that is very close to being external. It does all the node allocation in a pool/seq of big nodes. All you really have to do is point that pool logic at a memfiles.MemFile and handle growth and you're done. The adix variant also implements quite a few features not in the fusion one, such as bulk loading, seek by rank, etc.
fusions & memfiles seem to be a nice feature to consider, currently out of my scope i'll review it as a backgroud task,
meanwhile i've 'black box' wrapped some c++ code