Skip to content

Releases: forest6511/gdl

Release v1.4.0

11 Oct 10:02

Choose a tag to compare

[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

Release v1.3.1

30 Sep 04:38
19a728c

Choose a tag to compare

[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

23 Sep 00:50

Choose a tag to compare

[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

16 Sep 17:25
4a4c56e

Choose a tag to compare

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.1

Homebrew (macOS/Linux)

brew tap forest6511/tap
brew install gdl

Changelog

Docker Image

docker pull ghcr.io/forest6511/gdl:v1.2.1

Full Changelog: v1.2.0...v1.2.1

Release v1.2.0

16 Sep 17:04
a361550

Choose a tag to compare

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.0

Homebrew (macOS/Linux)

brew tap forest6511/tap
brew install gdl

Changelog

Features

Bug fixes

Docker Image

docker pull ghcr.io/forest6511/gdl:v1.2.0

Full Changelog: v1.0.1...v1.2.0

Release v1.0.3

19 Aug 09:40

Choose a tag to compare

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.3

Homebrew (macOS/Linux)

brew tap forest6511/tap
brew install gdl

Changelog

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.3

Full Changelog: v1.0.2...v1.0.3

Release v1.0.2

19 Aug 09:32

Choose a tag to compare

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.2

Homebrew (macOS/Linux)

brew tap forest6511/tap
brew install gdl

Changelog

Bug fixes

Docker Image

docker pull ghcr.io/forest6511/gdl:v1.0.2

Full Changelog: v1.0.1...v1.0.2

Release v1.0.1

19 Aug 08:35
ea2aadd

Choose a tag to compare

🐛 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

19 Aug 08:23
4d36643

Choose a tag to compare

🎉 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/godlgithub.com/forest6511/gdl
  • Import statements: All library users must update their imports
  • Repository URL: github.com/forest6511/godlgithub.com/forest6511/gdl

Binary and CLI Changes

  • Binary name: godlgdl
  • All CLI commands: Use gdl instead of godl
  • 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.zip

Configuration 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.0

Package 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.zip

Library 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

🏗️ 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

Full Changelog: v0.9.2...v1.0.0

Release v0.9.2

19 Aug 06:34

Choose a tag to compare

[0.9.2] - 2025-08-19

Added

  • Bandwidth Throttling System: Comprehensive rate limiting with token bucket algorithm
    • New --max-rate CLI flag supporting human-readable formats (e.g., 1MB/s, 500k)
    • MaxRate option in library API (bytes/sec, 0=unlimited)
    • Seamless integration with concurrent downloads and all worker threads
    • ParseRate and FormatRate utilities for flexible rate specifications
  • 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