Commit Graph
56 Commits
Author SHA1 Message Date
TechnoPorg b8204c4ed9 refactor: consolidate some tests/examples/benchmarks 2026-02-12 23:31:19 +01:00
TechnoPorg 49be497964 perf: don't double-box task outputs 2026-02-12 20:49:30 +01:00
TechnoPorg b48b3a5a2e Merge pull request #10 from TechnoPorg/push-lytsnzwpmxmy
Speed up CI by installing dependencies as binaries
2026-02-11 23:33:33 +01:00
TechnoPorg 711cebdd6e Speed up CI by installing dependencies as binaries 2026-02-11 23:28:13 +01:00
TechnoPorg 5bfb284c82 Merge pull request #9 from TechnoPorg/push-kplnqxpsroms
perf: use passthrough hashers instead of standard library default
2026-02-11 23:15:27 +01:00
TechnoPorg c02740798b perf: use passthrough hasher and preallocate capacity for outputs 2026-02-11 23:07:23 +01:00
TechnoPorg b6ff1f81e6 chore: fix formatting for CI 2026-02-11 23:07:23 +01:00
TechnoPorg 7999996bca Merge pull request #8 from TechnoPorg/push-ptxmpolotoqo
Depend directly futures-util instead of futures
2026-02-11 22:50:16 +01:00
TechnoPorg a75defa5a6 Depend on futures-util instead of futures 2026-02-11 22:44:01 +01:00
TechnoPorg f342e33f16 Merge pull request #7 from TechnoPorg/push-nmmvpvqkpsmr
Remove clone bound from task data
2026-02-11 22:35:23 +01:00
TechnoPorg 4ef7e69cdd Don't clone task inputs 2026-02-11 22:29:54 +01:00
TechnoPorg 6f7a58e4c5 Fix CI 2026-02-11 22:29:54 +01:00
TechnoPorg 86787b3a0d Update tests, examples, benches 2026-02-11 22:01:50 +01:00
TechnoPorg 0137296fb4 Remove clone bound from task data 2026-02-11 21:59:41 +01:00
TechnoPorg 064c2a15be Merge pull request #3 from TechnoPorg/push-mqpxvoyoutro
Address soundness hole in cycle prevention
2026-02-06 20:38:12 +01:00
TechnoPorg 37260f6b3a Temporarily disable code coverage CI checks
This will be re-enabled once I'm done the last few major changes I have in mind. Until then, I've already caused this check to fail on main, so this will reduce GitHub email spam for a known issue.
2026-02-06 20:36:37 +01:00
TechnoPorg 37e4d46bac Temporarily disable code coverage CI checks
This will be re-enabled once I'm done the last few major changes I have in mind.
Until then, I've already caused this check to fail on main, so this will reduce GitHub email spam for a known issue.
2026-02-06 20:29:19 +01:00
TechnoPorg f82205baf4 Address soundness hole in cycle prevention 2026-01-29 06:56:17 +01:00
TechnoPorg 4ad88bcd68 feat: Don't require an explicit return type in the task macro 2026-01-29 06:50:12 +01:00
TechnoPorg 1c9034de71 Don't require an explicit return type in the task macro 2026-01-28 08:52:52 +01:00
swaits 8f6472ea22 Merge pull request #1 from TechnoPorg/push-mmkvnrvwpuzm
Replace channel mechanism of dependency passing with a shared registry
2026-01-27 23:23:53 -07:00
TechnoPorg 098b2711d8 Don't use channels to send dependencies 2026-01-26 20:58:06 +01:00
TechnoPorg a8e39804d2 Test single-threaded runtime 2026-01-22 00:34:52 +01:00
TechnoPorg ee3c9f4417 Update non-default feature code 2026-01-22 00:30:48 +01:00
TechnoPorg 85ccd7e507 Update tests, examples, benches 2026-01-22 00:30:48 +01:00
TechnoPorg bacac903b3 Reimplement spawner function 2026-01-22 00:30:48 +01:00
TechnoPorg d7806043e1 Use single-threaded hashmap instead of dashmap
Address performance regressions
2026-01-22 00:30:48 +01:00
TechnoPorg f4160d2387 Update docs 2026-01-22 00:30:48 +01:00
TechnoPorg df39dd80b9 Don't use channels to send dependencies 2026-01-19 00:24:32 +01:00
swaits 8e507d76f3 chore: bump crate to 0.3.1, update CHANGELOG 2025-10-10 17:39:23 -06:00
swaits 9ad3bd174f chore: bump crate to 0.3.1, update CHANGELOG v0.3.1 2025-10-10 17:31:28 -06:00
swaits 979232bd67 docs: document custom type support throughout project
Update all documentation to reflect that custom types work automatically
with the #[task] macro, requiring only Clone + Send + Sync + 'static.

Documentation updates:
- README: Add custom types to features, new Custom Types section
- CHANGELOG: Document custom type improvement in [Unreleased]
- src/lib.rs: Add custom types example to main API docs
- src/task.rs: Update Task trait docs to mention macro-generated extraction
- src/extract.rs: Clarify ExtractInput is now internal-only (for task_fn)
- dagx-macros: Update macro docs to emphasize automatic type handling

New example:
- examples/custom_types.rs: Simple 120-line example showing User type
  flowing through DAG with fan-out pattern (one output → two consumers)
  demonstrating Arc wrapping is automatic and transparent

This makes the custom type capability discoverable and prominent for users,
turning a previous limitation into a headline feature.
2025-10-10 17:22:59 -06:00
swaits 8ee4092f9a test: increase coverage for error paths and conversions
Add targeted coverage tests to maintain >80% code coverage minimum:

- ExtractInput error paths (14 tests): Type mismatch errors for Result,
  Option, Vec, HashMap, Arc, and primitive types. Directly exercises
  error formatting code that was previously uncovered.

- DagRunner::get() type mismatch (6 tests): Covers the type mismatch
  error path when attempting to retrieve task output with wrong type.
  Tests various type combinations to ensure robust error handling.

- TaskBuilder conversions (9 tests): Covers the From<TaskBuilder> to
  TaskHandle conversion for unit-type tasks, ensuring ID preservation
  and correct handling of mixed task types.

Also fixes timing test threshold from 10ms to 50ms to account for
tarpaulin instrumentation overhead while still validating parallel
execution.

Coverage increased from ~78% to 82.04% (above 80% minimum requirement).
2025-10-10 17:06:59 -06:00
swaits fad97dbf16 fix: support arbitrary types in task dependencies
Enable tasks to accept ANY type implementing Clone + Send + Sync as
dependencies, without requiring users to implement ExtractInput trait.

The #[task] macro now generates task-specific extraction logic inline
via a new extract_and_run() method. This leverages the macro's perfect
compile-time knowledge of parameter types to handle extraction for:
- Zero parameters (unit type, source tasks)
- Single parameter (any Clone + Send + Sync type)
- Multiple parameters (tuples, awaited concurrently)

Previously, only hardcoded primitive types and specific stdlib types
worked. Custom user types required manual ExtractInput implementations.
Now custom types work automatically with zero API changes.

Changes:
- Add extract_and_run() method to Task trait (internal/hidden)
- Generate inline extraction in #[task] macro based on parameter count
- Remove ExtractInput bound from DagRunner::add_task()
- Retain ExtractInput for internal task_fn() test helper
- Add comprehensive custom type tests

No breaking changes - purely internal implementation improvement.
2025-10-10 17:06:38 -06:00
swaits 82cbf15b85 docs: clean up, split up, restructure README.md v0.3.0 2025-10-08 16:01:27 -06:00
swaits 748e3f65c4 perf: optimization hints (inline, cold, etc) 2025-10-08 15:50:02 -06:00
swaits e3f51308a0 chore: bump crate to 0.3.0, update CHANGELOG 2025-10-08 14:52:45 -06:00
swaits bec2f9e4c9 fix: lint, disable wonky timing test on macos 2025-10-08 14:52:32 -06:00
swaits 802e584646 refactor: remove cycle checking becuase API prevents cycles 2025-10-08 14:28:54 -06:00
swaits 683579a18b test: increase coverage, improve test matrices for CI 2025-10-08 14:23:19 -06:00
swaits 02eac133bd fix: force threads on arc test (fixes MacOS CI failure) 2025-10-08 12:20:04 -07:00
swaits 47620b6702 fix: clippy lint due to tracing-only code 2025-10-08 12:19:27 -07:00
swaits 9290eccd86 docs: add TOC to ridiculously long README 2025-10-07 21:37:10 -07:00
swaits 4e891ebd5a chore: bump crate to 0.2.3, update CHANGELOG v0.2.3 2025-10-07 21:30:05 -07:00
swaits 5524b2121b docs: clean up examples/_parallel_computation.rs 2025-10-07 21:23:27 -07:00
swaits ec94ade329 chore: add logging under tracing feature 2025-10-07 21:16:04 -07:00
swaits ac848c6608 chore: bump crate to 0.2.2, update CHANGELOG v0.2.2 2025-10-07 20:30:19 -07:00
swaits 0a91889022 chore: make release checker verify docs match crate version 2025-10-07 20:24:00 -07:00
swaits ba32767b94 chore: bump crate to 0.2.1, update CHANGELOG v0.2.1 2025-10-07 19:58:19 -07:00
swaits 504347a46a fix: force tokio:test("multi_thread") so tests pass on macOS 2025-10-07 19:53:05 -07:00