Remove nullability support for `{Owned,Unowned}{Fd,CFile}` and
`{Fd,CFile,Digester,DigesterBase}Handle`.

Sadly, for `Owned` classes they are incompatible with `Open()` and `Close()`
given that nullability analysis does not know anything about these functions:

* The caller has to assert that the target is not null after a successful
  `Open()`, if it is subsequently passed to a function which requires
  a non-null parameter.

* If `Open()` is called on a member variable, the call to `Open()` itself is
  flagged as reading a null value. This cannot be silenced with an assertion
  because it is indeed null and `Open()` is valid despite this.

  I don't know why this does not apply to a local variable.

* `Close()` makes the object null in a way which is opaque to nullability
  analysis.

An explicit `absl_nullability_unknown` would silence that. Still, deciding when
to apply that, and when to apply an intended nullability annotation, would be
too subtle.

`Unowned` classes should be analogous to avoid confusion.

For `Handle` classes, it is doubtful that nullability annotations would be
useful, because in clients they are mostly used as template arguments, namely
in `Dependency<...Handle, ...>` and `Any<...Handle>`.

PiperOrigin-RevId: 806268974
5 files changed
tree: e6a59459682402cf57289e125084ff42785d672e
  1. doc/
  2. python/
  3. riegeli/
  4. tf_dependency/
  5. .bazelrc
  6. configure
  7. CONTRIBUTING.md
  8. LICENSE
  9. MANIFEST.in
  10. MODULE.bazel
  11. README.md
README.md

Riegeli

Riegeli/records is a file format for storing a sequence of string records, typically serialized protocol buffers. It supports dense compression, fast decoding, seeking, detection and optional skipping of data corruption, filtering of proto message fields for even faster decoding, and parallel encoding.

See documentation.

Status

Riegeli file format will only change in a backward compatible way (i.e. future readers will understand current files, but current readers might not understand files using future features).

Riegeli C++ API might change in incompatible ways.