Binary interfaces: storage, devices, protocols

Recently I re-read Stephen Kell's article, "Some Were Meant for C: The
Endurance of an Unmanageable Language", where he argues that C owes
its longevity in part to its "communicative" design: memory may be
treated as a bundle of communication channels, bits can be interpreted
as objects and vice versa.

The communicativeness of C is something that I recognize and appreciate.
Nevertheless, I feel like Swift could be a better "communicative"
language than C if it had primitives or a library with which to describe
binary interfaces such as protocol packets, storage formats, device
registers, or DMA descriptors, as those interfaces actually operate in
the wild.

Binary interfaces have some concepts in common, including address space,
address space regions and mappings, and so on. Several properties
commonly describe address spaces and the regions therein:

  • allowed/advised access alignments & widths
  • un-RAM-like access side-effects
  • access-type restrictions: read-only, non-executable
  • granularity of exception reporting

In software that uses binary interfaces, it is common to push layers of
interpretation onto regions:

  • storage type
  • mutually-exclusive region roles or agent ownership
  • binary-encoded "arrows" linking one region to another
  • roles deriving from position, linkage, and/or self-description
  • synchronization requirements
  • source of authority: content in one region imparts access and/or
    interpretation to other regions

I cannot see any reason in principle that Swift should not be able
to operate on binary interfaces using expressions that are precise,
predictable, and efficient. Is anyone already working on Swift
primitives or an API for this?

Dave

1 Like

Anything in particular you're you looking for?

I like how OptionSet bridges a Swift interface onto what's essentially a bitset. Also, Swift Atomics has implementations of a lot of low-level synchronization constructs that may be interesting to you, if you haven't checked that out yet.