apache / apache/arrow-rs

Support 32-bit architectures (arm32v7 / WASM32)

Open
#6,681 1 comment 0 reactions 0 assignees View on GitHub
question
Dominant language
Rust
Stars
3.6k
Forks
1.3k
Avg merge
2d 18h
Merged PRs (30d)
169

Description

This discussion aims to outline what would be required to add comprehensive support for the arm32v7 hardware architecture. Because it was in the top 3 best-selling computers of all time, and edge hardware is likely to remain in service for quite some time, and because edge is a particularly strong use case for Arrow.

And secondarily, consider how that might also benefit independent efforts to support WASM32.

Here are some of my own ideas:

1. Perform tests and clippy static checks for both amd64 and armhf. amd64 must pass, armhf can fail until official support is completed.
2. Tests that are specifically 64-bit in nature should not be attempted on 32-bit platforms (use `#[cfg(target_pointer_width = "64")]` around the test function). The POC at #6678 outlines most of these.
3. Scrutinize test coverage for `DecimalType`, `Decimal128Type` and `Decimal256Type` which do not work on armhf.
4. Scrutinize test coverage for `Time64MicrosecondType` and `Time64NanosecondType`, which do not work on armhf.
5. Consider adding a badge to the README outlining current hardware platform support.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the proof of concept in issue #6678 and the existing test and clippy setup for armhf. Examine coverage for DecimalType, Decimal128Type, Decimal256Type, Time64MicrosecondType, and Time64NanosecondType, then define what passing arm32v7 support and the proposed README platform badge should demonstrate.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust, wasm
Domain
embedded-iot, testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.