Releases: andeya/gust
v1.20.7
Changelog
Added
New Packages
-
shutdown: Graceful shutdown and reboot utility package- Provides graceful shutdown and reboot functionality for Go applications
- Handles system signals (SIGINT, SIGTERM, SIGUSR2)
- Supports configurable timeout and hooks for cleanup
- Cross-platform support (Unix/Linux and Windows)
- Context-based shutdown control
-
shutdown/inheritnet: Network listener inheritance for graceful restarts- Provides Listen functions that support inheriting connections from parent process
- Compatible with systemd socket activation (LISTEN_FDS)
- Enables zero-downtime deployments with connection preservation
- A practical application example of the shutdown package
-
coarsetime: Fast, coarse-grained time access- Faster alternative to
time.Now()with configurable precision - Inspired by Linux's
CLOCK_REALTIME_COARSEandCLOCK_MONOTONIC_COARSE - Provides both wall clock time and monotonic time
- Default 100ms precision with customizable frequency
- Faster alternative to
New Functions
-
conv.SystemEndian(): Returns the byte order of the current system- Detects system endianness at startup
- Returns
binary.LittleEndianorbinary.BigEndian
-
conv.EnsurePointerInitialized(): Initializes nil pointers recursively- Traverses pointer chains and interfaces
- Initializes nil pointers with zero values
- Returns
result.VoidResultfor error handling
-
syncutil.AtomicValue[T]: Generic wrapper foratomic.Value- Type-safe atomic load and store operations
- Returns
Option[T]from Load for nil-safety - Supports
Store,Swap, andCompareAndSwapoperations
Changed
shutdown: Enhanced shutdown and reboot logic with context support- Updated shutdown and reboot methods to accept context parameters
- Improved logging functionality with context in log messages
- Refactored internal methods to separate logic from exit handling
- Better testability without terminating processes
Improved
- Test Coverage: Simplified and enhanced tests across packages
- Reduced test code volume by ~58% while maintaining >95% coverage
- Improved test structure and reduced redundancy
- Added comprehensive tests for new features
v1.20.6
Changelog
Added
New Package: gust/fileutil
-
File Operations (
fileutil/file.go):FileExists/FileExist- Check file/directory existenceSearchFile- Search for files in multiple pathsGrepFile- Search for lines matching a pattern in a fileFilepathSplitExt- Split file path into base and extensionFilepathStem- Extract file stem (name without extension)FilepathSlashInsensitive- Normalize path separatorsFilepathContains- Check if basepath contains all subpathsFilepathAbsolute/FilepathAbsoluteMap- Convert paths to absolute pathsFilepathRelative/FilepathRelativeMap- Convert paths to relative pathsFilepathDistinct- Remove duplicate pathsFilepathSame- Check if two paths refer to the same fileMkdirAll- Create directory with parent directoriesWriteFile- Write data to file with automatic directory creationRewriteFile/RewriteToFile- Rewrite file content with callbackReplaceFile- Replace file content in specified rangeCopyFile- Copy a single fileCopyDir- Copy directory recursively- All functions return
result.Result[T]orresult.VoidResultfor type-safe error handling - All functions use the Catch pattern (
defer r.Catch()) for elegant error handling
-
Archive Operations (
fileutil/archive.go):TarGz- Create tar.gz archive from directoryTarGzTo- Create tar.gz archive with ignore patterns support- Both functions return
result.VoidResultand use Catch pattern
-
Comprehensive Test Coverage:
fileutil/file_test.go- 939 lines of comprehensive testsfileutil/archive_test.go- 461 lines of comprehensive tests- 100% test coverage for all fileutil functions
Enhanced Examples
-
examples/result_test.go- Completely rewritten with Before/After comparisons:ExampleResult_catchPattern- Demonstrates Catch pattern for API call chainsExampleResult_fileIO- Shows Catch pattern for file operationsExampleResult_validationChain- Demonstrates chaining validations with Catch patternExampleResult_iteratorIntegration- Shows Result with Iterator for data processing- All examples include traditional Go code vs gust code comparisons
-
examples/real_world_test.go- Completely rewritten:Example_realWorld_dataProcessing- Iterator + Result for data pipelinesExample_realWorld_batchFileOperations- Iterator + Catch for batch operationsExample_realWorld_dataTransformation- Complex data transformation with IteratorExample_realWorld_fileSystemOperations- File system operations with Catch patternExample_realWorld_dataValidation- Data validation pipeline with Iterator + ResultExample_realWorld_apiCallChain- API call chain with Catch pattern
-
examples/iterator_test.go- Enhanced with comparison examples:ExampleIterator_dataAggregation- Data aggregation with IteratorExampleIterator_complexFiltering- Complex filtering and transformation- All examples include Before/After comparisons showing 70% code reduction
-
examples/option_test.go- Enhanced with comparison examples:ExampleOption_nilSafety- Demonstrates how Option eliminates nil pointer panicsExampleOption_chaining- Chaining Option operations elegantlyExampleOption_safeDivision- Safe handling of division by zeroExampleOption_configManagement- Configuration management with OptionExampleOption_mapLookup- Safe map lookups with Option
-
examples/examples_test.go- Updated to reflect new example structure
Changed
Documentation Overhaul
-
README.md- Completely rewritten (379 lines changed):- Added "The Catch Pattern: gust's Secret Weapon" section highlighting
result.Ret + Unwrap + Catchpattern - Enhanced Quick Start with Catch pattern example
- Added comprehensive Before/After comparisons for all examples
- Quantified benefits: 70% less code (from 15+ lines to 8 lines)
- Updated all real-world examples to showcase Catch pattern
- Enhanced Result section with Catch pattern details
- Added file system operations example using Catch pattern
- All examples now demonstrate the power of Catch pattern
- Added "The Catch Pattern: gust's Secret Weapon" section highlighting
-
README_ZH.md- Completely rewritten (411 lines changed):- Fully synchronized with English README
- Added "Catch 模式:gust 的秘密武器" section
- All examples and comparisons match English version
- Complete Chinese translation of all new content
Core Enhancements
-
internal/core/result.go:- Enhanced
Catch()method documentation - Improved error handling in Catch pattern
- Enhanced
-
internal/core/option.go:- Minor improvements to Option implementation
-
result/result.go:- Added
FmtErrVoidfunction for formatted error creation - Enhanced Result helper functions
- Added
-
internal/core/result_test.go:- Added comprehensive tests for Catch pattern
- Enhanced test coverage for
FmtErrVoid
-
result/result_test.go:- Added tests for
FmtErrVoid
- Added tests for
Statistics
- 17 files changed
- 3,235 insertions(+), 398 deletions(-)
- Net addition: 2,837 lines
Highlights
- New
fileutilPackage: Complete file system utilities with 100% test coverage - Catch Pattern Documentation: Comprehensive documentation of the revolutionary Catch pattern
- Enhanced Examples: All examples now include Before/After comparisons
- 70% Code Reduction: Quantified benefits shown in all examples
- Type-Safe Error Handling: All new functions use
Result[T]and Catch pattern
Migration Guide
If you're upgrading from v1.20.5:
-
New
fileutilPackage:- Import
github.com/andeya/gust/fileutilfor file operations - All functions return
result.Result[T]orresult.VoidResult - Use Catch pattern:
defer r.Catch()for automatic error handling
- Import
-
Catch Pattern:
- Learn the new
result.Ret + Unwrap + Catchpattern - Replace
if err != nilchecks withdefer r.Catch() - See README.md for comprehensive examples
- Learn the new
-
Examples:
- Review updated examples in
examples/directory - All examples now include Before/After comparisons
- Study the Catch pattern examples for best practices
- Review updated examples in
Full Changelog: v1.20.5...v1.20.6
v1.20.5
v1.20.4
Add conv/string.go. This file contains string manipulation utilities including text formatting, case conversion, encoding conversion, and JSON marshaling.
Full Changelog: v1.20.3...v1.20.4
v1.20.3
Changelog
🎉 New Features
✨ New Package: gust/encrypt - Comprehensive Cryptographic Functions
A complete cryptographic functions package with Rust-inspired error handling.
Hash Functions:
- MD5:
MD5(data []byte, encoding Encoding) result.Result[string] - SHA Series:
SHA1,SHA224,SHA256,SHA384,SHA512SHA512_224,SHA512_256
- FNV Series (32/64/128-bit):
- FNV-1a:
FNV1a32,FNV1a64,FNV1a128 - FNV-1:
FNV1_32,FNV1_64,FNV1_128
- FNV-1a:
- CRC Series:
CRC32,CRC64 - Adler-32:
Adler32
AES Encryption/Decryption:
- Three modes supported:
ModeECB,ModeCBC,ModeCTR - Supports AES-128/192/256 (16/24/32 byte keys)
- Function signatures:
EncryptAES(key, plaintext []byte, mode Mode, encoding Encoding) result.Result[[]byte]DecryptAES(key, ciphertext []byte, mode Mode, encoding Encoding) result.Result[[]byte]
Encoding Formats:
EncodingHex: Hexadecimal encoding (default, most common)EncodingBase64: Base64URL encoding (more compact, URL-safe)
Features:
- All functions return
result.Result[T]for chainable operations - Complete unit test coverage
- Comprehensive documentation and examples
Examples:
// Hash operations
hash := encrypt.SHA256([]byte("hello"), encrypt.EncodingHex)
if hash.IsOk() {
fmt.Println(hash.Unwrap())
}
// AES encryption (chainable operations)
result := encrypt.EncryptAES(key, plaintext, encrypt.ModeCBC, encrypt.EncodingBase64).
Map(func(ciphertext []byte) []byte {
return ciphertext
})🔧 Enhanced Features
📦 gust/conv - Reflection Utilities Enhancement
Enhanced reflection utility functions with new practical functions and improved test coverage.
New Functions:
-
IsExportedOrBuiltinType(t reflect.Type) bool- Checks if a type is exported or a built-in type
- Automatically dereferences pointer types
-
IsExportedName(name string) bool- Checks if a name is exported (starts with uppercase letter)
Enhanced Test Coverage:
- Added tests for multi-level pointer and interface dereferencing in
DerefValueandDerefInterfaceValue - Added comprehensive tests for new exported type checking functions
- Improved existing function tests to cover more edge cases
Improved Functions:
DerefValue: Supports multi-level pointer and interface dereferencingDerefInterfaceValue: Supports nested interface dereferencingIsCompositionMethod: Improved composition method detection logic
📝 Documentation Updates
README Documentation Improvements
Clarified usage of Unwrap and UnwrapOr methods:
UnwrapOr: Safely extract values (with default, never panics)Unwrap: Extract value (⚠️ panics if error - use only afterIsOk()check, preferUnwrapOrfor safety)
Added clear usage warnings and best practice recommendations in README to prevent panics from improper Unwrap usage.
Updated Package List:
- Added
gust/encryptpackage to "Additional Packages" section - Updated package descriptions and key features list
📊 Statistics
- 3 commits
- 8 files changed
- 1 contributor
📦 Files Changed
New Files:
encrypt/encrypt.go- Cryptographic and hash functions implementationencrypt/encrypt_test.go- Complete unit testserrutil/stack_internal_test.go- Stack trace formatting tests
Modified Files:
conv/reflect.go- New reflection utility functionsconv/reflect_test.go- Enhanced test coverageREADME.md- Documentation updatesREADME_ZH.md- Chinese documentation updateserrutil/errbox_test.go- Enhanced error handling tests
Full Changelog: v1.20.2...v1.20.3
v1.20.2
Simplify ErrBox
Full Changelog: v1.20.1...v1.20.2
v1.20.1
v1.20.0 (⚠️ Breaking Changes 🔄 Major Layout Refactoring)
Changelog
🔄 Changed - Major Layout Refactoring
This release includes a comprehensive layout refactoring across the entire project. The codebase has been reorganized from a flat structure to a modular, package-based layout for better organization, maintainability, and scalability.
Package Reorganization
Iterator Package (iter/ → iterator/)
The iterator package has been completely restructured from a monolithic approach to a functional-module-based layout:
-
Renamed:
iter/→iterator/for clearer package naming -
Removed monolithic files:
adapters.go,adapters_extended.go,iterator_methods.go,double_ended_methods.go,try_methods.go,special_iterators.go,sum_product.go,unzip.go -
New modular structure: Organized into 12 functional modules:
core.go- Core interfaces and double-ended iterator methodsconstructors.go- Iterator creation functionsbasic.go- Basic transformation operations (Map, FilterMap, Chain, Zip, Enumerate, FlatMap)filtering.go- Filtering operations (Skip, Take, StepBy, SkipWhile, TakeWhile)transforming.go- Advanced transformations (MapWhile, Scan, Flatten)chunking.go- Chunking operations (MapWindows, ArrayChunks, ChunkBy)utility.go- Utility operations (Fuse, Inspect, Intersperse, Cycle, Peekable, Cloned)consumers.go- Terminal operations (Collect, Count, Last, Partition, AdvanceBy, Nth, NextChunk, Sum, Product, Unzip, TryReduce, TryForEach)fold_reduce.go- Folding and reduction operations (Fold, Reduce, ForEach, TryFold, Rfold, TryRfold)find_search.go- Search operations (Find, FindMap, Position, All, Any, TryFind, Rfind)min_max.go- Min/max operationscomparison.go- Comparison utilities
-
Test files: Each module now has a corresponding
*_test.gofile, improving test discoverability
Other Package Reorganizations
- Value Conversion:
valconv/→conv/(cleaner naming) - Option:
opt/→option/(full word for clarity) - Result:
ret/→result/(full word for clarity) - Constraints:
digit.go,ordering.go→constraints/(grouped related utilities) - Error Utilities:
errbox.go,stack.go→errutil/(grouped error utilities) - Sync Utilities:
sync.go→syncutil/(expanded to multiple files:atomic.go,lazy.go,map.go,mutex.go) - Core Types:
option.go,result.go,utils.go→internal/core/(moved to internal package) - New Packages: Added
pair/andvoid/packages
Key Improvements:
- ✅ Modular Architecture: Transformed from flat/monolithic structure to functional modules
- ✅ Self-Contained Modules: Each module includes its own implementation (
_Impl) and iterable structs (_Iterable), reducing dependencies - ✅ Consistent Naming: Package names use full words for clarity (
optioninstead ofopt,resultinstead ofret) - ✅ Better Organization: Related functionality grouped into dedicated packages
- ✅ Improved Test Structure: Tests co-located with their corresponding source files
- ✅ Internal Separation: Core implementation moved to
internal/package
Impact:
- 113 files changed across the refactoring
- 7 commits dedicated to layout improvements:
refactor layoutrefactor layout 2refactor iterator layoutstyle: fix ci, examples and readme- CI and build configuration updates
- Zero breaking changes: All public APIs remain unchanged - this is purely an internal layout restructuring
📝 Documentation
- Updated
README.mdandREADME_ZH.mdto reflect the new modular layout - Added comprehensive code organization documentation
- Updated examples and documentation to reference the new structure
🔧 Build & CI
- Updated Go version requirement to 1.24.0
- Updated CI configuration to use
GODEBUGfor type alias support - Enabled type alias support in Makefile and CI configuration
- Fixed CI, examples, and README formatting
⚠️ Breaking Changes
None - This is a layout refactoring-only release. All public APIs remain unchanged. The changes are internal to the package structure and are transparent to users of the library.
🔍 Migration Guide
No migration needed! All public APIs remain the same. The refactoring is purely internal and transparent to users of the library.
Note for Contributors: If you have local forks or branches that reference the old package structure, you may need to update import paths, but standard usage through the public API remains unchanged.
Full Changelog: v1.12.0...v1.20.0
v1.12.0
Changelog
Added
Error Handling
panicErrortype: New error type that wraps errors with their panic stack traces for enhanced debugging- Implements
error,fmt.Formatter, andStackTraceCarrierinterfaces Error()method returns only the error message (without stack trace)Format()method supports%v,%+v,%s,%+sverbs for controlled stack trace displayUnwrap()method for error chain traversalStackTrace()method to access the panic stack tracenewPanicError()helper function to createpanicErrorinstances
- Implements
Stack Trace Support
stack.gopackage: New comprehensive stack trace capture and formatting utilitiesGetStackTrace()function to capture current stack tracePanicStackTrace()function to capture panic stack traceFrametype representing a single stack frame with methods:pc(),file(),line(),name(),Format(),MarshalText()StackTracetype representing a sequence of frames withFormat()methodStackTraceCarrierinterface for types that carry stack trace information- Full support for
fmt.Formatterinterface with%v,%+v,%s,%+s,%d,%nverbs
Result Type Enhancements
OkVoid()function: Convenience function to createOk[Void](nil)- Replaces the previous
NonResult()function for better naming consistency
- Replaces the previous
ErrVoid()function: Convenience function to createErr[Void](err)Catch()method enhancement: Now supports optional stack trace captureCatch()- Captures stack trace by default (backward compatible)Catch(true)- Explicitly enables stack trace captureCatch(false)- Disables stack trace capture for better performance- When stack trace is enabled, panics are wrapped in
panicErrorwith full stack information - When stack trace is disabled, panics are directly wrapped in
ErrBoxwithout stack trace overhead
Iterator Enhancements
- BitSet Iterator Support: New iterator adapters for bit set operations
BitSetLikeinterface: Generic interface for bit set implementationsSize()method returns the number of bitsGet(offset int) boolmethod returns bit value at specified offset
FromBitSet(bitset BitSetLike): Creates iterator over all bits, yieldingPair[int, bool](offset, value)FromBitSetOnes(bitset BitSetLike): Creates iterator over only set bits (value = true), yieldingint(offset)FromBitSetZeros(bitset BitSetLike): Creates iterator over only unset bits (value = false), yieldingint(offset)FromBitSetBytes(bytes []byte): Creates iterator over all bits in a byte slice, yieldingPair[int, bool](offset, value)FromBitSetBytesOnes(bytes []byte): Creates iterator over only set bits in byte slice, yieldingint(offset)FromBitSetBytesZeros(bytes []byte): Creates iterator over only unset bits in byte slice, yieldingint(offset)- All BitSet iterators support full iterator method chaining (Filter, Map, Fold, Collect, etc.)
Documentation
- README.md updates:
- Added "Iterator Constructors" section showcasing
FromSlice,FromElements,FromRange,FromFunc,Empty,Once,Repeat - Added "BitSet Iterators" section with comprehensive examples
- Reorganized "Available Methods" section for better clarity
- Added examples demonstrating BitSet iterator chaining operations
- Added "Iterator Constructors" section showcasing
- README_ZH.md updates: Synchronized with English README, including all new features and examples
Changed
Error Handling
ErrBox.As()method: Optimized implementation- Introduced
errorInterfaceTypeas package-level constant to avoid repeated reflection calls - Simplified
isErrorTargetcalculation - Added direct
AssignableTocheck for better performance - Improved error handling for non-error target types
- Enhanced documentation for edge cases
- Introduced
Result Type
Catch()method signature: Changed fromCatch()toCatch(withStackTrace ...bool)- Maintains backward compatibility (default behavior unchanged)
- Allows optional stack trace capture control
- Better performance when stack traces are not needed
Naming Consistency
- Renamed
NonResult()toOkVoid(): Better alignment withOk[T]()andRetVoid()naming conventions
Fixed
Error Handling
ErrBox.As()panic prevention: Fixed potential panic when target type is not an interface or does not implement theerrorinterface- Added proper type checking before calling
errors.As - Ensures
errors.Asis only called when target implementserrorinterface - Improved handling of wrapped errors and error chains
- Added proper type checking before calling
Stack Trace Formatting
StackTrace.Format()default case: Added default case to handle unsupported format verbs gracefully- Ensures
%dand%nverbs are correctly passed toFrame.Format() - Maintains consistency with
Frame.Format()behavior
- Ensures
Testing
New Test Coverage
-
errbox_test.go: Comprehensive tests forpanicErrortypeTestPanicError_Error: Tests error message formattingTestPanicError_Unwrap: Tests error unwrappingTestPanicError_StackTrace: Tests stack trace accessTestPanicError_StackTraceCarrier: Verifies interface implementationTestNewPanicError: Tests creation with various input typesTestPanicError_Format_AllVerbs: Tests allfmt.FormatterverbsTestPanicError_Format_EmptyStack: Tests formatting with empty stackTestPanicError_Unwrap_Chain: Tests error chain unwrapping- Enhanced
TestErrBox_Aswith additional test cases for error chain traversal and edge cases
-
stack_test.go: Comprehensive tests for stack trace functionalityTestGetStackTrace: Tests stack trace captureTestPanicStackTrace: Tests panic stack trace captureTestFrame_*: Tests for Frame methods (pc, file, line, name, Format, MarshalText)TestStackTrace_*: Tests for StackTrace methods (Format, formatSlice)TestStack_*: Tests for stack type methods- Edge case tests for zero frames, nil stacks, empty stacks
-
result_test.go: Enhanced tests forCatch()methodTestResult_Catch_WithStackTraceFalse: VerifiesCatch(false)behaviorTestResult_Catch_WithStackTraceTrue: VerifiesCatch(true)behaviorTestResult_Catch_WithStackTraceDefault: Verifies defaultCatch()behaviorTestResult_Catch_FormatOptions: Tests all format verbs forpanicErrorTestResult_Catch_NoPanic: TestsCatchwhen no panic occursTestResult_Catch_MultiplePanics: Tests multiple panic scenariosTestResult_Catch_ErrorChain: Tests error chain preservationTestOkVoid: TestsOkVoid()functionTestErrVoid: TestsErrVoid()function- Enhanced existing tests to verify stack trace behavior
-
iter/iterator_test.go: Comprehensive tests for BitSet iteratorsTestFromBitSet: TestsFromBitSetwith customBitSetLikeimplementationTestFromBitSetOnesandTestFromBitSetZeros: Tests filtered iteratorsTestFromBitSetBytes: Tests byte slice iteratorTestFromBitSetBytesOnesandTestFromBitSetBytesZeros: Tests byte slice filtered iteratorsTestBitSetIteratorChainingandTestBytesIteratorChaining: Tests iterator method chaining
Test Improvements
- Updated test assertions to verify stack trace behavior correctly
- Added
t.Logfstatements to demonstrate format verb differences - Improved test coverage for edge cases and error scenarios
Documentation
- Updated code comments to remove outdated references to
Errable,ToErrable,NonErrable - Enhanced function documentation with detailed examples
- Added comprehensive examples for new features in README
- Improved inline documentation for error handling and stack trace usage
v1.11.0
Changelog
Added
- Added test cases for
Comparefunction with additional numeric types (uintptr,int8,int16,int32,int64,uint8,uint16,uint32,uint64,float32) - Added test cases for
ErrBox.Asmethod:TestInnerErrBox_As_ErrorDirectMatch: Tests direct error type matchingTestInnerErrBox_As_ErrorChain: Tests error chain traversalTestInnerErrBox_As_NonMatchingType: Tests non-matching target typesTestInnerErrBox_As_NilTargetPanic: Tests nil target panic behavior
- Added support for
innerErrBoxtype inBoxErrfunction (now handlesinnerErrBoxvalues directly in switch statement)
Changed
- BREAKING: Removed
ToErrBoxfunction, replaced withBoxErrfor consistency - BREAKING: Removed
Errableinterface and related functions (ToErrable,NonErrable) - Optimized
innerErrBox.Asmethod algorithm:- Extracted
errorInterfaceTypeas package-level constant to avoid repeated reflection calls - Simplified logic for checking if target type implements error interface
- Reduced unnecessary reflection calls by using
reflect.TypeOfdirectly - Improved performance by checking error type assignment before using
errors.As - Fixed panic when target type is not error interface by checking
isErrorTargetbefore callingerrors.As
- Extracted
- Updated
BoxErrto handleinnerErrBoxtype directly in switch statement - Improved error handling consistency across the codebase
Fixed
- Fixed
TestInnerErrBox_As_WithUnwraptest failure - now correctly matches wrapped error types - Fixed
TestInnerErrBox_As_UnwrapNiltest failure - now correctly handles non-error types - Fixed panic issue in
innerErrBox.Aswhen target type is not error interface (e.g.,*int) - Fixed outdated comments referencing removed
ToErrableandNonErrablefunctions:- Updated
iter/iterator_methods.goAdvanceBy example - Updated
iter/double_ended_methods.goAdvanceBackBy documentation
- Updated
- Updated documentation comments to use correct API (
IsOk(),IsErr()instead of deprecated functions)
Removed
- Removed
coverage_fixes_test.gotest file (test cases moved to appropriate test files) - Removed
errable.goanderrable_test.gofiles (functionality replaced byErrBox)
Documentation
- Optimized README documentation for better clarity
- Updated code comments to reflect current API
- Removed references to deprecated
ToErrable()method inOption.ToResult()documentation - Updated iterator method documentation examples to use correct API (
IsOk(),IsErr())
Testing
- Renamed
TestOption_ToErrabletoTestOption_ToResultfor clarity (testsToResult()method) - Renamed
TestResult_ErrabletoTestResult_ErrToVoidResultfor better description - Enhanced
BoxErrtests withinnerErrBoxtype handling test case - Improved test coverage for error handling paths, especially
ErrBox.Asmethod
Full Changelog: v1.10.0...v1.11.0