Avatar for the Eventual-Inc user
Eventual-Inc
Daft
BlogDocsChangelog

Performance History

Latest Results

fix(file): commit zero and sub-part multipart writes with a single put
BABTUNA:feat/file-write-multipart
3 hours ago
chore(deps): lower opt-level for opendal-service-oss release builds (#7249) ## Problem Description At `opt-level=3`, `opendal-service-oss` does not finish compiling after **36 minutes of CPU**, spent single-threaded inside LLVM's SLP vectorizer: ``` llvm::slpvectorizer::BoUpSLP::buildTreeRec llvm::slpvectorizer::BoUpSLP::getScalarsVectorizationLegality llvm::SmallPtrSetImplBase::insert_imp_big ``` This is the same pathology already documented in `Cargo.toml` for `daft-parquet`, fixed the same way in #6690. `src/daft-io/Cargo.toml` enables the `services-oss` feature, so the crate is in the dependency graph of every release build. `build-wheel.yml` carries no cargo cache, so `nightly-publish-s3.yml` (cron `0 5 * * *`), `publish-dev-s3.yml`, and `publish-pypi.yml` each recompile it from scratch. The pass is single-threaded within one codegen unit, so it lands on the critical path. ## Changes Made ```toml [profile.release.package.opendal-service-oss] opt-level = 2 ``` Six lines including the comment, mirroring the `daft-parquet` override directly above it. ## Verification The cause is the pass, not the optimization level. Holding `opt-level=3` fixed and disabling only the SLP vectorizer: | configuration | result | |---|---| | `opt-level=3` | 36 min 05 s CPU in a full build, 34 min 27 s CPU isolated, neither finishing | | `opt-level=3` with `-C llvm-args=-vectorize-slp=false` | 30.18 s wall | | `opt-level=2` (this PR) | **3.17 s wall** | Scope is one crate. Of the service crates the opendal 0.57 split introduced, at `opt-level=3`: | crate | time | |---|---| | `opendal-service-oss` | exceeds 240 s, killed | | `opendal-service-fs` | 28.4 s | | `opendal-service-goosefs` | 18.1 s | | `opendal-service-cos` | 3.3 s | | `opendal-service-tos` | 3.1 s | | `opendal-service-obs` | 3.0 s | | `opendal-service-github` | 2.0 s | - Full `make build-release` with this applied: **136 s** cold. - The override is inherited by `release-lto`. Confirmed with `cargo build --profile release-lto -p opendal-service-oss -Z unstable-options --unit-graph`, which reports `opt_level=2, lto=fat`, so published wheels benefit. No test is included: this is a build-profile change, and its effect is compile time rather than behaviour. `opendal-service-oss` performs network IO against Alibaba Cloud OSS rather than compute, so `opt-level=2` cannot affect Daft's numerical results and should not measurably affect runtime. ## Related Issues Fixes #7247 --- This PR was made with the assistance of Opus 4.8.
main
3 hours ago
chore(file): format __init__.pyi with pinned ruff 0.14.10
BABTUNA:feat/file-write-ergonomics
3 hours ago
chore(deps): drop inline comment on opendal-service-oss profile
alejandro-soto-franco:chore/opendal-oss-opt-level
5 hours ago
Merge branch 'main' into issue-6901
Lucas61000:issue-6901
13 hours ago
fix(rotation): reject inputs that are not rotations instead of returning a plausible value Three problems, all of the same shape: an input that is not a rotation produced a number rather than a null. rotation_geodesic_angle clamps the cosine into [-1, 1] so that rounding cannot produce NaN for nearly identical frames. That clamp also swallowed nonsense: a matrix of [1..9] against the identity gives a cosine of 7, which clamped to 1 and reported an angle of exactly 0, meaning "no rotation". It now returns null when the cosine lies more than a tolerance outside the range, and still clamps within it. matrix_to_quat returned finite garbage for a matrix outside SO(3): [1..9] gave [0.25, -0.5, 0.25, 2.0]. Shepperd's method yields a unit quaternion exactly when its input is a rotation, so the norm of the result is a cheap and complete test. Scaled matrices, reflections, and negated identity are all rejected. Non-finite inputs were handled inconsistently: quat_inverse returned null while quat_multiply, quat_rotate, and matrix_to_quat propagated NaN. Every expression now treats a row holding NaN or an infinity the way it treats a null, decided once where rows are read rather than in each function. The tolerance is 1e-6, which is far above f64 rounding and above the ~1e-7 cost of widening a Float32 rotation matrix, and far below any real degeneracy. Verified against 200 random rotations and against f32 inputs: no genuine rotation is rejected. Docstrings now state the null policy, and that the order argument is case-insensitive. Throughput is unchanged at 42M rows/s.
alejandro-soto-franco:feat/rotation-expressions
14 hours ago
Merge branch 'main' into issue-3957
Lucas61000:issue-3957
14 hours ago
Merge branch 'main' into issue-2786
Lucas61000:issue-2786
14 hours ago

Latest Branches

CodSpeed Performance Gauge
-1%
feat(file): stream multipart uploads for File writes with abort on rollback#7216
4 hours ago
ca5ced9
BABTUNA:feat/file-write-multipart
CodSpeed Performance Gauge
0%
4 hours ago
7239578
BABTUNA:feat/file-write-ergonomics
CodSpeed Performance Gauge
0%
chore(deps): lower opt-level for opendal-service-oss release builds#7249
6 hours ago
531b166
alejandro-soto-franco:chore/opendal-oss-opt-level
© 2026 CodSpeed Technology
Home Terms Privacy Docs