Skip to content

Commit

Permalink
Merge branch 'develop' into factorable-sum
Browse files Browse the repository at this point in the history
# Conflicts:
#	src/Reflex/Adjustable/Class.hs
#	src/Reflex/Network.hs
  • Loading branch information
Owen Shepherd committed Jan 10, 2020
2 parents 0352d5d + 3b8a112 commit 5d65a2e
Show file tree
Hide file tree
Showing 233 changed files with 23,835 additions and 1,510 deletions.
132 changes: 132 additions & 0 deletions .ghc.environment.x86_64-linux-8.6.5
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
-- This is a GHC environment file written by cabal. This means you can
-- run ghc or ghci and get the environment of the project as a whole.
-- But you still need to use cabal repl $target to get the environment
-- of specific components (libs, exes, tests etc) because each one can
-- have its own source dirs, cpp flags etc.
--
clear-package-db
global-package-db
package-db /home/owen/.cabal/store/ghc-8.6.5/package.db
package-db dist-newstyle/packagedb/ghc-8.6.5
package-id reflex-0.6.2.4-inplace
package-id MemoTrie-0.6.9-8zY1JbeVzGvsbhcVCLlip
package-id base-4.12.0.0
package-id ghc-prim-0.5.3
package-id rts
package-id integer-gmp-1.0.2.0
package-id newtype-generics-0.5.3-6UOHIAuTtziBWehsMC0qS4
package-id transformers-0.5.6.2
package-id bifunctors-5.5.3-CxBbY0hGul56YrkCP3bZTk
package-id base-orphans-0.8-2hO32oBX2gy32lPSRilDYG
package-id comonad-5.0.4-CfUDvK0fM3o3gQjXsmwpbS
package-id containers-0.6.0.1
package-id array-0.5.3.0
package-id deepseq-1.4.4.0
package-id contravariant-1.5-F3dGhR4lhnFB6K0va0cOu0
package-id StateVar-1.1.1.1-2ewTKofpCGhC2np5dyFIaR
package-id stm-2.5.0.0
package-id distributive-0.6-KSBqnyfU90c1sptSOvKudm
package-id tagged-0.8.6-EiJ2F18RuD68LSMkg0Ly4r
package-id template-haskell-2.14.0.0
package-id ghc-boot-th-8.6.5
package-id pretty-1.1.3.6
package-id semigroups-0.18.5-6T2lH5F6zyQIdwR3JYKMO3
package-id transformers-compat-0.6.2-IT1pgM4Lod5B9rerVXsOk7
package-id th-abstraction-0.2.11.0-DAhuCgi08HTBWsDjm9nrOq
package-id constraints-extras-0.3.0.1-ElqE8ZEueSbDZyXNyvIbuy
package-id constraints-0.10.1-Ge0oUKujDl5JFbRA6MC749
package-id binary-0.8.6.0
package-id bytestring-0.10.8.2
package-id hashable-1.2.7.0-3Td3QPpYpP355exFvEAGjQ
package-id text-1.2.3.1
package-id mtl-2.2.2
package-id data-default-0.7.1.1-LTjBtjLvKGK2UBTHiM9KVF
package-id data-default-class-0.1.2.0-FeIQ5tLoVZBHMSgrT9zptQ
package-id data-default-instances-containers-0.0.1-9yvw8HF06tiAXuxm5U8KjO
package-id data-default-instances-dlist-0.0.1-LIRSqaQLAnD9zvxNpqPc5w
package-id dlist-0.8.0.5-FMMQwM1hD2kK7b7715Z2vG
package-id data-default-instances-old-locale-0.0.1-GRzcBvmea5LLGj3CNDMpIw
package-id old-locale-1.0.0.7-D4Rn5zPhtMJBwwirPJNu78
package-id dependent-map-0.3-8T0Q74nqGk3BvzDcWTzlnJ
package-id dependent-sum-0.6.2.0-DfZzs5WvVkfLNvfMOWNHZf
package-id exception-transformers-0.4.0.7-6IkV6CjEJU5BGxyjUrDnHG
package-id haskell-src-exts-1.21.0-1MqMUIJU7y29AVS9NHxlR4
package-id haskell-src-meta-0.8.2-6FpJnzwbNozIUTxPdhjFDj
package-id syb-0.7-8OHoa6XfXrB5PPoB0H7POz
package-id th-orphans-0.13.6-4fprWqsu1Zg2nne2HAd7tV
package-id th-lift-0.7.11-hZJVZ2zmXw59mRAYP9RXW
package-id th-lift-instances-0.1.12-7ErLaqpNM4M6ZI4vzbEcTE
package-id vector-0.12.0.2-AoZ9EwUsgIW1yrOc105QXH
package-id primitive-0.6.4.0-ILgywxtLpvnAOlEISPpP5b
package-id th-reify-many-0.1.8-HnJg08Hsq3q4zgVlksa6iN
package-id safe-0.3.17-6NAurGt3qCrL1bVFh29Owv
package-id th-expand-syns-0.4.4.0-JJJC0BlUtveGlxXaCaUH0k
package-id lens-4.17-AoHvfafWcnn1fl5JMgr0bk
package-id call-stack-0.1.0-6JeY2gtocDgBo2y7QzQaJD
package-id exceptions-0.10.0-14KCO06p6in59SsPqNrx7l
package-id filepath-1.4.2.1
package-id free-5.1-LU83tWlGajCAxLkVlHHqYh
package-id profunctors-5.3-1LzggvL6mvS34LpG9TKvy4
package-id semigroupoids-5.3.2-IPtfeEgsxTf6bYG7zEUetP
package-id unordered-containers-0.2.9.0-DHGIJuoYmZw582l4SNN8rX
package-id transformers-base-0.4.5.2-FanPsn4y0Pw6qXgRixCk97
package-id kan-extensions-5.2-3KN2oqNy0VOJofm6ZCGs55
package-id adjunctions-4.4-I9DpOfKzPZSJ2UBUD1iYww
package-id void-0.7.2-25eAk552UtQA9vusJY0zCu
package-id invariant-0.5.1-3Wx8m8qRXoTIuMeWnsAnE3
package-id parallel-3.2.2.0-EGl5SOk48TWHAD161C93aQ
package-id reflection-2.1.4-E9VXTbXoqHZ5rulgGPZOrF
package-id monad-control-1.0.2.3-EdXpRzw5t49bbotgsxoFF
package-id monoidal-containers-0.6-FmoaV48AwVeLGrYATGxIXa
package-id aeson-1.4.2.0-7yK3GqBIskeGYdLXiHaTFp
package-id attoparsec-0.13.2.2-FS10ndSmMwuKnecmDnUags
package-id scientific-0.3.6.2-LafykZRn9WH8upIymNFJ3S
package-id integer-logarithms-1.0.2.2-IT1M1moCo0mIobW8LfdrSC
package-id base-compat-0.10.5-FRXoAxOVtbG2qLNIZm1tTr
package-id unix-2.7.2.2
package-id time-1.8.0.2
package-id time-locale-compat-0.1.1.5-Et2KuIqhniaDySS0uBEPko
package-id uuid-types-1.0.3-DcKfDLH26WcEOcAKdcDixS
package-id random-1.1-3ypV4EIycgb35PKjTYYr5q
package-id newtype-0.2-I9xMGod6wpEBsBPdaJXf9q
package-id semialign-1-2JrnZFa2W6pEgyBZKAsND5
package-id these-1-Lv5CnrkyX4NL7wHSrkFYuQ
package-id QuickCheck-2.12.6.1-JyVWDgZJAFGJC5rmVxfUSm
package-id erf-2.0.0.0-ExhHoenPosmHlOroBQQced
package-id tf-random-0.5-IjFVdJXpGgq3hBuRJiaT27
package-id assoc-1-686bCGpnMLjLCMVv3cunID
package-id prim-uniq-0.1.0.1-D75JKKBZDmuADvWWa8CGIl
package-id ref-tf-0.4.0.1-6otS07lPtcm2p5TIx8ks0R
package-id unbounded-delays-0.1.1.0-7ulHERuvlgAKyhaTH4vNZc
package-id witherable-0.3-1xsX6QC8kE49eKfUvnd7e8
package-id these-lens-1-JKcyCh3l8NA9dhlmptj30M
package-id directory-1.3.3.0
package-id filemanip-0.3.6.3-4gIDkmoap4z2kDIgJy5hH
package-id unix-compat-0.5.1-7L4ZE9qc5MBJa5Jne6W69O
package-id hlint-2.2.2-9DW3qFHDIDx9mU0rIkLsV0
package-id ansi-terminal-0.8.2-LZ54B5ErqCiIlNwOVvnj65
package-id colour-2.3.4-BYzTQyKoQ9LK29pbkBo2SY
package-id cmdargs-0.10.20-EiFbtpfcdyUCuIuL5dHJuW
package-id process-1.6.5.0
package-id cpphs-1.20.8-DevT7HkEKU3DDQgUoHVnJY
package-id old-time-1.1.0.3-2XkcGgLYS3G4Bt8PCBG9iL
package-id polyparse-1.12.1-FeZxex5koKh2BIaglzjzIj
package-id extra-1.6.14-22umsfNV1L4GYDsAAhiwEu
package-id clock-0.7.2-6GYCAXixqb8FuS0ooeoDbD
package-id ghc-lib-parser-8.8.0.20190723-JAtheQxRztq8b4NiIcZ5ld
package-id hpc-0.6.0.3
package-id haskell-src-exts-util-0.2.5-90Dej4Kotj9AN1CNW4KGMw
package-id uniplate-1.6.12-5jY4kwgUm4FYrSzkrgwIB
package-id hscolour-1.24.4-BEI90NJLSwF5tw227AM1ae
package-id refact-0.3.0.2-1sV84vP3OHo15p4d2xAoYA
package-id yaml-0.11.0.0-I1P6K4duuUiB9XtGHug2Dc
package-id conduit-1.3.1.1-47X9ud5YVzCDqkAV1V2WnC
package-id mono-traversable-1.0.11.0-3LXfAFldzuQ27QqqkshSXK
package-id split-0.2.3.3-CwXUcGD2U4I4pJUogujB5u
package-id vector-algorithms-0.8.0.1-1IsWwfvXHi37z3RePwG982
package-id resourcet-1.2.2-7olNYHp9yNzFSqTGVHDyn8
package-id unliftio-core-0.1.2.0-DmlZdkLzX278vkyONsp8WQ
package-id libyaml-0.1.1.0-9QYjfboShhg1xO5bYS6Vkd
package-id ansi-wl-pprint-0.6.8.2-9mA7ckPlKRf5aGqviJvBkZ
package-id parsec-3.1.13.0
package-id optparse-applicative-0.14.3.0-GwyNPNsVIGd8cKk3PdDU1e
177 changes: 167 additions & 10 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,173 @@
# Cache Buster: 0
language: nix
# This Travis job script has been generated by a script via
#
# haskell-ci '--config=cabal.haskell-ci' 'cabal.project'
#
# For more information, see https://github.com/haskell-CI/haskell-ci
#
# version: 0.3.20190814
#
language: c
dist: xenial
sudo: required
git:
# whether to recursively clone submodules
submodules: false
cache:
directories:
- /nix
- $HOME/.cabal/packages
- $HOME/.cabal/store
before_cache:
- rm -fv $CABALHOME/packages/hackage.haskell.org/build-reports.log
# remove files that are regenerated by 'cabal update'
- rm -fv $CABALHOME/packages/hackage.haskell.org/00-index.*
- rm -fv $CABALHOME/packages/hackage.haskell.org/*.json
- rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.cache
- rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar
- rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar.idx
- rm -rfv $CABALHOME/packages/head.hackage
matrix:
include:
- env: COMPILER=ghc7103
- env: COMPILER=ghc821
- env: COMPILER=ghc802
- env: COMPILER=ghcjs
- compiler: ghcjs-8.4
addons: {"apt":{"sources":["hvr-ghc"],"packages":["cabal-install-3.0"]}}
- compiler: ghc-8.8.1
addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.8.1","cabal-install-3.0"]}}
- compiler: ghc-8.6.5
addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.6.5","cabal-install-2.4"]}}
- compiler: ghc-8.4.4
addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.4.4","cabal-install-2.4"]}}
- compiler: ghc-8.2.2
addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.2.2","cabal-install-2.4"]}}
- compiler: ghc-8.0.2
addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.0.2","cabal-install-2.4"]}}
before_install:
- |
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
sudo add-apt-repository -y ppa:hvr/ghcjs;
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
sudo apt-add-repository 'https://deb.nodesource.com/node_8.x xenial main'
sudo apt-get update;
sudo apt-get install $CC cabal-install-3.0 nodejs;
fi
- HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')
- WITHCOMPILER="-w $HC"
- |
if echo $CC | grep -q ghcjs; then
GHCJS=true
HC=${HC}js
WITHCOMPILER="--ghcjs ${WITHCOMPILER}js"
else
GHCJS=false;
fi
- if $GHCJS ; then sudo apt-get install -y ghc-8.4.4 ; fi
- if $GHCJS ; then PATH="/opt/ghc/8.4.4/bin:$PATH" ; fi
- HCPKG="$HC-pkg"
- unset CC
- CABAL=/opt/ghc/bin/cabal
- CABALHOME=$HOME/.cabal
- export PATH="$CABALHOME/bin:$PATH"
- TOP=$(pwd)
- "HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\\d+)\\.(\\d+)\\.(\\d+)(\\.(\\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')"
- echo $HCNUMVER
- CABAL="$CABAL -vnormal+nowrap+markoutput"
- set -o pipefail
- |
echo 'function blue(s) { printf "\033[0;34m" s "\033[0m " }' >> .colorful.awk
echo 'BEGIN { state = "output"; }' >> .colorful.awk
echo '/^-----BEGIN CABAL OUTPUT-----$/ { state = "cabal" }' >> .colorful.awk
echo '/^-----END CABAL OUTPUT-----$/ { state = "output" }' >> .colorful.awk
echo '!/^(-----BEGIN CABAL OUTPUT-----|-----END CABAL OUTPUT-----)/ {' >> .colorful.awk
echo ' if (state == "cabal") {' >> .colorful.awk
echo ' print blue($0)' >> .colorful.awk
echo ' } else {' >> .colorful.awk
echo ' print $0' >> .colorful.awk
echo ' }' >> .colorful.awk
echo '}' >> .colorful.awk
- cat .colorful.awk
- |
color_cabal_output () {
awk -f $TOP/.colorful.awk
}
- echo text | color_cabal_output
install:
- ${CABAL} --version
- echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
- node --version
- echo $GHCJS
- TEST=--enable-tests
- BENCH=--enable-benchmarks
- BENCH=--disable-benchmarks
- HEADHACKAGE=false
- rm -f $CABALHOME/config
- |
echo "verbose: normal +nowrap +markoutput" >> $CABALHOME/config
echo "remote-build-reporting: anonymous" >> $CABALHOME/config
echo "write-ghc-environment-files: always" >> $CABALHOME/config
echo "remote-repo-cache: $CABALHOME/packages" >> $CABALHOME/config
echo "logs-dir: $CABALHOME/logs" >> $CABALHOME/config
echo "world-file: $CABALHOME/world" >> $CABALHOME/config
echo "extra-prog-path: $CABALHOME/bin" >> $CABALHOME/config
echo "symlink-bindir: $CABALHOME/bin" >> $CABALHOME/config
echo "installdir: $CABALHOME/bin" >> $CABALHOME/config
echo "build-summary: $CABALHOME/logs/build.log" >> $CABALHOME/config
echo "store-dir: $CABALHOME/store" >> $CABALHOME/config
echo "install-dirs user" >> $CABALHOME/config
echo " prefix: $CABALHOME" >> $CABALHOME/config
echo "repository hackage.haskell.org" >> $CABALHOME/config
echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
- cat $CABALHOME/config
- rm -fv cabal.project cabal.project.local cabal.project.freeze
- travis_retry ${CABAL} v2-update -v
- if $GHCJS ; then (cd /tmp && ${CABAL} v2-install -w ghc-8.4.4 happy) ; fi
# Generate cabal.project
- rm -rf cabal.project cabal.project.local cabal.project.freeze
- touch cabal.project
- |
echo "packages: ." >> cabal.project
- |
- cat cabal.project || true
- cat cabal.project.local || true
- if [ -f "./configure.ac" ]; then (cd "." && autoreconf -i); fi
- ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH} | color_cabal_output
- "cat cabal.project.freeze | sed -E 's/^(constraints: *| *)//' | sed 's/any.//'"
- rm cabal.project.freeze
script:
- set -e
- nix-build -E "with (import <nixpkgs> {}); pkgs.haskell.packages.$COMPILER.callPackage ./default.nix { }"
- nix-collect-garbage -d # This is important to do right before 'script' ends so the cache gets GCed
- DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
# Packaging...
- ${CABAL} v2-sdist all | color_cabal_output
# Unpacking...
- mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/
- cd ${DISTDIR} || false
- find . -maxdepth 1 -type f -name '*.tar.gz' -exec tar -xvf '{}' \;
- find . -maxdepth 1 -type f -name '*.tar.gz' -exec rm '{}' \;
- PKGDIR_reflex="$(find . -maxdepth 1 -type d -regex '.*/reflex-[0-9.]*')"
# Generate cabal.project
- rm -rf cabal.project cabal.project.local cabal.project.freeze
- touch cabal.project
- |
echo "packages: ${PKGDIR_reflex}" >> cabal.project
- |
- cat cabal.project || true
- cat cabal.project.local || true
# Building...
# this builds all libraries and executables (without tests/benchmarks)
- ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
# Building with tests and benchmarks...
# build & run tests, build benchmarks
- ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output
# Testing...
- if ! $GHCJS ; then ${CABAL} v2-test $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output ; fi
# cabal check...
- (cd ${PKGDIR_reflex} && ${CABAL} -vnormal check)
# haddock...
- if ! $GHCJS ; then ${CABAL} v2-haddock $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output ; fi
# Constraint sets
- rm -rf cabal.project.local
# Constraint set no-th
- ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --constraint='reflex -use-template-haskell' all | color_cabal_output
# Constraint set old-these
- if $GHCJS || ! $GHCJS && [ $HCNUMVER -lt 80800 ] ; then ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --constraint='these <1' all | color_cabal_output ; fi
# Constraint set old-witherable
- ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --constraint='witherable <0.3.2' all | color_cabal_output

# REGENDATA ["--config=cabal.haskell-ci","cabal.project"]
# EOF
66 changes: 66 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Contribution Guide

Contributions and issue reports are encouraged and appreciated!

- [Opening Issues](#opening-issues)
- [Submitting Changes](#submitting-changes)
- [Guidelines for Commit Messages](#guidelines-for-commit-messages)
- [Guidelines for Pull Requests](#guidelines-for-pull-requests)
- [Code Quality](#code-quality)
- [Documentation](#documentation)

## Opening Issues

Before opening an issue, please check whether your issue has already been reported. Assuming it has not:

* Describe the issue you're encountering or the suggestion you're making
* Include any relevant steps to reproduce or code samples you can. It's always easier for us to debug if we have something that demonstrates the error.
* Let us know what version of reflex you were using. If you're using a github checkout, provide the git hash.
* Describe how you're building reflex (i.e., via reflex-platform, cabal install, stack, obelisk, etc.). If you're using reflex-platform or obelisk, provide the git hash of your checkout.

## Submitting Changes

### Guidelines for Commit Messages

#### Summary Line
The summary line of your commit message should summarize the changes being made. Commit messages should be written in the imperative mood and should describe what happens when the commit is applied.

One way to think about it is that your commit message should be able to complete the sentence:
"When applied, this commit will..."

#### Body
For breaking changes, new features, refactors, or other major changes, the body of the commit message should describe the motivation behind the change in greater detail and may include references to the issue tracker. The body shouldn't repeat code/comments from the diff.

### Guidelines for Pull Requests

Wherever possible, pull requests should add a single feature or fix a single bug. Pull requests should not bundle several unrelated changes.

### Code Quality

#### Warnings

Your pull request should add no new warnings to the project. It should also generally not disable any warnings.

#### Build and Test

Make sure the project builds and that the tests pass! This will generally also be checked by CI before merge, but trying it yourself first means you'll catch problems earlier and your contribution can be merged that much sooner!

#### Dependencies

Include version bounds whenever adding a dependency to the library stanza of the cabal file. Note that libraries added to reflex.cabal also need to be added to default.nix.

### Documentation

#### In the code
We're always striving to improve documentation. Please include [haddock](https://haskell-haddock.readthedocs.io/en/latest/index.html) documentation for any added code, and update the documentation for any code you modify.

#### In the [Changelog](ChangeLog.md)
Add an entry to the changelog when your PR:
* Adds a feature
* Deprecates something
* Includes a breaking change
* Makes any other change that will impact users

#### In the [Readme](README.md)
The readme is the first place a lot of people look for information about the repository. Update any parts of the readme that are affected by your PR.

Loading

0 comments on commit 5d65a2e

Please sign in to comment.