Skip to content

Commit ade9629

Browse files
committed
feature(cloud): Improved cloud I/O read helpers, more to come soon; documentation, test, and linting cleanup
1 parent 67531b5 commit ade9629

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+2644
-1335
lines changed

.github/workflows/ci.yml

Lines changed: 44 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,7 @@ name: CI
33
on:
44
push:
55
branches: ['**']
6-
paths:
7-
- '**.rs'
8-
- '**/Cargo.toml'
9-
- '**/Cargo.lock'
10-
- '.github/workflows/ci.yml'
11-
pull_request:
12-
paths:
13-
- '**.rs'
14-
- '**/Cargo.toml'
15-
- '**/Cargo.lock'
16-
- '.github/workflows/ci.yml'
6+
pull_request: {}
177

188
env:
199
CARGO_TERM_COLOR: always
@@ -27,7 +17,7 @@ jobs:
2717
- uses: actions/checkout@v5
2818

2919
- name: Install Rust
30-
uses: dtolnay/rust-toolchain@stable
20+
uses: dtolnay/rust-toolchain@nightly
3121
with:
3222
components: clippy
3323

@@ -63,7 +53,7 @@ jobs:
6353
steps:
6454
- uses: actions/checkout@v5
6555

66-
- name: Install Rust
56+
- name: Install Rust (nightly + llvm-tools)
6757
uses: dtolnay/rust-toolchain@nightly
6858
with:
6959
components: llvm-tools-preview
@@ -105,14 +95,44 @@ jobs:
10595
fail_ci_if_error: false
10696
token: ${{ secrets.CODECOV_TOKEN }}
10797

98+
docs:
99+
name: Documentation
100+
runs-on: ubuntu-latest
101+
steps:
102+
- uses: actions/checkout@v5
103+
104+
- name: Install Rust (nightly)
105+
uses: dtolnay/rust-toolchain@nightly
106+
107+
- name: Cache cargo registry
108+
uses: actions/cache@v4
109+
with:
110+
path: ~/.cargo/registry
111+
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
112+
113+
- name: Cache cargo index
114+
uses: actions/cache@v4
115+
with:
116+
path: ~/.cargo/git
117+
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
118+
119+
- name: Cache cargo build
120+
uses: actions/cache@v4
121+
with:
122+
path: target
123+
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
124+
125+
- name: Build docs
126+
run: cargo doc --workspace --all-features --no-deps
127+
108128
examples:
109129
name: Examples
110130
runs-on: ubuntu-latest
111131
steps:
112132
- uses: actions/checkout@v5
113133

114-
- name: Install Rust
115-
uses: dtolnay/rust-toolchain@stable
134+
- name: Install Rust (nightly)
135+
uses: dtolnay/rust-toolchain@nightly
116136

117137
- name: Cache cargo registry
118138
uses: actions/cache@v4
@@ -146,22 +166,23 @@ jobs:
146166
release:
147167
name: Semantic Release
148168
runs-on: ubuntu-latest
149-
needs: [clippy, test, examples]
150-
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
169+
needs: [clippy, test, docs, examples]
170+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
151171
environment: main
152172
permissions:
153173
contents: write
154174
issues: write
155175
pull-requests: write
156176
id-token: write
177+
157178
steps:
158179
- uses: actions/checkout@v5
159180
with:
160181
fetch-depth: 0
161182
persist-credentials: false
162183

163-
- name: Install Rust
164-
uses: dtolnay/rust-toolchain@stable
184+
- name: Install Rust (nightly)
185+
uses: dtolnay/rust-toolchain@nightly
165186

166187
- name: Cache cargo registry
167188
uses: actions/cache@v4
@@ -181,9 +202,6 @@ jobs:
181202
path: target
182203
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
183204

184-
- name: Build package
185-
run: cargo build --release --all-features
186-
187205
- name: Setup Node.js
188206
uses: actions/setup-node@v6
189207
with:
@@ -195,22 +213,14 @@ jobs:
195213
semantic-release@latest \
196214
@semantic-release/git@latest \
197215
@semantic-release/changelog@latest \
198-
@semantic-release/exec@latest \
216+
@semantic-release/commit-analyzer@latest \
217+
@semantic-release/release-notes-generator@latest \
218+
@semantic-release/github@latest \
199219
@semantic-release-cargo/semantic-release-cargo \
200220
conventional-changelog-conventionalcommits@latest
201221
202222
- name: Semantic Release
203-
id: semantic
204223
env:
205224
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
206225
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_TOKEN }}
207-
run: |
208-
npx semantic-release
209-
echo "new_release_published=$([ -f .semanticRelease ])" >> $GITHUB_OUTPUT
210-
211-
- name: Publish to crates.io
212-
if: always()
213-
run: |
214-
cargo publish --token ${{ secrets.CARGO_TOKEN }} --allow-dirty || true
215-
env:
216-
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_TOKEN }}
226+
run: npx semantic-release

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,4 +191,7 @@ test_out.csv
191191
path_stats.csv
192192
path_stats.jsonl
193193
pipeline_metrics.json
194-
*.info
194+
*.info
195+
196+
# AI files
197+
.clauderc

.idea/dictionaries/project.xml

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

.releaserc.json

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
{
1010
"preset": "conventionalcommits",
1111
"releaseRules": [
12+
{ "type": "major", "release": "major" },
1213
{ "type": "feature", "release": "minor" },
1314
{ "type": "feat", "release": "minor" },
1415
{ "type": "fix", "release": "patch" },
@@ -50,12 +51,6 @@
5051
"changelogFile": "CHANGELOG.md"
5152
}
5253
],
53-
[
54-
"@semantic-release/exec",
55-
{
56-
"prepareCmd": "sed -i.bak 's/^version = \".*\"/version = \"${nextRelease.version}\"/' Cargo.toml && rm Cargo.toml.bak"
57-
}
58-
],
5954
[
6055
"@semantic-release/git",
6156
{

CHANGELOG.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
1-
## [1.0.1](https://github.com/nhubbard/ironbeam/compare/v1.0.0...v1.0.1) (2025-11-27)
1+
## [1.1.0](https://github.com/nhubbard/ironbeam/compare/v1.0.0...v1.0.1) (2025-11-27)
22

3-
### Bug Fixes
3+
### Features
4+
5+
* Add generic cloud I/O support
6+
7+
### Enhancements
48

59
* Clippy issues ([abdae35](https://github.com/nhubbard/ironbeam/commit/abdae359a3bb6f108823d8fd22122ffc7558b36f))
610

711
## 1.0.0 (2025-11-15)
812

13+
Initial release!
14+
915
### Features
1016

1117
* **checkpoint:** Add checkpoint support ([c0aac7e](https://github.com/nhubbard/ironbeam/commit/c0aac7e237e844a74c6b1f6115c9e2e4aa02b4b9))

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ Execute pipelines in sequential or parallel mode:
148148

149149
```rust
150150
let results = collection.collect_seq()?; // Single-threaded
151-
let results = collection.collect_par()?; // Multi-threaded with Rayon
151+
let results = collection.collect_par()?; // Multithreading with Rayon
152152
```
153153

154154
## I/O Examples

examples/advanced_joins.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ fn main() -> Result<()> {
5252
println!("📊 Example 1: Inner Join (Users ⋈ Orders)");
5353
println!("Only shows users who have placed orders\n");
5454

55-
// Create join-ready collection by keying orders by user_id
55+
// Create a join-ready collection by keying orders by user_id
5656
let orders_by_user = from_vec(
5757
&pipeline,
5858
orders_raw

examples/checkpointing_demo.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use ironbeam::checkpoint::{CheckpointConfig, CheckpointPolicy};
2020
fn main() -> Result<()> {
2121
println!("=== Ironbeam Checkpointing Demo ===\n");
2222

23-
// Create a pipeline with a large dataset to simulate long-running job
23+
// Create a pipeline with a large dataset to simulate long-running jobs
2424
let p = Pipeline::default();
2525

2626
println!("Building pipeline with 100,000 records...");
@@ -49,7 +49,7 @@ fn main() -> Result<()> {
4949
println!(" Auto-recovery: enabled");
5050
println!(" Max checkpoints: 5");
5151

52-
// Create runner with checkpointing
52+
// Create a runner with checkpointing
5353
let runner = Runner {
5454
mode: ExecMode::Sequential,
5555
checkpoint_config: Some(checkpoint_config),

examples/combiners_showcase.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ fn main() -> Result<()> {
9999
// =============================================================================
100100
println!("\n📊 TOP-K COMBINER\n");
101101

102-
// Get top 2 highest-priced items per category
102+
// Get the top 2 highest-priced items per category
103103
let top2 = data
104104
.clone()
105105
.map_values(|&price| OrdF64(price))

examples/compressed_io.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ fn main() -> AnyhowResult<()> {
8686
writer.write_all(b"\n")?;
8787
}
8888
writer.flush()?;
89-
drop(writer); // Ensure encoder finishes before reading
89+
drop(writer); // Ensure the encoder finishes before reading
9090

9191
let size = metadata("logs.jsonl.gz")?.len();
9292
println!("✅ Compressed file size: {size} bytes\n");

0 commit comments

Comments
 (0)