This document describes gdl's versioning policy, API stability guarantees, and deprecation process.
gdl follows Semantic Versioning 2.0.0:
MAJOR.MINOR.PATCH
- MAJOR: Breaking changes (API incompatibility)
- MINOR: New features (backwards compatible)
- PATCH: Bug fixes (backwards compatible)
| Version | Status | Support |
|---|---|---|
| v1.x.x | Stable | Full support |
| v0.x.x | Development | Limited support |
Once gdl reaches v1.0, the following guarantees apply:
- Full Compatibility: No breaking changes within a major version
- Location:
github.com/forest6511/gdlandgithub.com/forest6511/gdl/pkg/* - Includes:
- All exported functions, types, and constants
- Function signatures and return types
- Struct field types and tags
- Interface definitions
- Command Compatibility: Commands and flags remain stable
- Output Format: Default output format preserved
- Exit Codes: Exit code meanings unchanged
- No Guarantees: May change at any time
- Location:
github.com/forest6511/gdl/internal/* - Warning: Do not import from
internal/packages
Features marked as experimental:
- May change or be removed in minor versions
- Are clearly marked in documentation
- Should not be used in production
- Removing or renaming exported functions, types, or constants
- Changing function signatures (parameters, return types)
- Changing struct field types
- Changing interface definitions
- Changing default behavior significantly
- Removing CLI commands or flags
- Changing exit codes
- Adding new functions, types, or constants
- Adding new optional parameters (via options structs)
- Adding new struct fields
- Adding new CLI commands or flags
- Bug fixes (even if they change incorrect behavior)
- Performance improvements
- Internal implementation changes
- Announcement (Minor version N): Feature marked deprecated
- Warning Period (Versions N to N+2): Deprecation warnings in logs
- Removal (Major version N+1): Feature removed
// Deprecated: Use NewFunction instead. Will be removed in v2.0.
func OldFunction() {}# Check for deprecation warnings in your code
go doc -all github.com/forest6511/gdl | grep -i deprecatedAll changes are documented in:
- CHANGELOG.md - Version history
- GitHub Releases - Release notes
Breaking changes are announced:
- At least one minor version in advance
- In the CHANGELOG with migration guidance
- Via GitHub release notes
Major version upgrades include migration guides:
- Step-by-step upgrade instructions
- Code examples for API changes
- Automated migration tools when possible
| Version Type | Support Duration |
|---|---|
| Latest major | Full support |
| Previous major | Security fixes for 12 months |
| Older versions | Community support only |
- Full Support: Bug fixes, security patches, new features
- Security Fixes: Critical security patches only
- Community Support: Issues addressed by community, no official patches
- gdl supports the two most recent Go releases
- Current minimum: Go 1.24
- New Go version support added in minor releases
- Go version requirements changed only in minor releases
- Deprecation announced one minor version before removal
| OS | Architecture | Support Level |
|---|---|---|
| Linux | amd64 | Full |
| Linux | arm64 | Full |
| Linux | arm | Full |
| macOS | amd64 | Full |
| macOS | arm64 | Full |
| Windows | amd64 | Full |
Some features are platform-specific:
- Zero-copy I/O: Linux only (uses sendfile)
- Plugin system: Linux and macOS only (Go limitation)
# Check for updates
go list -m -u github.com/forest6511/gdl
# Update to latest
go get -u github.com/forest6511/gdl// go.mod
require github.com/forest6511/gdl v1.4.0# Build with deprecation warnings
go build -gcflags="-d=checkptr" ./...# Test with new version before committing
go get github.com/forest6511/gdl@latest
go test ./...- GitHub Discussions - Ask questions
- GitHub Issues - Report issues