Skip to content

Commit 722bfb7

Browse files
authored
chore: Prepare 0.5 release (#1293)
1 parent d10eaa3 commit 722bfb7

File tree

11 files changed

+136
-63
lines changed

11 files changed

+136
-63
lines changed

Cargo.lock

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ exclude = ["js"]
1717
resolver = "2"
1818

1919
[workspace.package]
20-
version = "0.4.0"
20+
version = "0.5.0"
2121
authors = ["Kyle Barron <[email protected]>"]
2222
edition = "2024"
2323
license = "MIT OR Apache-2.0"
@@ -49,15 +49,15 @@ futures = "0.3"
4949
geo = "0.30.0"
5050
geo-traits = "0.3.0"
5151
geo-types = "0.7.16"
52-
geoarrow-array = { path = "rust/geoarrow-array", version = "0.4" }
53-
geoarrow-cast = { path = "rust/geoarrow-cast", version = "0.4" }
54-
geoarrow-flatgeobuf = { path = "rust/geoarrow-flatgeobuf", version = "0.4" }
55-
geoarrow-geo = { path = "rust/geoarrow-geo", version = "0.4" }
56-
geoarrow-schema = { path = "rust/geoarrow-schema", version = "0.4" }
57-
geoarrow-test = { path = "rust/geoarrow-test", version = "0.4" }
52+
geoarrow-array = { path = "rust/geoarrow-array", version = "0.5" }
53+
geoarrow-cast = { path = "rust/geoarrow-cast", version = "0.5" }
54+
geoarrow-flatgeobuf = { path = "rust/geoarrow-flatgeobuf", version = "0.5" }
55+
geoarrow-geo = { path = "rust/geoarrow-geo", version = "0.5" }
56+
geoarrow-schema = { path = "rust/geoarrow-schema", version = "0.5" }
57+
geoarrow-test = { path = "rust/geoarrow-test", version = "0.5" }
5858
geodatafusion = { path = "rust/geodatafusion" }
5959
geohash = "0.13.1"
60-
geoparquet = { path = "rust/geoparquet", version = "0.4" }
60+
geoparquet = { path = "rust/geoparquet", version = "0.5" }
6161
geos = { version = "10", features = ["v3_10_0"] }
6262
geozero = "0.14"
6363
http-range-client = { version = "0.9", default-features = false }

README.md

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# geoarrow-rs
22

3-
A Rust implementation of the [GeoArrow](https://github.com/geoarrow/geoarrow) specification and bindings to [GeoRust algorithms](https://github.com/georust/geo) for efficient spatial operations on GeoArrow memory.
3+
A Rust implementation of the [GeoArrow](https://github.com/geoarrow/geoarrow) specification and bindings to [GeoRust algorithms](https://github.com/georust/geo) for efficient spatial operations on GeoArrow memory. This implements GeoArrow [version 0.2.0](https://github.com/geoarrow/geoarrow/releases/tag/v0.2.0).
44

5-
This repository also includes [Python bindings](https://github.com/geoarrow/geoarrow-rs/blob/main/python/README.md) and [JavaScript (WebAssembly) bindings](https://github.com/geoarrow/geoarrow-rs/blob/main/js/README.md), wrapping the GeoArrow memory layout and offering vectorized geometry operations.
5+
This repository also includes [Python bindings](https://github.com/geoarrow/geoarrow-rs/blob/main/python/README.md) and [JavaScript (WebAssembly) bindings](https://github.com/geoarrow/geoarrow-rs/blob/main/js/README.md), wrapping the GeoArrow memory layout and offering file format readers and writers and vectorized geometry operations.
66

77
## Documentation
88

@@ -14,30 +14,6 @@ This repository also includes [Python bindings](https://github.com/geoarrow/geoa
1414
- [Create your own Rust-JavaScript library with `wasm-bindgen`](https://docs.rs/geoarrow-wasm/latest/geoarrow_wasm/) -->
1515
<!-- - [Create your own Rust-Python library with `pyo3-geoarrow`](https://docs.rs/geoarrow-wasm/latest/geoarrow_wasm/) -->
1616

17-
## Project Status
18-
19-
May 7, 2025
20-
21-
The `geoarrow-rs` project is about 3 years old. Early prototyping started inside the [`geopolars`](https://github.com/geopolars/geopolars) repo before deciding I needed something more general (not tied to Polars) and creating first [`geopolars/geoarrow`](https://github.com/geopolars/geoarrow) and then lastly [`geoarrow/geoarrow-rs`](https://github.com/geoarrow/geoarrow-rs).
22-
23-
However despite its age, the `geoarrow` crate suffers from a couple issues. For one, it took a while to figure out the right abstractions. And learning Rust at the same time didn't help. The `geoarrow` crate is also too monolithic. Some parts of `geoarrow` are production ready, but there's decidedly a _lot_ of code in `geoarrow` that is _not_ production ready. And it's very much not clear which parts of `geoarrow` are production ready or not.
24-
25-
But I think `geoarrow-rs` has potential to form part of the core geospatial data engineering stack in Rust. And as part of that, we need a better delineation of which parts of the code are stable or not. As such, the `geoarrow-rs` repo is **currently ongoing a large refactor from a single crate to a monorepo of smaller crates, each with a more well-defined scope**.
26-
27-
As of May 2025, avoid using the `geoarrow` crate and instead use the newer crates with a smaller scope, like `geoarrow-array`.
28-
29-
These smaller crates are designed to mimic the upstream `arrow` crates as much as possible.
30-
31-
### Stability
32-
33-
- `geoarrow-schema`: Pretty stable
34-
- `geoarrow-array`: Pretty stable
35-
- `geoarrow-cast`: Pretty stable
36-
- `geoarrow-flatgeobuf`: Somewhat stable.
37-
- `geoparquet`: Somewhat stable. A decently large refactor is expected in <https://github.com/geoarrow/geoarrow-rs/pull/1089>.
38-
- Other Rust crates: unstable
39-
- Python bindings: unstable
40-
- JS bindings: unstable
4117

4218
## References
4319

docs/mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ extra:
1717

1818
nav:
1919
- index.md
20+
- rust.md
2021

2122
watch:
2223
- source

python/README.md

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,10 @@ Python bindings to the [GeoArrow Rust implementation](https://github.com/geoarro
99
This library contains Python bindings to the [GeoArrow Rust implementation](https://github.com/geoarrow/geoarrow-rs).
1010

1111
- **Fast**: Connects to algorithms implemented in [GeoRust](https://georust.org/), which compile to native code.
12-
- **Parallel**: Multi-threading is enabled out-of-the-box for all operations on chunked data structures.
1312
- **Self-contained**: `pyproj` is the only Python dependency.
1413
- **Easy to install**: Distributed as static binary wheels with zero C dependencies.
1514
- **Static typing**: type hints for all operations.
16-
- **Interoperable ecosystem**: Efficient data exchange with other libraries in the Python Arrow and GeoArrow ecosystems. , such as [geoarrow-c](https://github.com/geoarrow/geoarrow-c/tree/main/python) or [lightning-fast map rendering](https://github.com/developmentseed/lonboard).
15+
- **Interoperable ecosystem**: Efficient data exchange with other libraries in the Python Arrow and GeoArrow ecosystems, such as [geoarrow-c](https://github.com/geoarrow/geoarrow-c/tree/main/python) or [lightning-fast map rendering](https://github.com/developmentseed/lonboard).
1716

1817
## Documentation
1918

@@ -34,10 +33,4 @@ In order to obtain relevant modules, you should install them from PyPI directly,
3433
```
3534
pip install geoarrow-rust-core geoarrow-rust-compute geoarrow-rust-io
3635
```
37-
38-
Future potential modules:
39-
40-
- `geoarrow-rust-geos`: [GEOS](https://libgeos.org/)-based algorithms on GeoArrow memory.
41-
- `geoarrow-rust-proj`: [PROJ](https://proj.org/en/9.3/)-based coordinate reprojection on GeoArrow memory.
42-
4336
See [DEVELOP.md](DEVELOP.md) for more information on developing and building the Python bindings.

rust/README.md

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,31 @@
55

66
A Rust implementation of the [GeoArrow](https://github.com/geoarrow/geoarrow) specification.
77

8-
<!-- and bindings to [GeoRust algorithms](https://github.com/georust/geo) for efficient spatial operations on GeoArrow memory. -->
9-
108
## Crates
119

12-
The `geoarrow-rs` repo is currently undergoing a large refactor from a single crate (`geoarrow`) to a monorepo of smaller crates, each with a more well-defined scope. As of May 2025, avoid using the `geoarrow` crate and instead use the newer crates with a smaller scope, like `geoarrow-array` and `geoarrow-schema`.
10+
| Name | Description | Version | Docs |
11+
| --------------------- | --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
12+
| `geoarrow` | Amalgam crate which re-exports items from `geoarrow-array`, `geoarrow-cast`, and `geoarrow-schema`. | [![Crates.io](https://img.shields.io/crates/v/geoarrow)](https://crates.io/crates/geoarrow) | [![docs.rs](https://img.shields.io/docsrs/geoarrow?label=docs.rs)](https://docs.rs/geoarrow) |
13+
| `geoarrow-array` | GeoArrow array definitions. | [![Crates.io](https://img.shields.io/crates/v/geoarrow-array)](https://crates.io/crates/geoarrow-array) | [![docs.rs](https://img.shields.io/docsrs/geoarrow-array?label=docs.rs)](https://docs.rs/geoarrow-array) |
14+
| `geoarrow-cast` | Functions for converting from one GeoArrow geometry type to another. | [![Crates.io](https://img.shields.io/crates/v/geoarrow-cast)](https://crates.io/crates/geoarrow-cast) | [![docs.rs](https://img.shields.io/docsrs/geoarrow-cast?label=docs.rs)](https://docs.rs/geoarrow-cast) |
15+
| `geoarrow-flatgeobuf` | Reader and writer for FlatGeobuf files to GeoArrow memory. | [![Crates.io](https://img.shields.io/crates/v/geoarrow-flatgeobuf)](https://crates.io/crates/geoarrow-flatgeobuf) | [![docs.rs](https://img.shields.io/docsrs/geoarrow-flatgeobuf?label=docs.rs)](https://docs.rs/geoarrow-flatgeobuf) |
16+
| `geoarrow-schema` | GeoArrow geometry type and metadata definitions. | [![Crates.io](https://img.shields.io/crates/v/geoarrow-schema)](https://crates.io/crates/geoarrow-schema) | [![docs.rs](https://img.shields.io/docsrs/geoarrow-schema?label=docs.rs)](https://docs.rs/geoarrow-schema) |
17+
| `geoparquet` | GeoParquet reader and writer. | [![Crates.io](https://img.shields.io/crates/v/geoparquet)](https://crates.io/crates/geoparquet) | [![docs.rs](https://img.shields.io/docsrs/geoparquet?label=docs.rs)](https://docs.rs/geoparquet) |
18+
19+
Additionally we are working on a few other crates that are not yet distributed on crates.io:
1320

14-
| Name | Description | Stability | Version | Docs |
15-
| --------------------- | -------------------------------------------------------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
16-
| `geoarrow-array` | GeoArrow array definitions. | Pretty stable | [![Crates.io](https://img.shields.io/crates/v/geoarrow-array)](https://crates.io/crates/geoarrow-array) | [![docs.rs](https://img.shields.io/docsrs/geoarrow-array?label=docs.rs)](https://docs.rs/geoarrow-array) |
17-
| `geoarrow-cast` | Functions for converting from one GeoArrow geometry type to another. | Pretty stable | [![Crates.io](https://img.shields.io/crates/v/geoarrow-cast)](https://crates.io/crates/geoarrow-cast) | [![docs.rs](https://img.shields.io/docsrs/geoarrow-cast?label=docs.rs)](https://docs.rs/geoarrow-cast) |
18-
| `geoarrow-flatgeobuf` | Reader and writer for FlatGeobuf files to GeoArrow memory. | Somewhat stable | [![Crates.io](https://img.shields.io/crates/v/geoarrow-flatgeobuf)](https://crates.io/crates/geoarrow-flatgeobuf) | [![docs.rs](https://img.shields.io/docsrs/geoarrow-flatgeobuf?label=docs.rs)](https://docs.rs/geoarrow-flatgeobuf) |
19-
| `geoarrow-schema` | GeoArrow geometry type and metadata definitions. | Pretty stable | [![Crates.io](https://img.shields.io/crates/v/geoarrow-schema)](https://crates.io/crates/geoarrow-schema) | [![docs.rs](https://img.shields.io/docsrs/geoarrow-schema?label=docs.rs)](https://docs.rs/geoarrow-schema) |
20-
| `geoparquet` | GeoParquet reader and writer. | Pretty stable | [![Crates.io](https://img.shields.io/crates/v/geoparquet)](https://crates.io/crates/geoparquet) | [![docs.rs](https://img.shields.io/docsrs/geoparquet?label=docs.rs)](https://docs.rs/geoparquet) |
21+
- `geoarrow-geo`: Integration with `geo` crate for spatial algorithms.
22+
- `geoarrow-geos`: Integration with `geos` crate for spatial algorithms.
23+
- `geodatafusion`: Integration with DataFusion.
24+
- `geodatafusion-flatgeobuf`: FlatGeobuf TableProvider for DataFusion.
2125

2226
## Versioning
2327

24-
These crates may diverge in versioning to allow for some sub-crates to receive breaking changes while not forcing a breaking version change to all crates. However, all crates will receive a new breaking version at least every 3 months, as the upstream `arrow-rs` crates currently publish a breaking version every 3 months.
28+
These crates may possibly diverge in versioning in the future to allow for some sub-crates to receive breaking changes while not forcing a breaking version change to all crates. However, all crates will receive a new breaking version _at least_ every 3 months, as the upstream `arrow` crates currently publish a breaking version every 3 months.
29+
30+
## Version compatibility
31+
32+
| geoarrow | arrow-rs |
33+
| -------- | -------- |
34+
| 0.4.x | 55 |
35+
| 0.5.x | 56 |

rust/geoarrow-array/CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Changelog
2+
3+
**This is the changelog for the core Rust library**. There's a [separate changelog](./python/CHANGELOG.md) for the Python bindings, and there will be another for the JS bindings.
4+
5+
## 0.5.0 - 2025-08-07
6+
7+
- feat(geoarrow-array): implement GeozeroGeometry trait on WkbView and WktView arrays by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1187
8+
- feat(geoarrow-array): ergonomic default implementations of GeoArrowArray trait by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1188
9+
- feat(geoarrow-array): Implement GeozeroGeometry for RectArray by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1189
10+
- feat(geoarrow-array): Add `GeoArrowArrayReader` trait and `GeoArrowArrayIterator` struct by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1196
11+
- fix(geoarrow-array): inconsistencies between code and comment by @YichiZhang0613 in https://github.com/geoarrow/geoarrow-rs/pull/1206
12+
- feat(geoarrow-array): Pass down arbitrary parameters in `downcast_geoarrow_array` by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1230
13+
- feat(geoarrow-array): add shrink_to_fit methods to builders by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1268
14+
- perf(geoarrow-array): Cast Wkb/Wkt to WkbViewArray/WktViewArray without parsing/re-encoding geometries by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1263
15+
- fix(geoarrow-array): Allow pushing Rect to MultiPolygonBuilder by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1269
16+
- fix(geoarrow-array): Fix `num_bytes` calculations for non-XY dimensions by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1277
17+
- **Breaking** fix(geoarrow-array)!: WkbBuilder should return result when appending geometries by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1271
18+
19+
---
20+
21+
Previous releases were documented in the top-level `CHANGELOG.md` file.

rust/geoarrow-cast/CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Changelog
2+
3+
**This is the changelog for the core Rust library**. There's a [separate changelog](./python/CHANGELOG.md) for the Python bindings, and there will be another for the JS bindings.
4+
5+
## 0.5.0 - 2025-08-07
6+
7+
No changes.
8+
9+
---
10+
11+
Previous releases were documented in the top-level `CHANGELOG.md` file.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Changelog
2+
3+
**This is the changelog for the core Rust library**. There's a [separate changelog](./python/CHANGELOG.md) for the Python bindings, and there will be another for the JS bindings.
4+
5+
## 0.5.0 - 2025-08-07
6+
7+
- feat(flatgeobuf): Restore the `FlatGeobuf` reader by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1057
8+
- feat(flatgeobuf): Remove wrappers around Fgb reader objects, simplify API by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1250
9+
- feat(geoarrow-flatgeobuf): Improved schema inference & expose more from header by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1260
10+
- chore(geoarrow-flatgeobuf): update flatgeobuf dep to 5.0 by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1261
11+
- test(geoarrow-flatgeobuf): More tests for FlatGeobuf writer by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1285
12+
- fix(geoarrow-flatgeobuf): Fix calculation of `num_rows_remaining` to allocate record batch builders correctly by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1286
13+
- refactor(geoarrow-flatgeobuf): Improved API for passing in or inferring schema by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1272
14+
15+
---
16+
17+
Previous releases were documented in the top-level `CHANGELOG.md` file.

rust/geoarrow-schema/CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Changelog
2+
3+
**This is the changelog for the core Rust library**. There's a [separate changelog](./python/CHANGELOG.md) for the Python bindings, and there will be another for the JS bindings.
4+
5+
## 0.5.0 - 2025-08-07
6+
7+
- **Breaking**: Use GeoArrowError in TryFrom from geo_traits::Dimension by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1266
8+
- Check inferred dimension against list size for interleaved point input by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1267
9+
- **Breaking**: Better distinction of creating GeoArrowType depending on extension metadata by @kylebarron in https://github.com/geoarrow/geoarrow-rs/pull/1275
10+
11+
---
12+
13+
Previous releases were documented in the top-level `CHANGELOG.md` file.

0 commit comments

Comments
 (0)