This project is mirrored from https://github.com/haskell/Cabal. Pull mirroring updated .
  1. 06 Oct, 2016 9 commits
  2. 05 Oct, 2016 2 commits
  3. 04 Oct, 2016 7 commits
  4. 03 Oct, 2016 5 commits
  5. 02 Oct, 2016 9 commits
    • Edward Z. Yang's avatar
      Merge pull request #3924 from ezyang/pr/legacy-install-no-exes · c4e91c94
      Edward Z. Yang authored
      Don't solve for executables in legacy install codepath.
      c4e91c94
    • Herbert Valerio Riedel's avatar
      Make `AbiHash` opaque & `ShortText`-backed (#3921) · 7378066d
      Herbert Valerio Riedel authored
      This doesn't have any noteworthy performance impact since
      there aren't that many `AbiHash` values to keep track of and is
      rather for consistency with the other opaque types.
      7378066d
    • Edward Z. Yang's avatar
      Merge pull request #3925 from ezyang/pr/ghc-8.1-eta-expand · 32bdc993
      Edward Z. Yang authored
      GHC 8.1 compatibility fixes.
      32bdc993
    • Herbert Valerio Riedel's avatar
    • Herbert Valerio Riedel's avatar
      Optimise `Ord Version` instance · aabee7c3
      Herbert Valerio Riedel authored
      Profiling showed that there are quite a few 'Ord' calls (~70k calls)
      which result in 'versionNumbers' being evaluated because the need to
      compare with Versions not fitting in a Word64 becomes necessary, mostly
      when inserting into a `Map`. So I've optimised this a bit more.  After
      some experimentation, the new `compare` implemetation results in faster
      comparisions (`cmpOpt` is the new optimised impl, `compare` is the
      previous naive one):
      
      comparing two PV1 constructors:
      
          benchmarking compare 1.2.3.4.5 1.2.3.4.5
          time                 42.33 ns   (42.17 ns .. 42.47 ns)
                               1.000 R²   (1.000 R² .. 1.000 R²)
          mean                 42.17 ns   (42.13 ns .. 42.28 ns)
          std dev              205.1 ps   (128.7 ps .. 325.7 ps)
      
          benchmarking cmpOpt  1.2.3.4.5 1.2.3.4.5
          time                 33.31 ns   (33.23 ns .. 33.40 ns)
                               1.000 R²   (1.000 R² .. 1.000 R²)
          mean                 33.37 ns   (33.29 ns .. 33.46 ns)
          std dev              288.6 ps   (242.9 ps .. 315.8 ps)
      
          benchmarking compare [1.2.3.4.5] [1.2.3.4.5]
          time                 31.92 ns   (31.89 ns .. 31.94 ns)
                               1.000 R²   (1.000 R² .. 1.000 R²)
          mean                 31.89 ns   (31.88 ns .. 31.91 ns)
          std dev              37.09 ps   (24.38 ps .. 54.82 ps)
      
      comparing a PV0 constructor with a PV1 constructor when the first digit
      decides the outcome:
      
          benchmarking compare 2.3.4 1.2.3.4.5
          time                 24.96 ns   (24.78 ns .. 25.25 ns)
                               0.996 R²   (0.989 R² .. 1.000 R²)
          mean                 25.50 ns   (24.95 ns .. 26.95 ns)
          std dev              2.802 ns   (1.275 ns .. 5.163 ns)
          variance introduced by outliers: 93% (severely inflated)
      
          benchmarking cmpOpt  2.3.4 1.2.3.4.5
          time                 11.29 ns   (11.27 ns .. 11.30 ns)
                               1.000 R²   (1.000 R² .. 1.000 R²)
          mean                 11.28 ns   (11.27 ns .. 11.29 ns)
          std dev              24.69 ps   (12.02 ps .. 46.86 ps)
      
          benchmarking compare [2.3.4] [1.2.3.4.5]
          time                 11.05 ns   (11.04 ns .. 11.06 ns)
                               1.000 R²   (1.000 R² .. 1.000 R²)
          mean                 11.05 ns   (11.04 ns .. 11.06 ns)
          std dev              32.82 ps   (15.89 ps .. 61.64 ps)
      
      These timings are now very close to the 'Ord [Int]' timings.
      
      With this optimisation, the total number of 'versionNumbers' calls
      reported by `+RTS -p` for `cabal new-build --dry`'ing haskell-ide-engine
      went down from originally 73501 calls to 6789 calls.
      aabee7c3
    • Herbert Valerio Riedel's avatar
      Optimise `Version` representation · cbddd8cb
      Herbert Valerio Riedel authored
      This optimises the `[Int]` representation to a 16-byte heap object for
      ~99% of version numbers (up to 4 components, each within a [0..0xfffe]
      value range) occuring on Hackage.
      
      One noteworthy improvement of this optimisation is a significant reduction
      of the size of the 01-index.cache file from previously 6299700 bytes
      (before #3905) down to 3408864 bytes, i.e. down to ~54%
      
      Also, this reduces the memory footprint and GC overhead a bit for
      e.g. `cabal info zzz` (which reads in the index cache) from
      
          cabal.0: There is no package named 'zzz'.
          You may need to run 'cabal update' to get the latest list of available
          packages.
               859,337,368 bytes allocated in the heap
               447,261,128 bytes copied during GC
                37,385,208 bytes maximum residency (19 sample(s))
                 1,311,136 bytes maximum slop
                       103 MB total memory in use (0 MB lost due to fragmentation)
      
                                               Tot time (elapsed)  Avg pause  Max pause
            Gen  0      1613 colls,     0 par    0.268s   0.268s     0.0002s    0.0012s
            Gen  1        19 colls,     0 par    0.227s   0.227s     0.0119s    0.0506s
      
            TASKS: 4 (1 bound, 3 peak workers (3 total), using -N1)
      
            SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)
      
            INIT    time    0.001s  (  0.001s elapsed)
            MUT     time    0.431s  (  0.758s elapsed)
            GC      time    0.495s  (  0.495s elapsed)
            EXIT    time    0.006s  (  0.005s elapsed)
            Total   time    0.934s  (  1.259s elapsed)
      
            Alloc rate    1,991,870,623 bytes per MUT second
      
            Productivity  46.9% of total user, 34.8% of total elapsed
      
      to
      
          cabal.1: There is no package named 'zzz'.
          You may need to run 'cabal update' to get the latest list of available
          packages.
               834,314,392 bytes allocated in the heap
               440,791,176 bytes copied during GC
                36,663,112 bytes maximum residency (19 sample(s))
                 2,225,040 bytes maximum slop
                        96 MB total memory in use (0 MB lost due to fragmentation)
      
                                               Tot time (elapsed)  Avg pause  Max pause
            Gen  0      1574 colls,     0 par    0.254s   0.254s     0.0002s    0.0007s
            Gen  1        19 colls,     0 par    0.223s   0.223s     0.0118s    0.0474s
      
            TASKS: 4 (1 bound, 3 peak workers (3 total), using -N1)
      
            SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)
      
            INIT    time    0.001s  (  0.001s elapsed)
            MUT     time    0.383s  (  0.699s elapsed)
            GC      time    0.477s  (  0.477s elapsed)
            EXIT    time    0.005s  (  0.005s elapsed)
            Total   time    0.869s  (  1.182s elapsed)
      
            Alloc rate    2,175,866,164 bytes per MUT second
      
            Productivity  44.9% of total user, 33.0% of total elapsed
      cbddd8cb
    • Edward Z. Yang's avatar
      Merge pull request #3906 from ezyang/pr/reexport-prettyprint-bug · d900c87d
      Edward Z. Yang authored
      Fix reexported-modules display mangling.
      d900c87d
    • Edward Z. Yang's avatar
      Don't solve for executables in legacy install codepath. · bf54fac5
      Edward Z. Yang authored
      In 9e99b3f4
      
       I turned of executable
      solving for legacy configure, but I forgot to turn it off for legacy
      install too, which lead to assertion failures.
      
      Fixes #3912.
      Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
      bf54fac5
    • Edward Z. Yang's avatar
      GHC 8.1 compatibility fixes. · effb4ea6
      Edward Z. Yang authored
      
      
      It seems that GHC HEAD is now unable to infer the correct
      type for "f . g" when g has a higher-rank type.  So eta-expand
      all such occurrences to keep the build working.
      Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
      effb4ea6
  6. 01 Oct, 2016 5 commits
  7. 30 Sep, 2016 3 commits