OverloadedRecordFields

Adam Gundry adam at well-typed.com
Fri Apr 18 16:38:32 UTC 2014


Hi folks,

Apropos of nothing, I will be talking about OverloadedRecordFields in
London on Monday 28th April at 6:30pm:
https://skillsmatter.com/meetups/6345-overloaded-record-fields-for-haskell

I've updated my OverloadedRecordFields branches to HEAD as of today.
Validate on linux x86_64 is currently failing with a few perf failures,
but several appear to be intermittently present on master (see below for
details). How worried should I be about these? I'd like to get this
reviewed/merged as soon as possible because the changes are quite
wide-ranging so they tend to bitrot quickly.

The code is in the following three repositories:

https://github.com/adamgundry/ghc
https://github.com/adamgundry/packages-base
https://github.com/adamgundry/haddock

The overloaded-record-fields branches have the history (rather messy,
I'm afraid) and the orf-squashed branches have everything squashed into
one commit per branch. More general information is on the wiki:

https://ghc.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields

Cheers,

Adam


The perf failures on my branch are:

   perf/compiler  T1969 [stat not good enough] (normal)
   perf/compiler  T3064 [stat not good enough] (normal)
   perf/compiler  T5030 [stat not good enough] (normal)
   perf/compiler  T5837 [stat not good enough] (normal)
   perf/compiler  T6048 [stat not good enough] (optasm)
   perf/haddock   haddock.Cabal [stat not good enough] (normal)
   perf/haddock   haddock.base [stat not good enough] (normal)
   perf/haddock   haddock.compiler [stat not good enough] (normal)


Those on master are:

   perf/compiler  T1969 [stat not good enough] (normal)
   perf/compiler  T3064 [stat not good enough] (normal)
   perf/compiler  T5837 [stat not good enough] (normal)
   perf/compiler  T6048 [stat not good enough] (optasm)
   perf/haddock   haddock.Cabal [stat not good enough] (normal)


Details of failures on my branch:

=====> haddock.base(normal) 201 of 3977 [0, 0, 0]
bytes allocated value is too high:
    Expected    bytes allocated: 7128342344 +/-5%
    Lower bound bytes allocated: 6771925226
    Upper bound bytes allocated: 7484759462
    Actual      bytes allocated: 7638726640
*** unexpected failure for haddock.base(normal)
=====> haddock.Cabal(normal) 202 of 3977 [0, 1, 0]
max_bytes_used value is too high:
    Expected    max_bytes_used:  95356616 +/-15%
    Lower bound max_bytes_used:  81053123
    Upper bound max_bytes_used: 109660109
    Actual      max_bytes_used: 131046008
peak_megabytes_allocated value is too high:
    Expected    peak_megabytes_allocated: 278 +/-10%
    Lower bound peak_megabytes_allocated: 250
    Upper bound peak_megabytes_allocated: 306
    Actual      peak_megabytes_allocated: 326
bytes allocated value is too high:
    Expected    bytes allocated: 3979151552 +/-5%
    Lower bound bytes allocated: 3780193974
    Upper bound bytes allocated: 4178109130
    Actual      bytes allocated: 4752508984
*** unexpected failure for haddock.Cabal(normal)
=====> haddock.compiler(normal) 203 of 3977 [0, 2, 0]
bytes allocated value is too high:
    Expected    bytes allocated: 28708374824 +/-10%
    Lower bound bytes allocated: 25837537341
    Upper bound bytes allocated: 31579212307
    Actual      bytes allocated: 32010912664
*** unexpected failure for haddock.compiler(normal)
=====> T1969(normal) 204 of 3977 [0, 3, 0]
cd ./perf/compiler &&
'/home/adam/Documents/Strathclyde/Code/GHC/ghc-validate/bindisttest/install
  dir/bin/ghc' -fforce-recomp -dno-debug-output -no-user-package-db
-rtsopts -fno-ghci-history -c T1969.hs   +RTS -V0 -tT1969.comp.stats
--machine-readable -RTS -dcore-lint -static >T1969.comp.stderr 2>&1
max_bytes_used value is too high:
    Expected    max_bytes_used: 11000000 +/-20%
    Lower bound max_bytes_used:  8800000
    Upper bound max_bytes_used: 13200000
    Actual      max_bytes_used: 13787248
*** unexpected failure for T1969(normal)

=====> T3064(normal) 207 of 3977 [0, 4, 0]
cd ./perf/compiler &&
'/home/adam/Documents/Strathclyde/Code/GHC/ghc-validate/bindisttest/install
  dir/bin/ghc' -fforce-recomp -dno-debug-output -no-user-package-db
-rtsopts -fno-ghci-history -c T3064.hs   +RTS -V0 -tT3064.comp.stats
--machine-readable -RTS  >T3064.comp.stderr 2>&1
bytes allocated value is too high:
    Expected    bytes allocated: 308422280 +/-5%
    Lower bound bytes allocated: 293001166
    Upper bound bytes allocated: 323843394
    Actual      bytes allocated: 351270952
*** unexpected failure for T3064(normal)

=====> T5030(normal) 209 of 3977 [0, 5, 0]
cd ./perf/compiler &&
'/home/adam/Documents/Strathclyde/Code/GHC/ghc-validate/bindisttest/install
  dir/bin/ghc' -fforce-recomp -dno-debug-output -no-user-package-db
-rtsopts -fno-ghci-history -c T5030.hs  -fcontext-stack=300 +RTS -V0
-tT5030.comp.stats --machine-readable -RTS  >T5030.comp.stderr 2>&1
=====> T5631(normal) 210 of 3977 [0, 5, 0]
cd ./perf/compiler &&
'/home/adam/Documents/Strathclyde/Code/GHC/ghc-validate/bindisttest/install
  dir/bin/ghc' -fforce-recomp -dno-debug-output -no-user-package-db
-rtsopts -fno-ghci-history -c T5631.hs   +RTS -V0 -tT5631.comp.stats
--machine-readable -RTS  >T5631.comp.stderr 2>&1
bytes allocated value is too high:
    Expected    bytes allocated: 397672152 +/-10%
    Lower bound bytes allocated: 357904936
    Upper bound bytes allocated: 437439368
    Actual      bytes allocated: 474229448
*** unexpected failure for T5030(normal)

=====> T5837(normal) 216 of 3977 [0, 6, 0]
cd ./perf/compiler &&
'/home/adam/Documents/Strathclyde/Code/GHC/ghc-validate/bindisttest/install
  dir/bin/ghc' -fforce-recomp -dno-debug-output -no-user-package-db
-rtsopts -fno-ghci-history -c T5837.hs  -ftype-function-depth=50 +RTS
-V0 -tT5837.comp.stats --machine-readable -RTS  >T5837.comp.stderr 2>&1
bytes allocated value is too high:
    Expected    bytes allocated: 86795752 +/-10%
    Lower bound bytes allocated: 78116176
    Upper bound bytes allocated: 95475328
    Actual      bytes allocated: 96210584
*** unexpected failure for T5837(normal)
=====> T6048(optasm) 217 of 3977 [0, 7, 0]
cd ./perf/compiler &&
'/home/adam/Documents/Strathclyde/Code/GHC/ghc-validate/bindisttest/install
  dir/bin/ghc' -fforce-recomp -dno-debug-output -no-user-package-db
-rtsopts -fno-ghci-history -c T6048.hs -O -fasm  +RTS -V0
-tT6048.comp.stats --machine-readable -RTS  >T6048.comp.stderr 2>&1
bytes allocated value is too high:
    Expected    bytes allocated: 110646312 +/-10%
    Lower bound bytes allocated:  99581680
    Upper bound bytes allocated: 121710944
    Actual      bytes allocated: 125707864
*** unexpected failure for T6048(optasm)


Details of failures on master:

=====> haddock.Cabal(normal) 202 of 3954 [0, 0, 0]
bytes allocated value is too high:
    Expected    bytes allocated: 3979151552 +/-5%
    Lower bound bytes allocated: 3780193974
    Upper bound bytes allocated: 4178109130
    Actual      bytes allocated: 4212057304
*** unexpected failure for haddock.Cabal(normal)

=====> T1969(normal) 204 of 3954 [0, 1, 0]
cd ./perf/compiler &&
'/home/adam/Documents/Strathclyde/Code/GHC/ghc-validate-master/bindisttest/install
  dir/bin/ghc' -fforce-recomp -dno-debug-output -no-user-package-db
-rtsopts -fno-ghci-history -c T1969.hs   +RTS -V0 -tT1969.comp.stats
--machine-readable -RTS -dcore-lint -static >T1969.comp.stderr 2>&1
max_bytes_used value is too high:
    Expected    max_bytes_used: 11000000 +/-20%
    Lower bound max_bytes_used:  8800000
    Upper bound max_bytes_used: 13200000
    Actual      max_bytes_used: 13662736
*** unexpected failure for T1969(normal)

=====> T3064(normal) 207 of 3954 [0, 2, 0]
cd ./perf/compiler &&
'/home/adam/Documents/Strathclyde/Code/GHC/ghc-validate-master/bindisttest/install
  dir/bin/ghc' -fforce-recomp -dno-debug-output -no-user-package-db
-rtsopts -fno-ghci-history -c T3064.hs   +RTS -V0 -tT3064.comp.stats
--machine-readable -RTS  >T3064.comp.stderr 2>&1
=====> T4007(normal) 208 of 3954 [0, 2, 0]
cd ./perf/compiler && $MAKE -s --no-print-directory T4007    </dev/null
>T4007.run.stdout 2>T4007.run.stderr
bytes allocated value is too high:
    Expected    bytes allocated: 308422280 +/-5%
    Lower bound bytes allocated: 293001166
    Upper bound bytes allocated: 323843394
    Actual      bytes allocated: 331042056
*** unexpected failure for T3064(normal)

=====> T5837(normal) 216 of 3954 [0, 3, 0]
cd ./perf/compiler &&
'/home/adam/Documents/Strathclyde/Code/GHC/ghc-validate-master/bindisttest/install
  dir/bin/ghc' -fforce-recomp -dno-debug-output -no-user-package-db
-rtsopts -fno-ghci-history -c T5837.hs  -ftype-function-depth=50 +RTS
-V0 -tT5837.comp.stats --machine-readable -RTS  >T5837.comp.stderr 2>&1
bytes allocated value is too high:
    Expected    bytes allocated: 86795752 +/-10%
    Lower bound bytes allocated: 78116176
    Upper bound bytes allocated: 95475328
    Actual      bytes allocated: 95994280
*** unexpected failure for T5837(normal)
=====> T6048(optasm) 217 of 3954 [0, 4, 0]
cd ./perf/compiler &&
'/home/adam/Documents/Strathclyde/Code/GHC/ghc-validate-master/bindisttest/install
  dir/bin/ghc' -fforce-recomp -dno-debug-output -no-user-package-db
-rtsopts -fno-ghci-history -c T6048.hs -O -fasm  +RTS -V0
-tT6048.comp.stats --machine-readable -RTS  >T6048.comp.stderr 2>&1
bytes allocated value is too high:
    Expected    bytes allocated: 110646312 +/-10%
    Lower bound bytes allocated:  99581680
    Upper bound bytes allocated: 121710944
    Actual      bytes allocated: 124431616
*** unexpected failure for T6048(optasm)


On 25/02/14 16:18, Simon Peyton Jones wrote:
> Adam
> 
> I'm very happy to hear that... good stuff.
> 
> I'm under water with ICFP submissions (deadline Sat).  Moreover I think it is clearly too later to put this into 7.8; RC1 is out and I expect RC2 any day.
> 
> So I suggest we plan to merge after 7.8 is out.  
> 
> Are the wiki pages up to date? 
> Records/OverloadedRecordFields
> Records/OverloadedRecordFields/Implementation
> Records/OverloadedRecordFields/Plan
> 
> The first does not point to the latter two; "Plan" may mean "Design"... I feel some rationalisation may make sense
> 
> Simon
> 	
> | -----Original Message-----
> | From: Adam Gundry [mailto:adam at well-typed.com]
> | Sent: 24 February 2014 08:37
> | To: Simon Peyton Jones
> | Subject: Re: OverloadedRecordFields
> | 
> | Hi Simon,
> | 
> | My OverloadedRecordFields branches[1,2,3] are up to date with HEAD as of
> | last Saturday. Validate on linux x86_64 reports only one failure, the
> | haddock.Cabal perf test, which might well be due to my Haddock changes,
> | and I will investigate. I'm not sure how to run the Haddock test suite?
> | 
> | I am keen to get the code reviewed and into HEAD as soon as is
> | convenient, but I'm aware these are substantial changes, and don't want
> | to rush things. In particular, I would understand if you'd rather hold
> | them back until after the 7.8 final release.
> | 
> | How would you like to proceed?
> | 
> | Adam
> | 
> | [1] https://github.com/adamgundry/ghc
> | [2] https://github.com/adamgundry/packages-base
> | [3] https://github.com/adamgundry/haddock


-- 
Adam Gundry, Haskell Consultant
Well-Typed LLP, http://www.well-typed.com/


More information about the ghc-devs mailing list