When modifying existing public APIs, always maintain backward compatibility to avoid breaking existing users. Breaking changes include altering function signatures, removing public functions, or changing function visibility from public to private.
When modifying existing public APIs, always maintain backward compatibility to avoid breaking existing users. Breaking changes include altering function signatures, removing public functions, or changing function visibility from public to private.
Instead of making breaking changes:
For example, when refactoring a public function:
// Instead of changing the signature (breaking change):
// pub fn new_digest(absorption_rate int, hash_size int, suffix u8) !&Digest
// Keep the original public function:
pub fn new_digest(absorption_rate int, hash_size int) !&Digest {
return new_digest_with_suffix(absorption_rate, hash_size, default_suffix)
}
// Add the new functionality as a separate function:
pub fn new_digest_with_suffix(absorption_rate int, hash_size int, suffix u8) !&Digest {
// implementation
}
When removing public functions, keep them as wrappers that call the new internal implementation. This ensures existing code continues to work while allowing internal refactoring and improvements.
Enter the URL of a public GitHub repository