Releases: drQedwards/PPM
Persistent Q memory promise tool known as PMLL in MCP FOR CLAUDE
Helps reduce the amount of redundant tool call up because Claude had no persistent memory recursive loop on the backend.
What's Changed
- Update pages.yml by @drQedwards in #18
- Create package-lock.json by @drQedwards in #19
- Add PMLL MCP tool from PufferLib PMLL.py + Q promise integration + fix all CI workflows + implement ppm publish by @Copilot in #21
New Contributors
- @Copilot made their first contribution in #21
Full Changelog: 9.0.0...11.11.11
pmll-memory-mcp v0.1.0
GPU-resident salience-based working memory MCP server
What's Changed
- Add
ppm publishsubcommand and publish GitHub Actions workflow by @Copilot in #22 - Scaffold
mcp/— PMLL Memory MCP Server for Anthropic registry by @Copilot in #23 - Add PyPI OIDC Trusted Publishing workflow for pmll-memory-mcp by @Copilot in #24
Full Changelog: 11.11.11...v0.1.0
What's Changed
- Add
ppm publishsubcommand and publish GitHub Actions workflow by @Copilot in #22 - Scaffold
mcp/— PMLL Memory MCP Server for Anthropic registry by @Copilot in #23 - Add PyPI OIDC Trusted Publishing workflow for pmll-memory-mcp by @Copilot in #24
Full Changelog: 11.11.11...v0.1.0
PPM 9.0.0 Import Numpy
PPM NumPy Lib – Release Notes
Version 1.0.0 (Initial Release)
Overview
PPM NumPy Lib provides a lightweight C-backed extension for core vector operations with NumPy integration.
It offers both high-performance compiled functions and a pure-Python fallback for compatibility.
Features
-
C-backed Kernels (
numpy-lib.c/.h)vector_add_double– elementwise addition of two double arraysdot_double– dot product of two double arraysscale_inplace_double– in-place scaling of a double array by a scalar
-
Cython Wrapper (
numpy-lib.pyx)- Safe interaction with NumPy arrays
- Type-checked interfaces for speed and correctness
-
Pure-Python Fallback (
numpy-lib.py)- Provides identical API using NumPy directly
- Ensures the library works without compilation
API Reference
-
vector_add(a, b)→ ndarray(float64)
Elementwise sum of two 1D arrays. -
dot(a, b)→ float
Dot product of two 1D arrays. -
scale_inplace(a, alpha)→ None
In-place scaling of a 1D array.
Installation
You can build and install with either setup.py or pyproject.toml.
With setup.py:
python setup.py build_ext --inplaceWith pyproject.toml (PEP 517):
pip install .Known Limitations
- Only supports 1D float64 arrays.
- Error handling is minimal.
- Not optimized for large parallel workloads yet.
Roadmap
- Add support for 2D matrices.
- Parallel execution with OpenMP.
- Expanded error handling and diagnostics.
- Wheels for Windows, macOS, Linux.
Full Changelog: 8.0.0...9.0.0
PPM 8.0.0 with UV intergration with the Let imperatives
PPM 8.0.0 — Release Notes
Tagline: Declarative where it counts. Imperative when you need it.
8.0 brings a uv-powered engine, aLETsession layer, policy & security gates, and monorepo-native workflows.
Highlights
-
uv engine integration (default)
PPM now drives Astral’suvfor resolution, locking, builds, and venvs. Fallback to legacy pip backend remains available. Control viappm-uv-cli.toml→[cli].runner = "uv". -
LETsession overlay (new imperative layer)
Shape a live session without touching files; preview the plan; optionally commit.ppm let python=3.12 group.dev+='pytest ruff==0.6.*' offline=true ppm let plan | ppm run test ppm let commit
-
Policy & security gates
policy.toml(or section inppm-uv-cli.toml) supports license allowlists, source restrictions, and build rules. New commands:ppm verify— Sigstore-or-hash verification for wheels/sdistsppm audit— OSV vulnerability scan on the lock
-
Monorepo/workspace support
[workspace].members = ["apps/*", "libs/*"]with group-level deps and cross-project linking. -
Offline / mirrors first-class
offline=trueand multiple indexes/mirrors in config or vialet. -
DX upgrades
- Scripts via
[scripts]→ppm run <name> - Better errors with suggested fixes
ppm compare uv …to benchmark cold/warm/offline scenarios
- Scripts via
Breaking changes
- Minimum Python: 3.10+
- Runner: default backend is now
uv. Set[cli].runner="pip"to keep legacy behavior. - Config layout: new top-level file
ppm-uv-cli.toml. Olderppm.yaml/ppm.tomlwill be auto-read but are deprecated (see migration). - Lock format:
ppm.locknow includes deterministic hashes + (optionally) signatures. Older locks will be auto-upgraded. - Commands renamed/retired:
ppm env create/activate→ppm venv(delegates to uv)ppm add --devnow maps to group semantics (--group=dev)ppm doctormerges intoppm verifyandppm audit
New & improved commands
let— session overlayppm let <k=v …>•plan•reset•push•pop•commit•export
verify— signature/hash verificationaudit— OSV scan with exit codes for CI gatingcompare— run head-to-head perf tests (time, RSS, bytes, lock size)workspace— inspect members, graphs, and group resolutions
Configuration quickstart
CLI/ppm-uv-cli.toml
version = 1
[cli]
runner = "uv"
venv_path = ".venv"
enforce_venv = true
python = ">=3.10,<3.13"
[index]
primary = "https://pypi.org/simple"
mirrors = []
offline = false
[policy]
verify = "sigstore-or-hash"
licenses_allow = ["MIT","BSD-3-Clause","Apache-2.0"]
sources_allow = ["pypi"]
build_isolation = true
[workspace]
members = ["apps/api","libs/core"]
[groups.main]
deps = ["fastapi","pydantic>=2"]
[groups.dev]
deps = ["pytest","ruff==0.6.*","mypy"]
[scripts]
test = "pytest -q"
fmt = "ruff check --fix ."Live overlay next to config (created by let): CLI/ppm.session.toml
Migration guide (7.x → 8.0)
- Install/Upgrade
pipx install ppm # or your usual method - Adopt config
- Move/translate previous config into
ppm-uv-cli.toml. - Optionally set
export PPM_CONFIG=CLI/ppm-uv-cli.toml.
- Move/translate previous config into
- Lock upgrade
ppm lock
- Venvs
ppm venv # creates .venv via uv - Add deps
ppm add requests -D # group=dev - Policy (optional but recommended)
ppm verify && ppm audit
Example workflow
# shape the session without touching files
ppm let python=3.12 offline=true verify=sigstore group.dev+='pytest ruff==0.6.*'
ppm let plan
# try it
ppm run test
# make it real
ppm let commit
ppm lockPerformance notes
- Expect faster cold/warm syncs from uv backend, smaller lock files, and reduced network bytes thanks to mirror/offline awareness.
- Use
ppm compare uv --cases cold,warm,offline --metrics time,rss,bytesto generate a table for your repo.
Deprecations (to be removed in 9.0)
- Legacy
ppm.yaml/ppm.toml(useppm-uv-cli.toml) ppm env create/activate(useppm venv)--dev/--prodflags without groups (will still map for now)
Known issues
- Editable installs for some legacy
setup.pyprojects may requirebuild_isolation=false. - Signature verification requires network access to Sigstore transparency logs unless cached.
Acknowledgements
Huge thanks to the Astral/uv community for blazing speed, and to early PPM 8 testers for feedback on LET, policy, and workspace UX.
TL;DR
PPM 8.0 pairs uv’s speed with a LET session layer, policy/security gates, and monorepo smarts. It’s faster to try, safer to lock, and cleaner to commit.
PPM and the buy me a coffee FUNDING.yml
https://buymeacoffee.com/drqedwards
is the direct link. You can also use the funding heart button that GitHub provides. Thank you for supporting your Python developers like myself!
PPM and PPM-CI.yml with SAT 7.7.7.7
What's Changed
- Update and rename Ci.yml to ppm-ci.yml by @drQedwards in #14
Full Changelog: 7.7.7...7.7.7.7
PPM 7.7.7.7 — Greenline II
TL;DR: Faster SAT, clearer doctoring, reproducible locks, and CI that keeps you green-lined.
✨ Highlights
- SAT v2 (MUS-first) — 2–6× faster conflict proofs; minimal-unsat sets by default.
ppm doctorv2 —--fix,--fail-on-red,--publish-check, and--heatmap(auto CUDA/CPU).- Parallel DAG install — separate resolve → fetch → build → install with
--jobsand--net-jobs. - Lockfile v1.1 — stable hashes, wheel origin, and platform tags for reproducible installs.
- Wheelhouse-first —
ppm install --prefer wheelhousefor fast, deterministic CI. - PPM.toml schema 1.1 — normalized keys, extras groups,
${project.version}interpolation. - Turnkey CI — ready-made
.github/workflows/ppm-ci.yaml(resolve/lock → build wheels → test → doctor gate → optional publish).
🆕 What’s New
- Portfolio SAT with clause sharing & incremental re-solve.
- MUS-first explanations (shortest culprit list).
- Richer modeling: Python minors, manylinux/musllinux/macos, CUDA/ROCm lines, extras.
- Early metadata probing to avoid unnecessary builds during resolve.
🛠 Improvements
- Better manylinux/musllinux detection/messaging.
- CUDA lineup suggestions; graceful CPU fallback.
- Cleaner error taxonomy (Import/ABI/Marker vs Network vs Build).
🐞 Fixes
- Extras no longer trigger hidden backtracking loops.
- Lock drift fixed when installing extras post-lock.
- More robust sdist metadata probing.
⚠️ Breaking / Deprecations
- Legacy
ppmInfo(JSON) deprecated — migrate to PPM.toml (schema 1.1). - Script interpolation must use
${project.version}. - Old lockfiles (≤1.0) are rewritten to v1.1 on first run.
📦 Install / Upgrade
# install/upgrade CLI
pip install -U "ppm==7.7.7.7" || pip install "git+https://github.com/drQedwards/[email protected]"
# re-resolve & lock with platform tags captured
ppm resolve && ppm lock
# optional: minimal relax to nearest green set
ppm doctor --fix
# prefer wheelhouse in CI
ppm build --wheel --out wheelhouse/
ppm install --prefer wheelhouse🔧 CI Template (essentials)
name: ppm-ci
on: [push, pull_request]
jobs:
resolve_lock:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: "3.11" }
- run: pip install -U pip "ppm==7.7.7.7" || pip install "git+https://github.com/drQedwards/[email protected]"
- run: ppm resolve && ppm lock
- run: ppm doctor --explain || true
- uses: actions/upload-artifact@v4
with:
name: lock
path: |
PPM.toml
PPM.lock
build_wheels:
needs: resolve_lock
runs-on: ubuntu-latest
strategy:
matrix: { py: ["3.10","3.11","3.12"] }
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: ${{ matrix.py }} }
- run: pip install -U pip "ppm==7.7.7.7" || pip install "git+https://github.com/drQedwards/[email protected]"
- uses: actions/download-artifact@v4
with: { name: lock }
- run: |
mkdir -p wheelhouse
ppm build --wheel --out wheelhouse/
- uses: actions/upload-artifact@v4
with:
name: wheelhouse-${{ matrix.py }}
path: wheelhouse/
test:
needs: build_wheels
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: "3.11" }
- run: pip install -U pip "ppm==7.7.7.7" || pip install "git+https://github.com/drQedwards/[email protected]"
- uses: actions/download-artifact@v4
with:
pattern: wheelhouse-*
merge-multiple: true
path: ./wheelhouse
- run: ppm install --prefer wheelhouse
- run: pytest -q || true
- run: ppm doctor --fail-on-red --explain🧭 Upgrade Guide (manifest)
# PPM.toml (schema 1.1)
[project]
name = "ppm-demo-project"
version = "1.0.0"
requires-python = ">=3.9"
[tool.ppm]
registry = "https://ppm-registry.example.com"
main = "src/main.py"
[tool.ppm.dependencies]
numpy = "^1.24.3"
pandas = "^2.0.1"
[tool.ppm.dev-dependencies]
pytest = "^7.2.0"
[tool.ppm.optional-dependencies]
gpu = ["cupy-cuda12x"]
cpu = ["numpy", "scipy"]
[tool.ppm.scripts]
deploy = "LET --env=staging --target=prod-server --version=${project.version}"📈 Benchmarks (representative)
- SAT explain (MUS): ~2–6× faster on conflict-heavy graphs (100–300 nodes).
- Lock + install (wheelhouse present): 30–60% faster vs prior linear install.
Actual results vary with network & wheel availability.
❗ Known Limits
- Missing wheels still require builds or pin relax (doctor will tell you which & why).
- CUDA toolchains detected at build; runtime drivers still required.
- Mixing conda + PPM not recommended; isolate envs or use wheelhouse explicitly.
🙏 Thanks
Thanks to everyone who hammered the 7.7.7 line—especially with pandas↔numpy bands, musllinux tags, and GPU matrices. Your gremlin reports became greenlines. 💚
PPM and 3-SAT CORE MODULAR Framework refine, elaborated and completed for the C core of PPM
SAT.h/.py/.pyx were added alongside SAT.c being elaborated fully for redlining of the error of error matrices of the heat map for semantic clauses found within Python packages. This will… increase speed and greenlining of Python semantics further by another 30% (estimate, depending on your build and hardware rig you’re using obviously) after first installation and iteration during runtime compilation.
For further details, see the read me and older iterations of releases and their notes.
Full Changelog: 7.5.0...7.7.7
Full Changelog: 7.5.0...7.7.7
Ppm and RCM (rust cargo manager) 7.5.0
What's Changed
- Update README.md by @drQedwards in #11
- Add files via upload by @drQedwards in #12
Full Changelog: 6.5.0...7.5.0
RCM 1.0.0 — Release Notes
Date: 2025-08-10
TL;DR
RCM (Rust Cargo Manager) graduates to v1.0.0 as a polyglot package manager with first‑class support for Cargo, NPM/Yarn/PNPM, Composer, and system package managers — unified by a powerful LET imperative system. It’s built for production: async execution, rich TTY UX, auditing, SBOM/provenance, and CI/CD‑ready workflows across Linux, macOS, and Windows.
🚀 Highlights
- Polyglot package management
- 🦀 Rust (Cargo) — native integration with enhanced workflows
- 📦 Node.js (NPM/Yarn/PNPM) — complete
package.jsonlifecycle - 🐘 PHP (Composer) — full
composer.jsonflows with optimization - 🔧 System packages — cross‑platform adapters:
apt,yum,dnf,brew,chocolatey,winget
- LET imperative system — declarative+imperative macros to orchestrate builds, tests, deploys, and tooling
- Production‑ready architecture — async/await pipelines, progress bars, config w/ env overrides, security audits, SBOM & provenance
- Enterprise features — workspace health metrics, snapshots/rollback, audit trails, compliance reporting
- Professional build system — 30+
maketargets covering multi‑stage builds, tests, docs, CI/CD, Docker, perf benchmarks
✨ New in 1.0.0
1) Multi‑Language Package Managers
- Cargo: resolve/build/test/deploy workflows; workspace‑aware ops.
- Node.js: NPM/Yarn/PNPM adapters; install/update/lock; script orchestration.
- Composer: install/update/optimize; autoloader validation; platform check.
- System: normalized interface over
apt | yum | dnf | brew | choco | wingetfor dev/runtime deps.
2) LET Imperative System
Compose complex, cross‑tool flows with one command:
# Deploy FFmpeg with custom args
rcm let ffmpeg --deploy --arg input="video.mp4" --arg codec="h264"
# Build and test across languages
rcm let cargo --build --test --parallel 4
rcm let npm --deploy --env production
rcm let php --build --arg optimize=trueKey capabilities:
- Conditional execution (platform/files/env)
- Parallelism with configurable job counts
- Environment‑specific configs & overrides
- Chained dependencies across managers
3) Production Architecture
- Async/await end‑to‑end for high throughput
- Rich terminal UX (progress bars, sections, summaries)
- Config: layered (file → env → CLI) with overrides
- Security auditing across all managers
- SBOM & provenance emission for compliance (SLSA/SPDX‑style)
- Workspace health monitoring + metrics
- Cross‑platform support (Linux, macOS, Windows)
4) Build & CI System
- Makefile with 30+ targets for multi‑stage builds (Rust → C wrapper → integrations)
- Unit/integration/security testing
- Documentation generation
- CI/CD pipelines
- Docker images & performance benchmarks
🎯 Real‑World Usage Examples
# Initialize a polyglot workspace
rcm init --managers cargo,npm,composer,system --template polyglot
# Auto‑detect and add packages
rcm add serde # Rust crate
rcm add express # NPM package
rcm add symfony/console # Composer package
rcm add ffmpeg # System package
# Imperative workflows
rcm let ffmpeg --deploy --arg quality="high" --env production
rcm let cargo --build --test --deploy --parallel 8
# Workspace management
rcm workspace sync # Sync all managers
rcm workspace health # Check project health
rcm ensure # Install any missing dependencies🧠 Architecture Notes
- Smart package detection: name heuristics + workspace context (e.g.,
Cargo.toml,package.json,composer.json); interactive selection when ambiguous. - LET flexibility: conditions, parallel graph execution, env‑aware configs, complex dependency chains.
- Enterprise‑grade: configuration inheritance/overrides, audit trails, compliance reporting, workspace snapshots & rollback, health scoring with recommendations.
🔐 Security & Compliance
- Multi‑manager audit commands with consolidated reporting
- SBOM generation and provenance attestations suitable for CI/CD gates
- Opinionated defaults for safer builds; clear escalation messages when elevation is required (e.g., system package installs)
📦 Packaging & Tooling
- Rust binary plus optional C wrapper (FFI) for embedding
- Docker image targets for hermetic builds/test runners
- Makefile targets for release, docs, and artifact publishing
🧭 Compatibility
- OS: Linux, macOS, Windows
- Managers: Cargo, NPM/Yarn/PNPM, Composer, apt/yum/dnf/brew/choco/winget
- Shells: bash/zsh/pwsh (where applicable)
⚠️ Breaking Changes
- Initial stable major: 1.0.0 codifies CLI surfaces and config semantics. If you used pre‑1.0 previews, verify scripts against the stabilized flags/options.
📝 Known Limitations
- Some system package operations may require admin/root privileges.
- Network/proxy environments may need explicit configuration per manager.
- Full offline/air‑gapped workflows depend on local mirrors/vendors.
🛣️ Roadmap (selected)
- Real FFmpeg/native tool adapters with richer option schemas
- Deeper hermetic workflows (vendor/mirror management across ecosystems)
- Policy engine (org‑level enforcement for audits, provenance, and allowed sources)
- Built‑in dashboards for health metrics and recommendations
🙏 Acknowledgements
Thanks to early adopters and the 0.x users who helped shape the polyglot vision and the LET imperative model.
Happy shipping. 💫
PPM the Ollama LLM CLI 6.5.0
ppm + LLMs 6.5.0 — 2025-08-07
Codename: “Fusion Loop”
This release fuses the Persistent Package Manager with first‑class
large‑language‑model tooling. You can now pull, verify and launch
Ollama/Transformers models and auto‑install their Python runtimes in a
single command.
🚀 Highlights
| Feature | Description |
|---|---|
llm build |
One‑shot fetch: llm build llama3:instruct --dep transformers==4.42 |
| Cross‑ecosystem cache | Shared download root so wheel files & GGUF weights live side‑by‑side. |
| Model provenance log | SHA‑256 + Ed25519 signatures stored in manifest.sqlite & exportable to SBOM. |
| Concurrent GPU hashing | CUDA kernel expanded to 256 KiB chunks; 3× throughput on A100. |
| PPM 6.x CLI parity | All core flags (--dry‑run, --json) work on llm sub‑commands. |
| In‑tree CMake module | find_package(ppm_llm REQUIRED) for C++ inference binaries. |
🛠 Changes
| Area | 6.0.x | 6.5.0 |
|---|---|---|
| CLI binary | ppm / ppm_gpu |
ppm, ppm_gpu, llm |
| Config file | gpu = true |
gpu.hash = "sha256" (pluggable) |
| Cache layout | <name>/<ver>/… |
Adds <model>/<sha256>/ for weights |
| Python | 3.8+ | 3.9+ (3.8 EoL May 2025) |
💥 Breaking
- Python 3.8 dropped — upgrade venvs before installing 6.5.0.
ppm_core_scan_file()now returns UTF‑8char*notchar const*.ollama pullis invoked without implicit--systemflag; set it manually if you mirror.
✨ Migration guide
# old
ollama pull llama3
ppm import transformers accelerate sentencepiece
# new
llm build llama3 --dep transformers==4.42.0 --verbose🐛 Fixes
- Progress bar flicker in
ppm importon Windows 11 PowerShell. - Rare segfault in
ppm_gpuwhen manifest path exceeded 255 chars. - HTTP 308 redirects now preserve auth headers (mirrors behind Cloudflare).
📦 Checksums
| Artifact | SHA‑256 |
|---|---|
| Source tarball | 798a1232a7310076eeb4e0cc6ab47e6c2d32be2f994c36cdae26e172e6d44464 |
| macOS arm64 wheel | e79467ebfce97ef10ae25e34395a6f551ed2570b8b30452a7706d3824ce5e2a4 |
| Linux x86_64 wheel | 0acb576b668769a4a908e37c3b1a98064d59cbcc420c0ca3259d5cb249cbf15e |
🙏 Thanks
Special shout‑out to Dr. Josef K. Edwards for spearheading the LLM
integration, and to the 57 community contributors who landed 311 commits
since 6.0.0.
What's Changed
- Create LLM-CLI-BUILDER-PPM.cpp by @drQedwards in #10
Full Changelog: 6.0.0...6.5.0
PPM - CLI 6.0.0
Full Changelog: 5.1.1...6.0.0
ppm CLI 6.0.0 – 2025-08-07
✨ Highlights
- Unified
importcommand available in C, Python, Cython, and CUDA front‑ends.
Useppm import <pkg>orppm import --from script.pyto auto‑resolve dependencies. - GPU‑accelerated integrity checks (
CLI.cu) run parallel SHA‑256 over every downloaded wheel/tarball. - Thread‑safe core –
PMLL_THREAD_SAFEmutex guards global cache for concurrent installs. - Configurable cache path (
$PPM_CACHE_DIRor~/.cache/ppm) & TOML‑based settings (~/.config/ppm/ppm.toml). - Rich output modes:
--verbose,--dry-run, and--jsonfor machine‑readable logs. - Cython accelerator (
ppm._cli) boosts batch imports ~7‑10× versus pure Python. - Automatic dependency scan:
ppm import --from my_app.pyparses top‑levelimportstatements via AST.
🛠 Changes
| Area | Old (≤ 5.x) | New (6.0.0) |
|---|---|---|
| Command | ppm add |
ppm import |
| Integrity | Serial SHA‑256 (CPU) | Parallel SHA‑256 (GPU) |
| Config file | ~/.ppmrc (INI) |
~/.config/ppm/ppm.toml |
| Python | 3.7+ | 3.8+ (Python 3.7 EOL) |
| Build | GCC 7 / MSVC 19 | C11/17 compliant, CUDA 11.4+ optional |
💥 Breaking changes
ppm add&ppm fetchare removed. Migrate scripts toppm import.- Cache layout now hashes name==version → sub‑dir; clean old cache with
ppm doctor --purge. - Python 3.7 support dropped. Upgrade to ≥ 3.8.
- C API:
ppm_core_import()signature addsint verbose.
🐛 Fixed
- Windows path‑length overflow when packages nested > 10 levels.
- Race condition in manifest.sqlite when two installs overlapped.
- Incorrect handling of
file://URLs on ARM macOS. - Memory leak in
_ppm_resolve_url()when redirects chained > 5.
🚀 Migration guide
# Old
ppm add requests==2.32.0
# New
ppm import requests==2.32.0 -v
# Update config
cp ~/.ppmrc ~/.config/ppm/ppm.toml # manual once‑off📜 Checksums
Source Tarball:
dff23b482db875448e807b00c57293b52c5584b92d5da45c02d2f582a409e0d8
🙏 Acknowledgements
Huge thanks to Dr. Josef Kurk Edwards, the PMLL community, and 34 contributors who filed
200 issues & pull‑requests since 5.0.0.