Tidepool Version Manager
tidepool-version-manager is the core library of the Tidepool project, providing powerful runtime version management capabilities. It supports installation, switching, uninstallation, and management of multiple programming language runtimes. Currently focused on Go version management, it will expand to support Python, Node.js, and more runtimes in the future.
π Features
π Core Functionality
- Async Version Installation - High-performance concurrent downloading and installation
- Smart Version Switching - Cross-platform version switching mechanism
- Complete Lifecycle Management - Install, switch, uninstall, and list operations
- Status Querying - Real-time runtime status checking
- Multi-Platform Support - Full compatibility with Windows, macOS, and Linux
π§ Downloader Features
- Chunked Concurrent Downloads - Multi-connection download acceleration
- Resume Downloads - Automatic recovery from network interruptions
- Progress Reporting - Real-time download progress feedback
- File Integrity Verification - SHA256 checksums for security
- Smart Retry Mechanism - Automatic handling of network exceptions
π‘οΈ Security Features
- File Hash Verification - Automatic verification of downloaded file integrity
- Permission Security - Windows Junction links without administrator privileges
- Safe Uninstallation - Protection mechanisms to prevent accidental system file deletion
π¦ Installation
Add the following to your Cargo.toml:
[]
= "0.1.3"
π Quick Start
Basic Usage
use ;
use PathBuf;
async
Query Available Versions
use ;
async
Status Query
use ;
use PathBuf;
π§ Advanced Configuration
Custom Downloader Configuration
use ;
async
Progress Callbacks
use ;
;
async
ποΈ Architecture Design
Core Components
tidepool-version-manager/
βββ src/
β βββ lib.rs # Public interfaces and type definitions
β βββ go.rs # Go version management implementation
β βββ downloader.rs # Universal downloader module
βββ examples/ # Usage examples
βββ tests/ # Integration tests
Feature Overview
VersionManagerTrait - Unified version management interface, extensible for other runtimesGoManager- Concrete implementation for Go language version managementDownloader- High-performance async downloader with resume and progress reporting- Cross-platform Support - Unified abstraction for Windows Junctions and Unix symbolic links
π§ͺ Running Examples
The project includes several example programs demonstrating different use cases:
# Downloader functionality demo
# Hash verification demo
# Windows Junction demo (Windows only)
# Temporary file handling demo
# Uninstall protection demo
π§ͺ Testing
Run the complete test suite:
# Run all tests
# Run specific tests
# Run integration tests
π Version Compatibility
| Version | Rust Version | Features |
|---|---|---|
| 0.1.3 | 1.70+ | Go version management, high-performance downloader |
| 0.1.2 | 1.70+ | Basic version management functionality |
| 0.1.1 | 1.70+ | Initial release |
π§ Future Plans
- Python Version Management - Support for Python/pyenv compatibility
- Node.js Version Management - Support for Node.js/nvm compatibility
- Configuration File Support - Project-level version configuration
- Plugin System - Custom version management extensions
- Mirror Source Support - Accelerated downloads via domestic mirrors
π API Documentation
Complete API documentation is available at docs.rs.
Main Types
VersionManager- Version manager traitGoManager- Go version managerDownloader- High-performance downloaderInstallRequest- Installation request structureRuntimeStatus- Runtime status information
π€ Contributing
We welcome all forms of contributions! Please see CONTRIBUTING.md for details.
Development Environment Setup
# Clone repository
# Run tests
# Check code formatting
# Run Clippy checks
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Related Links
Maintained by the Tidepool Project π