| Elektra 0.11.0

Binary

# Problem

Binary

- is the only metadata that allows more values (instead of making the validation stricter)
- is the only API that modifies metadata
- creates some inconsistencies in the API (e.g. `KEY_FLAG_RO_VALUE` is linked to `KEY_FLAG_RO_META`)

# Constraints

- simplify API

# Assumptions

- byte-array values are a rarely used feature in configuration settings
- absence of values, i.e., null keys however, is quite common

# Considered Alternatives

- flag for indicating if a value is binary

# Decision

- make keys with untyped value per default (no assumption about type, i.e., byte-array)
- all current types are not binary, so type = string is the way to indicate a string doesn't
  - contain null bytes
  - is not null (not only indicator of structure without value)
  - uses some well-defined but unspecified text encoding (i.e. not necessarily ASCII or UTF-8)
- remove binary functionality from keyNew keyVNew keyIsBinary keyIsString keyValue keyGetValueSize keyString keyGetString keySetString keyGetBinary keySetBinary
- keySetRaw -> keySetValue

# Rationale

# Implications

- metadata can also be binary
- binary types would be possible (e.g. nullable-string)

# Related Decisions

- null

# Notes