A *(resource). From its home page (see below):

<blockquote>
UBF is a *(language) for transporting and describing complex data structures across a network <span class="comment">[_(aka) _(marshalling) -- _(MaD70)]</span>.
It has three components:

<ul>
<li>UBF(A) is a data transport format, roughly equivalent to well-formed _(XML).
<li>UBF(B) is a programming langauge for describing types in UBF(A) and protocols between clients and servers. UBF(B) is roughly equivalent to to Verified _(XML), _(XML)-schemas, SOAP and WDSL.
<li>UBF(C) is a meta-level protocol between used between UBF servers.
</ul>

While the _(XML) series of languages had the goal of having a human readable format the UBF languages take the opposite view and provide a "machine friendly" format.

UBF is designed to be easy to implement. As a proof of concept - UBF drivers for _(Erlang), _(Oz|Mozart/Oz), _(Java) and _(TCL) can be found in the download area. [..]

UBF is designed to be "language neutral" - UBF(A) defines a language neutral binary format for transporting data across a network. UBF(B) is a type system for describing client/server interactions which use UBF(A).

<h4>Programming by Contract</h4>

Central to UBF is the idea of a "contract" which regulates the set of legal conversations that can take place between a client and a server.

A software component (the contract checker) is place between a client and server which checks that all interactions between thew client and server are legal.

[..]
</blockquote>

<ul class="implementations">
<li>_("UBF homepage"|http://www.sics.se/~joe/ubf/site/home.html).
<li>_("Joe Armstrong SICS home page"|http://www.sics.se/~joe/), its author.
<li>_("White paper"|http://www.sics.se/~joe/ubf/site/white.html) excerpt:
<blockquote>
<h4>What is the relationship between UBF and _(XML)?</h4>

Both UBF and _(XML) have similar goals and similar structure. _(XML) has a <strong>supposedly</strong> human friendly syntax and is <strong>supposed</strong> to be self describing. UBF is programmer friendly and is designed to be efficient and easy to implement.

<h4>Why is UBF parsing efficient</h4>

<strong>UBF(A) terms are actually little programs which the decoder executes.</strong> When reconstructing a UBF(A) term the decoder just executes the program. No grammar checking or parsing is actually involved.

UBF(A) encoded terms are also much more compact than the equivalent _(XML) terms. Since parsing an import stream involves looking at every character on the input UBF parsing is intrinsically much more efficient than _(XML) parsing. A UBF(A) encoder can also make intelligent use of the caching optimization to further improve efficiency.
</blockquote>
</ul>
