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.
v5.0.0 - 2021-10-15
Since this release, we will use go.beyondstorage.io/v5
as new module name.
- GSP-840: Convert to monorepo (#840)
- GSP-839: Add Support for Content-Disposition (#839)
- *: Rename to go.beyondstorage.io (#842)
- credential,endpoint: Split from pkg (#843)
- refactor(tests): Move go-integration-tests here (#847)
v4.8.0 - 2021-09-30
- feat: Generate code via Xuanwo/gg (#728, #737, #738, #739, #740, #742)
- docs/rfcs: GSP-749 Unify Path Behavior (#749)
- docs: Add README.zh-CN.md (#750)
- docs/rfcs: GSP-751 Write Empty File Behavior (#751)
- docs: Add description of GSP-751 (#759)
- feat: Implement GSP-749 unify path behavior (#822)
- feat: Replace separator with / in path for service (#823)
- docs/rfcs: GSP-826 Add Multipart HTTP Signer Support (#826)
- feat: Add Multipart HTTP Signer support (#829)
- docs: Add the services bos and obs to the README (#748)
- refactor: Cleanup definition generate logic (#754)
- feat: Migrate internal iterator generator to definitions (#755)
- ci: Sync github actions (#757)
- fix: Compilation fails if Default*Pairs unimplemented in service (#821)
- fix: Not enough arguments in call to Service.formatError (#824)
- fix: Replace each backslash in path with a slash (#825)
- fix: Fixed the error when no function is declared under the namespace (#831)
- build(deps): bump github.com/pelletier/go-toml from 1.9.3 to 1.9.4 (#746)
v4.7.0 - 2021-09-02
- tests: Add test for NewStorageFromString (#724)
- docs/rfcs: GSP-725 Add Defaultable Property for Pair (#725)
- cmd/definitions: Implement GSP-725 Add Defaultable Property for Pair (#730)
- docs/rfcs: GSP-729 Redesign HTTP Signer (#729)
- definitions: Implement GSP-729 Redesign HTTP Signer (#732)
- docs/rfc: Remove pair declare description for GSP-729 (#735)
- definitions: Deprecate Reacher and expire (#734)
v4.6.0 - 2021-08-25
- feat: Support features and default paris in connection string (#713)
- feat: Set Features with feature pairs (#716)
- feat: Allow append pairs for New{Servicer,Storager}FromString (#718)
- feat: Set DefaultPairs with defaultable pairs (#719)
- ci: Add cross build (#721)
- cmd/definitions: Remove conflict from pair (#720)
- definitions: Fix naming format for http signer (#714)
v4.5.0 - 2021-08-19
- tests: Implement bench for List (#687)
- ci: Add golangci-lint (#690)
- docs/rfcs: GSP-700 Config Features and DefaultPairs via Connection String (#700)
- docs/rfcs: GSP-706 Support HTTP Signer (#706)
- feat: Generate feature pairs (#708)
- definitions: Implement GSP-706 Support HTTP Signer (#709)
- feat: Generate default pairs (#710)
- docs: Update go-storage docs link (#696)
- docs: Update links to matrix (#701)
- docs: Update readme about services support (#705)
- *: Fix ineffectual assignments (#691)
- definitions: Fixed a description error in CreateLink (#698)
v4.4.0 - 2021-07-22
- docs: GSP-669 Feature Lifecycle (#669)
- definitions: Implement GSP-86 Add CreateLink (#674)
- docs: Update rfc README, fix GSP-669 typo (#673)
- cmd: Remove not used package in service.tmpl (#679)
- definitions: Implement GSP-41 Turn Pair Expire into Duration (#681)
- tests: Split from cmd definitions (#685)
- build(deps): Bump github.com/google/uuid from 1.2.0 to 1.3.0 (675)
v4.3.2 - 2021-07-15
- cmd: Add warning for type convert instead (#670)
v4.3.1 - 2021-07-15
- pkg: Add pkg/endpoint back to avoid breaking other projects (#667)
- build(deps): bump github.com/golang/mock from 1.5.0 to 1.6.0 (#597)
v4.3.0 - 2021-07-14
- cmd/definitions: Add support for type uint64 (#615)
- services: Implement GSP-127 Add ServiceInternal and RequestThrottled Errors (#616)
- ci: Add codecov in unittests (#622)
- docs: GSP-654 Unify List Behavior (#654)
- ci: Add gofmt to action (#660)
- docs: Reorganize README for better understanding (#613)
- types: Add comments for Object and ObjectMode (#614)
- cmd/definitions: Remove deprecated fields introduced in v4.2.0 (#619)
- pkg/endpoint: Remove deprecated package pkg/endpoint (#621)
- docs: Move rfcs and spec here as required in GSP-139 (#628)
- cmd: Move definitions here as described in GSP-139 (#652)
- docs: Update RFC template (#655)
- cmd/definitions: Implement GSP-134 Write Behavior Consistency (#656)
- makefile: Fix code not formatted correctly (#661)
v4.2.0 - 2021-06-24
- cmd/definitions: Implement GSP-97 Add Restrictions In Storage Metadata (#601)
- cmd/definitions: Implement GSP-111 Add System Metadata in Storage Metadata (#605)
- cmd/definitions: Trim Service Pair Prefix (#598)
- services: Implement GSP-90 Re-support Initialization Via Connection String (#589)
- cmd/definitions: Implement GSP-109 Redesign Features (#606)
- cmd/definitions: Implement GSP-117 Rename Service to System as the Opposite to Global (#608)
- pkg/endpoint: Deprecated by github.com/beyondstorage/go-endpoint (#595)
- services: Related fields
ServiceFeatures
andStorageFeatures
have been deprecated (#606) - services:
GetObjectMetadata
has been deprecated byGetObjectSystemMetadata
(#608)
v4.1.0 - 2021-06-08
- cmd/definitions: Implement GSP-87 Feature Gates (#586)
- cmd/definitions: Implement GSP-93 Add ObjectMode Pair (#592)
- cmd/definitions: Fix storage features not generated (#588)
v4.0.0 - 2021-05-24
- storage: Implement GSP-44 (#547)
- services: Implement GSP-48 Service Registry (#556)
- services: Implement GSP-47 Additional Error Specification (#555)
- storage: Implement GSP-49 Add CreateDir Operation (#561)
- services: Implement GSP-51 Distinguish Errors by IsInternalError (#564)
- types: Implement GSP-61 Add object mode check for operations (#573)
- cmd/definitions: Add functions Add and Del for ObjectMode (#574)
- cmd/definitions: Declare supports interfaces in generator (#584)
- cmd/definitions: Remove redundant // in object.tmpl (#565)
- docs: Move spec to specs (#568)
- docs: Add comment to illustrate ignoring generated.go in tests package (#567)
- cmd/definitions: Update obsolete file paths in comments (#570)
- object: Implement GSP-62 WriteMultipart returns Part (#572)
- iowrap: Explicit declare implemented interface (#576)
- *: Implement GSP-73 Organization Rename (#578)
- storage: Implement GSP-76 Local Function Metadata (#77) (#580)
- types: Fix IterateDone doesn't implement InternalError (#582)
v3.6.0 - 2021-04-24
- object: Add AppendOffset for appendable object (#532)
- cmd/definitions: Add a new type byte_array (#534)
- pkg: Implement wrapper for fs.FS and http.FileSystem (#538)
- cmd/definitions: Implement GSP-40 (#541)
- docs: Fix broken links in README (#533)
- docs/specs: Replace spaces by tab in the code in 1-error-handling (#535)
v3.5.0 - 2021-04-20
- cmd/definitions: Add tests service (#518)
- cmd/definitions: Increase stability of generated code (#526)
- types: Add UnimplementedStub to have forward compatible implementations (#524)
- pkg/iowrap: Add cancelable io wrappers (#528)
- docs: Update README
- docs: Migrate zulip to matrix
- docs: Fix quick start is not runnable
v3.4.2 - 2021-03-16
- object: Add Multipart related fields into object (#516)
v3.4.1 - 2021-03-04
- cmd: Fix support for local function generation (#513)
v3.4.0 - 2021-03-04
- storage: New is conflict with Storage init logic, rename to Create instead (#511)
v3.3.0 - 2021-03-04 (deprecated)
- pkg/iowrap: Implement Pipe (#508)
- types: Add "New" operation to create an object locally (#509)
v3.2.0 - 2021-02-22
- iowrap: Implement CallbackWriter (#502)
- types: Implement Stringer for ObjectMode (#503)
- service: Add template for generating default pair for each service (#504)
v3.1.0 - 2021-02-18
- *: Implement proposal unify object metadata (#498)
- cmd/definitions: Remove parsed pairs pointer (#500)
- pkg: Remove not used storageclass package
v3.0.0 - 2021-01-15
- pairs: Add support for user-agent (#477)
- operation: Add fetcher (#480)
- Proposal: Add default pair for operations (#484)
- types: Implement proposal Unify List Operation (#489)
- types: Implement proposal segment api redesign (#490)
- cmd: Implement code generate and format (#491)
- types: Implement proposal Object Mode (#493)
- cmd/definitions: Don't need to store definitions to bindata (#476)
- cmd: Introduce beyondstorage/specs to maintain specs (#481)
- docs: Migrate design to beyondstorage/specs (#488)
- cmd: Migrate from hcl to toml (#496)
v2.0.0 - 2020-11-12
- cmd/definitions: Merge into main modules (#465)
- cmd: Add tools tag into build (#468)
- cmd/definitions: Fix service not generated correctly (#466)
- cmd/definitions: Fix server pair not handled correctly (#472)
v2.0.0-beta - 2020-11-09
- types: Implement pair policy (#453)
- pkg/storageclass: Add sotrageclass support (#456)
- build: Use beyondstorage/go-dev-tools to tidy go mod files (#454)
- cmd/install: Move to beyondstorage/go-dev-tools/setup
- pairs: Use dot import to avoid type conflicts (#459)
- build(deps): bump github.com/google/uuid from 1.1.1 to 1.1.2 (#461)
v2.0.0-alpha.1 - 2020-11-02
- Support Iterator based list operation
- types/iterator: Allow store current status in iterator
- types/object: Support linked set
- types/iterator: Make Page.Status continuable (#433)
- types/object: Add link support (#438)
- types: Add interceptor support (#449)
- *: Moving to beyondstorage/go-storage (#414)
- cmd: Move definitions to cmd to support service split (#416)
- types/object: Move all meta into ObjectMeta
- Return count in storager when read and write (#427)
- types: Refactor into struct for object stat support
- types/pair: Use struct instead of pointer (#435)
- *: Improve minimum supported version to go 1.14 (#444)
- makefile: Manage build tools via go modules (#447)
- types: Fix object stat not updated correctly
- types: Fix bit operations not correctly (#434)
- coreutils: Split into beyondstorage/go-coreutils (#417)
- tests: Move to beyondstorage/go-storage-integration-test (#418)
- services: Split all services into separate repos (#419)
- types: Remove no used object meta
v1.2.1 - 2020-06-30
- internal: Generate all exported APIs (#361)
- services/fs: Convert system specific separator to slash (#408)
- services/qingstor: Fix WorkDir listed in keys while ListDir (#366)
- definitions: Fix statistical's result is incorrect (#367)
- services/qingstor: Fix unit test for ListDir (#404)
v1.2.0 - 2020-05-20
- tests: Add integration test for qingstor (#325)
- pkg/iowrap: Add SizedReadSeekCloser support (#329)
- tests: Add integration test for azblob (#331)
- tests: Add integration test for s3 (#338)
- tests: Add integration test for gcs (#341)
- tests: Add integration test for cos (#342)
- tests: Add integration test for oss (#343)
- tests: Add integration test for kodo (#347)
- services/fs: Auto create work dir (#324)
- pkg/endpoint: Allow omit protocol default port (#346)
- tests: Compare content sha256 instead of full content
- services/*: Fix context not initiated (#328)
- services/azblob: Fix content length not set correctly (#330)
- services/s3: Fix NotFound error not handled correctly (#332)
- services/s3: Fix ListDir && ListPrefix not ended correctly (#333)
- services/s3: Fix Read's pair not parsed correctly (#334)
- services/s3: Fix bucket in request input not assigned (#335)
- services/s3: Location should be required in Storager Init (#336)
- services/s3: Don't calculate content-sha256 as default (#337)
- services/gcs: Fix ListDir and ListPrefix not ended correctly (#339)
- services/gcs: Fix oauth2 token source not configured correctly (#340)
- services/oss: Fix ListPrefix && ListDir not ended correctly
- services/oss: Fix Read's pairs not parsed correctly
- services/oss: Fix LastModified not parsed correctly
- services/uss: Fix content-length header not filled
- services/uss: Fix ListDir && ListPrefix data race while returning error
- services/uss: Fix object channel double close
- services/uss: Fix object not iterated fully
- services/uss: Fix dead loop on reading from io.Pipe
- services/uss: Use async delete to avoid 'concurrent' delete
- services/uss: Disable async delete for unexpected behavior (#345)
- services/kodo: Fix kodo's domain not setup correctly
- services/kodo: Fix object not found error not formatted correctly
- services/kodo: Fix request deadline not set correctly
- services/kodo: Fix service level error not parsed
v1.1.0 - 2020-05-14
- services, design: Propose and implement 21-split-segmenter (#270)
- types/pairs: Add more comment for work dir
- pkg/httpclient: Add stream-oriented http client support (#274)
- services/qingstor: Detect bucket location automatically (#278)
- ci: Setup drone for integration test (#282)
- services/qingstor: Allow read with offset and size (#283)
- services: Add service level pair support (#311)
- services/*: Add service level storage class support (#313)
- services/qingstor: Add disable uri cleaning support (#314)
- types/pairs: Allow parse from plain string value (#281)
- docs: Use vuepress instead (#286)
- docs: Import user experience (#287)
- docs: Get ready for i18n docs (#289)
- docs: Add crowdin support for i18n (#290)
- *: Refactor definitions generator (#303)
- definitions: Auto inject http_client_options for all services (#321)
- internal/cmd: Fix -ignore flag in go generate matches unexpected files (#268)
- services/azblob: Fix context deadline exceeded while reading (#275)
- pkg/httpclient: Fix connection closed while writing or reading (#305)
v1.0.0 - 2020-04-23
- storager, services: Implement proposal 19-split-storage-list (#249)
- types, services: Implement proposal 20-remove-loose-mode (#250)
- types/pairs: Add description for paris (#238)
- services/azblob: Add offset and size support for Read (#252)
- types/pairs: Add Parse support (#260)
- services/qingstor: Dir support is not needed in stat (#223)
- services/*: Set content-type as best errort (#234)
- services/*: Check metadata value before set (#235)
- pkg/headers: Move all explicit header keys into const (#236)
- tests: Refactor integration test (#261)
- coreutils, services: Refactor Open related logic (#264)
- services/*: Fix error not handled correctly with empty body (#227)
- services/qingstor: Fix ListBuckets incomplete (#228)
- services/*: Fix getAbsPath and getRelPath not handled correctly (#253)
- internal/cmd/service: Fix context pair not handled correctly (#254)
v0.9.0 - 2020-03-23
- docs/design: Add 14-normalize-content-hash-check (#186)
- docs/design: Add proposal release policy (#192)
- docs/design: Add proposal loose mode (#199)
- docs: Add proposal 17-proposal-process (#210)
- docs/design: Add proposal return-segment-interface-instead (#216)
- services/*: Implement 14-normalize-content-hash-check (#189)
- services/*, types/pairs: Implement proposal loose-mode (#200)
- pkg/segment, docs/design: Add and implement proposal return-segment-interface-instead (#216)
- services/s3: Add multipart support (#220)
v0.8.0 - 2020-03-09
- services/*: Add ReadCallbackFunc for WriteSegment (#169)
- docs/design, coreutils: Propose and implement proposal remove config string (#172)
- services/cos: Refactor service newStorage (#176)
- services/fs: Fix size and offset pair not handled correctly (#175)
- services/kodo: Fix ID not set (#178)
- services/*: Handle errors returned by New (#179)
v0.7.2 - 2020-03-05
- services/*: Implement proposal 11-error-handling (#143)
- docs/design: Support both directory and prefix based list (#157)
- services/*: Implement proposal 12-support-both-directory-and-prefix-based-list (#158)
- services/*: Refactor format error (#166)
- services/{gcs,kodo,oss,s3}: Fix Object type in List incorrect (#162)
v0.7.1 - 2020-02-29
- docs/{design,spec}: Add proposal for error handling (#106)
- pkg/*: Implement proposal 11-error-handling (#109)
- services/qingstor: Implment proposal 11-error-handling (#117)
- services/fs: Implement proposal 11-error-handling (#141)
- services/qingstor: Refactor work dir handler with unit tests (#139)
- services: Fix WorkDir support missing in some services (#131)
- services/qingstor: Fix error not handled as intended (#135)
- services/qingstor: Fix service qingstor error not handled correctly
v0.7.0 - 2020-02-10
- tests: Add bdd test for integration test (#81)
- docs/design, pkg/iowrap: Add and implement proposal 10-callback-reader (#88)
- docs/design, services: Add and implement proposal 9-remove-storager-init (#79)
v0.6.0 - 2020-01-13
- services,types: Implement proposal add-id-in-object (#56)
- services, types/metadata: Implement proposal 6-normalize-metadata (#59)
- services: Add basic kodo support (#49)
- services: Add basic cos support (#65)
- services: Add dropbox basic support (#53)
- services: Add uss basic support (#67)
- *: Implement proposal 7-support-context (#68)
- services, pkg/storageclass: Add and implement proposal 8-normalize-metadata-storage-class #71
- storager: Rename ListDir to List (#52)
v0.5.0 - 2019-12-30
- services: Add support for s3 (#41)
- services: Add basic oss support (#42)
- services: Add basic gcs support (#48)
- services: Add basic support for azblob (#50)
- pkg/config: Allow emit host instead of credential
- pkg/credential: Implement proposal 4-credential-refactor
- sercices/s3: Fix error message for servicer (#44)
v0.4.0 - 2019-12-23
- servicer: Add String() for debug (#23)
- Implement proposal support service init via config string (#38)
- internal: Refactor generator (#24)
- internal: Don't preserve files' metadata
- storager: Implement proposal 1-unify-storager-behavior (#30)
- *: Implement proposal 2-use-callback-in-list-operations (#31)
- services: Promote values into struct instead of metadata (#33)
- services: Split endpoint and credential into different pairs (#34)
- storager: Split Metadata to Metadata and Statistical (#39)
- services/posixfs: Fix std{in/out} support for Stat (#35)
v0.3.0 - 2019-11-11
- services: Add POSIX fs support (#1)
- services/posixfs: Add support for write stdout
- services/posixfs: Implement size and offset in Read (#8)
- services/qingstor: Add bucket name validate (#9)
- storager: Add String interface for debug print (#16)
- services/posixfs: Set updatedAt for regular file (#19)
- storager: Merge Capablity and IsPairAvailable into Capable
- services: Unify behavior for ListDir recursively
- storager: All API now use relative path instead
- services/qingstor: Set default base value (#13)
- types: Rename Base to WorkDir (#17)
- services/qingstor: Fix segment ID used incorrectly
- services/posixfs: Fix ListDir not returned ErrDone
- pkg/segment: Fix data while update segments
- pkg/segment: Fix GetPartIndex bug in concurrent write segment
- pkg/segment: Return sorted parts
- services/posixfs: Fix ListDir recursive not work
- pkg/iterator: Fix next panic while under lying func return empty buf
- services/qingstor: Fix recursive not handled correctly
- services/posixfs: Fix relative path not returned correctly
- services/qingstor: Part number must be in ascending order (#14)
- services/qingstor: Fix get abs and rel path (#15)
- services/qingstor: Handle not found returned via head (#20)
- services/posixfs: Handle not found returned via os not exist error. (#21)
- storager: Remove CreateDir (#18)
v0.2.0 - 2019-10-17
- services/qingstor: Implement ListSegments (#7)
- segment: Replace identifier and add ListSegments support (#6)
- services/qingstor: Fix ListDir not handled correctly (#2)
- services/qingstor: Fix object size and last modified not filled (#4)
- services/qingstor: Add stat updated at support (#5)
- Add storager and servicer interface.
- Add segment and iterator support.
- Add pair based option and metadata support.
- Add qingstor services.