Skip to content

Commit

Permalink
Add deprecation notice (jorgecarleitao#1429)
Browse files Browse the repository at this point in the history
  • Loading branch information
tustvold committed Apr 12, 2023
1 parent 33f6ba1 commit ea0b81e
Showing 1 changed file with 54 additions and 28 deletions.
82 changes: 54 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,47 +15,68 @@ for a general introduction on how to use this crate, and
[API docs](https://jorgecarleitao.github.io/arrow2/main/docs/arrow2)
for a detailed documentation of each of its APIs.

## 2023-04-12: Deprecation Notice

Development has been merged with [Apache Arrow Rust (arrow-rs)], see [#arrow1176] and [#1429].

The arrow2 codebase will continue to be maintained, at least in the short-term, to allow people time to migrate,
however, codebases are encouraged to migrate to using arrow-rs.

Recent versions of arrow2 provide [interoperability] with arrow-rs to facilitate this. Feel free to raise any issues,
functionality or otherwise, in the [Apache Arrow Issue Tracker]

[interoperability]: https://github.com/jorgecarleitao/arrow2/pull/1446

[Apache Arrow Rust (arrow-rs)]: https://github.com/apache/arrow-rs

[#arrow1176]: https://github.com/apache/arrow-rs/issues/1176

[Apache Arrow Issue Tracker]: https://github.com/apache/arrow-rs/issues

[#1429]: https://github.com/jorgecarleitao/arrow2/issues/1429

## Features

* Most feature-complete implementation of Apache Arrow after the reference implementation (C++)
* Decimal 256 unsupported (not a Rust native type)
* Decimal 256 unsupported (not a Rust native type)
* C data interface supported for all Arrow types (read and write)
* C stream interface supported for all Arrow types (read and write)
* Full interoperability with Rust's `Vec`
* MutableArray API to work with bitmaps and arrays in-place
* Full support for timestamps with timezones, including arithmetics that take
timezones into account
* Support to read from, and write to:
* CSV
* Apache Arrow IPC (all types)
* Apache Arrow Flight (all types)
* Apache Parquet (except deep nested types)
* Apache Avro (all types)
* NJSON
* ODBC (some types)
* CSV
* Apache Arrow IPC (all types)
* Apache Arrow Flight (all types)
* Apache Parquet (except deep nested types)
* Apache Avro (all types)
* NJSON
* ODBC (some types)
* Extensive suite of compute operations
* aggregations
* arithmetics
* cast
* comparison
* sort and merge-sort
* boolean (AND, OR, etc) and boolean kleene
* filter, take
* hash
* if-then-else
* nullif
* temporal (day, month, week day, hour, etc.)
* window
* ... and more ...
* aggregations
* arithmetics
* cast
* comparison
* sort and merge-sort
* boolean (AND, OR, etc) and boolean kleene
* filter, take
* hash
* if-then-else
* nullif
* temporal (day, month, week day, hour, etc.)
* window
* ... and more ...
* Extensive set of cargo feature flags to reduce compilation time and binary size
* Fully-decoupled IO between CPU-bounded and IO-bounded tasks, allowing
this crate to both be used in `async` contexts without blocking and leverage parallelism
* Fastest known implementation of Avro and Parquet (e.g. faster than the official
* Fastest known implementation of Avro and Parquet (e.g. faster than the official
C++ implementations)

## Safety and Security

This crate uses `unsafe` when strictly necessary:

* when the compiler can't prove certain invariants and
* FFI

Expand All @@ -79,6 +100,7 @@ We are actively addressing this.
## Integration tests

Our tests include roundtrip against:

* Apache Arrow IPC (both little and big endian) generated by C++, Java, Go, C# and JS
implementations.
* Apache Parquet format (in its different configurations) generated by Arrow's C++ and
Expand All @@ -97,10 +119,13 @@ we also use the `0.x.y` versioning, since we are iterating over the API.
This repo and crate's primary goal is to offer a safe Rust implementation of the Arrow specification.
As such, it

* MUST NOT implement any logical type other than the ones defined on the arrow specification, [schema.fbs](https://github.com/apache/arrow/blob/master/format/Schema.fbs).
* MUST NOT implement any logical type other than the ones defined on the arrow
specification, [schema.fbs](https://github.com/apache/arrow/blob/master/format/Schema.fbs).
* MUST lay out memory according to the [arrow specification](https://arrow.apache.org/docs/format/Columnar.html)
* MUST support reading from and writing to the [C data interface](https://arrow.apache.org/docs/format/CDataInterface.html) at zero-copy.
* MUST support reading from, and writing to, the [IPC specification](https://arrow.apache.org/docs/python/ipc.html), which it MUST verify against golden files available [here](https://github.com/apache/arrow-testing).
* MUST support reading from and writing to
the [C data interface](https://arrow.apache.org/docs/format/CDataInterface.html) at zero-copy.
* MUST support reading from, and writing to, the [IPC specification](https://arrow.apache.org/docs/python/ipc.html),
which it MUST verify against golden files available [here](https://github.com/apache/arrow-testing).

Design documents about each of the parts of this repo are available on their respective READMEs.

Expand Down Expand Up @@ -131,11 +156,12 @@ expectations about API stability that are incompatible with this effort.

Licensed under either of

* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)

at your option.

### Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as
defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

0 comments on commit ea0b81e

Please sign in to comment.