## 4.3 Changes in the implementation that affect maintainability and portability

### 4.3.1 Accessing Oz Data Structures

Mozart 1.2.0 features the new design and implementation of the part of the run-time system (engine) that deals with allocation and accessing Oz data structures. This not only allows 2GB of live data, as mentioned in Section 4.1, but also:

* Greatly enhanced portability

  Mozart does not impose anymore any constraints on where the "C" data regions are mapped, which is different across different flavors of Un*x. This also simplified the Windows port.

* Is THE prerequisite for clean 64bit ports

  while this release still does not support 64 Bit machines such as Alphas, etc, this change is the first -- and quite big -- step towards that goal.

### 4.3.2 Redesign of the Distribution Subsystem

Distribution subsystem has undergone a principle overhaul.

- The distribution subsystem is cleanly divided into a protocol layer and a message-passing layer, with interfaces between them explicitly specified.

- Flexible connection establishment. A pair of Mozart sites connect now by execution of dedicated, replaceable Mozart functors. This enables customization of connection protocols for creation of closed subdomains or traversal of fire-walls. Currently there is no user interface to this facility, but we plan to introduce one.

- The message-passing layer has been redesigned and re-implemented. The new design is featured by:

  - better resource utilization, both in terms of memory and system resources (e.g file descriptors).

  - improved balance between the (centralized) engine and the distribution subsystem in terms of run time. In particular, large messages sent between Mozart sites do not lock out the engines on either side.

  - an open architecture enabling introduction of new transportation mediums.

  - higher throughput by better pipelining of messages.

  - caching of TCP channels reworked.

  - automatic round trip calculation.

  - failure detection on measured round trips rather than by TCP.

A document describing the Distributed Subsystem added to the documentation tree.