From 98c314dbee5a666667f2f8d3d28e45e758e6869d Mon Sep 17 00:00:00 2001 From: simonmar <unknown> Date: Wed, 14 Jul 1999 11:33:12 +0000 Subject: [PATCH] [project @ 1999-07-14 11:33:10 by simonmar] - add 4.04 release notes - several other docfixes and markup fixes. --- ghc/docs/users_guide/4-04-notes.vsgml | 94 +++++++++++++++++++++++++ ghc/docs/users_guide/glasgow_exts.vsgml | 13 ++-- ghc/docs/users_guide/parallel.vsgml | 1 + ghc/docs/users_guide/posix.vsgml | 31 ++++---- 4 files changed, 121 insertions(+), 18 deletions(-) create mode 100644 ghc/docs/users_guide/4-04-notes.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 index 000000000000..c7d307f82b97 --- /dev/null +++ b/ghc/docs/users_guide/4-04-notes.vsgml @@ -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><keving@@cs.mu.OZ.AU></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> diff --git a/ghc/docs/users_guide/glasgow_exts.vsgml b/ghc/docs/users_guide/glasgow_exts.vsgml index 4f52a48f5050..284dd9cfd49b 100644 --- a/ghc/docs/users_guide/glasgow_exts.vsgml +++ b/ghc/docs/users_guide/glasgow_exts.vsgml @@ -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. diff --git a/ghc/docs/users_guide/parallel.vsgml b/ghc/docs/users_guide/parallel.vsgml index a30120c0a54c..051a42f48cc9 100644 --- a/ghc/docs/users_guide/parallel.vsgml +++ b/ghc/docs/users_guide/parallel.vsgml @@ -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> %* * diff --git a/ghc/docs/users_guide/posix.vsgml b/ghc/docs/users_guide/posix.vsgml index 57ed3c695f0c..44eb171d27e5 100644 --- a/ghc/docs/users_guide/posix.vsgml +++ b/ghc/docs/users_guide/posix.vsgml @@ -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 -- GitLab