nmcd

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

Added

0.1.0 - 2026-01-08

Added

Core Protocol Implementation

Network & RPC

Client Library

Security & Operations

Performance Optimizations

Testing & Quality

Additional Components

Known Limitations

Breaking Changes

Deprecated

Security

Version History

Semantic Versioning Policy

Version Format: MAJOR.MINOR.PATCH

API Stability Guarantees (v1.0.0+)

Stable APIs (Guaranteed Compatibility)

The following packages and interfaces are considered stable and will maintain backward compatibility:

What Constitutes a Breaking Change

Breaking changes that trigger a MAJOR version bump:

  1. Removing or renaming exported types, functions, methods, or fields
  2. Changing function signatures (parameters, return types)
  3. Changing interface definitions (adding/removing methods)
  4. Changing behavior in ways that break existing usage patterns
  5. Removing support for previously supported network types or data formats
  6. Changing error types that clients might depend on

What Does NOT Constitute a Breaking Change

Non-breaking changes that can be included in MINOR or PATCH releases:

  1. Adding new standalone functions or types (without changing existing interfaces)
  2. Adding new optional fields to struct types
  3. Adding new error types (without removing existing ones)
  4. Performance improvements that don’t change behavior
  5. Bug fixes that restore documented behavior
  6. Internal implementation changes that don’t affect public API

Note: Adding methods to existing interfaces is a breaking change in Go and requires a MAJOR version bump.

Deprecation Policy

  1. Deprecation Notice: Features to be removed will be marked as deprecated at least one MINOR version before removal
  2. Documentation: Deprecated features will include:
    • Clear deprecation notice in GoDoc comments
    • Suggested alternative/replacement
    • Earliest version in which feature will be removed
  3. Deprecation Format:
    // Deprecated: Use NewFeature instead. Will be removed in v2.0.0.
    func OldFeature() {}
    
  4. Removal: Deprecated features are removed only in MAJOR version releases

Pre-1.0 Stability

Before v1.0.0:

Starting with v1.0.0:

Release Cadence

Long-Term Support (LTS)

Examples

PATCH Release (1.0.0 → 1.0.1)

✅ Fixed memory leak in name cache
✅ Corrected expiration calculation for edge case
✅ Updated dependencies for security patches
❌ Cannot add new methods to NameClient interface
❌ Cannot change Config field types

MINOR Release (1.0.0 → 1.1.0)

✅ Added ListNamesWithPagination helper function
✅ Added optional MaxRetries field to Config
✅ Added new convenience methods (non-interface)
✅ Performance improvements to database queries
❌ Cannot remove existing Config fields
❌ Cannot change NameClient interface methods

MAJOR Release (1.5.0 → 2.0.0)

✅ Refactored Config structure for clarity
✅ Removed deprecated methods marked in v1.x
✅ Changed NameClient interface for better error handling
✅ Updated minimum Go version requirement
✅ Any other breaking changes

Migration Guides

Upgrading to v1.0.0 from v0.1.0

No migration required for client package users. The v0.1.0 API is forward-compatible with v1.0.0.

Action Items:

  1. Review your code for any use of undocumented internal packages
  2. Update import paths if you were using internal packages (not recommended)
  3. Test your application with v1.0.0 before deploying to production

Notable Improvements:

Contributing

Future CONTRIBUTING.md will document:

Support