|- Up -||Next >>|
The by-need synchronization mechanism has been completely redesigned and reimplemented. It now applies to all kinds of variables, and does not make use of futures. The term ``future'' now only refers to read-only views of logic variables. Here is a summary of the changes in the language.
Each variable has a need status: it can be ``needed'' or ``not needed''. A needed variable triggers all by-need computations associated to it (see below). The need status of a variable can be queried with the function
The status of a variable changes monotonically: it can only go from ``not needed'' to ``needed''. This change is triggered by a demanding statement, such as
}. Currently only free variables and futures can be ``not needed''. Kinded variables are needed by default. All values are needed by convention.
A by-need computation is simply a computation that synchronizes on the need of a variable. This is provided by the statement
}, which blocks until
X is needed. The procedure
ByNeed has been redefined in terms of
WaitNeeded and no longer uses futures. Lazy functions use the new
As before, futures are created with the statement
Y, which makes
X a read-only view of
X becomes needed,
Y is automatically made needed. This allows to protect a by-need computation from binding attempts. The procedure
ByNeedFuture provides this combination, together with failed values (see below) for reporting exceptions.
Failed values are no longer considered futures, hence the term ``failed future'' should be avoided. They are created with the primitive
Value.failed, and have the status
failed (returned by
Mutable operators (Cells, Object Attributes, Dictionary/Array Entries) can now be updated with the
:= operator and the current value retrieved with the
@ operator. More details in Chapter 11 of ``The Oz Base Environment''.
The Ozcar manual has been largely reworked for improved precision and readability. Ozcar itself has been extended by the ability to debug threads remotely. This feature also supports the debugging of distributed applications.
'ozmake' became a part of the Mozart's standard library, and so it it included in the release.
Mozart is now buildable with
gcc version 3 and upwards.
oztool now reverts to
g++ as default when invoked with the
-gnu option. This can be configured as described in Section 6.1 of ``Oz Shell Utilities''.
QTk now transparently supports accentuated characters on all platforms. The
hidden parameter has been added to the
set method of the
placeholder widget. The
onCreation parameter has been added to all widgets. The
QTk.flush function has been introduced. Several bugs were fixed, in particular display problems on Mac OS X.
|- Up -||Next >>|