You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Goal: bring tooling, layout, and dependencies to current Python best practices.
Switch to src/ layout — move pycoolc/ into src/pycoolc/. Prevents accidental imports of the source tree instead of the installed package. Update pyproject.toml, Makefile, CI, and test imports.
Replace PLY with a maintained parser library — PLY's last release was 2018. Candidates: lark (Earley/LALR, modern API, maintained), sly (PLY author's successor, similar API), or hand-written recursive descent. Biggest change in the project — lexer and parser rewrite, all tests must pass.
Switch build backend to hatchling — drop setuptools + MANIFEST.in + *.egg-info. Hatch handles discovery, versioning, and sdist inclusion natively from pyproject.toml.
Remove MANIFEST.in — becomes unnecessary after switching to hatchling or equivalent.
Delete committed PLY cache files — lextab.py, yacctab.py, parsetab.py at repo root and in examples/. These are generated artifacts. Ensure .gitignore covers them and PLY writes to a build/temp dir.
Adopt uv for dependency management — replace pip + venv with uv for 10-100x faster installs. Add uv.lock for reproducible environments. Update Makefile venv target.
Replace Makefile with just or hatch scripts — optional but cleaner. just has simpler syntax, better cross-platform support, and no tab sensitivity.
Add dependency lockfile — uv.lock or pdm.lock for reproducible CI and dev environments. Pin exact versions for dev deps.
Epic 8: Project modernization
Goal: bring tooling, layout, and dependencies to current Python best practices.
src/layout — movepycoolc/intosrc/pycoolc/. Prevents accidental imports of the source tree instead of the installed package. Updatepyproject.toml,Makefile, CI, and test imports.lark(Earley/LALR, modern API, maintained),sly(PLY author's successor, similar API), or hand-written recursive descent. Biggest change in the project — lexer and parser rewrite, all tests must pass.hatchling— dropsetuptools+MANIFEST.in+*.egg-info. Hatch handles discovery, versioning, and sdist inclusion natively frompyproject.toml.MANIFEST.in— becomes unnecessary after switching tohatchlingor equivalent.lextab.py,yacctab.py,parsetab.pyat repo root and inexamples/. These are generated artifacts. Ensure.gitignorecovers them and PLY writes to a build/temp dir.uvfor dependency management — replacepip+venvwithuvfor 10-100x faster installs. Adduv.lockfor reproducible environments. UpdateMakefilevenv target.Makefilewithjustorhatchscripts — optional but cleaner.justhas simpler syntax, better cross-platform support, and no tab sensitivity.uv.lockorpdm.lockfor reproducible CI and dev environments. Pin exact versions for dev deps.