# iceberg-rs

> iceberg-rs, a magmalake tin: Apache Iceberg over a thin Rust cdylib wrapping iceberg-rust behind a C ABI. Superseded — no longer required for any operation — and kept only as a third independent implementation to check the native one against.

[magmalake](https://magmalake.dev/) [iceberg-rs](https://magmalake.dev/s/iceberg-rs)

Apache Iceberg over a thin Rust cdylib wrapping iceberg-rust behind a C ABI. Superseded — no longer required for any operation — and kept only as a third independent implementation to check the native one against.

Install

```
pixi shelf add iceberg-rs-mojo
```

Version

`0.1.3` on mojoshelf

Source

[GitHub](https://github.com/magmalake/iceberg-rs.mojo) [README](https://github.com/magmalake/iceberg-rs.mojo#readme)

## Works today

- 56 extern "C" functions over one shared tokio runtime
- SQL/JDBC catalog against real object storage
- Kept as a cross-implementation oracle, not a dependency

Checked against PyIceberg reading through the same sqlite catalog file the binding wrote

### Building it found bugs upstream

Holding three implementations against each other surfaces disagreements, and not all of them turned out to be my fault. I cut each one below down to a standalone script or unit test with no magmalake code in it, then either reported it upstream or — where someone had got there first — matched it to the report that already existed.

- [iceberg-rust apache/iceberg-rust#3118  reported](https://github.com/apache/iceberg-rust/issues/3118) An In predicate whose literals straddle a file's bounds is never pruned: the lower and upper bounds are each tested against the whole literal set instead of narrowing it, as Java and PyIceberg do.

- [Every tin](https://magmalake.dev/tins)

[A magmalake project](https://magmalake.dev/)

Apache 2.0 · © 2026 Marius Seritan
