Releases: forest6511/gdl
Release v1.4.0
[1.4.0] - 2025-10-11
Added
Changed
Fixed
Security
Added
- Resume Functionality: Complete implementation of download resume with HTTP Range requests (#32)
- Automatic resume state persistence in
~/.gdl/resume/ - ETag and Last-Modified validation for safe resume
- File integrity verification using SHA256 checksums
- Graceful fallback when server doesn't support Range requests
- Automatic cleanup of resume files on successful completion
- Progress saving on interruption (Ctrl+C, network failure)
- Resume offset tracking with partial content (206) support
- Automatic resume state persistence in
Release v1.3.1
[1.3.1] - 2025-09-30
Changed
- Build System: Removed Docker support to simplify maintenance
- Removed Docker-related files and workflows
- Cleaned up GoReleaser configuration
- Simplified CI/CD pipelines
Fixed
- Test Coverage: Improved CLI plugin system test coverage to 85%
- Added comprehensive tests for plugin registry operations
- Enhanced error handling coverage
- Fixed Windows-specific test compatibility issues
Removed
- Docker Support: Removed all Docker-related functionality
- Deleted Dockerfile and Docker workflows
- Removed Docker configurations from GoReleaser
- Updated documentation to reflect Docker removal
Release v1.3.0
[1.3.0] - 2025-09-23
Added
- Cross-Platform Optimizations: Comprehensive platform-specific performance enhancements
- Zero-copy download support using sendfile on Linux/macOS for large files
- Platform-specific buffer sizes and concurrency settings
- ARM architecture optimizations for both server and embedded devices
- Adaptive performance tuning based on system capabilities (CPU, memory)
- Advanced Buffer Pool Management: Smart memory management with size-based allocation
- Tiered buffer pool system (8KB, 64KB, 512KB)
- Automatic buffer sizing based on download requirements
- Reduced memory allocations and improved GC performance
- Network Optimizations: Enhanced connection handling and transport settings
- HTTP/2 support with optimized settings
- Connection pooling with platform-specific limits
- Optimized TCP socket options for each platform
- Lightweight Download Mode: Efficient single-threaded download for small files
- Automatic mode selection based on file size
- Reduced overhead for files under 100KB
- Lower memory footprint for embedded systems
- ARM Platform Support: Full support for ARM and ARM64 architectures
- Dedicated CI/CD pipeline for ARM testing
- QEMU-based testing for cross-compilation validation
- Optimized settings for ARM server and mobile/embedded devices
- Performance Regression Testing: Automated performance monitoring
- Benchmark comparisons between base and PR branches
- Real-world performance tests against curl
- Memory profiling and leak detection
Changed
- Go Version: Updated to Go 1.24 for latest performance improvements
- Test Coverage: Improved internal/core package coverage from 81.2% to 87.8%
- CI/CD Workflows: Restructured for better performance and reliability
- Added ARM platform testing workflow
- Optimized performance regression workflow (3x faster)
- Enhanced cross-platform compatibility testing
Fixed
- Windows Compatibility: Resolved path handling issues in tests
- Linux Zero-copy: Fixed syscall.EAGAIN handling in sendfile operations
- Error Handling: Added proper error checking for all Close() operations
- Branch Protection: Aligned CI job names with GitHub protection rules
Security
- Enhanced Error Checking: All file operations now properly handle errors
- Resource Cleanup: Improved cleanup of file descriptors and network connections
- Test Isolation: Better test isolation to prevent resource leaks
Release v1.2.1
Installation
Binary
Download the appropriate binary for your platform from the assets below.
Go Install
go install github.com/forest6511/gdl/cmd/gdl@v1.2.1Homebrew (macOS/Linux)
brew tap forest6511/tap
brew install gdlChangelog
Docker Image
docker pull ghcr.io/forest6511/gdl:v1.2.1Full Changelog: v1.2.0...v1.2.1
Release v1.2.0
Installation
Binary
Download the appropriate binary for your platform from the assets below.
Go Install
go install github.com/forest6511/gdl/cmd/gdl@v1.2.0Homebrew (macOS/Linux)
brew tap forest6511/tap
brew install gdlChangelog
Features
- a361550: feat: enhance test coverage and add production monitoring (#15) (@forest6511)
Bug fixes
- bfa28d7: fix(docker): add extra_files for go.mod and go.sum in GoReleaser (#13) (@forest6511)
- e3219c9: fix(docker): include source directories in GoReleaser build context (#14) (@forest6511)
- a0fa4fb: fix: improve GoReleaser config and CI performance (#11) (@forest6511)
Docker Image
docker pull ghcr.io/forest6511/gdl:v1.2.0Full Changelog: v1.0.1...v1.2.0
Release v1.0.3
Installation
Binary
Download the appropriate binary for your platform from the assets below.
Go Install
go install github.com/forest6511/gdl/cmd/gdl@v1.0.3Homebrew (macOS/Linux)
brew tap forest6511/tap
brew install gdlChangelog
Bug fixes
- fb7d09f: fix(release): disable Homebrew and Scoop auto-update to prevent auth errors (@forest6511)
Docker Image
docker pull ghcr.io/forest6511/gdl:v1.0.3Full Changelog: v1.0.2...v1.0.3
Release v1.0.2
Installation
Binary
Download the appropriate binary for your platform from the assets below.
Go Install
go install github.com/forest6511/gdl/cmd/gdl@v1.0.2Homebrew (macOS/Linux)
brew tap forest6511/tap
brew install gdlChangelog
Bug fixes
- bfa28d7: fix(docker): add extra_files for go.mod and go.sum in GoReleaser (#13) (@forest6511)
- 2d8a94d: fix(docker): add extra_files for go.mod and go.sum in GoReleaser (@forest6511)
- e3219c9: fix(docker): include source directories in GoReleaser build context (#14) (@forest6511)
- 154e8fd: fix(docker): include source directories in GoReleaser build context (@forest6511)
- a0fa4fb: fix: improve GoReleaser config and CI performance (#11) (@forest6511)
Docker Image
docker pull ghcr.io/forest6511/gdl:v1.0.2Full Changelog: v1.0.1...v1.0.2
Release v1.0.1
🐛 Bug Fix Release
This patch release fixes a GoReleaser build issue that was preventing proper binary releases.
What's Fixed
- GoReleaser Build Issue: Fixed integer overflow in validation maxFileSize constant
- Changed from untyped int to explicit
- Prevents overflow on 32-bit systems during cross-compilation
- Maintains the same 100GB file size validation limit
Impact
- No functional changes - All validation logic remains identical
- Build process now works correctly with GoReleaser
- Binary releases will be properly generated
Changes Since v1.0.0
- Fix integer overflow in
This is a minimal patch release focused solely on fixing the build infrastructure. All functionality from v1.0.0 remains unchanged.
Full Changelog: v1.0.0...v1.0.1
What's Changed
- fix: resolve integer overflow in validation maxFileSize constant by @forest6511 in #10
Full Changelog: v1.0.0...v1.0.1
Release v1.0.0
🎉 gdl v1.0.0 - Official Release
This is the official v1.0.0 release of gdl (formerly godl), marking the stable release of our fast, resumable file downloader.
🚨 Breaking Changes
This release contains breaking changes due to project rename:
Module and Import Changes
- Module name:
github.com/forest6511/godl→github.com/forest6511/gdl - Import statements: All library users must update their imports
- Repository URL:
github.com/forest6511/godl→github.com/forest6511/gdl
Binary and CLI Changes
- Binary name:
godl→gdl - All CLI commands: Use
gdlinstead ofgodl - Configuration paths:
~/.godl/→~/.gdl/ - Resume files:
.file.godl.json→.file.gdl.json
📦 Migration Guide
For Library Users
// Old (v0.x)
import "github.com/forest6511/godl"
// New (v1.0.0+)
import "github.com/forest6511/gdl"For CLI Users
# Old (v0.x)
godl https://example.com/file.zip
# New (v1.0.0+)
gdl https://example.com/file.zipConfiguration Migration
- Move configuration directory:
~/.godl/→~/.gdl/ - Resume files will use new extension automatically
✨ Features
- Fast Downloads: Multi-threaded concurrent downloads with intelligent chunk management
- Resume Support: Automatically resume interrupted downloads
- Progress Tracking: Real-time progress bars with detailed statistics
- Multiple Formats: Save to file, memory, or custom writers
- Robust Error Handling: Comprehensive retry logic and error recovery
- Cross-Platform: Works on Linux, macOS, and Windows
- Plugin System: Extensible architecture for custom functionality
- Configuration: Flexible YAML-based configuration system
🚀 Installation
Binary Releases
Download from GitHub Releases
Go Install
go install github.com/forest6511/gdl/cmd/gdl@v1.0.0Package Managers
# Homebrew (after formula update)
brew install gdl
# Docker
docker run --rm -v $(pwd):/data ghcr.io/forest6511/gdl:v1.0.0📖 Quick Start
CLI Usage
# Basic download
gdl https://example.com/file.zip
# Concurrent download with progress
gdl --concurrent 8 --progress-bar detailed https://example.com/large-file.zip
# Resume interrupted download
gdl --resume https://example.com/large-file.zipLibrary Usage
package main
import (
"context"
"github.com/forest6511/gdl"
)
func main() {
ctx := context.Background()
stats, err := gdl.Download(ctx, "https://example.com/file.zip", "./file.zip")
if err != nil {
panic(err)
}
fmt.Printf("Downloaded %d bytes in %v\n", stats.BytesDownloaded, stats.Duration)
}🔧 What's Changed
Core Features (Complete)
- ✅ Multi-threaded concurrent downloads
- ✅ Automatic resume functionality
- ✅ Progress tracking and reporting
- ✅ Comprehensive error handling
- ✅ Cross-platform compatibility
- ✅ Memory and file output options
- ✅ HTTP/HTTPS protocol support
- ✅ Configurable retry logic
- ✅ Bandwidth throttling
- ✅ Custom headers and user agents
Architecture (Stable)
- ✅ Clean separation between CLI and library
- ✅ Modular package structure
- ✅ Comprehensive test coverage (>90%)
- ✅ Plugin architecture foundation
- ✅ Configuration management system
- ✅ Cross-platform file handling
📚 Documentation
- API Reference: Complete library API documentation
- CLI Reference: Command-line interface guide
- Examples: Practical usage examples
- Plugin Development: Plugin system guide
🏗️ Future Roadmap
- v1.1.x: Enhanced plugin system
- v1.2.x: Cloud storage integrations (S3, GCS)
- v1.3.x: Authentication plugins (OAuth2, JWT)
- v1.4.x: Advanced networking features
💝 Thanks
Thank you to all contributors and users who helped shape this project. This stable v1.0.0 release represents months of development, testing, and refinement.
Special thanks to the Go community for excellent libraries and tools that made this project possible.
Full Changelog: v0.9.2...v1.0.0
🤖 Generated with Claude Code
What's Changed
- feat: rename project from 'godl' to 'gdl' by @forest6511 in #9
Full Changelog: v0.9.2...v1.0.0
Release v0.9.2
[0.9.2] - 2025-08-19
Added
- Bandwidth Throttling System: Comprehensive rate limiting with token bucket algorithm
- New
--max-rateCLI flag supporting human-readable formats (e.g.,1MB/s,500k) MaxRateoption in library API (bytes/sec, 0=unlimited)- Seamless integration with concurrent downloads and all worker threads
- ParseRate and FormatRate utilities for flexible rate specifications
- New
- Enhanced Test Coverage: Significantly improved test coverage across core packages
- pkg/ratelimit: 93.0% coverage with comprehensive edge case testing
- internal/concurrent: 91.9% coverage for manager and worker components
- internal/core: 85.8% coverage for downloader functionality
- Overall project coverage improved to 65.5%
- Storage Backend Testing: Comprehensive filesystem backend testing
- Security tests for directory traversal protection
- Cross-platform path handling validation
- Home directory expansion (
~/) testing
Changed
- API Enhancement: Extended Options struct with MaxRate field for bandwidth control
- Documentation Updates:
- Updated README.md with bandwidth control features
- Enhanced CLI and API reference documentation
- Added rate limiting examples and troubleshooting section
Fixed
- Windows Compatibility: Improved cross-platform file path operations
- Lint Issues: Resolved errcheck and staticcheck violations
- Race Conditions: Enhanced signal handler test stability
- Test Infrastructure: Fixed cross-platform test failures and CI issues
Security
- Path Validation: Enhanced directory traversal protection in filesystem backend
- Rate Limiting: Prevents resource abuse with configurable bandwidth limits
Performance
- Token Bucket Algorithm: Efficient rate limiting with minimal overhead
- Concurrent Downloads: Rate limiting seamlessly integrated across all worker threads