Skip to content

paramientos/presto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

35 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎡 Presto

Lightning-Fast PHP Package Manager - A Composer Drop-in Replacement

Go Version Version License Build Status PRs Welcome

⚠️ 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.json and composer.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/[email protected]
  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

About

Presto is a dependency manager for PHP and drop-in-replacement for Composer

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published