# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

[package]
name = "arrow"
version = "4.0.0-SNAPSHOT"
description = "Rust implementation of Apache Arrow"
homepage = "https://github.com/apache/arrow-rs"
repository = "https://github.com/apache/arrow-rs"
authors = ["Apache Arrow <dev@arrow.apache.org>"]
license = "Apache-2.0"
keywords = [ "arrow" ]
include = [
    "benches/*.rs",
    "src/**/*.rs",
    "Cargo.toml",
]
edition = "2018"

[lib]
name = "arrow"
path = "src/lib.rs"

[dependencies]
serde = { version = "1.0", features = ["rc"] }
serde_derive = "1.0"
serde_json = { version = "1.0", features = ["preserve_order"] }
indexmap = "1.6"
rand = "0.7"
csv = "1.1"
num = "0.3"
regex = "1.3"
lazy_static = "1.4"
packed_simd = { version = "0.3.4", optional = true, package = "packed_simd_2" }
chrono = "0.4"
flatbuffers = "=0.8.4"
hex = "0.4"
prettytable-rs = { version = "0.8.0", optional = true }
lexical-core = "^0.7"
multiversion = "0.6.1"

[features]
default = []
avx512 = []
simd = ["packed_simd"]
prettyprint = ["prettytable-rs"]
# this is only intended to be used in single-threaded programs: it verifies that
# all allocated memory is being released (no memory leaks).
# See README for details
memory-check = []

[dev-dependencies]
criterion = "0.3"
flate2 = "1"
tempfile = "3"

[build-dependencies]
cfg_aliases = "0.1"

[[bench]]
name = "aggregate_kernels"
harness = false

[[bench]]
name = "array_from_vec"
harness = false

[[bench]]
name = "builder"
harness = false

[[bench]]
name = "buffer_bit_ops"
harness = false

[[bench]]
name = "boolean_kernels"
harness = false

[[bench]]
name = "arithmetic_kernels"
harness = false

[[bench]]
name = "cast_kernels"
harness = false

[[bench]]
name = "comparison_kernels"
harness = false

[[bench]]
name = "filter_kernels"
harness = false

[[bench]]
name = "take_kernels"
harness = false

[[bench]]
name = "length_kernel"
harness = false

[[bench]]
name = "bit_length_kernel"
harness = false

[[bench]]
name = "sort_kernel"
harness = false

[[bench]]
name = "csv_writer"
harness = false

[[bench]]
name = "json_reader"
harness = false

[[bench]]
name = "equal"
harness = false

[[bench]]
name = "array_slice"
harness = false

[[bench]]
name = "concatenate_kernel"
harness = false

[[bench]]
name = "mutable_array"
harness = false

[[bench]]
name = "buffer_create"
harness = false
