Skip to content

Commit 74e7ccb

Browse files
future-xyclaude
andcommitted
chore: bump version to 0.4.0
Release notes: - feat: add venv parameter for Python virtualenv activation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 558e1f9 commit 74e7ccb

File tree

2 files changed

+82
-1
lines changed

2 files changed

+82
-1
lines changed

CHANGELOG.md

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# Changelog
2+
3+
All notable changes to PyLet will be documented in this file.
4+
5+
## [0.4.0] - 2025-12-26
6+
7+
### Added
8+
9+
- **`venv` parameter**: Activate a pre-existing Python virtualenv for instance execution
10+
- CLI: `pylet submit "python train.py" --venv /path/to/venv`
11+
- Python API: `pylet.submit("python train.py", venv="/path/to/venv")`
12+
- Solves environment isolation between worker and instances
13+
- Users are responsible for creating/maintaining venvs on shared filesystem
14+
15+
### Technical Details
16+
17+
- Added `venv` field to `InstanceSubmissionRequest`, `Instance`, and `DesiredInstance` schemas
18+
- Worker activates venv via `source {venv}/bin/activate && {command}`
19+
- Path validation: must be absolute path, no `..` allowed
20+
- 46 new tests for comprehensive coverage
21+
22+
## [0.3.0] - 2024-12-25
23+
24+
### Added
25+
26+
- **SLLM Integration Support (Phase 2.5)**: Storage-aware GPU scheduling for inference instances
27+
- `gpu_indices` in instance response (expose physical GPU assignment)
28+
- `target_worker` parameter (explicit node placement)
29+
- `gpu_indices` in submission (request specific GPUs)
30+
- `exclusive` flag (non-exclusive GPU allocation for sllm-store daemon)
31+
- `labels` + filtering (custom metadata, e.g., `model_id`)
32+
- `env` parameter in submission (custom environment variables)
33+
- `available_gpu_indices` in worker response (which specific GPUs are free)
34+
35+
## [0.2.0] - 2024-12-24
36+
37+
### Added
38+
39+
- **TOML Configuration File Support**: Load settings from `pylet.toml` or `~/.config/pylet/config.toml`
40+
41+
## [0.1.0] - 2024-12-22
42+
43+
### Initial Release
44+
45+
PyLet is a simple distributed task execution system for GPU servers. Like Ray/K8s but much simpler.
46+
47+
### Features
48+
49+
- **Head/Worker Architecture**: Distributed system with a head node for coordination and worker nodes for execution
50+
- **GPU-aware Scheduling**: Automatic GPU allocation via `CUDA_VISIBLE_DEVICES` environment variable
51+
- **Service Discovery**: Instances receive a `PORT` environment variable; endpoints discoverable via `get-endpoint` command
52+
- **Real-time Logs**: Stream logs from running instances with `pylet logs --follow`
53+
- **Graceful Shutdown**: SIGTERM with configurable grace period before SIGKILL
54+
- **SQLite Persistence**: State survives head node restarts (WAL mode for performance)
55+
- **Long-poll Heartbeats**: Efficient worker-controller communication with generation-based protocol
56+
- **Attempt-based Fencing**: Correctness guarantees for instance execution
57+
58+
### CLI Commands
59+
60+
- `pylet start` - Start head node
61+
- `pylet start --head <ip:port> --gpu-units N` - Start worker with N GPUs
62+
- `pylet submit <cmd> --gpu-units N --name <name>` - Submit instance
63+
- `pylet get-instance --name <name>` - Get instance status
64+
- `pylet get-endpoint --name <name>` - Get instance endpoint (host:port)
65+
- `pylet logs <id>` - View instance logs
66+
- `pylet logs <id> --follow` - Follow logs in real-time
67+
- `pylet cancel <id>` - Cancel instance
68+
- `pylet list-workers` - List registered workers
69+
70+
### Python Support
71+
72+
- Python 3.9, 3.10, 3.11, 3.12, 3.13
73+
74+
### Dependencies
75+
76+
- FastAPI for REST API
77+
- Pydantic v2 for data validation
78+
- aiosqlite for async database access
79+
- httpx for async HTTP client
80+
- aiohttp for worker HTTP server
81+
- Click for CLI

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "pylet"
7-
version = "0.3.0"
7+
version = "0.4.0"
88
description = "A simple distributed task execution system for GPU servers"
99
readme = "README.md"
1010
license = "Apache-2.0"

0 commit comments

Comments
 (0)