Most has gone into issues, some are not really standalone issues but more curious observations I'd like to check with you:
[x] I've had a few test cases like [["path-component"]], had to turn them into [True, ["path-component"]] because discard is not optional any more. I think that's part of the "we do things simpler to ease implementations" changes, I just want to be sure we're happy with that extra. (We likely are: The relative references about whose size I care most are those with discard=1 that correspond to URI references like "path-component", and that wouldn't have been the default anyway).
[ ] Relatedly, the empty CRI reference [] is currently valid, but not very useful (it reuses the base's scheme but sets the authority to NOAUTH-LEADINGSLASH) and thus goes to coap: in the examples (yes, no slash, see https://github.com/core-wg/href/issues/46). Also, just checking whether we're happy with that.
[x] Is there, in a (full) CRI, a difference between path being null and path being an empty list? (I currently force both into an empty list unless discard = 0 where it does make a difference, otherwise I see equivalent forms of full CRIs where one has [] and one null as a path).
[x] The building of the host is the only place where we create a text-or-PET list not from an actual CBOR array, but from iteration-until-a-condition-is-met on the tail of a array. I've briefly checked whether this precedent would allow us to save a byte somewhere again, but probably not. (Paths were given an array length for good reason, and the item following queries is just a text-or-pet again).
Most has gone into issues, some are not really standalone issues but more curious observations I'd like to check with you:
[x] I've had a few test cases like
[["path-component"]]
, had to turn them into[True, ["path-component"]]
because discard is not optional any more. I think that's part of the "we do things simpler to ease implementations" changes, I just want to be sure we're happy with that extra. (We likely are: The relative references about whose size I care most are those with discard=1 that correspond to URI references like "path-component", and that wouldn't have been the default anyway).[ ] Relatedly, the empty CRI reference
[]
is currently valid, but not very useful (it reuses the base's scheme but sets the authority to NOAUTH-LEADINGSLASH) and thus goes tocoap:
in the examples (yes, no slash, see https://github.com/core-wg/href/issues/46). Also, just checking whether we're happy with that.[x] Is there, in a (full) CRI, a difference between path being null and path being an empty list? (I currently force both into an empty list unless discard = 0 where it does make a difference, otherwise I see equivalent forms of full CRIs where one has [] and one null as a path).
[edit: Is now https://github.com/core-wg/href/issues/59]
[x] The building of the host is the only place where we create a text-or-PET list not from an actual CBOR array, but from iteration-until-a-condition-is-met on the tail of a array. I've briefly checked whether this precedent would allow us to save a byte somewhere again, but probably not. (Paths were given an array length for good reason, and the item following queries is just a text-or-pet again).
[edit: I think I'm just OK with this]