# Ecosystem research snapshot

Research date: 2026-09-22. This is a time-bounded selection record, not a claim
that a fast-moving package registry can never gain a related project.

## Method

We queried the Mooncakes search API documented by the Mooncakes site source and
cross-checked the current module catalogue with these terms and close variants:
`succinct`, `compressed data structure`, `rank select bitvector`, `Elias-Fano`,
`LOUDS`, `level-order unary degree sequence`, `front-coded dictionary`,
`compressed trie`, `RRR bitvector`, `wavelet tree`, and `FM-index`. We also used
GitHub code search restricted to MoonBit for `EliasFano`, `LOUDS`, combined
`rank1`/`select1`, and `succinct`.

The Mooncakes catalogue snapshot contained 2,604 modules and 23,833 packages.
Catalogue metadata is incomplete for some modules, so exact zero-result claims
are evidence of low collision risk rather than mathematical proof of absence.

## Result

No directly equivalent MoonBit module was found for Elias–Fano, LOUDS, a
succinct rank/select bit-vector library, or a reusable front-coded dictionary.
GitHub code search found no MoonBit Elias–Fano, LOUDS, or combined rank/select
implementation.

The closest published work is component-adjacent rather than project-equivalent:

- `kesmeey/immut_BitVector` is a general immutable bit vector without a public
  rank/select directory.
- `cauchyQ/moonbit-roaring` and `xcc-ordinary/moonbit-roaring` expose rank and
  select over Roaring integer-set containers and use a different representation
  and interchange format.
- `Zongzuixi114514/mooncollections` contains general BitVec and pointer-style
  trie collections, not Elias–Fano or LOUDS.
- `dsyuuii/moonlexicon` is a node-based trie with Aho–Corasick and fuzzy lookup,
  not a static LOUDS topology.
- `Lucius646/MoonSearch` uses front-coded terms internally as part of a complete
  search engine; it does not publish a standalone general dictionary package.
- `Juwan-Hwang/moon-certified` and
  `bobzhang/loop_invariants_data_structures` include wavelet-tree work. v0.1
  therefore excludes wavelet trees and wavelet matrices.

## Post-implementation recheck

On 2026-09-22, after the implementation and public API were complete, we
repeated exact web-index searches for `Elias-Fano`, `LOUDS`, combined
`rank1`/`select1`, and `front-coded` under `mooncakes.io/docs`; all four exact
search groups returned no result. The registry UI could not be independently
opened in the automated browser because its administrative browser-security
check was unavailable, so this recheck supplements rather than replaces the
earlier API catalogue snapshot.

`dsyuuii/moonlexicon@0.3.0` is the strongest current adjacent package: it now
documents prefix tries, Aho–Corasick, fuzzy lookup, tokenization, snapshots, and
bounded enumeration. Its product is dictionary compilation and text matching;
it does not document Elias–Fano, a LOUDS topology, a reusable rank/select bit
vector, or MoonSuccinct's canonical static-index formats. This increases the
importance of keeping MoonSuccinct out of text scanning, normalization, fuzzy
matching, and ranking.

The local portfolio was also re-enumerated. Its repositories cover ROBDD/model
checking, nonlinear fitting, external sorting, structure-aware fuzzing, HTTP
caching, IPFIX, distributed simulation, MIME, vector tiles, OCI, SCIM, and tus.
None has MoonSuccinct's static succinct-index boundary. Shared engineering
patterns such as typed errors, CI, examples, and deterministic formats are
repository standards rather than duplicated project functionality.

## Independent value

MoonSuccinct's reusable boundary is a family of immutable index primitives
sharing one rank/select foundation. It is not a general BitSet, Roaring clone,
text search engine, fuzzy trie, or algorithm anthology. Its expected consumers
include posting lists, static dictionaries, compiler symbol tables, routing and
taxonomy trees, time-series positions, graph adjacency offsets, and genomic
coordinate indexes.

## Recheck gates

The implementation-complete recheck is recorded above. Repeat the same searches
immediately before proposal submission and within 24 hours before Mooncakes publication.
If a direct equivalent appears, document the changed landscape and either
narrow the independent contribution or change direction before publishing.

## Sources

- Mooncakes package registry: <https://mooncakes.io/>
- Mooncakes site source and search API description:
  <https://github.com/moonbitlang/mooncakes.io>
- Immutable BitVector: <https://mooncakes.io/docs/kesmeey/immut_BitVector>
- Roaring implementations:
  <https://mooncakes.io/docs/cauchyQ/moonbit-roaring> and
  <https://mooncakes.io/docs/xcc-ordinary/moonbit-roaring>
- MoonCollections: <https://mooncakes.io/docs/Zongzuixi114514/mooncollections>
- MoonLexicon: <https://mooncakes.io/docs/dsyuuii/moonlexicon>
- MoonSearch: <https://mooncakes.io/docs/Lucius646/MoonSearch>
- SDSL reference design: <https://github.com/simongog/sdsl-lite>
- Rust `sux` Elias–Fano API:
  <https://docs.rs/sux/latest/sux/dict/elias_fano/struct.EliasFano.html>
- Rust LOUDS API: <https://docs.rs/louds/latest/louds/>
