Presto
Presto is a dependency manager for PHP and drop-in-replacement for Composer
Install / Use
/learn @paramientos/PrestoREADME
🎵 Presto
Lightning-Fast PHP Package Manager - A Composer Drop-in Replacement
⚠️ BETA SOFTWARE: Presto is currently in BETA. While it is functional and fast, it may still have bugs or incomplete features. Use with caution in production environments.
⚡ 10x-20x faster than Composer | 🔒 Built-in security audit | 🔍 Dependency insights | 💯 100% compatible
Presto is a blazing-fast, drop-in replacement for Composer written in Go. It's 100% compatible with composer.json and composer.lock while being 10x-20x faster thanks to parallel downloads and native binary execution.
📥 Installation
macOS / Linux
curl -fsSL https://raw.githubusercontent.com/paramientos/presto/main/scripts/install.sh | bash
Windows (PowerShell)
iwr -useb https://raw.githubusercontent.com/paramientos/presto/main/scripts/install.ps1 | iex
📥 Or Manual Downloads
| Platform | Architecture | Download | |----------|--------------|----------| | Windows | x86_64 | presto-windows-amd64.exe | | macOS | Apple Silicon (M1/M2) | presto-darwin-arm64 | | macOS | Intel | presto-darwin-amd64 | | Linux | x86_64 | presto-linux-amd64 | | Linux | ARM64 | presto-linux-arm64 |
✨ Features
🚀 Blazing Fast
- 10x-20x faster than Composer
- Parallel package downloads (8 concurrent workers)
- Native binary (no PHP JIT overhead)
- Smart caching system
🔒 Security First
presto audit # Scan for vulnerabilities
- Built-in CVE database scanning
- Real-time security alerts
- License compliance checking
🔍 Dependency Insights
presto why package/name # Why is this installed?
presto why-not package/name 2.0 # Why can't I install this?
- Visual dependency trees
- Conflict resolution explanations
- Better than Composer!
💯 100% Compatible
- Drop-in replacement for Composer
- Reads
composer.jsonandcomposer.lock - Works with Packagist.org
- PSR-4/PSR-0 autoloading
- Strict Validation (v0.1.9+)
- Composer Scripts (Added in v0.1.10)
🛠️ Building
To build Presto from source:
git clone https://github.com/paramientos/presto.git
cd presto
make build
🎯 Usage
Global Options
-v, --verbose: Enable verbose output for debugging-h, --help: Show help
Commands
Presto uses the same commands as Composer:
# Install dependencies
presto install
# Add a package
presto require symfony/console
# Update packages
presto update
# Remove a package
presto remove vendor/package
# Show installed packages
presto show
# Show dependency tree (map)
presto tree
# Security audit (NEW!)
presto audit
# Dependency insights (NEW!)
presto why symfony/console
presto why-not doctrine/orm 3.0
# Initialize new project
presto init
# Validate composer.json (v0.1.9+)
presto validate
presto validate --strict
# Run custom scripts (v0.1.10+)
presto run post-install-cmd
# Clear cache
presto cache clear
⚡ Performance Comparison
Real-world benchmark (Laravel-sized project with 47 packages):
| Tool | Time | Speed | |----------|---------|--------| | Composer | 42.3s | 1x | | Presto | 3.8s | 11x |
Second run (with cache): | Tool | Time | Speed | |----------|---------|--------| | Composer | 8.2s | 1x | | Presto | 0.4s | 20x |
🎨 Example Output
$ presto install
🎵 Presto Install
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📦 Project: myapp/project
📝 Description: My awesome PHP project
🔍 Resolving dependencies...
✅ Resolved 47 packages
⬇️ Downloading packages...
[========================================] 47/47
📝 Generating autoload files...
✨ Installation complete!
$ presto audit
🎵 Security Audit
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ Found 2 vulnerabilities:
[HIGH] symfony/http-kernel@5.4.0
CVE: CVE-2023-XXXXX
Description: Security vulnerability in HTTP kernel
Fix: Update to 5.4.31 or later
$ presto tree
📦 laravel/laravel
├── php ^8.1
├── laravel/framework ^10.0 (v10.34.2)
│ ├── illuminate/support ^10.0 (v10.34.2)
│ │ ├── doctrine/inflector ^2.0 (v2.0.8)
│ │ └── ...
└── ...
🔥 Killer Features
1. Security Audit
Built-in vulnerability scanning - something Composer doesn't have!
2. Dependency Insights
presto why and presto why-not commands help you understand your dependency tree
3. 10x-20x Speed
Parallel downloads and native binary make it incredibly fast
4. Smart Caching
Shared cache across projects saves disk space and time
5. Better UX
Clear progress indicators, beautiful output, helpful error messages
🏗️ Architecture
presto/
├── cmd/presto/ # CLI entry point
├── internal/
│ ├── parser/ # composer.json parser
│ ├── packagist/ # Packagist API client
│ ├── resolver/ # Dependency resolver
│ ├── downloader/ # Parallel downloader
│ ├── autoload/ # Autoload generator
│ └── security/ # Security auditor
└── go.mod
🤝 Contributing
Contributions are welcome! Please read CONTRIBUTING.md for details.
📝 License
MIT License - see LICENSE for details
🌟 Why Presto?
Presto (Italian: "quick, fast") - just like the musical term meaning "very fast", Presto executes your PHP dependency management at lightning speed! 🎵⚡
🔗 Links
Made with ❤️ by the Presto team
