Skip to content

Commit

Permalink
docs: add why section to README
Browse files Browse the repository at this point in the history
  • Loading branch information
mbrobbel committed May 13, 2024
1 parent 4fd0eea commit ab9e6e0
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,33 @@
[![crates.io](https://img.shields.io/crates/v/narrow.svg)](https://crates.io/crates/narrow)
[![docs.rs](https://docs.rs/narrow/badge.svg)](https://docs.rs/narrow)

An experimental (work-in-progress) implementation of [Apache Arrow](https://arrow.apache.org).
An experimental (work-in-progress) statically typed implementation of [Apache Arrow](https://arrow.apache.org).

This crate provides types to support reading and writing instances of abstract data types in Arrow's in-memory data structures.

## Why

The development of this crate started because:

- The [arrow](https://docs.rs/arrow) crate provides APIs that mostly make sense when array types are only known at runtime, however, for applications with [types known at compile-time](https://docs.rs/arrow/latest/arrow/#type-erasure--trait-objects), using [trait objects](https://doc.rust-lang.org/book/ch17-02-trait-objects.html) and [downcasting](https://docs.rs/arrow/latest/arrow/array/fn.downcast_array.html) is not ergonomic.
- Builders for [nested](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_nested) array types are [complex](https://docs.rs/arrow/latest/arrow/array/struct.StructBuilder.html).

### Goals and non-goals

#### Goals

- Provide safe, efficient, statically typed Arrow array implementations
- Enable everyone using Rust to easily benefit from the Arrow ecosystem
- Provide zero-copy interop with the [arrow](https://docs.rs/arrow) crate
- Support custom buffer implementations e.g. to support accelerators
- Explore expressing Arrow concepts using the Rust type system, and mapping Rust concepts to Arrow

#### Non-goals

- Support arbitrary array types at runtime (the [arrow](https://docs.rs/arrow) crate supports this use case)
- Provide compute kernels
- Replace other Arrow implementations

## Docs

- [Docs (release)](https://docs.rs/narrow)
Expand Down

0 comments on commit ab9e6e0

Please sign in to comment.