This is an automated email from the ASF dual-hosted git repository.
alamb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-site.git
The following commit(s) were added to refs/heads/master by this push:
new 03fd97f521 ARROW-16846: [Website] June 2022 Rust Apache Arrow and
Parquet 16.0.0 Highlights (#220)
03fd97f521 is described below
commit 03fd97f521b658a47dad93c187291fe56afb8eb2
Author: Andrew Lamb <[email protected]>
AuthorDate: Thu Jun 16 17:00:13 2022 -0400
ARROW-16846: [Website] June 2022 Rust Apache Arrow and Parquet 16.0.0
Highlights (#220)
* June 2022 Rust Apache Arrow and Parquet 16.0.0 Highlights
* Update _posts/2022-06-11-rust-16.0.0.md
Co-authored-by: Raphael Taylor-Davies
<[email protected]>
* Minor edits
* Remove todos, clean up links
* Add more links, small edits
* style and typos
* Date for publishing
Co-authored-by: Raphael Taylor-Davies
<[email protected]>
Co-authored-by: Wakahisa <[email protected]>
---
_posts/2022-06-16-rust-16.0.0.md | 141 +++++++++++++++++++++++++++++++++++++++
1 file changed, 141 insertions(+)
diff --git a/_posts/2022-06-16-rust-16.0.0.md b/_posts/2022-06-16-rust-16.0.0.md
new file mode 100644
index 0000000000..37399caf01
--- /dev/null
+++ b/_posts/2022-06-16-rust-16.0.0.md
@@ -0,0 +1,141 @@
+---
+layout: post
+title: "June 2022 Rust Apache Arrow and Parquet 16.0.0 Highlights"
+date: "2022-06-16 00:00:00 -0600"
+author: pmc
+categories: [release]
+---
+<!--
+{% comment %}
+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.
+{% endcomment %}
+-->
+
+
+# Introduction
+
+We recently celebrated releasing version 16.0.0 of the Rust implementation of
[Apache Arrow](https://arrow.apache.org/). While we still get a few comments on
“most rust libraries use versions 0.x.0, why are you at 16.0.0?”, our
versioning scheme appears to be working well, and permits quick releases of new
features and API evolution in a semver compatible way without breaking
downstream projects.
+
+This post contains highlights from the last four months (versions
+10.0.0 to 16.0.0) of
+[arrow-rs](https://github.com/apache/arrow-rs/arrow) and
+[parquet-rs](https://github.com/apache/arrow-rs/parquet) development
+as well as a roadmap of future work. The full list of awesomeness can
+be found in the
+[CHANGELOG](https://github.com/apache/arrow-rs/blob/master/CHANGELOG.md).
+
+As you [may remember](https://github.com/apache/arrow-rs/issues/1715), the
arrow and parquet implementations are in the same crate, on the same release
schedule, and in this same blog. This is not for technical reasons, but helps
to keep the maintenance burden for delivering great Apache software reasonable,
and allows easier development of optimized conversion between Arrow <-->
Parquet formats.
+
+# Parquet
+The [parquet crate](https://crates.io/crates/parquet) has seen a return to
substantial improvements after being relatively dormant for several years. The
current major areas of focus are
+
+1. **Performance**: Improving the raw performance for reading and writing
mirroring the efforts that went into the C++ version a few years ago.
+2. **API Ease of Use**: Improving the API so it is easy to use efficiently
with modern Rust for two preeminent use cases: 1) reading from local disk and
2) reading `async`hronously from remote object stores.
+
+Some Major Highlights:
+
+* **Advanced Metadata Access**: API access to advanced parquet metadata, such
as [PageEncoding](https://github.com/apache/arrow-rs/pull/1322),
[BloomFilters](https://github.com/apache/arrow-rs/pull/1309) and
[PageIndex](https://github.com/apache/arrow-rs/pull/1762).
+* **Improved API Usability**: For example, the [parquet writer now uses
`std:io::Write`](https://github.com/apache/arrow-rs/pull/1719) rather than a
custom `ParquetWriter` trait, making it more interoperable with the rest of the
Rust ecosystem and the [projection API is easier to use with nested
types](https://github.com/apache/arrow-rs/pull/1716).
+* **Rewritten support for nested types (e.g. struct, lists)** : @tustvold has
revamped / rewritten support for
[reading](https://github.com/apache/arrow-rs/pull/1682) and
[writing](https://github.com/apache/arrow-rs/pull/1746) structured types, which
both improved the support for arbitrary nested schemas, and is 30% faster.
+
+Looking Forward:
+
+* **Even Faster**: We are actively working to make [writing even
faster](https://github.com/apache/arrow-rs/issues/1764) and expect to see some
major improvements over the next few releases.
+* **Object Store Integration**: Support for easily and efficiently
reading/writing to/from object storage is improving, and we expect it will soon
work well out of the box, fetching the minimal bytes, etc... More on this to
follow in a separate blog post.
+* **Parallel Decode**: We intend to transparently support high performance
parallel decoding of parquet to arrow arrays, when invoked from a
[rayon](https://crates.io/crates/rayon) threadpool.
+
+# Arrow
+
+The Rust arrow implementation has also had substantial improvements, in
addition to bug fixes and performance improvements.
+
+Some Major Highlights:
+
+* **Ecosystem Compatibility**: [@viriya](https://github.com/viirya) has put in
a massive effort to improve (and prove) compatibility with other Arrow
implementations via the Rust IPC integration tests. There have been major
improvements for corner cases involving nested structures, nullability, nested
dictionaries, etc.
+* **Safety**: We continue to improve the safety of arrow, and it is not
possible to trigger undefined behavior using `safe` apis -- checkout the
[README](https://github.com/apache/arrow-rs/tree/master/arrow#safety) and the
[module level
rustdocs](https://docs.rs/arrow/16.0.0/arrow/#safety-and-security) for more
details. Among other things, we have added additional validation checking to
[string kernels](https://github.com/apache/arrow-rs/issues/1575) and
[`DecimalArrays`](https://github. [...]
+* **Performance**: There have been several major performance improvements such
as [much faster filter
kernels](https://github.com/apache/arrow-rs/issues/1288), thanks to
[@tustvold](https://github.com/tustvold).
+* **Easier to Use APIs**: Several of the APIs are now easier to use (e.g.
[#1645](https://github.com/apache/arrow-rs/pull/1645) and
[#1739](https://github.com/apache/arrow-rs/pull/1739) which lowers the barrier
to entry of using `arrow-rs`, thanks to
[@HaoYang670](https://github.com/HaoYang670).
+* **DataType::Null support**: is much improved, such as [in the cast
kernels](https://github.com/apache/arrow-rs/pull/1572), thanks to
[@WinkerDu](https://github.com/WinkerDu).
+* **Improved JSON reader**: The JSON reader is [now easier to
use](https://github.com/apache/arrow-rs/pull/1451) thanks to
[@sum12](https://github.com/sum12).
+
+Looking Forward:
+* **Make ArrayData Easier to use Safely**: Some amount of `unsafe` will likely
always be required in arrow (for fast IPC, for example), but we are also
working to improve the underlying `ArrayData` structure to make it more
compatible with the ecosystem (e.g. use `Bytes`), support faster to decode from
parquet, and to avoid bugs related to offsets (slicing) which are a [frequent
pain point](https://github.com/apache/arrow-rs/issues/1799).
+* **FlightSQL** – we have some [initial support for Flight
SQL](https://github.com/apache/arrow-rs/pulls?q=flightsql) thank to
[@wangfenjin](https://github.com/wangfenjin) and
[@timvw](https://github.com/timvw), though we would love to see some additional
contributors. Such help can include a basic FlightSQL server, and starting work
on clients.
+
+Some areas looking for help include:
+
+* **Decimal 256 support**: <https://github.com/apache/arrow-rs/issues/131>
+* **Support for negative Decimal scale**:
<https://github.com/apache/arrow-rs/issues/1785>
+* **Support IPC file compression**:
<https://github.com/apache/arrow-rs/issues/1709>
+* **Zero-copy bitmap slicing**:
<https://github.com/apache/arrow-rs/issues/1802>
+
+
+# Contributors:
+
+While some open source software can be created mostly by a single contributor,
we believe the greatest software with the largest impact and reach is built
around its community. Thus, Arrow is part of the [Apache Software
Foundation](https://www.apache.org/) and our releases both past and present are
a result of our amazing community's effort.
+
+We would like to thank everyone who has contributed to the arrow-rs repository
since the `9.0.2` release. Keep up the great work and we look forward to
continued improvements:
+
+```console
+git shortlog -sn 9.0.0..16.0.0
+ 47 Liang-Chi Hsieh
+ 45 Raphael Taylor-Davies
+ 43 Andrew Lamb
+ 40 Remzi Yang
+ 8 Sergey Glushchenko
+ 7 Jörn Horstmann
+ 6 Shani Solomon
+ 6 dependabot[bot]
+ 5 Yang Jiang
+ 4 jakevin
+ 4 Chao Sun
+ 4 Yijie Shen
+ 3 kazuhiko kikuchi
+ 2 Sumit
+ 2 Ismail-Maj
+ 2 Kamil Konior
+ 2 tfeda
+ 2 Matthew Turner
+ 1 iyupeng
+ 1 ryan-jacobs1
+ 1 Alex Qyoun-ae
+ 1 tjwilson90
+ 1 Andy Grove
+ 1 Atef Sawaed
+ 1 Daniël Heres
+ 1 DuRipeng
+ 1 Helgi Kristvin Sigurbjarnarson
+ 1 Kun Liu
+ 1 Kyle Barron
+ 1 Marc Garcia
+ 1 Peter C. Jentsch
+ 1 Remco Verhoef
+ 1 Sven Cattell
+ 1 Thomas Peiselt
+ 1 Tiphaine Ruy
+ 1 Trent Feda
+ 1 Wang Fenjin
+ 1 Ze'ev Maor
+ 1 diana
+```
+
+# Join the community
+
+If you are interested in contributing to the Rust subproject in Apache Arrow,
you can find a list of open issues
+suitable for beginners
[here](https://github.com/apache/arrow-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
+and the full list [here](https://github.com/apache/arrow-rs/issues).
+
+Other ways to get involved include trying out Arrow on some of your data and
filing bug reports, and helping to
+improve the documentation.