Kurtiscwright opened a new issue, #2382: URL: https://github.com/apache/iceberg-rust/issues/2382
### Is your feature request related to a problem or challenge? This RFC proposes a File Format API for the iceberg Rust crate that decouples Iceberg's read and write paths from any single file format. Today, iceberg-rust can only read and write Parquet data files: the format is hard-wired into ArrowReader, ParquetWriter, and every layer that touches them. The Java project shipped an analogous abstraction (FormatModel) in February 2026 via PR [#12774](https://github.com/apache/iceberg/pull/12774), and PyIceberg has an open proposal ([apache/iceberg-python#3100](https://github.com/apache/iceberg-python/issues/3100)) for the same concept. ### Describe the solution you'd like The RFC doc below describes how Rust should implement an equivalent capability, specifically a FormatModel trait, a registry, and format-agnostic scan and write paths, using idiomatic Rust constructs: traits with trait objects at the registry boundary, feature flags for compile-time format composition, and RecordBatch as the canonical data type. Because iceberg-rust is pre-1.0, the design takes cleaner tradeoffs than the Java community could: it avoids the wrapper pattern and generic-parameter compromises that were forced on Java by backward-compatibility constraints. The scope is the abstraction layer and its Parquet implementation; ORC, Avro data-file, Vortex, and Lance support are explicitly follow-up work that validates the API's extensibility. RFC doc posted to Google Docs: https://docs.google.com/document/d/1WEe_h993-NL40Oe8gMKKsFBz_-Qo_1baTlEJjGuiiCw/edit?tab=t.0 ### Willingness to contribute I can contribute to this feature independently -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
