Skip to content

Commit ed656c4

Browse files
committed
Prepare v0.17.0
1 parent e424b72 commit ed656c4

File tree

2 files changed

+58
-26
lines changed

2 files changed

+58
-26
lines changed

CHANGELOG.md

+57-25
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ Much of this code is used in other libraries and products, and we do take some c
1111
(If you're ever wondering about stability of a feature, ask -- or contribute more tests ;))
1212

1313
- [Planned/Upcoming Changes](#planned-upcoming-changes)
14-
- [Changes on master branch but not yet Released](#unreleased-on-master)
1514
- [Released Changes Log](#released-changes)
1615

1716

@@ -20,34 +19,67 @@ Planned/Upcoming Changes
2019

2120
Here are some outlines of changes we intend to make that affect the public API:
2221

23-
- ... the critical list is relatively empty, for now :)
24-
- There have been some recurring wishes to do something about the Selector package layout. There's no intended or prioritized date for this. See https://github.com/ipld/go-ipld-prime/issues/236 for more.
25-
- There may be some upcoming changes to exactly how "not found" values are handled in order to clarify and standardize the subject. There's no finalized date for this. See https://github.com/ipld/go-ipld-prime/issues/360 for more.
26-
27-
This is not an exhaustive list of planned changes, and does not include any internal changes, new features, performance improvements, and so forth.
28-
It's purely a list of things you might want to know about as a downstream consumer planning your update cycles.
29-
30-
We will make these changes "soon" (for some definition of "soon").
31-
They are currently not written on the master branch.
32-
The definition of "soon" may vary, in service of a goal to sequence any public API changes in a way that's smooth to migrate over, and make those changes appear at an overall bearable chronological frequency.
33-
Tagged releases will be made when any of these changes land, so you can upgrade intentionally.
34-
35-
36-
Unreleased on master
37-
--------------------
38-
39-
Changes here are on the master branch, but not in any tagged release yet.
40-
When a release tag is made, this block of bullet points will just slide down to the [Released Changes](#released-changes) section.
41-
42-
- _nothing yet :)_
43-
44-
It's entirely possible there are more changes than are noted here -- consider checking the git commit log as the ultimate source of truth.
45-
46-
22+
- **Bindnode improvements**: Candidates for merge and release include:
23+
- Custom Go type to IPLD kind conversion `Option`s: https://github.com/ipld/go-ipld-prime/pull/414
24+
- Type registry for easier local maintenance of type to `Type` & `TypedPrototype` mappings and utilities for dealing with them: https://github.com/ipld/go-ipld-prime/pull/437
25+
- **Selectors**: There have been some recurring wishes to do something about the Selector package layout. There's no intended or prioritized date for this. See https://github.com/ipld/go-ipld-prime/issues/236 for more.
26+
- **Absent / "Not found" values**: There may be some upcoming changes to exactly how "not found" values are handled in order to clarify and standardize the subject. There's no finalized date for this. See https://github.com/ipld/go-ipld-prime/issues/360 for more.
4727

4828
Released Changes
4929
----------------
5030

31+
### v0.17.0
32+
33+
_2022 Jun 15_
34+
35+
go-ipld-prime's release policy says that:
36+
37+
> even numbers should be easy upgrades; odd numbers may change things
38+
39+
In that spirit, this v0.17.0 release includes some potentially breaking changes. Although minor, they are marked below and they may lead to behavioral changes in your use of this library.
40+
41+
#### 🛠 Breaking Changes
42+
43+
* **Codecs**:
44+
* DAG-CBOR, DAG-JSON: [Error on `cid.Undef` links in dag{json,cbor} encoding](https://github.com/ipld/go-ipld-prime/pull/433) - previously, encoding Link nodes that were empty CIDs (uninitialized zero-value or explicitly `cid.Undef`) would have passed through the DAG-CBOR or DAG-JSON codecs, silently producing erroneous output that wouldn't successfully pass back through a decode. (Rod Vagg)
45+
* **Bindnode**:
46+
* [Panic early if API has been passed ptr-to-ptr](https://github.com/ipld/go-ipld-prime/pull/427) - previous usage of bindnode using pointers-to-pointers may have deferred (or in some cases avoided) panics until deeper usage of the API, this change makes it earlier to make it clear that pointer-to-pointer is not appropriate usage. (Rod Vagg)
47+
* **Build**:
48+
* [Drop Go 1.16.x testing & begin testing Go 1.18.x](https://github.com/ipld/go-ipld-prime/pull/394) (Daniel Martí)
49+
* Note also that in this release, the [github.com/ipfs/**go-cid**](https://github.com/ipfs/go-cid) dependency is upgraded from 0.0.4 to 0.2.0 which includes a breaking change with the removal of the `cid.Codecs` and `cid.CodecToStr` maps which may disruptive. See [the go-cid@0.2.0 release page for details](https://github.com/ipfs/go-cid/releases/tag/v0.2.0).
50+
51+
#### 🔦 Highlights
52+
53+
* **Data Model**:
54+
* [Introduce `UIntNode` interface, used within DAG-CBOR codec to quietly support full uint64 range](https://github.com/ipld/go-ipld-prime/pull/413) (Rod Vagg)
55+
* **Bindnode**:
56+
* Fuzzing and hardening for production use (Daniel Martí)
57+
* Refuse to decode empty union values (Daniel Martí)
58+
* [Allow nilable types for IPLD `optional`/`nullable`](https://github.com/ipld/go-ipld-prime/pull/401) (Daniel Martí)
59+
* [More helpful error message for common enum value footgun](https://github.com/ipld/go-ipld-prime/pull/430) (Rod Vagg)
60+
* [Infer links and `Any` from Go types](https://github.com/ipld/go-ipld-prime/pull/432) (Rod Vagg)
61+
* **Schemas**:
62+
* DMT: Proper checking for unknown union members (Daniel Martí)
63+
* DMT: Enum representations must be valid members (Daniel Martí)
64+
* DMT: Reject duplicate or missing union representation members (Daniel Martí)
65+
* DSL: [Support `stringjoin` struct representation and `stringprefix` union representation](https://github.com/ipld/go-ipld-prime/pull/397) (Eric Evenchick)
66+
* DMT, DSL: [Enable inline types](https://github.com/ipld/go-ipld-prime/pull/404) (Rod Vagg)
67+
* **Patch**:
68+
* [Add initial version of IPLD Patch feature](https://github.com/ipld/go-ipld-prime/pull/350) (Eric Myhre) *(helped across the line by mauve and Rod Vagg)*
69+
* **Codecs**:
70+
* DAG-CBOR: [Reject extraneous content after valid (complete) CBOR object](https://github.com/ipld/go-ipld-prime/pull/386) (Rod Vagg)
71+
* DAG-CBOR: [add `DecodeOptions.ExperimentalDeterminism`](https://github.com/ipld/go-ipld-prime/pull/390) (currently only checking map sorting order) (Daniel Martí)
72+
* Printer: [Fix printing of floats](https://github.com/ipld/go-ipld-prime/pull/412) (Dustin Long)
73+
* DAG-JSON: [Add option to not parse beyond end of structure](https://github.com/ipld/go-ipld-prime/pull/435) (Petar Maymounkov)
74+
* **Build**:
75+
* Fix [macOS](https://github.com/ipld/go-ipld-prime/pull/400) and [Windows](https://github.com/ipld/go-ipld-prime/pull/405) testing (Rod Vagg)
76+
* [Fix 32-bit build support](https://github.com/ipld/go-ipld-prime/pull/407) (Rod Vagg)
77+
* [Make staticcheck and govet happy across codebase](https://github.com/ipld/go-ipld-prime/pull/406) (Rod Vagg)
78+
* Enable full [unified-ci](https://github.com/protocol/.github) GitHub Actions suite, including auto-updating (Rod Vagg)
79+
* [Enable dependabot, with monthly checks](https://github.com/ipld/go-ipld-prime/pull/417) (and update all dependencies) (Rod Vagg)
80+
81+
Special thanks to **Daniel Martí** for many bindnode improvements and hardening, fuzzing across the library and improvements to the Schema DMT and DSL.
82+
5183
### v0.16.0
5284

5385
_2022 March 09_

version.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"version": "v0.16.0"
2+
"version": "v0.17.0"
33
}

0 commit comments

Comments
 (0)