.. 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.

=====================
Implementation Status
=====================

The following tables summarize the features available in the various official
Arrow libraries.  Unless otherwise stated, the Python, R, Ruby and C/GLib
libraries follow the C++ Arrow library.

Data Types
==========

+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Data type         | C++   | Java  | Go    | JavaScript | C#    | Rust  | Julia |
| (primitive)       |       |       |       |            |       |       |       |
+===================+=======+=======+=======+============+=======+=======+=======+
| Null              | ✓     | ✓     |       |            |       |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Boolean           | ✓     | ✓     | ✓     | ✓          |  ✓    |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Int8/16/32/64     | ✓     | ✓     | ✓     | ✓          |  ✓    |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| UInt8/16/32/64    | ✓     | ✓     | ✓     | ✓          |  ✓    |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Float16           |       |       | ✓     |            |       |       | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Float32/64        | ✓     | ✓     | ✓     | ✓          |  ✓    |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Decimal128        | ✓     | ✓     |       |            |       |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Decimal256        | ✓     | ✓     |       |            |       |       | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Date32/64         | ✓     | ✓     | ✓     | ✓          |  ✓    |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Time32/64         | ✓     | ✓     | ✓     | ✓          |       |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Timestamp         | ✓     | ✓     | ✓     | ✓          |  ✓    |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Duration          | ✓     | ✓     | ✓     |            |       |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Interval          | ✓     | ✓     | ✓     |            |       |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Fixed Size Binary | ✓     | ✓     | ✓     | ✓          |       |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Binary            | ✓     | ✓     | ✓     | ✓          |  ✓    |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Large Binary      | ✓     | ✓     | ✓     | ✓          |       |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Utf8              | ✓     | ✓     | ✓     | ✓          |  ✓    |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Large Utf8        | ✓     | ✓     | ✓     | ✓          |       |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+

+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Data type         | C++   | Java  | Go    | JavaScript | C#    | Rust  | Julia |
| (nested)          |       |       |       |            |       |       |       |
+===================+=======+=======+=======+============+=======+=======+=======+
| Fixed Size List   | ✓     | ✓     | ✓     | ✓          |       |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| List              | ✓     | ✓     | ✓     | ✓          |  ✓    |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Large List        | ✓     | ✓     |       |            |       |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Struct            | ✓     | ✓     | ✓     | ✓          |  ✓    |  ✓    | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Map               | ✓     | ✓     |       | ✓          |       |       | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Dense Union       | ✓     | ✓     |       |            |       |       | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Sparse Union      | ✓     | ✓     |       |            |       |       | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+

+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Data type         | C++   | Java  | Go    | JavaScript | C#    | Rust  | Julia |
| (special)         |       |       |       |            |       |       |       |
+===================+=======+=======+=======+============+=======+=======+=======+
| Dictionary        | ✓     | ✓ (1) |       | ✓ (1)      |       | ✓ (1) | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+
| Extension         | ✓     | ✓     |       |            |       |       | ✓     |
+-------------------+-------+-------+-------+------------+-------+-------+-------+

Notes:

* \(1) Nested dictionaries not supported

.. seealso::
   The :ref:`format_columnar` specification.


IPC Format
==========

+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| IPC Feature                 | C++   | Java  | Go    | JavaScript | C#    | Rust  | Julia |
|                             |       |       |       |            |       |       |       |
+=============================+=======+=======+=======+============+=======+=======+=======+
| Arrow stream format         | ✓     | ✓     | ✓     | ✓          |  ✓    |  ✓    | ✓     |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Arrow file format           | ✓     | ✓     | ✓     | ✓          |  ✓    |  ✓    | ✓     |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Record batches              | ✓     | ✓     | ✓     | ✓          |  ✓    |  ✓    | ✓     |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Dictionaries                | ✓     | ✓     | ✓     | ✓          |       |  ✓    | ✓     |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Replacement dictionaries    | ✓     | ✓     |       |            |       |       | ✓     |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Delta dictionaries          | ✓ (1) |       |       |            |       |       | ✓     |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Tensors                     | ✓     |       |       |            |       |       |       |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Sparse tensors              | ✓     |       |       |            |       |       |       |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Buffer compression          | ✓     |       |       |            |       |       | ✓     |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Endianness conversion       | ✓ (2) |       |       |            |       |       |       |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Custom schema metadata      | ✓     | ✓     |       |            |       |  ✓    | ✓     |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+

Notes:

* \(1) Delta dictionaries not supported on nested dictionaries

* \(2) Data with non-native endianness can be byte-swapped automatically when reading.

.. seealso::
   The :ref:`format-ipc` specification.


Flight RPC
==========

+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Flight RPC Feature          | C++   | Java  | Go    | JavaScript | C#    | Rust  | Julia |
|                             |       |       |       |            |       |       |       |
+=============================+=======+=======+=======+============+=======+=======+=======+
| gRPC transport              | ✓     | ✓     |       |            | ✓ (1) |       |       |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| gRPC + TLS transport        | ✓     | ✓     |       |            | ✓     |       |       |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| RPC error codes             | ✓     | ✓     |       |            | ✓     |       |       |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Authentication handlers     | ✓     | ✓     |       |            | ✓ (2) |       |       |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Custom client middleware    | ✓     | ✓     |       |            |       |       |       |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+
| Custom server middleware    | ✓     | ✓     |       |            |       |       |       |
+-----------------------------+-------+-------+-------+------------+-------+-------+-------+

Notes:

* \(1) No support for handshake or DoExchange.
* \(2) Support using AspNetCore authentication handlers.

.. seealso::
   The :ref:`flight-rpc` specification.


C Data Interface
================

+-----------------------------+-------+--------+-------+-------+
| Feature                     | C++   | Python | R     | Rust  |
|                             |       |        |       |       |
+=============================+=======+========+=======+=======+
| Schema export               | ✓     | ✓      | ✓     | ✓     |
+-----------------------------+-------+--------+-------+-------+
| Array export                | ✓     | ✓      | ✓     | ✓     |
+-----------------------------+-------+--------+-------+-------+
| Schema import               | ✓     | ✓      | ✓     | ✓     |
+-----------------------------+-------+--------+-------+-------+
| Array import                | ✓     | ✓      | ✓     | ✓     |
+-----------------------------+-------+--------+-------+-------+

.. seealso::
   The :ref:`C Data Interface <c-data-interface>` specification.


C Stream Interface (experimental)
=================================

+-----------------------------+-------+--------+
| Feature                     | C++   | Python |
|                             |       |        |
+=============================+=======+========+
| Stream export               | ✓     | ✓      |
+-----------------------------+-------+--------+
| Stream import               | ✓     | ✓      |
+-----------------------------+-------+--------+

.. seealso::
   The :ref:`C Stream Interface <c-stream-interface>` specification.


Third-Party Data Formats
========================

+-----------------------------+---------+---------+-------+------------+-------+---------+-------+
| Format                      | C++     | Java    | Go    | JavaScript | C#    | Rust    | Julia |
|                             |         |         |       |            |       |         |       |
+=============================+=========+=========+=======+============+=======+=========+=======+
| Avro                        |         | R       |       |            |       |         |       |
+-----------------------------+---------+---------+-------+------------+-------+---------+-------+
| CSV                         | R       |         | R/W   |            |       | R/W     | R/W   |
+-----------------------------+---------+---------+-------+------------+-------+---------+-------+
| ORC                         | R       |         |       |            |       |         |       |
+-----------------------------+---------+---------+-------+------------+-------+---------+-------+
| Parquet                     | R/W     |         |       |            |       | R/W (1) |       |
+-----------------------------+---------+---------+-------+------------+-------+---------+-------+

Notes:

* *R* = Read supported

* *W* = Write supported

* \(1) Nested read/write not supported
