Skip to content

Implement Slog based on Ascent#5

Open
StarGazerM wants to merge 25 commits intomasterfrom
slog_base
Open

Implement Slog based on Ascent#5
StarGazerM wants to merge 25 commits intomasterfrom
slog_base

Conversation

@StarGazerM
Copy link
Owner

@StarGazerM StarGazerM commented Sep 11, 2025

Note

Introduce a new Slog DSL compiled via proc-macros to Ascent, add heuristic join reordering and macro enhancements (ascent_source captures, delta/total), plus docs, examples, and tests.

  • Slog DSL (new crates):
    • Add slog, slog_utils, slog_theory, and slog_test crates implementing a Slog language that compiles to Ascent via proc-macros; includes utilities (ID calc, helpers), theory support (equality), and tests.
  • Ascent macro/compiler:
    • Add join strategy support with #[heuristic_reordering] and MIR/HIR plumbing (join strategy parsing, var usage analysis, rule reordering, index reselection, updated IR/MIR data).
    • Extend ascent_source! to support captured arguments and include_source!(path, caps…).
    • Export new helper macros delta! and total!; add optional #![custom_return_conditions] and run_customized path.
    • Allow non-stratified aggregation via #![allow_non_stratified_agg].
  • Docs/Examples:
    • README: document Join Reordering with example; add example files (ascent_heuristic_order.rs, updated ascent_source.rs, minor list example formatting).
  • BYODS/Runtime tweaks:
    • Minor API visibility and placeholder changes; adjust tests and example rules; suppress lifetime warnings.
  • Workspace:
    • Add new members to workspace (slog*) and dependencies.
  • Tests:
    • Add reordering test and Slog tests; extend include_source tests with capture-binding.

Written by Cursor Bugbot for commit 148ff76. This will update automatically on new commits. Configure here.

cursor[bot]

This comment was marked as outdated.

add par

stage

general theory
cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

stage

stage

reimpl eq theory
cursor[bot]

This comment was marked as outdated.

// type IteratorType = Either<
// Chain<
// std::iter::Flatten<std::option::IntoIter<Ind1::IteratorType>>,
// std::iter::Flatten<std::option::IntoIter<Ind2::IteratorType>>,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Index Combination Fails to Chain Results

The RelIndexCombined::iter_all implementation doesn't correctly combine results from both underlying indices. It returns either the first iterator (if not empty) or the second (if the first is empty), but never chains them. This means the second index's items are entirely ignored when the first index has any.

Additional Locations (1)

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments