Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > bd5c3d824c3db63ffd9226c15941e6ad > files > 251

mozart-1.4.0-1mdv2010.0.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>4.1 Changes in Oz, Mozart libraries and UI</TITLE><LINK href="ozdoc.css" rel="stylesheet" type="text/css"></HEAD><BODY><TABLE align="center" border="0" cellpadding="6" cellspacing="6" class="nav"><TR bgcolor="#DDDDDD"><TD><A href="node15.html">- Up -</A></TD><TD><A href="node17.html#section.m130.fixes">Next &gt;&gt;</A></TD></TR></TABLE><DIV id="section.m130.changes"><H2><A name="section.m130.changes">4.1 Changes in Oz, Mozart libraries and UI</A></H2><DIV id="sec.m130.byneed"><H3><A name="sec.m130.byneed">4.1.1 Redesign of by-need synchronization</A></H3><P>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. </P><UL><LI><P>Each variable has a <A name="label17"></A><EM>need</EM> 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 <CODE>IsNeeded</CODE>.</P></LI><LI><P>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 <CODE>{Wait&nbsp;</CODE><CODE><I>X</I></CODE><CODE>}</CODE>. Currently only free variables and futures can be ``not needed''. Kinded variables are needed by default. All values are needed by convention.</P></LI><LI><P>A by-need computation is simply a computation that synchronizes on the need of a variable. This is provided by the statement <CODE>{WaitNeeded&nbsp;</CODE><CODE><I>X</I></CODE><CODE>}</CODE>, which blocks until&nbsp;<CODE><I>X</I></CODE> is needed. The procedure <CODE>ByNeed</CODE> has been redefined in terms of <CODE>WaitNeeded</CODE> and no longer uses futures. Lazy functions use the new <CODE>ByNeed</CODE>.</P></LI><LI><P>As before, futures are created with the statement <CODE><I>X</I></CODE><CODE>=<SPAN class="keyword">!!</SPAN></CODE><CODE><I>Y</I></CODE>, which makes <CODE><I>X</I></CODE> a read-only view of&nbsp;<CODE><I>Y</I></CODE>. If <CODE><I>X</I></CODE> becomes needed, <CODE><I>Y</I></CODE> is automatically made needed. This allows to protect a by-need computation from binding attempts. The procedure <CODE>ByNeedFuture</CODE> provides this combination, together with failed values (see below) for reporting exceptions.</P></LI><LI><P>Failed values are no longer considered futures, hence the term ``failed future'' should be avoided. They are created with the primitive <CODE>Value<SPAN class="keyword">.</SPAN>failed</CODE>, and have the status <CODE>failed</CODE> (returned by <CODE>Value<SPAN class="keyword">.</SPAN>status</CODE>).</P></LI></UL><P> </P></DIV><DIV id="sec.m130.uniform"><H3><A name="sec.m130.uniform">4.1.2 Uniform state operators</A></H3><P> Mutable operators (Cells, Object Attributes, Dictionary/Array Entries) can now be updated with the <CODE><SPAN class="keyword">:=</SPAN></CODE> operator and the current value retrieved with the <CODE><SPAN class="keyword">@</SPAN></CODE> operator. More details in <A href="../base/node14.html#chapter.infix">Chapter&nbsp;11 of ``The Oz Base Environment''</A>. </P></DIV><DIV id="sec.m130.base"><H3><A name="sec.m130.base">4.1.3 The Oz Base environment</A></H3><P> Added <CODE>Array<SPAN class="keyword">.</SPAN>exchange</CODE>, <CODE>Dictionary<SPAN class="keyword">.</SPAN>exchange</CODE>, <CODE>WeakDictionary<SPAN class="keyword">.</SPAN>exchange</CODE>, <CODE>Dictionary<SPAN class="keyword">.</SPAN>condExchange</CODE>, and <CODE>WeakDictionary<SPAN class="keyword">.</SPAN>condExchange</CODE>. </P></DIV><DIV id="sec.m130.ozcar"><H3><A name="sec.m130.ozcar">4.1.4 Ozcar</A></H3><P> 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. </P></DIV><H3><A name="label18">4.1.5 Ozmake</A></H3><P> 'ozmake' became a part of the Mozart's standard library, and so it it included in the release. </P><DIV id="sec.m130.windows"><H3><A name="sec.m130.windows">4.1.6 Oztool on Windows</A></H3><P> Mozart is now buildable with <CODE>gcc</CODE> version 3 and upwards. <CODE>oztool</CODE> now reverts to <CODE>gcc</CODE> and <CODE>g++</CODE> as default when invoked with the <CODE>-gnu</CODE> option. This can be configured as described in <A href="../tools/node14.html#section.oztool-env">Section&nbsp;6.1 of ``Oz Shell Utilities''</A>. </P></DIV><H3><A name="label19">4.1.7 QTk</A></H3><P> QTk now transparently supports accentuated characters on all platforms. The <CODE>hidden</CODE> parameter has been added to the <CODE>set</CODE> method of the <CODE>placeholder</CODE> widget. The <CODE>onCreation</CODE> parameter has been added to all widgets. The <CODE>QTk<SPAN class="keyword">.</SPAN>flush</CODE> function has been introduced. Several bugs were fixed, in particular display problems on Mac OS X. </P></DIV><TABLE align="center" border="0" cellpadding="6" cellspacing="6" class="nav"><TR bgcolor="#DDDDDD"><TD><A href="node15.html">- Up -</A></TD><TD><A href="node17.html#section.m130.fixes">Next &gt;&gt;</A></TD></TR></TABLE><HR><ADDRESS><SPAN class="version">Version 1.4.0 (20090610)</SPAN></ADDRESS></BODY></HTML>