Skip to content
Commits on Jun 19, 2008
  1. added examples fib.hs and simple.hs that don't require the Prelude.

    HolgerSiegel committed
    They work well without transformation ORC, but they fail with this transformation turned on,
    giving the runtime error "non partial apply applied".
    changed transformation ORC so that definitions of FFI functions are moved to the outermost level,
    satisfying some invariant of the Core-to-GRIN transformation.
Commits on Jun 11, 2008
  1. bugfix in transformation CLM

    HolgerSiegel committed
  2. bugfix in transformation CLFR

    HolgerSiegel committed
Commits on Jun 9, 2008
  1. added transformation Core/Trf/RenAddSuffix.cag

    HolgerSiegel committed
    It adds a suffix to every identifier so that the lazy and strict version can
    coexist in one compilation unit
  2. Strict evaluation is now based on a 'state' monad

    HolgerSiegel committed
      OrcM a = [Int] -> ([Int], a)
    that threads the oracle through the program
Commits on Jun 8, 2008
  1. oops.

    HolgerSiegel committed
  2. Now, transformation DebugStrict prepares a module for the

    HolgerSiegel committed
    oracle-directed evaluation, and transformation OracleCreation
    enables it to create an oracle.
Commits on Jun 6, 2008
  1. cleanup, added transformation Core/Trf/LetFixrec.cag

    HolgerSiegel committed
    This transformation replaces recursive let-bindings with an explicit
    fixpoint calculation:
      let x=e1 in e2
      letrec fix = \f -> f (fix f)
      in let x = fix (\x -> e1)
         in e2
Commits on May 30, 2008
  1. MERGED with version 1106 of trunk, added core transformations CLM, DBGS.

    HolgerSiegel committed
    CLM turns mutually recursive definitions into single recursions (and is still buggy)
    DBGS adds calls to the oracle creation mechanism to acore program (and shows strange behavior, too)
Commits on May 8, 2008
  1. new Core transformation LetUnMutual, bugfix in, experiments w…

    HolgerSiegel committed
    …ith opcodes for GRIN interpreter backend
Commits on Apr 15, 2008
  1. added primitives for

    HolgerSiegel committed
    - oracle creation (primInitOracle, primOracleEnter, primOracleLeave,
    - consuming the current oracle (primWhatIsNextOracle)
    - printing the current oracle (primDumpOracle)
    - checking if a thunk is evaluated (thunkIsEvaluated)
    These primitives will only work with the interpreter backend.
    - Added some small testcases for these functions to ehclib/ehcbase/t
  2. updated branch to rev. 1079

    HolgerSiegel committed
Commits on Apr 8, 2008
  1. changed option to date command

    HolgerSiegel committed
Commits on Apr 7, 2008
  1. @atzedijkstra

    - Expressing fake AG dependencies by AG annotation, instead of on Has…

    atzedijkstra committed
    …kell level.
    WARNING: the most recent AG version (from svn) must be used because of a fix to the AG implementation of introducing fake dependencies.
Commits on Apr 4, 2008
  1. Introduction of thesis

    JohnVanSchie committed
  2. @atzedijkstra

    - Fixed loop ehc when using strict AG evaluator.

    atzedijkstra committed
      Caused by combination of:
      - unintended dependency from type to kind analysis
      - which went unnoticed because warning were switched off (AG will be changed to report cycles when using strict evaluation as an error, so it will stop),
        now turned on, which gives much warnings about missing type signatures for local attributes as well.
      - polarity not tied in with the rest caused many induced dependencies, also unnoticed
Commits on Mar 31, 2008
  1. * Cosmetic change to llvm-compilerdriver, saving bitcode (.bc) and op…

    JohnVanSchie committed
    …timized bitcode (_opt.bc) in separate files
    * Added unreachable directive to the LLVM bindings (and generated after a call to primPatternMatchFailure() )
  2. @JeroenFokker
  3. @JeroenFokker

    Generate and use LLVM code on Windows/Cygwin platform

    JeroenFokker committed
    (re-run autoconf and configure)
  4. * Added IfThenElse to the LLVMBackend.

    JohnVanSchie committed
Commits on Mar 28, 2008
  1. * Commented a boehm-gc valgrind work-around, due to some ancient GCC

    JohnVanSchie committed
    versions on apples ;) But this is ok, because valgrind is only supported 
    on linux and AIX. Thus when valgrind is needed, just uncomment two lines 
    * Added some chapters that were forgotten the previous commit.
  2. @atzedijkstra

    - fixed HS->EH bug in operator section not properly avoiding name cap…

    atzedijkstra committed
    …ture for e.g. (<x),
      faulty translated to (\x -> x < x) instead of a uniqified version (\$x_35_1_0 -> $x_35_1_0 < x)).
    - start with on-the-fly cleanup of unique id generation, giving more meaningful names to attributes holding unique ids
  3. * Replaced the GC with version 7.0. This saves a couple of seconds. P…

    JohnVanSchie committed
    …lease remove
    $EHC_HOME/build/bgc-non-threaded/ before building a new version of EHC
    * Fixed a LLVM optimizer bug (Rerun configure)
Commits on Mar 25, 2008
  1. @atzedijkstra

    - Integration of Arie's polarity inferencing, in particular with modu…

    atzedijkstra committed
    …le system etc. Not yet put to use by fitsIn, nor finished yet, but does not hinder either.
      - Fixes for polarity inferencing:
         - unnecessary substitutions,
         - inference for tuples (missing binding in environment for "_Rec" record constructor),
         - error messages for absent bindings (strictly not necessary, but helps debugging)
      - Feature interaction:
         - type synonyms
         - dependency on presence of 'error' for data types with fields caused Exception to be in the same binding group as error, leading to too strict polarity
      - Todo:
         - Had to turn off UUAGC strictness pragmas in EH/MainAG because of loop, unclear why as no cycles are reported.
         - Proper analysis for class predicates and type annotations 'e :: t', currently either too liberal or too strict
      - Other fixes/improvements:
         - mutual recursive type synonyms are allowed, infinite recursion was already checked during synonym expansion.
         - improved cyclic/infinite type reporting
    - rerun ./configure
  2. @JeroenFokker
  3. @amiddelk

    Modification of ruler. If you write:

    amiddelk committed
    > judge* ...
    instead of:
    > judge ...
    the /next/ judgement (if any) will be pp-ed on the same line with a little bit of hspace in between.
Commits on Mar 21, 2008
  1. @atzedijkstra

    - Regression testing adapted to use installed uhc for variant 101, 'm…

    atzedijkstra committed
    …ake test-regress TEST_VARIANTS=101' thus can be used to test regress the installed uhc.
      A variant independent 'make test-regress TEST_VARIANTS=uhc' is also allowed.
Commits on Mar 20, 2008
  1. @JeroenFokker

    A new transformation merges adjacent Grin case-expressions in some si…

    JeroenFokker committed
    Many such opportunities arise from the recently introduced "Late Inlining".
    Currently it is only performed with --priv=1, because the LLVM backend is not yet ready for it.
    Detailed explanation:
    Many case expression in Grin originate from inlining Eval.
    They have the following form:
        CASE x
        {   [N] #F/f y -> CALL f y; \r ->
                          UPDATEUNIT r x
            [I] #C/c   -> UNIT x
        }; \z ->
    That is: if a function was postponed, it is called now, and the result updates the redex;
    if it was already evaluated, nothing happens.
    Often, such a case expression is followed by another case:
        CASE z
        {   [N] #C/c   -> do something useful
    It is a waste do do the case-distinction twice.
    As a preparation to the merge, we annotate the alternatives as either "[N]ormal" or "[I]dent".
    Two adjacent case-expressions can be merged if the pattern after the first (z in the example)
    is the scrutinee of the second.
    In the example we get:
        CASE x
        {   [R] #F/f y -> CALL f y; \r ->
                          UPDATEUNIT r x
            [N] #C/c   -> do something useful
    That is: the [N]ormal alternatives from the first case are re-annotated as [R]e-entrant;
    the [I]dent alternatives from the first case are thrown away.
    All alternatives from the second case are kept.
    Alternatives annotated [R]e-entrant have special semantics: they generate special code, 
    in order to scrutinize the result again.
    Subtlety: any z that may occur free in the body must be replaced by x.
  2. * With this fix, only the non-threaded bgc library is build and linke…

    JohnVanSchie committed
    …d against. It is installed in $EHC_HOME/install and thus used by all backends. This solves the
    slowness of the GC which was caused by the threaded version.
Commits on Mar 19, 2008
  1. @atzedijkstra

    - First version of 'make install', which installs ehc as uhc.

    atzedijkstra committed
      The easiest way to do this turned out to make a new variant 101 (previous 101 renamed to 102. Thus avoiding mixing up with variant 100),
      and parameterize make with a globally available install location, usually inside /usr/local etc. Variant 101 should not be run as 'ehc', only as an installed 'uhc'.
      Current 'good to realize' aspects:
          - via 'sudo make install' all libraries are build under root permission, an effect of sudo.
          - the globally shared libutil library is build in the install dir as well, triggering a rebuild of e.g. ruler as well.
          - a non writeable dir of a file to be compiled prevents compilation, but then assumes that the file already is compiled.
      - Rerun ./configure.
      - Run: ghc-pkg --user unregister EH101-0.1
             ghc-pkg --user unregister GRIN101-0.1
          if you ever have built variant 101
      - The Prelude is compiled/installed and put into the right place, but cannot be used without the original sources.
      - Full program analysis & llvm has not been tried out with make install.
    - Todo: extend regression testing to test the installed version
    - Fixed compilerdriver bug which did leave out optimizations in refactored cpTransformGrin.
      (Caused by 'if ... else x ++ if ... else y' meaning 'if ... else (x ++ if ... else y)' instead of intended '(if ... else x) ++ (if ... else y)')
  2. @amiddelk

    Changed the regression test-suite to accumulate an error count.

    amiddelk committed
    This error count is printed at the end of the test report.
    The make process now fails at the end of the regression test iff errors were encountered.
  3. @amiddelk

    Regarding John's commit: added a case for my gcc version (4.2.3) to a…

    amiddelk committed
    …dd flag -std=gnu99
    (hmm, from which gcc version is this flag available/needed? Then we can add one case to the configure script instead of 
    separate cases for each gcc version... )
Commits on Mar 18, 2008
  1. * Configure detects GCC version and adapts -std flag to that. If you …

    JohnVanSchie committed
    …get miscompiles from the RTS C compilation (and linking!) after this version, please look at the
    configure output for this variable
    * Reset an option so that GCC is not invoked when creating LLVM binaries with version 99
    * Created a seperate build dir for Boehm GC non threaded.
  2. @JeroenFokker

    Added an annotation to Grin alternatives, that it is either:

    JeroenFokker committed
    - Normal
    - Ident: an alternative that just returns the scrutinee
    - Reenter: an alternative that returns a value that needs to be scrutinized again
    The Reenter annotation will be used in the forthcoming CaseHoist transformation,
    but as it is not yet used, this commit is semantically neutral.
Something went wrong with that request. Please try again.