Skip to content

Conversation

@nttg8100
Copy link
Member

Description

  • Changed to GPLv3.0 license
  • Added graphical abstract
    This pull request introduces significant changes to support running the backend using PyPy for improved performance, updates the development and deployment workflow, and makes several related improvements across the codebase and documentation. The most important changes are grouped below.

Backend Runtime and Dependency Management

  • Switched the backend Docker image to use pypy:3.11-slim instead of python:3.12.11-slim, updated dependency installation, and adjusted file copying in backend/Dockerfile to optimize for PyPy.
  • Added Makefile targets and logic to download and install PyPy locally for development, and updated backend commands (including database migrations, server start, and Celery worker) to use the installed PyPy interpreter and socketify server instead of uvicorn. [1] [2] [3]
  • Removed the legacy backend/dev.py development entrypoint, as development now uses PyPy and socketify directly.
  • Updated .dockerignore, .gitignore, and related ignore files to exclude PyPy binaries and artifacts. [1] [2] [3]

Database and Dependency Updates

  • Migrated from the deprecated postgres:// URI scheme to the modern psycopg:// scheme in backend/app/db.py for all environments.
  • Updated backend dependencies: removed uvicorn, uvloop, and asyncpg, and added socketify, psycopg[binary], psycopg-pool, and anyio to backend/requirements.txt. [1] [2]
  • Changed the server startup command in backend/run_server.sh to use pypy -m socketify instead of uvicorn, and set the number of workers dynamically.

Performance and Benchmarking

  • Added a new backend/perf directory with configuration (pixi.toml, requirements.txt, .gitignore, .gitattributes), a minimal app.py for performance testing, and an install.sh script to automate PyPy setup and run benchmarks comparing socketify, uvicorn, and granian servers. [1] [2] [3] [4] [5] [6]

Documentation and Licensing

  • Updated the README to include a graphical overview image, revised the license section to use GPLv3 instead of Creative Commons, and updated license badges. [1] [2]
  • Updated developer documentation to show how to use pixi instead of micromamba for analysis environments.

Miscellaneous Fixes and Improvements

  • Improved dynamic Traefik configuration generation logic in backend/app/utils/executor/ssh.py for cleaner TLS block handling and fixed a minor logging bug. [1] [2] [3] [4]
  • Added extra Pixi configuration steps for channel setup and dependency installation in generated scripts.
  • Minor debug print added in backend/app/main.py (likely temporary).
  • Restricted backend pixi.toml to only support linux-64 platform.

These changes collectively modernize the backend stack, improve performance through PyPy and socketify, and streamline development and deployment workflows.

nttg8100 and others added 10 commits December 12, 2025 22:52
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: add perf testing for blacksheep with best http server

* chore: remove dev.py, use app directly

* feat: use socketify for http server
* chore: fix CI backend

* fix: remove pixi github action setup

* chore: use pypy to test backend

* fix: fstring in pypy3.11
@nttg8100 nttg8100 merged commit 7889bfc into main Dec 12, 2025
6 checks passed
@nttg8100 nttg8100 changed the title Release v1.1.0 Pre-rlease v1.1.0 Dec 13, 2025
@nttg8100 nttg8100 changed the title Pre-rlease v1.1.0 Pre-release v1.1.0 Dec 13, 2025
@nttg8100 nttg8100 self-assigned this Dec 13, 2025
@nttg8100 nttg8100 deleted the dev branch December 13, 2025 11:03
@nttg8100 nttg8100 restored the dev branch December 13, 2025 11:04
@nttg8100 nttg8100 deleted the dev branch December 13, 2025 11:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants