Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
02c09a2
work but slow
saulshanabrook Nov 25, 2025
8fd7bbc
Got working quickly! Added flat map and dummy value to infer things p…
saulshanabrook Nov 25, 2025
daec3ae
Add negative
saulshanabrook Nov 25, 2025
fbdaef7
Factoring working partially
saulshanabrook Nov 25, 2025
1f1d803
Save failing commands and also desugar first
saulshanabrook Nov 25, 2025
cc8489d
Start adding simplification and delete not subsume
saulshanabrook Nov 25, 2025
fc1f276
simplify and add sympy example
saulshanabrook Dec 5, 2025
1a1d250
switch line length to 88 for pretty printing
saulshanabrook Jan 7, 2026
c13a54f
Add reshape
saulshanabrook Jan 7, 2026
8795aab
tmp
saulshanabrook Jan 14, 2026
c2112a4
tmp
saulshanabrook Jan 21, 2026
529fbf4
tmp
saulshanabrook Jan 22, 2026
e391e1e
tmp
saulshanabrook Jan 22, 2026
a4f58a2
Fix type analysis
saulshanabrook Jan 23, 2026
c282b59
Try fixing type resolution again
saulshanabrook Jan 28, 2026
e21d7d4
tmp
saulshanabrook Jan 29, 2026
8111388
fix abs
saulshanabrook Jan 29, 2026
8ded220
Add sum
saulshanabrook Jan 29, 2026
a2f5123
abs
saulshanabrook Jan 29, 2026
b08088a
spelling
saulshanabrook Jan 29, 2026
75f69ab
tmp
saulshanabrook Jan 30, 2026
de2f0a8
tmp
saulshanabrook Jan 30, 2026
6b3aabc
tmp
saulshanabrook Feb 2, 2026
afe9c82
tmp
saulshanabrook Feb 2, 2026
1aecccb
tmp
saulshanabrook Feb 3, 2026
3aab22f
tmp
saulshanabrook Feb 5, 2026
cfc87e4
tmp
saulshanabrook Feb 5, 2026
6afb528
simplify
saulshanabrook Feb 5, 2026
338649a
tmp
saulshanabrook Feb 5, 2026
06f2d82
before change
saulshanabrook Feb 6, 2026
a4fa855
tmp
saulshanabrook Feb 6, 2026
f38b185
fixes
saulshanabrook Feb 6, 2026
c089e16
Done?
saulshanabrook Feb 6, 2026
5b5f2d2
Working
saulshanabrook Feb 9, 2026
7f0edcc
sort of working
saulshanabrook Feb 11, 2026
24499e7
working
saulshanabrook Feb 12, 2026
ef51539
Working!
saulshanabrook Feb 13, 2026
cb263b1
See if it is reproducable
saulshanabrook Feb 18, 2026
a1e9a71
Tweaks on my blog post
saulshanabrook Feb 19, 2026
270a187
Update notebook
saulshanabrook Feb 24, 2026
58ccda3
Change output to not use widget when just running as HTML
saulshanabrook Feb 25, 2026
83e73c3
Add additional examples
saulshanabrook Feb 25, 2026
3a9b8d9
Upgrade support to new egglog version
saulshanabrook Mar 10, 2026
f5d993b
Add freeze!
saulshanabrook Mar 11, 2026
c7711b5
Merge fix-lookup-value into polynomials
saulshanabrook Mar 12, 2026
32c60c6
Fix notebook bug
saulshanabrook Mar 13, 2026
658ed00
Fix let bindings and array api tests
saulshanabrook Mar 13, 2026
67d15ba
Update containers blog post with PLSE blog post contents
saulshanabrook Mar 16, 2026
e2deb1f
Fix schedules
saulshanabrook Mar 16, 2026
b0daea4
Fix test failures
saulshanabrook Mar 16, 2026
37c81e4
Fix all review comments
saulshanabrook Mar 16, 2026
d1a9f04
Add changelog and update docs
saulshanabrook Mar 16, 2026
4e0dfb0
Respond to review notes and try to fix codspeed crash
saulshanabrook Mar 16, 2026
b95a3a2
Pin CodSpeed benchmark job to Python 3.12
saulshanabrook Mar 16, 2026
ee5ab91
Keep benchmark uv env on Python 3.12
saulshanabrook Mar 16, 2026
81546cc
Cap CodSpeed walltime benchmark rounds
saulshanabrook Mar 17, 2026
598e9e5
Add program tracing
saulshanabrook Mar 19, 2026
19ed5d7
Fix tests
saulshanabrook Mar 20, 2026
dbc9ade
Try fixing bug to avoid second eval
saulshanabrook Mar 20, 2026
237c57b
Update egglog lockfile
saulshanabrook Mar 20, 2026
11185b7
bump egglog to preserve semi naive on some primitives
saulshanabrook Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
205 changes: 0 additions & 205 deletions .github/AGENTS.md

This file was deleted.

10 changes: 6 additions & 4 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,20 +58,22 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version-file: ".python-version"
# Work around import-time SciPy/sklearn segfaults on the codspeed ARM64 Python 3.13 runner.
python-version: "3.12"
- uses: astral-sh/setup-uv@v7
with:
enable-cache: true
python-version: "3.12"
- uses: dtolnay/rust-toolchain@1.79.0
- uses: Swatinem/rust-cache@v2
- run: |
export UV_PROJECT_ENVIRONMENT="${pythonLocation}"
uv sync --extra test --locked
- uses: CodSpeedHQ/action@v4.3.1
uv sync --extra test --locked --python 3.12
- uses: CodSpeedHQ/action@v4.11.1
with:
token: ${{ secrets.CODSPEED_TOKEN }}
# allow updating snapshots due to indeterministic benchmarks
run: pytest -vvv --snapshot-update --durations=10
run: pytest -vvv --snapshot-update --durations=10 --codspeed-max-rounds=10 python/tests/test_array_api.py -k "test_jit or test_run_lda"
mode: ${{ matrix.runner == 'ubuntu-latest' && 'instrumentation' || 'walltime' }}

docs:
Expand Down
46 changes: 46 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Repo Guidance

## Overview

- This repo combines the high-level Python bindings in `python/egglog/`, the Rust extension in `src/`, and the Sphinx docs in `docs/`.
- Public Python APIs are exported from `python/egglog/__init__.py`.
- The compiled `python/egglog/bindings.cpython-*.so` artifact is generated and should not be edited directly.

## Common Commands

- `uv sync --all-extras` installs the full dev environment.
- `uv sync --reinstall-package egglog --all-extras` rebuilds the Rust extension after changes in `src/`.
- `uv run pytest --benchmark-disable -q` runs the Python tests without benchmark calibration.
- `make mypy` runs the type checker.
- `make stubtest` checks the runtime against the type stubs.
- `make docs` builds the docs.

## Docs

- Use the Context7 MCP server for egglog documentation instead of copying external doc summaries into this file.
- Keep general workflows in the how-to guides, and keep Python-specific runtime/reference examples in `docs/reference/python-integration.md`.
- If a PR adds or updates a changelog entry in `docs/changelog.md`, keep it aligned with the final code changes.
- For a clean docs rebuild, clear `docs/_build/`; the MyST-NB execution cache lives in `docs/_build/.jupyter_cache`.

## Python bindings

- Prefer relative imports inside `python/egglog`.
- When changing public high-level APIs, update the public docs, stubs, and pretty/freeze round-trip expectations together.
- Higher-order callable type probing should stay isolated from the live ruleset: copy declarations and run with no current ruleset so inference does not register temporary unnamed functions or rewrites.

## Array API

- Start with `python/egglog/exp/array_api.py` and `python/tests/test_array_api.py`.
- `Vec[...]` is a primitive sort; avoid rewrites or unions that merge distinct vec values.
- Guard vector indexing rewrites with explicit bounds checks.

## CI

- When debugging GitHub Actions logs, prefer the private `$github-actions-rest-logs` skill or the equivalent REST API flow with `GITHUB_PAT_TOKEN`.

## Verification

- Prefer the minimal code change and the minimal diff that solves the task; only broaden the change if the smaller fix is not sufficient.
- Run `make mypy` for typing changes.
- Run targeted pytest for touched modules.
- Run `make docs` for docs or public API changes.
Loading
Loading