[project @ 1999-07-14 11:33:10 by simonmar]
authorsimonmar <unknown>
Wed, 14 Jul 1999 11:33:12 +0000 (11:33 +0000)
committersimonmar <unknown>
Wed, 14 Jul 1999 11:33:12 +0000 (11:33 +0000)
- add 4.04 release notes
- several other docfixes and markup fixes.

ghc/docs/users_guide/4-04-notes.vsgml [new file with mode: 0644]
ghc/docs/users_guide/glasgow_exts.vsgml
ghc/docs/users_guide/parallel.vsgml
ghc/docs/users_guide/posix.vsgml

diff --git a/ghc/docs/users_guide/4-04-notes.vsgml b/ghc/docs/users_guide/4-04-notes.vsgml
new file mode 100644 (file)
index 0000000..c7d307f
--- /dev/null
@@ -0,0 +1,94 @@
+<sect1>Release notes for version~4.04---7/99
+<label id="release-4-04">
+<p>
+
+<itemize>
+<item> <tt/Weak/ library changes:
+       <itemize>
+       <item> Finalise is now spelt finalize in all function names.
+       <item> <tt/finalize/ now runs the finalizer immediately, and
+              waits for it to complete before returning.
+       <item> <tt/mkWeak/ now takes a <tt/Maybe (IO ())/ for the finalizer,
+              and <tt/mkWeakNoFinalizer/ is removed.
+       <item> A weak pointer whose key is itself a weak pointer will now do
+               the right thing.
+       </itemize>
+
+<item> Changed representation of <tt/Integer/ type to speed up
+computations on small integers.  The performance of <tt/Integer/ is now
+only slightly slower than <tt/Int/ for values between <tt/minBound::Int/
+and <tt/maxBound::Int/.
+
+<item> On Win32 platforms, added support for using (and producing) dynamic
+link libraries (DLLs) containing ghc-compiled code.
+
+<item> Added @-funbox-strict-fields@ for unboxing/unpacking strict
+constructor fields.
+
+<item> GHC now has a license!  Check out <tt>fptools/ghc/LICENSE/</tt>.
+
+<item> Added CPR analysis, which reduces allocation by unboxing
+function results (thanks to Kevin Glynn <tt>&lt;keving@@cs.mu.OZ.AU&gt;</tt>).
+
+<item> UsageSP analysis added, but not yet functional.
+
+<item> Added a simple common sub-expression analysis pass.
+
+<item> Implemented update-in-place for certain very restricted cases.
+
+<item> Replaced GHC's old and worn yacc/lex parser with a new one
+based on Happy.  Fixed several Haskell 98 non-conformance issues in
+the process.
+
+<item> Added <tt>Concurrent.yield :: IO ()</tt>.
+
+<item> Added RULES pragms - transformation rules for Haskell source.
+This is used for list fusion: now intermediate lists between map,
+foldr, list comprehensions are removed automatically.
+
+<item> Unregisterised/unmangled builds now work.
+
+<item> Much performance tuning: GHC 4.04 produces faster code than all
+previous compilers.
+
+<item> GHC now defines <tt/__HASKELL98__/ when compiling files with
+<tt/-cpp/.
+
+<item> <tt/hppa1.1-hp-hpux/ port reinstated.
+
+<item> New operations for unsafely thawing byte arrays:
+<tt/unsafeThaw{Byte,ST,IO}Array/.
+
+<item> <tt/mkdependHS/ now lives in GHC's lib directory, not the
+binary directory.  It isn't intended to be run standalone, only via
+<tt/ghc -M/.
+
+<item> Asynchronous exceptions are now supported (see Section <ref name="The Concurrent Library" id="concurrent-interface">).  New operations:
+
+  <itemize> <item> <tt/Exception.killThread/ now raises an exception 
+       (<tt/AsyncException.KilledThread/) in the killed thread.
+       <item> <tt/Exception.raiseInThread/ allows a thread to raise an
+       exception in another thread.
+       <item> <tt/Concurrent.myThreadId/ returns the <tt/ThreadId/ of the 
+       calling thread.
+       <item> Stack overflow results in <tt/AsyncException.StackOverflow/
+       being raised in the offending thread.
+  </itemize>
+
+<item> Assertion failures now raise an <tt/AssertionFailed/ exception.
+
+<item> Added simple high-level interface to the Regex library, see
+Section <ref name="The RegexString Library" id="RegexString">.
+
+<item> <tt/forkIO/ now handles any uncaught exceptions cleanly.
+
+<item> <tt/integer2Int#/ isn't sign preserving any longer, but modulo
+<tt/(maxBound::Int + 1) * 2/.
+
+<item> <tt/-ddump-rdr/ is now called <tt/-ddump-parsed/.
+
+<item> Signal handling with the <tt/Posix/ library now works.
+
+<item> Many, many bugs fixed.
+
+</itemize>
index 4f52a48..284dd9c 100644 (file)
@@ -1,5 +1,5 @@
 % 
-% $Id: glasgow_exts.vsgml,v 1.11 1999/05/18 15:41:32 simonpj Exp $
+% $Id: glasgow_exts.vsgml,v 1.12 1999/07/14 11:33:10 simonmar Exp $
 %
 % GHC Language Extensions.
 %
@@ -2000,7 +2000,7 @@ Section <ref name="Rewrite Rules"
 id="rewrite-rules">.
 
 %-----------------------------------------------------------------------------
-<sect1>Rewrite rules</sect1>
+<sect1>Rewrite rules
 <label id="rewrite-rules">
 <nidx>RULES pagma</nidx>
 <nidx>pragma, RULES</nidx>
@@ -2017,7 +2017,8 @@ Here is an example:
   #-}
 </verb></tscreen>
 
-<sect2>Syntax</sect2>
+<sect2>Syntax
+<p>
 
 From a syntactic point of view:
 <itemize>
@@ -2051,7 +2052,8 @@ variables it mentions, though of course they need to be in scope.
 <item> Rules are automatically exported from a module, just as instance declarations are.
 </itemize>
 
-<sect2>Semantics</sect2>
+<sect2>Semantics
+<p>
 
 From a semantic point of view:
 <itemize>
@@ -2121,7 +2123,8 @@ policy is controlled by the per-simplification-pass flag @-finline-phase@n.
 </itemize>
 
 
-<sect2>Controlling what's going on</sect2>
+<sect2>Controlling what's going on
+<p>
 
 <itemize>
 <item> Use @-fddump-rules@ to see what transformation rules GHC is using.
index a30120c..051a42f 100644 (file)
@@ -47,6 +47,7 @@ Some details about Concurrent and Parallel Haskell follow.
 %************************************************************************
 %*                                                                      *
 <sect2>Language features specific to Concurrent Haskell
+<label id="concurrent-haskell">
 <p>
 <nidx>Concurrent Haskell---features</nidx>
 %*                                                                      *
index 57ed3c6..44eb171 100644 (file)
@@ -504,15 +504,18 @@ installHandler :: Signal
                -> IO Handler            -- old handler
 </verb></tscreen>
 
-@installHandler int handler iset@ calls @sigaction@ to install
-an interrupt handler for signal @int@.  If @handler@ is
-@Default@, @SIG_DFL@ is installed; if @handler@ is
-@Ignore@, @SIG_IGN@ is installed; if @handler@ is
-@Catch action@, a handler is installed which will invoke @action@ as a
-replacement for @main@.  If @iset@ is @Just s@, then the
-@sa_mask@ of the @sigaction@ structure is set to @s@;
-otherwise it is cleared.  The previously installed signal handler for
-@int@ is returned.
+@installHandler int handler iset@ calls @sigaction@ to install an
+interrupt handler for signal @int@.  If @handler@ is @Default@,
+@SIG_DFL@ is installed; if @handler@ is @Ignore@, @SIG_IGN@ is
+installed; if @handler@ is @Catch action@, a handler is installed
+which will invoke @action@ in a new thread when (or shortly after) the
+signal is received.  See Section <ref name="Concurrent Haskell"
+id="concurrent-haskell"> for details on how to communicate between
+threads.
+
+If @iset@ is @Just s@, then the @sa_mask@ of the @sigaction@ structure
+is set to @s@; otherwise it is cleared.  The previously installed
+signal handler for @int@ is returned.
 
 <tscreen><verb>
 getSignalMask :: IO SignalSet
@@ -557,10 +560,12 @@ awaitSignal :: Maybe SignalSet -> IO ()
 </verb></tscreen>
 
 @awaitSignal iset@ suspends execution until an interrupt is received.
-If @iset@ is @Just s@, @awaitSignal@ calls 
-@sigsuspend@, installing @s@ as the new signal mask before
-suspending execution; otherwise, it calls @pause@.  If successful,
-@awaitSignal@ does not return.
+If @iset@ is @Just s@, @awaitSignal@ calls @sigsuspend@, installing
+@s@ as the new signal mask before suspending execution; otherwise, it
+calls @pause@.  @awaitSignal@ returns on receipt of a signal.  If you
+have installed any signal handlers with @installHandler@, it may be
+wise to call @yield@ directly after @awaitSignal@ to ensure that the
+signal handler runs as promptly.
 
 <tscreen><verb>
 scheduleAlarm :: Int -> IO Int