mirror of
https://github.com/GaloisInc/cryptol.git
synced 2024-08-17 01:41:09 +03:00
split out notebook into separate package
This involved: - Moving a couple REPL modules into the Cryptol library hierarchy (those that don't depend on console libraries) - Splitting up the Makefile, which unfortunately resulted in a lot of not-quite-duplication between the two Makefiles. Let's look into better abstraction...
This commit is contained in:
parent
bf25c5190f
commit
9923b6f11a
11
.gitignore
vendored
11
.gitignore
vendored
@ -1,4 +1,3 @@
|
||||
*.pyc
|
||||
*\#*
|
||||
*~
|
||||
.DS_Store
|
||||
@ -11,7 +10,13 @@ results.xml
|
||||
#docs/CryptolPrims.pdf
|
||||
#docs/ProgrammingCryptol.pdf
|
||||
#docs/Syntax.pdf
|
||||
d#ocs/Version2Changes.pdf
|
||||
#docs/Version2Changes.pdf
|
||||
|
||||
# don't check in distribution files
|
||||
cryptol-2.*
|
||||
cryptol-2.*
|
||||
|
||||
# temporary notebook stuff until we split out the repo
|
||||
/ICryptol/ICryptol-2.*
|
||||
/ICryptol/profile.tar
|
||||
/ICryptol/profile_cryptol/security/
|
||||
/ICryptol/profile_cryptol/startup/
|
||||
|
31
ICryptol/ICryptol.cabal
Normal file
31
ICryptol/ICryptol.cabal
Normal file
@ -0,0 +1,31 @@
|
||||
Name: ICryptol
|
||||
Version: 2.1.0
|
||||
Synopsis: ICryptol: An IPython-style interface for Cryptol
|
||||
License: BSD3
|
||||
Author: Galois, Inc.
|
||||
Maintainer: cryptol@galois.com
|
||||
Copyright: 2013-2015 Galois Inc.
|
||||
Category: Language
|
||||
Build-type: Simple
|
||||
Cabal-version: >= 1.18
|
||||
|
||||
flag static
|
||||
default: False
|
||||
description: Create a statically-linked binary
|
||||
|
||||
executable icryptol-kernel
|
||||
Default-language:
|
||||
Haskell2010
|
||||
Main-is: Main_notebook.hs
|
||||
hs-source-dirs: src
|
||||
other-modules: Notebook
|
||||
build-depends: base
|
||||
, containers
|
||||
, cryptol
|
||||
, ipython-kernel >= 0.3
|
||||
, text
|
||||
, transformers
|
||||
GHC-options: -Wall -O2
|
||||
|
||||
if os(linux) && flag(static)
|
||||
ld-options: -static -pthread
|
30
ICryptol/LICENSE
Normal file
30
ICryptol/LICENSE
Normal file
@ -0,0 +1,30 @@
|
||||
Copyright (c) 2013-2014 Galois Inc.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
* Neither the name of Galois, Inc. nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this
|
||||
software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
||||
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
37
ICryptol/LICENSE.rtf
Normal file
37
ICryptol/LICENSE.rtf
Normal file
@ -0,0 +1,37 @@
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
\margl1440\margr1440\vieww12600\viewh7800\viewkind0
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural
|
||||
|
||||
\f0\fs24 \cf0 Copyright (c) 2013-2014 Galois Inc.\
|
||||
All rights reserved.\
|
||||
\
|
||||
Redistribution and use in source and binary forms, with or without\
|
||||
modification, are permitted provided that the following conditions\
|
||||
are met:\
|
||||
\
|
||||
* Redistributions of source code must retain the above copyright\
|
||||
notice, this list of conditions and the following disclaimer.\
|
||||
\
|
||||
* Redistributions in binary form must reproduce the above copyright\
|
||||
notice, this list of conditions and the following disclaimer in\
|
||||
the documentation and/or other materials provided with the\
|
||||
distribution.\
|
||||
\
|
||||
* Neither the name of Galois, Inc. nor the names of its contributors\
|
||||
may be used to endorse or promote products derived from this\
|
||||
software without specific prior written permission.\
|
||||
\
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS\
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER\
|
||||
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\
|
||||
}
|
163
ICryptol/Makefile
Normal file
163
ICryptol/Makefile
Normal file
@ -0,0 +1,163 @@
|
||||
HERE := $(dir $(lastword $(MAKEFILE_LIST)))
|
||||
|
||||
UNAME := $(shell uname -s)
|
||||
ARCH := $(shell uname -m)
|
||||
REV ?= $(shell git rev-parse --short=7 HEAD || echo "unknown")
|
||||
VERSION := $(shell grep -i ^Version ICryptol.cabal | awk '{ print $$2}')
|
||||
SYSTEM_DESC ?= ${UNAME}-${ARCH}_${REV}
|
||||
PKG := ICryptol-${VERSION}-${SYSTEM_DESC}
|
||||
|
||||
CABAL := cabal
|
||||
CABAL_BUILD := $(CABAL) build $(CABAL_BUILD_FLAGS)
|
||||
CABAL_INSTALL := $(CABAL) install $(CABAL_INSTALL_FLAGS)
|
||||
CS := $(HERE)/.cabal-sandbox
|
||||
CS_BIN := $(CS)/bin
|
||||
|
||||
# Used only for windows, to find the right Program Files.
|
||||
PROGRAM_FILES = Program\ Files\ \(x86\)
|
||||
# Windows installer tools; assumes running on Cygwin and using WiX 3.8
|
||||
WiX := /cygdrive/c/${PROGRAM_FILES}/WiX\ Toolset\ v3.8
|
||||
CANDLE := ${WiX}/bin/candle.exe
|
||||
HEAT := ${WiX}/bin/heat.exe
|
||||
LIGHT := ${WiX}/bin/light.exe
|
||||
|
||||
# Windows-specific stuff
|
||||
ifneq (,$(findstring _NT,${UNAME}))
|
||||
DIST := ${PKG}.msi
|
||||
EXE_EXT := .exe
|
||||
adjust-path = '$(shell cygpath -w $1)'
|
||||
PREFIX ?= ${PROGRAM_FILES}/Galois/ICryptol\ ${VERSION}
|
||||
# split this up because `cabal copy` strips drive letters
|
||||
PREFIX_ABS := /cygdrive/c/${PREFIX}
|
||||
# since Windows installs aren't overlapping like /usr/local, we
|
||||
# don't need this extra prefix
|
||||
PREFIX_SHARE :=
|
||||
# goes under the share prefix
|
||||
PREFIX_DOC := /doc
|
||||
PKG_PREFIX := ${PKG}/${PREFIX}
|
||||
else
|
||||
DIST := ${PKG}.tar.gz ${PKG}.zip
|
||||
EXE_EXT :=
|
||||
adjust-path = '$1'
|
||||
PREFIX ?= /usr/local
|
||||
PREFIX_ABS := ${PREFIX}
|
||||
PREFIX_SHARE := /share
|
||||
# goes under the share prefix
|
||||
PREFIX_DOC := /doc/ICryptol
|
||||
PKG_PREFIX := ${PKG}${PREFIX}
|
||||
endif
|
||||
|
||||
ICRYPTOL_EXE := ./dist/build/cryptol/icryptol-kernel${EXE_EXT}
|
||||
|
||||
ICRYPTOL_SRC := \
|
||||
$(shell find src \
|
||||
\( -name \*.hs -or -name \*.x -or -name \*.y \) \
|
||||
-and \( -not -name \*\#\* \) -print)
|
||||
|
||||
${ICRYPTOL_EXE}: ${ICRYPTOL_SRC} dist/setup-config
|
||||
${CABAL_BUILD}
|
||||
|
||||
|
||||
# TODO: piece this apart a bit more; if right now if something fails
|
||||
# during initial setup, you have to invoke this target again manually
|
||||
${CS}:
|
||||
$(CABAL) sandbox init
|
||||
|
||||
${CS_BIN}/alex: | ${CS}
|
||||
$(CABAL_INSTALL) alex
|
||||
|
||||
${CS_BIN}/happy: | ${CS} ${CS_BIN}/alex
|
||||
$(CABAL_INSTALL) happy
|
||||
|
||||
dist/setup-config: ICryptol.cabal | ${CS_BIN}/alex ${CS_BIN}/happy
|
||||
$(CABAL_INSTALL) --only-dependencies
|
||||
$(CABAL) configure \
|
||||
--prefix=$(call adjust-path,${PREFIX_ABS}) \
|
||||
--datasubdir=ICryptol
|
||||
|
||||
.PHONY: all
|
||||
all: ${ICRYPTOL_EXE}
|
||||
|
||||
.PHONY: dist
|
||||
dist: ${DIST}
|
||||
|
||||
.PHONY: tarball
|
||||
tarball: ${PKG}.tar.gz
|
||||
|
||||
.PHONY: zip
|
||||
zip: ${PKG}.zip
|
||||
|
||||
.PHONY: msi
|
||||
msi: ${PKG}.msi
|
||||
|
||||
.PHONY: notebook
|
||||
notebook: ${PKG}
|
||||
mkdir -p $(CURDIR)/.ipython
|
||||
IPYTHONDIR=$(CURDIR)/.ipython \
|
||||
PATH=$(call adjust-path,${CURDIR}/${PKG_BIN}):$$PATH \
|
||||
CRYPTOLPATH=$(call adjust-path,$(CURDIR)/lib) \
|
||||
${PKG_BIN}/icryptol --notebook-dir=$(call adjust-path,${PKG_EXAMPLES})
|
||||
|
||||
PROFILE_CRYPTOL_SRC := profile_cryptol/ipython_config.py \
|
||||
profile_cryptol/static/base/images/ipynblogo.png \
|
||||
profile_cryptol/static/custom/custom.css \
|
||||
profile_cryptol/static/custom/custom.js
|
||||
profile.tar: ${PROFILE_CRYPTOL_SRC}
|
||||
tar -cvf profile.tar profile_cryptol
|
||||
|
||||
PKG_BIN := ${PKG_PREFIX}/bin
|
||||
PKG_SHARE := ${PKG_PREFIX}${PREFIX_SHARE}
|
||||
PKG_ICRY := ${PKG_SHARE}/ICryptol
|
||||
PKG_DOC := ${PKG_SHARE}${PREFIX_DOC}
|
||||
PKG_EXAMPLES := ${PKG_DOC}/examples
|
||||
|
||||
PKG_EXAMPLE_FILES := examples/AES.ipynb
|
||||
|
||||
${PKG}: ${ICRYPTOL_EXE} icryptol profile.tar LICENSE \
|
||||
${PKG_EXAMPLE_FILES}
|
||||
$(CABAL) copy --destdir=${PKG}
|
||||
# script not included in the copy
|
||||
cp icryptol ${PKG_BIN}
|
||||
# don't want to bundle the cryptol library in the binary distribution
|
||||
rm -rf ${PKG_PREFIX}/lib
|
||||
mkdir -p ${PKG_ICRY}
|
||||
mkdir -p ${PKG_DOC}
|
||||
mkdir -p ${PKG_EXAMPLES}
|
||||
cp LICENSE ${PKG_DOC}
|
||||
for EXAMPLE in ${PKG_EXAMPLE_FILES}; do \
|
||||
cp $$EXAMPLE ${PKG_EXAMPLES}; done
|
||||
cp -r profile.tar ${PKG_ICRY}
|
||||
|
||||
${PKG}.tar.gz: ${PKG}
|
||||
tar -czvf $@ $<
|
||||
|
||||
${PKG}.zip: ${PKG}
|
||||
zip -r $@ $<
|
||||
|
||||
${PKG}.msi: ${PKG} win32/ICryptol.wxs
|
||||
${HEAT} dir ${PKG_PREFIX} -o allfiles.wxs -nologo -var var.pkg \
|
||||
-ag -wixvar -cg ALLFILES -srd -dr INSTALLDIR -sfrag
|
||||
${CANDLE} -ext WixUIExtension -ext WixUtilExtension \
|
||||
-dversion=${VERSION} -dpkg=${PKG_PREFIX} win32/ICryptol.wxs
|
||||
${CANDLE} -ext WixUIExtension -ext WixUtilExtension \
|
||||
-dversion=${VERSION} -dpkg=${PKG_PREFIX} allfiles.wxs
|
||||
${LIGHT} -ext WixUIExtension -ext WixUtilExtension \
|
||||
-sval -o $@ ICryptol.wixobj allfiles.wixobj
|
||||
rm -f allfiles.wxs
|
||||
rm -f *.wixobj
|
||||
rm -f *.wixpdb
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
cabal clean
|
||||
rm -rf ICryptol-${VERSION}*/
|
||||
rm -rf ICryptol-${VERSION}*.tar.gz
|
||||
rm -rf ICryptol-${VERSION}*.zip
|
||||
rm -rf ICryptol-${VERSION}*.msi
|
||||
rm -rf .ipython
|
||||
rm -rf profile.tar
|
||||
|
||||
.PHONY: squeaky
|
||||
squeaky: clean
|
||||
-$(CABAL) sandbox delete
|
||||
rm -rf dist
|
865
ICryptol/cabal.config
Normal file
865
ICryptol/cabal.config
Normal file
@ -0,0 +1,865 @@
|
||||
-- Stackage snapshot from: http://www.stackage.org/snapshot/lts-1.10
|
||||
-- Please place this file next to your .cabal file as cabal.config
|
||||
-- To only use tested packages, uncomment the following line:
|
||||
-- remote-repo: stackage-lts-1.10:http://www.stackage.org/snapshot/lts-1.10
|
||||
constraints: abstract-deque ==0.3,
|
||||
abstract-par ==0.3.3,
|
||||
accelerate ==0.15.0.0,
|
||||
ace ==0.6,
|
||||
action-permutations ==0.0.0.1,
|
||||
active ==0.1.0.18,
|
||||
AC-Vector ==2.3.2,
|
||||
ad ==4.2.1.1,
|
||||
adjunctions ==4.2,
|
||||
aeson ==0.8.0.2,
|
||||
aeson-pretty ==0.7.2,
|
||||
aeson-qq ==0.7.4,
|
||||
aeson-utils ==0.2.2.1,
|
||||
alarmclock ==0.2.0.5,
|
||||
alex ==3.1.4,
|
||||
amqp ==0.10.1,
|
||||
ansi-terminal ==0.6.2.1,
|
||||
ansi-wl-pprint ==0.6.7.1,
|
||||
appar ==0.1.4,
|
||||
approximate ==0.2.1.1,
|
||||
arbtt ==0.8.1.4,
|
||||
arithmoi ==0.4.1.1,
|
||||
array installed,
|
||||
arrow-list ==0.6.1.5,
|
||||
asn1-data ==0.7.1,
|
||||
asn1-encoding ==0.9.0,
|
||||
asn1-parse ==0.9.0,
|
||||
asn1-types ==0.3.0,
|
||||
async ==2.0.2,
|
||||
atto-lisp ==0.2.2,
|
||||
attoparsec ==0.12.1.3,
|
||||
attoparsec-conduit ==1.1.0,
|
||||
attoparsec-enumerator ==0.3.3,
|
||||
attoparsec-expr ==0.1.1.1,
|
||||
authenticate ==1.3.2.11,
|
||||
auto-update ==0.1.2.1,
|
||||
aws ==0.11.2,
|
||||
bake ==0.2,
|
||||
bank-holidays-england ==0.1.0.2,
|
||||
barecheck ==0.2.0.6,
|
||||
base installed,
|
||||
base16-bytestring ==0.1.1.6,
|
||||
base64-bytestring ==1.0.0.1,
|
||||
base-compat ==0.5.0,
|
||||
base-prelude ==0.1.16,
|
||||
base-unicode-symbols ==0.2.2.4,
|
||||
basic-prelude ==0.3.11,
|
||||
bifunctors ==4.2,
|
||||
binary installed,
|
||||
binary-conduit ==1.2.3,
|
||||
binary-list ==1.0.1.0,
|
||||
bindings-DSL ==1.0.22,
|
||||
bioace ==0.0.1,
|
||||
bioalign ==0.0.5,
|
||||
biocore ==0.3.1,
|
||||
biofasta ==0.0.3,
|
||||
biofastq ==0.1,
|
||||
biophd ==0.0.5,
|
||||
biopsl ==0.4,
|
||||
biosff ==0.3.7.1,
|
||||
bits ==0.4,
|
||||
BlastHTTP ==1.0.1,
|
||||
blastxml ==0.3.2,
|
||||
blaze-builder ==0.3.3.4,
|
||||
blaze-builder-enumerator ==0.2.0.6,
|
||||
blaze-html ==0.7.1.0,
|
||||
blaze-markup ==0.6.3.0,
|
||||
blaze-svg ==0.3.4.1,
|
||||
blaze-textual ==0.2.0.9,
|
||||
BlogLiterately ==0.7.1.7,
|
||||
BlogLiterately-diagrams ==0.1.4.3,
|
||||
bloodhound ==0.5.0.1,
|
||||
bmp ==1.2.5.2,
|
||||
Boolean ==0.2.3,
|
||||
bool-extras ==0.4.0,
|
||||
bound ==1.0.4,
|
||||
BoundedChan ==1.0.3.0,
|
||||
broadcast-chan ==0.1.0,
|
||||
bson ==0.3.1,
|
||||
bumper ==0.6.0.3,
|
||||
byteable ==0.1.1,
|
||||
bytedump ==1.0,
|
||||
byteorder ==1.0.4,
|
||||
bytes ==0.14.1.3,
|
||||
bytestring installed,
|
||||
bytestring-builder ==0.10.4.1.2,
|
||||
bytestring-lexing ==0.4.3.2,
|
||||
bytestring-mmap ==0.2.2,
|
||||
bytestring-progress ==1.0.3,
|
||||
bytestring-show ==0.3.5.6,
|
||||
bytestring-trie ==0.2.4,
|
||||
bzlib ==0.5.0.5,
|
||||
bzlib-conduit ==0.2.1.3,
|
||||
c2hs ==0.20.1,
|
||||
Cabal installed,
|
||||
cabal-install ==1.18.0.8,
|
||||
cabal-src ==0.2.5,
|
||||
cairo ==0.13.1.0,
|
||||
case-insensitive ==1.2.0.4,
|
||||
cases ==0.1.2,
|
||||
cassava ==0.4.2.1,
|
||||
cautious-file ==1.0.2,
|
||||
cereal ==0.4.1.1,
|
||||
cereal-conduit ==0.7.2.3,
|
||||
certificate ==1.3.9,
|
||||
charset ==0.3.7,
|
||||
Chart ==1.3.3,
|
||||
Chart-diagrams ==1.3.3,
|
||||
ChasingBottoms ==1.3.0.11,
|
||||
check-email ==1.0,
|
||||
checkers ==0.4.1,
|
||||
chell ==0.4.0.1,
|
||||
chell-quickcheck ==0.2.4,
|
||||
chunked-data ==0.1.0.1,
|
||||
cipher-aes ==0.2.10,
|
||||
cipher-blowfish ==0.0.3,
|
||||
cipher-camellia ==0.0.2,
|
||||
cipher-des ==0.0.6,
|
||||
cipher-rc4 ==0.1.4,
|
||||
circle-packing ==0.1.0.4,
|
||||
classy-prelude ==0.10.5,
|
||||
classy-prelude-conduit ==0.10.5,
|
||||
classy-prelude-yesod ==0.10.5,
|
||||
clientsession ==0.9.1.1,
|
||||
clock ==0.4.1.3,
|
||||
cmdargs ==0.10.12,
|
||||
code-builder ==0.1.3,
|
||||
colour ==2.3.3,
|
||||
comonad ==4.2.2,
|
||||
comonads-fd ==4.0,
|
||||
comonad-transformers ==4.0,
|
||||
compdata ==0.9,
|
||||
compensated ==0.6.1,
|
||||
composition ==1.0.1.0,
|
||||
compressed ==3.10,
|
||||
concatenative ==1.0.1,
|
||||
concurrent-extra ==0.7.0.9,
|
||||
concurrent-supply ==0.1.7,
|
||||
cond ==0.4.1.1,
|
||||
conduit ==1.2.4,
|
||||
conduit-combinators ==0.3.0.6,
|
||||
conduit-extra ==1.1.7.0,
|
||||
configurator ==0.3.0.0,
|
||||
connection ==0.2.4,
|
||||
constraints ==0.4.1.3,
|
||||
containers installed,
|
||||
containers-unicode-symbols ==0.3.1.1,
|
||||
contravariant ==1.2.0.1,
|
||||
control-monad-free ==0.5.3,
|
||||
control-monad-loop ==0.1,
|
||||
convertible ==1.1.0.0,
|
||||
cookie ==0.4.1.4,
|
||||
courier ==0.1.0.15,
|
||||
cpphs ==1.18.9,
|
||||
cprng-aes ==0.6.1,
|
||||
cpu ==0.1.2,
|
||||
criterion ==1.0.2.0,
|
||||
crypto-api ==0.13.2,
|
||||
cryptocipher ==0.6.2,
|
||||
crypto-cipher-tests ==0.0.11,
|
||||
crypto-cipher-types ==0.0.9,
|
||||
cryptohash ==0.11.6,
|
||||
cryptohash-conduit ==0.1.1,
|
||||
cryptohash-cryptoapi ==0.1.3,
|
||||
crypto-numbers ==0.2.7,
|
||||
crypto-pubkey ==0.2.8,
|
||||
crypto-pubkey-types ==0.4.3,
|
||||
crypto-random ==0.0.8,
|
||||
crypto-random-api ==0.2.0,
|
||||
css-text ==0.1.2.1,
|
||||
csv ==0.1.2,
|
||||
csv-conduit ==0.6.3,
|
||||
curl ==1.3.8,
|
||||
data-accessor ==0.2.2.6,
|
||||
data-accessor-mtl ==0.2.0.4,
|
||||
data-binary-ieee754 ==0.4.4,
|
||||
data-default ==0.5.3,
|
||||
data-default-class ==0.0.1,
|
||||
data-default-instances-base ==0.0.1,
|
||||
data-default-instances-containers ==0.0.1,
|
||||
data-default-instances-dlist ==0.0.1,
|
||||
data-default-instances-old-locale ==0.0.1,
|
||||
data-inttrie ==0.1.0,
|
||||
data-lens-light ==0.1.2.1,
|
||||
data-memocombinators ==0.5.1,
|
||||
data-reify ==0.6,
|
||||
DAV ==1.0.3,
|
||||
Decimal ==0.4.2,
|
||||
deepseq installed,
|
||||
deepseq-generics ==0.1.1.2,
|
||||
derive ==2.5.21,
|
||||
diagrams ==1.2,
|
||||
diagrams-builder ==0.6.0.3,
|
||||
diagrams-cairo ==1.2.0.6,
|
||||
diagrams-contrib ==1.1.2.5,
|
||||
diagrams-core ==1.2.0.5,
|
||||
diagrams-haddock ==0.2.2.13,
|
||||
diagrams-lib ==1.2.0.8,
|
||||
diagrams-postscript ==1.1.0.4,
|
||||
diagrams-svg ==1.1.0.4,
|
||||
Diff ==0.3.0,
|
||||
digest ==0.0.1.2,
|
||||
digestive-functors ==0.7.1.4,
|
||||
dimensional ==0.13.0.1,
|
||||
directory installed,
|
||||
directory-tree ==0.12.0,
|
||||
direct-sqlite ==2.3.15,
|
||||
distributed-process ==0.5.3,
|
||||
distributed-process-async ==0.2.1,
|
||||
distributed-process-client-server ==0.1.2,
|
||||
distributed-process-execution ==0.1.1,
|
||||
distributed-process-extras ==0.2.0,
|
||||
distributed-process-simplelocalnet ==0.2.2.0,
|
||||
distributed-process-supervisor ==0.1.2,
|
||||
distributed-process-task ==0.1.1,
|
||||
distributed-static ==0.3.1.0,
|
||||
distributive ==0.4.4,
|
||||
djinn-ghc ==0.0.2.3,
|
||||
djinn-lib ==0.0.1.2,
|
||||
dlist ==0.7.1,
|
||||
dlist-instances ==0.1,
|
||||
doctest ==0.9.12,
|
||||
double-conversion ==2.0.1.0,
|
||||
dual-tree ==0.2.0.5,
|
||||
easy-file ==0.2.0,
|
||||
either ==4.3.3.2,
|
||||
elm-build-lib ==0.14.0.0,
|
||||
elm-compiler ==0.14.1,
|
||||
elm-core-sources ==1.0.0,
|
||||
elm-package ==0.2.2,
|
||||
email-validate ==2.0.1,
|
||||
enclosed-exceptions ==1.0.1,
|
||||
entropy ==0.3.5,
|
||||
enumerator ==0.4.20,
|
||||
eq ==4.0.3,
|
||||
erf ==2.0.0.0,
|
||||
errorcall-eq-instance ==0.1.0,
|
||||
errors ==1.4.7,
|
||||
ersatz ==0.2.6.1,
|
||||
esqueleto ==2.1.2.1,
|
||||
exceptions ==0.6.1,
|
||||
exception-transformers ==0.3.0.4,
|
||||
executable-path ==0.0.3,
|
||||
extensible-exceptions ==0.1.1.4,
|
||||
extra ==1.0.1,
|
||||
failure ==0.2.0.3,
|
||||
fast-logger ==2.2.3,
|
||||
fay ==0.21.2.1,
|
||||
fay-base ==0.19.4.2,
|
||||
fay-builder ==0.2.0.3,
|
||||
fay-dom ==0.5.0.1,
|
||||
fay-jquery ==0.6.0.3,
|
||||
fay-text ==0.3.2.2,
|
||||
fay-uri ==0.2.0.0,
|
||||
fb ==1.0.8,
|
||||
fb-persistent ==0.3.4,
|
||||
fclabels ==2.0.2.2,
|
||||
FenwickTree ==0.1.2,
|
||||
fgl ==5.5.0.1,
|
||||
file-embed ==0.0.8.1,
|
||||
file-location ==0.4.6,
|
||||
filemanip ==0.3.6.3,
|
||||
filepath installed,
|
||||
fingertree ==0.1.0.1,
|
||||
fixed ==0.2.1,
|
||||
fixed-list ==0.1.5,
|
||||
flexible-defaults ==0.0.1.1,
|
||||
focus ==0.1.3,
|
||||
foldl ==1.0.7,
|
||||
FontyFruity ==0.4.1,
|
||||
force-layout ==0.3.0.9,
|
||||
foreign-store ==0.1,
|
||||
formatting ==6.0.0,
|
||||
fpco-api ==1.2.0.5,
|
||||
free ==4.10.0.1,
|
||||
freenect ==1.2,
|
||||
frisby ==0.2,
|
||||
fsnotify ==0.1.0.3,
|
||||
fuzzcheck ==0.1.1,
|
||||
gd ==3000.7.3,
|
||||
generic-aeson ==0.2.0.2,
|
||||
generic-deriving ==1.6.3,
|
||||
GenericPretty ==1.2.1,
|
||||
generics-sop ==0.1.1,
|
||||
ghc-heap-view ==0.5.3,
|
||||
ghcid ==0.3.4,
|
||||
ghc-mod ==5.2.1.2,
|
||||
ghc-mtl ==1.2.1.0,
|
||||
ghc-paths ==0.1.0.9,
|
||||
ghc-prim installed,
|
||||
ghc-syb-utils ==0.2.3,
|
||||
gio ==0.13.0.4,
|
||||
git-embed ==0.1.0,
|
||||
gl ==0.6.3,
|
||||
glib ==0.13.1.0,
|
||||
Glob ==0.7.5,
|
||||
GLURaw ==1.4.0.2,
|
||||
GLUT ==2.5.1.1,
|
||||
graph-core ==0.2.1.0,
|
||||
graphs ==0.5.0.1,
|
||||
gravatar ==0.6,
|
||||
groundhog ==0.7.0.2,
|
||||
groundhog-mysql ==0.7.0.1,
|
||||
groundhog-postgresql ==0.7.0.2,
|
||||
groundhog-sqlite ==0.7.0.1,
|
||||
groundhog-th ==0.7.0,
|
||||
groupoids ==4.0,
|
||||
groups ==0.4.0.0,
|
||||
gtk ==0.13.4,
|
||||
gtk2hs-buildtools ==0.13.0.3,
|
||||
haddock-api ==2.15.0.2,
|
||||
haddock-library ==1.1.1,
|
||||
half ==0.2.0.1,
|
||||
HandsomeSoup ==0.3.5,
|
||||
happstack-server ==7.3.9,
|
||||
happy ==1.19.5,
|
||||
hashable ==1.2.3.1,
|
||||
hashable-extras ==0.2.0.1,
|
||||
hashmap ==1.3.0.1,
|
||||
hashtables ==1.2.0.2,
|
||||
haskeline installed,
|
||||
haskell2010 installed,
|
||||
haskell98 installed,
|
||||
haskell-lexer ==1.0,
|
||||
haskell-names ==0.4.1,
|
||||
haskell-packages ==0.2.4.4,
|
||||
haskell-src ==1.0.2.0,
|
||||
haskell-src-exts ==1.16.0.1,
|
||||
haskell-src-meta ==0.6.0.8,
|
||||
hasql ==0.7.2,
|
||||
hasql-backend ==0.4.0,
|
||||
hasql-postgres ==0.10.2,
|
||||
hastache ==0.6.1,
|
||||
HaTeX ==3.16.0.0,
|
||||
HaXml ==1.25.3,
|
||||
haxr ==3000.10.3.1,
|
||||
HCodecs ==0.5,
|
||||
hdaemonize ==0.5.0.0,
|
||||
hdevtools ==0.1.0.6,
|
||||
heaps ==0.3.1,
|
||||
hebrew-time ==0.1.1,
|
||||
heist ==0.14.1,
|
||||
here ==1.2.6,
|
||||
heredoc ==0.2.0.0,
|
||||
hflags ==0.4,
|
||||
highlighting-kate ==0.5.11.1,
|
||||
hinotify ==0.3.7,
|
||||
hint ==0.4.2.2,
|
||||
histogram-fill ==0.8.4.1,
|
||||
hit ==0.6.3,
|
||||
hjsmin ==0.1.4.7,
|
||||
hledger ==0.24,
|
||||
hledger-lib ==0.24,
|
||||
hlibgit2 ==0.18.0.14,
|
||||
hlint ==1.9.16,
|
||||
hmatrix ==0.16.1.4,
|
||||
hmatrix-gsl ==0.16.0.3,
|
||||
hoauth2 ==0.4.3,
|
||||
holy-project ==0.1.1.1,
|
||||
hoogle ==4.2.38,
|
||||
hoopl installed,
|
||||
hOpenPGP ==1.11,
|
||||
hostname ==1.0,
|
||||
hostname-validate ==1.0.0,
|
||||
hourglass ==0.2.8,
|
||||
hpc installed,
|
||||
hPDB ==1.2.0.2,
|
||||
hPDB-examples ==1.2.0.1,
|
||||
hs-bibutils ==5.5,
|
||||
hscolour ==1.20.3,
|
||||
hse-cpp ==0.1,
|
||||
hslogger ==1.2.8,
|
||||
hslua ==0.3.13,
|
||||
hspec ==2.1.4,
|
||||
hspec2 ==0.6.1,
|
||||
hspec-core ==2.1.4,
|
||||
hspec-discover ==2.1.4,
|
||||
hspec-expectations ==0.6.1.1,
|
||||
hspec-meta ==2.0.0,
|
||||
hspec-wai ==0.6.3,
|
||||
hspec-wai-json ==0.6.0,
|
||||
HStringTemplate ==0.7.3,
|
||||
hsyslog ==2.0,
|
||||
HTF ==0.12.2.3,
|
||||
html ==1.0.1.2,
|
||||
html-conduit ==1.1.1.1,
|
||||
HTTP ==4000.2.19,
|
||||
http-client ==0.4.7.1,
|
||||
http-client-tls ==0.2.2,
|
||||
http-conduit ==2.1.5,
|
||||
http-date ==0.0.5,
|
||||
http-reverse-proxy ==0.4.1.2,
|
||||
http-types ==0.8.6,
|
||||
HUnit ==1.2.5.2,
|
||||
hweblib ==0.6.3,
|
||||
hxt ==9.3.1.15,
|
||||
hxt-charproperties ==9.2.0.1,
|
||||
hxt-http ==9.1.5.2,
|
||||
hxt-pickle-utils ==0.1.0.2,
|
||||
hxt-regex-xmlschema ==9.2.0.1,
|
||||
hxt-relaxng ==9.1.5.5,
|
||||
hxt-unicode ==9.0.2.4,
|
||||
hybrid-vectors ==0.1.2.1,
|
||||
hyphenation ==0.4.2,
|
||||
idna ==0.3.0,
|
||||
ieee754 ==0.7.6,
|
||||
IfElse ==0.85,
|
||||
imagesize-conduit ==1.0.0.4,
|
||||
immortal ==0.2,
|
||||
incremental-parser ==0.2.3.4,
|
||||
indents ==0.3.3,
|
||||
ini ==0.3.1,
|
||||
integer-gmp installed,
|
||||
integration ==0.2.0.1,
|
||||
interpolate ==0.1.0,
|
||||
interpolatedstring-perl6 ==0.9.0,
|
||||
intervals ==0.7.1,
|
||||
io-choice ==0.0.5,
|
||||
io-manager ==0.1.0.2,
|
||||
io-memoize ==1.1.1.0,
|
||||
iproute ==1.3.1,
|
||||
iterable ==3.0,
|
||||
ixset ==1.0.6,
|
||||
js-flot ==0.8.3,
|
||||
js-jquery ==1.11.2,
|
||||
json-autotype ==0.2.5.4,
|
||||
json-schema ==0.7.3.1,
|
||||
JuicyPixels ==3.2.2,
|
||||
JuicyPixels-repa ==0.7,
|
||||
kan-extensions ==4.2.1,
|
||||
kdt ==0.2.2,
|
||||
keter ==1.3.8,
|
||||
keys ==3.10.1,
|
||||
kure ==2.16.6,
|
||||
language-c ==0.4.7,
|
||||
language-ecmascript ==0.16.2,
|
||||
language-glsl ==0.1.1,
|
||||
language-haskell-extract ==0.2.4,
|
||||
language-java ==0.2.7,
|
||||
language-javascript ==0.5.13.3,
|
||||
lazy-csv ==0.5,
|
||||
lca ==0.2.4,
|
||||
lens ==4.6.0.1,
|
||||
lens-aeson ==1.0.0.3,
|
||||
lens-family-th ==0.4.0.0,
|
||||
lhs2tex ==1.18.1,
|
||||
libgit ==0.3.0,
|
||||
libnotify ==0.1.1.0,
|
||||
lifted-async ==0.2.0.2,
|
||||
lifted-base ==0.2.3.6,
|
||||
linear ==1.15.5,
|
||||
linear-accelerate ==0.2,
|
||||
list-t ==0.4.3,
|
||||
loch-th ==0.2.1,
|
||||
log-domain ==0.9.3,
|
||||
logfloat ==0.12.1,
|
||||
logict ==0.6.0.2,
|
||||
loop ==0.2.0,
|
||||
lucid ==2.5,
|
||||
lzma-conduit ==1.1.3,
|
||||
machines ==0.4.1,
|
||||
mandrill ==0.1.1.0,
|
||||
map-syntax ==0.2,
|
||||
markdown ==0.1.13.1,
|
||||
markdown-unlit ==0.2.0.1,
|
||||
math-functions ==0.1.5.2,
|
||||
matrix ==0.3.4.2,
|
||||
MaybeT ==0.1.2,
|
||||
MemoTrie ==0.6.2,
|
||||
mersenne-random-pure64 ==0.2.0.4,
|
||||
messagepack ==0.3.0,
|
||||
messagepack-rpc ==0.1.0.3,
|
||||
mime-mail ==0.4.8.1,
|
||||
mime-mail-ses ==0.3.2.2,
|
||||
mime-types ==0.1.0.5,
|
||||
missing-foreign ==0.1.1,
|
||||
MissingH ==1.3.0.1,
|
||||
mmap ==0.5.9,
|
||||
mmorph ==1.0.4,
|
||||
MonadCatchIO-transformers ==0.3.1.3,
|
||||
monad-control ==0.3.3.1,
|
||||
monad-coroutine ==0.8.0.1,
|
||||
monadcryptorandom ==0.6.1,
|
||||
monad-extras ==0.5.9,
|
||||
monadic-arrays ==0.2.1.3,
|
||||
monad-journal ==0.6.0.2,
|
||||
monad-logger ==0.3.13.1,
|
||||
monad-loops ==0.4.2.1,
|
||||
monad-par ==0.3.4.7,
|
||||
monad-parallel ==0.7.1.4,
|
||||
monad-par-extras ==0.3.3,
|
||||
monad-primitive ==0.1,
|
||||
monad-products ==4.0.0.1,
|
||||
MonadPrompt ==1.0.0.5,
|
||||
MonadRandom ==0.3.0.1,
|
||||
monad-st ==0.2.4,
|
||||
monads-tf ==0.1.0.2,
|
||||
mongoDB ==2.0.3,
|
||||
monoid-extras ==0.3.3.5,
|
||||
monoid-subclasses ==0.3.6.2,
|
||||
mono-traversable ==0.7.0,
|
||||
mtl ==2.1.3.1,
|
||||
mtlparse ==0.1.4.0,
|
||||
mtl-prelude ==1.0.3,
|
||||
multimap ==1.2.1,
|
||||
multipart ==0.1.2,
|
||||
MusicBrainz ==0.2.3,
|
||||
mutable-containers ==0.2.1.2,
|
||||
mwc-random ==0.13.3.0,
|
||||
mysql ==0.1.1.7,
|
||||
mysql-simple ==0.2.2.4,
|
||||
nanospec ==0.2.0,
|
||||
nats ==1,
|
||||
neat-interpolation ==0.2.2,
|
||||
nettle ==0.1.0,
|
||||
network ==2.6.0.2,
|
||||
network-conduit-tls ==1.1.0.2,
|
||||
network-info ==0.2.0.5,
|
||||
network-multicast ==0.0.11,
|
||||
network-simple ==0.4.0.4,
|
||||
network-transport ==0.4.1.0,
|
||||
network-transport-tcp ==0.4.1,
|
||||
network-transport-tests ==0.2.2.0,
|
||||
network-uri ==2.6.0.1,
|
||||
newtype ==0.2,
|
||||
nsis ==0.2.4,
|
||||
numbers ==3000.2.0.1,
|
||||
numeric-extras ==0.0.3,
|
||||
NumInstances ==1.4,
|
||||
numtype ==1.1,
|
||||
Octree ==0.5.4.2,
|
||||
old-locale installed,
|
||||
old-time installed,
|
||||
OneTuple ==0.2.1,
|
||||
opaleye ==0.3.1,
|
||||
OpenGL ==2.9.2.0,
|
||||
OpenGLRaw ==1.5.0.1,
|
||||
openpgp-asciiarmor ==0.1,
|
||||
operational ==0.2.3.2,
|
||||
options ==1.2.1.1,
|
||||
optparse-applicative ==0.11.0.2,
|
||||
osdkeys ==0.0,
|
||||
pandoc ==1.13.2,
|
||||
pandoc-citeproc ==0.6,
|
||||
pandoc-types ==1.12.4.1,
|
||||
pango ==0.13.0.5,
|
||||
parallel ==3.2.0.6,
|
||||
parallel-io ==0.3.3,
|
||||
parseargs ==0.1.5.2,
|
||||
parsec ==3.1.8,
|
||||
parsers ==0.12.1.1,
|
||||
partial-handler ==0.1.0,
|
||||
path-pieces ==0.1.5,
|
||||
patience ==0.1.1,
|
||||
pcre-light ==0.4.0.3,
|
||||
pdfinfo ==1.5.2,
|
||||
pem ==0.2.2,
|
||||
persistent ==2.1.1.7,
|
||||
persistent-mongoDB ==2.1.2.1,
|
||||
persistent-mysql ==2.1.2.1,
|
||||
persistent-postgresql ==2.1.2.2,
|
||||
persistent-sqlite ==2.1.1.2,
|
||||
persistent-template ==2.1.0.1,
|
||||
phantom-state ==0.2.0.2,
|
||||
pipes ==4.1.4,
|
||||
pipes-concurrency ==2.0.3,
|
||||
pipes-parse ==3.0.2,
|
||||
placeholders ==0.1,
|
||||
pointed ==4.2,
|
||||
polyparse ==1.10,
|
||||
pool-conduit ==0.1.2.3,
|
||||
postgresql-binary ==0.5.1,
|
||||
postgresql-libpq ==0.9.0.2,
|
||||
postgresql-simple ==0.4.10.0,
|
||||
pqueue ==1.2.1,
|
||||
prefix-units ==0.1.0.2,
|
||||
prelude-extras ==0.4,
|
||||
present ==2.2,
|
||||
pretty installed,
|
||||
prettyclass ==1.0.0.0,
|
||||
pretty-class ==1.0.1.1,
|
||||
pretty-show ==1.6.8,
|
||||
primes ==0.2.1.0,
|
||||
primitive ==0.5.4.0,
|
||||
process installed,
|
||||
process-conduit ==1.2.0.1,
|
||||
process-extras ==0.2.0,
|
||||
product-profunctors ==0.6,
|
||||
profunctor-extras ==4.0,
|
||||
profunctors ==4.3.2,
|
||||
project-template ==0.1.4.2,
|
||||
publicsuffixlist ==0.1,
|
||||
punycode ==2.0,
|
||||
pure-io ==0.2.1,
|
||||
pureMD5 ==2.1.2.1,
|
||||
pwstore-fast ==2.4.4,
|
||||
quandl-api ==0.2.0.0,
|
||||
QuasiText ==0.1.2.5,
|
||||
QuickCheck ==2.7.6,
|
||||
quickcheck-assertions ==0.1.1,
|
||||
quickcheck-instances ==0.3.10,
|
||||
quickcheck-io ==0.1.1,
|
||||
quickcheck-unicode ==1.0.0.0,
|
||||
quickpull ==0.4.0.0,
|
||||
rainbow ==0.20.0.4,
|
||||
rainbow-tests ==0.20.0.4,
|
||||
random ==1.0.1.1,
|
||||
random-fu ==0.2.6.2,
|
||||
random-shuffle ==0.0.4,
|
||||
random-source ==0.3.0.6,
|
||||
rank1dynamic ==0.2.0.1,
|
||||
Rasterific ==0.4.2,
|
||||
raw-strings-qq ==1.0.2,
|
||||
ReadArgs ==1.2.2,
|
||||
reducers ==3.10.3.1,
|
||||
reflection ==1.5.1.1,
|
||||
regex-applicative ==0.3.1,
|
||||
regex-base ==0.93.2,
|
||||
regex-compat ==0.95.1,
|
||||
regex-pcre-builtin ==0.94.4.8.8.35,
|
||||
regex-posix ==0.95.2,
|
||||
regexpr ==0.5.4,
|
||||
regex-tdfa ==1.2.0,
|
||||
regex-tdfa-rc ==1.1.8.3,
|
||||
regular ==0.3.4.4,
|
||||
regular-xmlpickler ==0.2,
|
||||
rematch ==0.2.0.0,
|
||||
repa ==3.3.1.2,
|
||||
repa-algorithms ==3.3.1.2,
|
||||
repa-devil ==0.3.2.2,
|
||||
repa-io ==3.3.1.2,
|
||||
reroute ==0.2.2.1,
|
||||
resource-pool ==0.2.3.2,
|
||||
resourcet ==1.1.4.1,
|
||||
rest-client ==0.4.0.5,
|
||||
rest-core ==0.33.1.2,
|
||||
rest-gen ==0.16.1.8,
|
||||
rest-happstack ==0.2.10.4,
|
||||
rest-snap ==0.1.17.14,
|
||||
rest-stringmap ==0.2.0.3,
|
||||
rest-types ==1.11.1.1,
|
||||
rest-wai ==0.1.0.4,
|
||||
rev-state ==0.1,
|
||||
rfc5051 ==0.1.0.3,
|
||||
runmemo ==1.0.0.1,
|
||||
rvar ==0.2.0.2,
|
||||
safe ==0.3.8,
|
||||
safecopy ==0.8.4,
|
||||
scientific ==0.3.3.7,
|
||||
scotty ==0.9.0,
|
||||
scrobble ==0.2.1.1,
|
||||
securemem ==0.1.7,
|
||||
semigroupoid-extras ==4.0,
|
||||
semigroupoids ==4.2,
|
||||
semigroups ==0.16.1,
|
||||
sendfile ==0.7.9,
|
||||
seqloc ==0.6.1.1,
|
||||
setenv ==0.1.1.3,
|
||||
SHA ==1.6.4.1,
|
||||
shake ==0.14.3,
|
||||
shake-language-c ==0.6.4,
|
||||
shakespeare ==2.0.4.1,
|
||||
shakespeare-i18n ==1.1.0,
|
||||
shakespeare-text ==1.1.0,
|
||||
shell-conduit ==4.5.2,
|
||||
shelly ==1.5.7,
|
||||
silently ==1.2.4.1,
|
||||
simple-reflect ==0.3.2,
|
||||
simple-sendfile ==0.2.18,
|
||||
singletons ==1.0,
|
||||
siphash ==1.0.3,
|
||||
skein ==1.0.9.2,
|
||||
slave-thread ==0.1.5,
|
||||
smallcheck ==1.1.1,
|
||||
smtLib ==1.0.7,
|
||||
snap ==0.13.3.2,
|
||||
snap-core ==0.9.6.4,
|
||||
snaplet-fay ==0.3.3.10,
|
||||
snap-server ==0.9.4.6,
|
||||
socks ==0.5.4,
|
||||
sodium ==0.11.0.3,
|
||||
sourcemap ==0.1.3.0,
|
||||
speculation ==1.5.0.1,
|
||||
sphinx ==0.6.0.1,
|
||||
split ==0.2.2,
|
||||
Spock ==0.7.7.0,
|
||||
Spock-digestive ==0.1.0.0,
|
||||
Spock-worker ==0.2.1.3,
|
||||
spoon ==0.3.1,
|
||||
sqlite-simple ==0.4.8.0,
|
||||
stackage ==0.3.1,
|
||||
stateref ==0.3,
|
||||
statestack ==0.2.0.3,
|
||||
statistics ==0.13.2.1,
|
||||
statistics-linreg ==0.3,
|
||||
stm ==2.4.4,
|
||||
stm-chans ==3.0.0.2,
|
||||
stm-conduit ==2.5.4,
|
||||
stm-containers ==0.2.8,
|
||||
stm-stats ==0.2.0.0,
|
||||
storable-complex ==0.2.2,
|
||||
storable-endian ==0.2.5,
|
||||
streaming-commons ==0.1.10.0,
|
||||
streams ==3.2,
|
||||
strict ==0.3.2,
|
||||
stringable ==0.1.3,
|
||||
stringbuilder ==0.5.0,
|
||||
stringprep ==1.0.0,
|
||||
stringsearch ==0.3.6.5,
|
||||
stylish-haskell ==0.5.11.1,
|
||||
SVGFonts ==1.4.0.3,
|
||||
syb ==0.4.4,
|
||||
syb-with-class ==0.6.1.5,
|
||||
system-canonicalpath ==0.2.3.0,
|
||||
system-fileio ==0.3.16.1,
|
||||
system-filepath ==0.4.13.2,
|
||||
system-posix-redirect ==1.1.0.1,
|
||||
tabular ==0.2.2.7,
|
||||
tagged ==0.7.3,
|
||||
tagshare ==0.0,
|
||||
tagsoup ==0.13.3,
|
||||
tagstream-conduit ==0.5.5.3,
|
||||
tar ==0.4.1.0,
|
||||
tardis ==0.3.0.0,
|
||||
tasty ==0.10.1,
|
||||
tasty-ant-xml ==1.0.1,
|
||||
tasty-golden ==2.2.2.4,
|
||||
tasty-hunit ==0.9.1,
|
||||
tasty-kat ==0.0.3,
|
||||
tasty-quickcheck ==0.8.3.2,
|
||||
tasty-smallcheck ==0.8.0.1,
|
||||
tasty-th ==0.1.3,
|
||||
template-haskell installed,
|
||||
temporary ==1.2.0.3,
|
||||
temporary-rc ==1.2.0.3,
|
||||
terminal-progress-bar ==0.0.1.4,
|
||||
terminal-size ==0.3.0,
|
||||
terminfo installed,
|
||||
test-framework ==0.8.1.1,
|
||||
test-framework-hunit ==0.3.0.1,
|
||||
test-framework-quickcheck2 ==0.3.0.3,
|
||||
test-framework-th ==0.2.4,
|
||||
testing-feat ==0.4.0.2,
|
||||
testpack ==2.1.3.0,
|
||||
texmath ==0.8.0.1,
|
||||
text ==1.2.0.4,
|
||||
text-binary ==0.1.0,
|
||||
text-format ==0.3.1.1,
|
||||
text-icu ==0.7.0.1,
|
||||
tf-random ==0.5,
|
||||
th-desugar ==1.4.2.1,
|
||||
th-expand-syns ==0.3.0.5,
|
||||
th-extras ==0.0.0.2,
|
||||
th-lift ==0.7.2,
|
||||
th-orphans ==0.8.3,
|
||||
threads ==0.5.1.3,
|
||||
th-reify-many ==0.1.3,
|
||||
thyme ==0.3.5.5,
|
||||
time installed,
|
||||
time-compat ==0.1.0.3,
|
||||
time-lens ==0.4.0.1,
|
||||
timezone-olson ==0.1.6,
|
||||
timezone-series ==0.1.4,
|
||||
tls ==1.2.16,
|
||||
tls-debug ==0.3.4,
|
||||
tostring ==0.2.1.1,
|
||||
transformers installed,
|
||||
transformers-base ==0.4.4,
|
||||
transformers-compat ==0.3.3.3,
|
||||
traverse-with-class ==0.2.0.3,
|
||||
tree-view ==0.4,
|
||||
tuple ==0.3.0.2,
|
||||
type-eq ==0.4.2,
|
||||
type-list ==0.0.0.1,
|
||||
udbus ==0.2.1,
|
||||
unbounded-delays ==0.1.0.9,
|
||||
union-find ==0.2,
|
||||
uniplate ==1.6.12,
|
||||
unix installed,
|
||||
unix-compat ==0.4.1.4,
|
||||
unix-time ==0.3.5,
|
||||
unordered-containers ==0.2.5.1,
|
||||
uri-encode ==1.5.0.4,
|
||||
url ==2.1.3,
|
||||
utf8-light ==0.4.2,
|
||||
utf8-string ==0.3.8,
|
||||
uuid ==1.3.8,
|
||||
vault ==0.3.0.4,
|
||||
vector ==0.10.12.2,
|
||||
vector-algorithms ==0.6.0.3,
|
||||
vector-binary-instances ==0.2.1.0,
|
||||
vector-instances ==3.3.0.1,
|
||||
vector-space ==0.8.7,
|
||||
vector-space-points ==0.2.1,
|
||||
vector-th-unbox ==0.2.1.2,
|
||||
vhd ==0.2.2,
|
||||
void ==0.7,
|
||||
wai ==3.0.2.3,
|
||||
wai-app-static ==3.0.0.6,
|
||||
wai-conduit ==3.0.0.2,
|
||||
wai-eventsource ==3.0.0,
|
||||
wai-extra ==3.0.4.5,
|
||||
wai-logger ==2.2.3,
|
||||
wai-middleware-static ==0.6.0.1,
|
||||
wai-websockets ==3.0.0.5,
|
||||
warp ==3.0.9.2,
|
||||
warp-tls ==3.0.2,
|
||||
webdriver ==0.6.1,
|
||||
web-fpco ==0.1.1.0,
|
||||
websockets ==0.9.3.0,
|
||||
wizards ==1.0.1,
|
||||
wl-pprint ==1.1,
|
||||
wl-pprint-extras ==3.5.0.4,
|
||||
wl-pprint-terminfo ==3.7.1.3,
|
||||
wl-pprint-text ==1.1.0.3,
|
||||
word8 ==0.1.2,
|
||||
wordpass ==1.0.0.2,
|
||||
X11 ==1.6.1.2,
|
||||
x509 ==1.5.0.1,
|
||||
x509-store ==1.5.0,
|
||||
x509-system ==1.5.0,
|
||||
x509-validation ==1.5.1,
|
||||
xenstore ==0.1.1,
|
||||
xhtml installed,
|
||||
xml ==1.3.14,
|
||||
xml-conduit ==1.2.3.3,
|
||||
xmlgen ==0.6.2.1,
|
||||
xml-hamlet ==0.4.0.10,
|
||||
xmlhtml ==0.2.3.4,
|
||||
xml-types ==0.3.4,
|
||||
xss-sanitize ==0.3.5.5,
|
||||
yackage ==0.7.0.6,
|
||||
yaml ==0.8.10.1,
|
||||
Yampa ==0.9.6,
|
||||
YampaSynth ==0.2,
|
||||
yesod ==1.4.1.4,
|
||||
yesod-auth ==1.4.3.1,
|
||||
yesod-auth-deskcom ==1.4.0,
|
||||
yesod-auth-fb ==1.6.6,
|
||||
yesod-auth-hashdb ==1.4.1.2,
|
||||
yesod-auth-oauth2 ==0.0.12,
|
||||
yesod-bin ==1.4.3.10,
|
||||
yesod-core ==1.4.8.1,
|
||||
yesod-eventsource ==1.4.0.1,
|
||||
yesod-fay ==0.7.1,
|
||||
yesod-fb ==0.3.4,
|
||||
yesod-form ==1.4.4,
|
||||
yesod-gitrepo ==0.1.1.0,
|
||||
yesod-newsfeed ==1.4.0.1,
|
||||
yesod-persistent ==1.4.0.2,
|
||||
yesod-sitemap ==1.4.0.1,
|
||||
yesod-static ==1.4.0.4,
|
||||
yesod-test ==1.4.3.1,
|
||||
yesod-text-markdown ==0.1.7,
|
||||
yesod-websockets ==0.2.1.1,
|
||||
zeromq4-haskell ==0.6.3,
|
||||
zip-archive ==0.2.3.7,
|
||||
zlib ==0.5.4.2,
|
||||
zlib-bindings ==0.1.1.5,
|
||||
zlib-enum ==0.2.3.1,
|
||||
zlib-lens ==0.1.1.1
|
@ -12,9 +12,11 @@
|
||||
# POSIX layout for the installation of the icryptol-kernel executable
|
||||
# and the profile.tar that contains the basic cryptol profile for
|
||||
# IPython. By setting the IPYTHONDIR environment variable, you can
|
||||
# control where this profile is created (by default it should be in
|
||||
# control where this profile is created (if not set it will be in
|
||||
# $HOME/.ipython).
|
||||
|
||||
IPYTHONDIR=${IPYTHONDIR:-$HOME/.ipython}
|
||||
|
||||
set -e
|
||||
|
||||
command -v ipython >/dev/null 2>&1 || {
|
||||
@ -29,7 +31,7 @@ command -v icryptol-kernel >/dev/null 2>&1 || {
|
||||
|
||||
ipython locate profile cryptol 2>&1 || {
|
||||
tar -C $IPYTHONDIR \
|
||||
-xf $(dirname $(which icryptol-kernel))/../share/icryptol/profile.tar
|
||||
-xf $(dirname $(which icryptol-kernel))/../share/ICryptol/profile.tar
|
||||
}
|
||||
|
||||
ipython notebook --profile=cryptol $@
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
@ -10,9 +10,9 @@ module Main where
|
||||
|
||||
import Notebook
|
||||
|
||||
import REPL.Command
|
||||
import REPL.Monad (lName, lPath)
|
||||
import qualified REPL.Monad as REPL
|
||||
import Cryptol.REPL.Command
|
||||
import Cryptol.REPL.Monad (lName, lPath)
|
||||
import qualified Cryptol.REPL.Monad as REPL
|
||||
|
||||
import qualified Cryptol.ModuleSystem as M
|
||||
import qualified Cryptol.ModuleSystem.Monad as M (setFocusedModule)
|
||||
@ -45,10 +45,8 @@ main = do
|
||||
easyKernel profileFile cryptolConfig
|
||||
_ -> do
|
||||
putStrLn "Usage:"
|
||||
putStrLn "cryptolnb kernel FILE -- run a kernel with FILE for \
|
||||
putStrLn "icryptol-kernel kernel FILE -- run a kernel with FILE for \
|
||||
\communication with the frontend"
|
||||
|
||||
|
||||
|
||||
-- Kernel Configuration --------------------------------------------------------
|
||||
cryptolConfig :: KernelConfig NB String String
|
@ -9,9 +9,9 @@
|
||||
{-# LANGUAGE DeriveDataTypeable #-}
|
||||
module Notebook where
|
||||
|
||||
import REPL.Command (loadPrelude,findNbCommand,parseCommand,runCommand,replParse,liftModuleCmd)
|
||||
import REPL.Monad (REPL(..) ,runREPL, lName, lPath)
|
||||
import qualified REPL.Monad as REPL
|
||||
import Cryptol.REPL.Command (loadPrelude,findNbCommand,parseCommand,runCommand,replParse,liftModuleCmd)
|
||||
import Cryptol.REPL.Monad (REPL(..) ,runREPL, lName, lPath)
|
||||
import qualified Cryptol.REPL.Monad as REPL
|
||||
|
||||
import qualified Cryptol.ModuleSystem as M
|
||||
import Cryptol.Parser (defaultConfig, parseModule, Config(..), ParseError)
|
73
ICryptol/win32/ICryptol.wxs
Normal file
73
ICryptol/win32/ICryptol.wxs
Normal file
@ -0,0 +1,73 @@
|
||||
<?xml version='1.0' encoding='windows-1252'?>
|
||||
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
|
||||
<!-- NOTE: WiX doesn't support non-decimal versions -->
|
||||
<Product Name='ICryptol $(var.version)'
|
||||
Version='$(var.version)'
|
||||
Manufacturer='Galois, Inc.'
|
||||
Id='*'
|
||||
UpgradeCode='49DAA415-C201-41EE-9448-162F667EBEC0'
|
||||
Language='1033'
|
||||
Codepage='1252'>
|
||||
|
||||
<Package Description="ICryptol $(var.version) Installer"
|
||||
Manufacturer='Galois, Inc.'
|
||||
InstallerVersion='200'
|
||||
Compressed='yes' />
|
||||
|
||||
<Media Id='1' Cabinet='ICryptol.cab' EmbedCab='yes' />
|
||||
|
||||
<MajorUpgrade DowngradeErrorMessage="A newer version of ICryptol is already installed. Setup will now exit." />
|
||||
|
||||
<Directory Id='TARGETDIR' Name='SourceDir'>
|
||||
<Directory Id='ProgramFilesFolder' Name='PFiles'>
|
||||
<Directory Id='Galois' Name='Galois'>
|
||||
<Directory Id='INSTALLDIR' Name='ICryptol $(var.version)'>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<Directory Id="ProgramMenuFolder" Name="Programs">
|
||||
<Directory Id="ProgramMenuDir" Name="ICryptol $(var.version)">
|
||||
<Component Id="Shortcuts" Guid="444691AD-2300-48C7-9984-F893A902AE33">
|
||||
<Shortcut Id="startmenuICryptol"
|
||||
Name="ICryptol $(var.version)"
|
||||
WorkingDirectory='INSTALLDIR'
|
||||
Target="[INSTALLDIR]\bin\ICryptol.bat"
|
||||
Icon="crypto.ico"
|
||||
IconIndex="0" />
|
||||
<!-- <Shortcut Id="startmenuTutorial" -->
|
||||
<!-- Name="Cryptol Tutorial" -->
|
||||
<!-- Target="[DOCDIR]Cryptol-Tutorial.pdf" -->
|
||||
<!-- WorkingDirectory='INSTALLDIR' -->
|
||||
<!-- IconIndex="0" /> -->
|
||||
<!-- <Shortcut Id="startmenuGuide" -->
|
||||
<!-- Name="Cryptol Programming Guide" -->
|
||||
<!-- Target="[DOCDIR]ProgrammingGuide.pdf" -->
|
||||
<!-- WorkingDirectory='INSTALLDIR' -->
|
||||
<!-- IconIndex="0" /> -->
|
||||
<RegistryValue Root='HKCU' Key='Software\Galois\ICryptol'
|
||||
Name='installed' Type='integer' Value='1'
|
||||
KeyPath='yes' />
|
||||
<RemoveFolder Id='ProgramMenuDir' On='uninstall' />
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
</Directory>
|
||||
|
||||
<Feature Id='Complete' Level='1'>
|
||||
<ComponentGroupRef Id='ALLFILES' />
|
||||
<ComponentRef Id='Shortcuts' />
|
||||
</Feature>
|
||||
|
||||
<Icon Id="crypto.ico" SourceFile="win32/crypto.ico" />
|
||||
|
||||
<UI>
|
||||
<UIRef Id="WixUI_Minimal" />
|
||||
</UI>
|
||||
|
||||
<WixVariable Id="WixUILicenseRtf" Value="LICENSE.rtf" />
|
||||
|
||||
|
||||
</Product>
|
||||
</Wix>
|
BIN
ICryptol/win32/crypto.ico
Normal file
BIN
ICryptol/win32/crypto.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 766 B |
39
Makefile
39
Makefile
@ -55,7 +55,6 @@ else
|
||||
endif
|
||||
|
||||
CRYPTOL_EXE := ./dist/build/cryptol/cryptol${EXE_EXT}
|
||||
ICRYPTOL_EXE := ./dist/build/cryptol/icryptol-kernel${EXE_EXT}
|
||||
|
||||
.PHONY: all
|
||||
all: ${CRYPTOL_EXE}
|
||||
@ -64,14 +63,6 @@ all: ${CRYPTOL_EXE}
|
||||
run: ${CRYPTOL_EXE}
|
||||
CRYPTOLPATH=$(call adjust-path,$(CURDIR)/lib) ${CRYPTOL_EXE}
|
||||
|
||||
.PHONY: notebook
|
||||
notebook: ${PKG}
|
||||
mkdir -p $(CURDIR)/.ipython
|
||||
IPYTHONDIR=$(CURDIR)/.ipython \
|
||||
PATH=$(call adjust-path,${CURDIR}/${PKG_BIN}):$$PATH \
|
||||
CRYPTOLPATH=$(call adjust-path,$(CURDIR)/lib) \
|
||||
${PKG_BIN}/icryptol --notebook-dir=$(call adjust-path,${PKG_EXNB})
|
||||
|
||||
.PHONY: docs
|
||||
docs:
|
||||
(cd docs; make)
|
||||
@ -105,37 +96,27 @@ CRYPTOL_SRC := \
|
||||
-and \( -not -name \*\#\* \) -print) \
|
||||
$(shell find lib -name \*.cry)
|
||||
|
||||
ICRYPTOL_SRC := \
|
||||
$(shell find cryptol notebook \
|
||||
\( -name \*.hs -or -name \*.x -or -name \*.y \) \
|
||||
-and \( -not -name \*\#\* \) -print)
|
||||
|
||||
src/GitRev.hs: .git/index
|
||||
sh configure
|
||||
|
||||
print-%:
|
||||
@echo $* = $($*)
|
||||
|
||||
# /usr/share/cryptol on POSIX, installdir/cryptol on Windows
|
||||
DATADIR := ${PREFIX_ABS}${PREFIX_SHARE}
|
||||
|
||||
dist/setup-config: cryptol.cabal | ${CS_BIN}/alex ${CS_BIN}/happy
|
||||
$(CABAL_INSTALL) --only-dependencies
|
||||
$(CABAL) configure \
|
||||
--prefix=$(call adjust-path,${PREFIX_ABS}) \
|
||||
--datasubdir=cryptol
|
||||
|
||||
${CRYPTOL_EXE} ${ICRYPTOL_EXE}: $(CRYPTOL_SRC) $(ICRYPTOL_SRC) src/GitRev.hs dist/setup-config
|
||||
${CRYPTOL_EXE}: $(CRYPTOL_SRC) src/GitRev.hs dist/setup-config
|
||||
$(CABAL_BUILD)
|
||||
|
||||
|
||||
PKG_BIN := ${PKG_PREFIX}/bin
|
||||
PKG_SHARE := ${PKG_PREFIX}${PREFIX_SHARE}
|
||||
PKG_CRY := ${PKG_SHARE}/cryptol
|
||||
PKG_ICRY := ${PKG_SHARE}/icryptol
|
||||
PKG_DOC := ${PKG_SHARE}${PREFIX_DOC}
|
||||
PKG_EXAMPLES := ${PKG_DOC}/examples
|
||||
PKG_EXNB := ${PKG_EXAMPLES}/notebook
|
||||
PKG_EXCONTRIB := ${PKG_EXAMPLES}/contrib
|
||||
|
||||
PKG_EXAMPLE_FILES := docs/ProgrammingCryptol/aes/AES.cry \
|
||||
@ -146,45 +127,30 @@ PKG_EXAMPLE_FILES := docs/ProgrammingCryptol/aes/AES.cry \
|
||||
examples/Test.cry \
|
||||
examples/SHA1.cry \
|
||||
|
||||
PKG_EXNB_FILES := examples/notebook/AES.ipynb
|
||||
|
||||
PKG_EXCONTRIB_FILES := examples/contrib/mkrand.cry \
|
||||
examples/contrib/RC4.cry \
|
||||
examples/contrib/simon.cry \
|
||||
examples/contrib/speck.cry
|
||||
|
||||
PROFILE_CRYPTOL_SRC := notebook/profile_cryptol/ipython_config.py \
|
||||
notebook/profile_cryptol/static/base/images/ipynblogo.png \
|
||||
notebook/profile_cryptol/static/custom/custom.css \
|
||||
notebook/profile_cryptol/static/custom/custom.js
|
||||
notebook/profile.tar: ${PROFILE_CRYPTOL_SRC}
|
||||
(cd notebook && tar -cvf profile.tar profile_cryptol)
|
||||
|
||||
${PKG}: ${CRYPTOL_EXE} ${ICRYPTOL_EXE} \
|
||||
notebook/icryptol notebook/profile.tar \
|
||||
${PKG}: ${CRYPTOL_EXE} \
|
||||
docs/*.md docs/*.pdf LICENSE \
|
||||
${PKG_EXAMPLE_FILES} ${PKG_EXCONTRIB_FILES}
|
||||
$(CABAL) copy --destdir=${PKG}
|
||||
# script not included in the copy
|
||||
cp notebook/icryptol ${PKG_BIN}
|
||||
# don't want to bundle the cryptol library in the binary distribution
|
||||
rm -rf ${PKG_PREFIX}/lib
|
||||
mkdir -p ${PKG_CRY}
|
||||
mkdir -p ${PKG_ICRY}
|
||||
mkdir -p ${PKG_DOC}
|
||||
mkdir -p ${PKG_EXAMPLES}
|
||||
mkdir -p ${PKG_EXNB}
|
||||
mkdir -p ${PKG_EXCONTRIB}
|
||||
cp docs/*.md ${PKG_DOC}
|
||||
cp docs/*.pdf ${PKG_DOC}
|
||||
cp LICENSE ${PKG_DOC}
|
||||
for EXAMPLE in ${PKG_EXAMPLE_FILES}; do \
|
||||
cp $$EXAMPLE ${PKG_EXAMPLES}; done
|
||||
for EXAMPLE in ${PKG_EXNB_FILES}; do \
|
||||
cp $$EXAMPLE ${PKG_EXNB}; done
|
||||
for EXAMPLE in ${PKG_EXCONTRIB_FILES}; do \
|
||||
cp $$EXAMPLE ${PKG_EXCONTRIB}; done
|
||||
cp -r notebook/profile.tar ${PKG_ICRY}
|
||||
|
||||
${PKG}.tar.gz: ${PKG}
|
||||
tar -czvf $@ $<
|
||||
@ -233,7 +199,6 @@ clean:
|
||||
rm -rf cryptol-${VERSION}*.tar.gz
|
||||
rm -rf cryptol-${VERSION}*.zip
|
||||
rm -rf cryptol-${VERSION}*.msi
|
||||
rm -rf .ipython
|
||||
|
||||
.PHONY: squeaky
|
||||
squeaky: clean
|
||||
|
@ -18,10 +18,6 @@ flag static
|
||||
default: False
|
||||
description: Create a statically-linked binary
|
||||
|
||||
flag notebook
|
||||
default: True
|
||||
description: Build the IPython-style Cryptol notebook interface
|
||||
|
||||
library
|
||||
Default-language:
|
||||
Haskell98
|
||||
@ -118,12 +114,16 @@ library
|
||||
Cryptol.Eval.Value,
|
||||
|
||||
Cryptol.Testing.Random,
|
||||
Cryptol.Testing.Exhaust
|
||||
Cryptol.Testing.Exhaust,
|
||||
|
||||
Cryptol.Symbolic
|
||||
Cryptol.Symbolic.BitVector
|
||||
Cryptol.Symbolic.Prims
|
||||
Cryptol.Symbolic.Value
|
||||
Cryptol.Symbolic,
|
||||
Cryptol.Symbolic.BitVector,
|
||||
Cryptol.Symbolic.Prims,
|
||||
Cryptol.Symbolic.Value,
|
||||
|
||||
Cryptol.REPL.Command,
|
||||
Cryptol.REPL.Monad,
|
||||
Cryptol.REPL.Trie
|
||||
|
||||
Other-modules: Cryptol.Parser.LexerUtils,
|
||||
Cryptol.Parser.ParserUtils,
|
||||
@ -139,11 +139,8 @@ executable cryptol
|
||||
Main-is: Main.hs
|
||||
hs-source-dirs: cryptol
|
||||
Other-modules: OptParser,
|
||||
REPL.Command,
|
||||
REPL.Haskeline,
|
||||
REPL.Logo,
|
||||
REPL.Monad,
|
||||
REPL.Trie,
|
||||
Paths_cryptol
|
||||
build-depends: ansi-terminal
|
||||
, base
|
||||
@ -164,34 +161,3 @@ executable cryptol
|
||||
|
||||
if os(linux) && flag(static)
|
||||
ld-options: -static -pthread
|
||||
|
||||
executable icryptol-kernel
|
||||
if flag(notebook)
|
||||
buildable: True
|
||||
else
|
||||
buildable: False
|
||||
Default-language:
|
||||
Haskell98
|
||||
Main-is: Main_notebook.hs
|
||||
hs-source-dirs: cryptol, notebook
|
||||
other-modules: Notebook
|
||||
build-depends: ansi-terminal
|
||||
, base
|
||||
, containers
|
||||
, cryptol
|
||||
, deepseq
|
||||
, directory
|
||||
, filepath
|
||||
, haskeline
|
||||
, ipython-kernel >= 0.3
|
||||
, monadLib
|
||||
, process
|
||||
, random
|
||||
, sbv >= 4.0
|
||||
, text
|
||||
, tf-random
|
||||
, transformers
|
||||
GHC-options: -Wall -O2
|
||||
|
||||
if os(linux) && flag(static)
|
||||
ld-options: -static -pthread
|
||||
|
@ -12,12 +12,12 @@
|
||||
module Main where
|
||||
|
||||
import OptParser
|
||||
import REPL.Command (loadCmd,loadPrelude)
|
||||
import Cryptol.REPL.Command (loadCmd,loadPrelude)
|
||||
import Cryptol.REPL.Monad (REPL,updateREPLTitle,setUpdateREPLTitle,
|
||||
io,DotCryptol(..),prependSearchPath,setSearchPath)
|
||||
import qualified Cryptol.REPL.Monad as REPL
|
||||
import REPL.Haskeline
|
||||
import REPL.Monad (REPL,setREPLTitle,io,DotCryptol(..),
|
||||
prependSearchPath,setSearchPath)
|
||||
import REPL.Logo
|
||||
import qualified REPL.Monad as REPL
|
||||
import Paths_cryptol (version)
|
||||
|
||||
import Cryptol.Version (commitHash, commitBranch, commitDirty)
|
||||
@ -144,7 +144,8 @@ main = do
|
||||
setupREPL :: Options -> REPL ()
|
||||
setupREPL opts = do
|
||||
displayLogo True
|
||||
setREPLTitle
|
||||
setUpdateREPLTitle setREPLTitle
|
||||
updateREPLTitle
|
||||
mCryptolPath <- io $ lookupEnv "CRYPTOLPATH"
|
||||
case mCryptolPath of
|
||||
Nothing -> return ()
|
||||
|
@ -12,9 +12,10 @@
|
||||
|
||||
module REPL.Haskeline where
|
||||
|
||||
import REPL.Command
|
||||
import REPL.Monad
|
||||
import REPL.Trie
|
||||
import Cryptol.REPL.Command
|
||||
import Cryptol.REPL.Monad
|
||||
import Cryptol.REPL.Trie
|
||||
import Cryptol.Utils.PP
|
||||
|
||||
import qualified Control.Exception as X
|
||||
import Control.Monad (guard, when)
|
||||
@ -23,13 +24,13 @@ import qualified Control.Monad.Trans.Class as MTL
|
||||
import Data.Char (isAlphaNum, isSpace)
|
||||
import Data.Function (on)
|
||||
import Data.List (isPrefixOf,nub,sortBy)
|
||||
import System.Console.ANSI (setTitle)
|
||||
import System.Console.Haskeline
|
||||
import System.Directory ( doesFileExist
|
||||
, getHomeDirectory
|
||||
, getCurrentDirectory)
|
||||
import System.FilePath ((</>))
|
||||
|
||||
|
||||
-- | Haskeline-specific repl implementation.
|
||||
repl :: DotCryptol -> Maybe FilePath -> REPL () -> IO ()
|
||||
repl dotC mbBatch begin =
|
||||
@ -124,6 +125,16 @@ instance MonadException REPL where
|
||||
return (return a)
|
||||
unREPL runBody ref
|
||||
|
||||
-- Titles ----------------------------------------------------------------------
|
||||
|
||||
mkTitle :: Maybe LoadedModule -> String
|
||||
mkTitle lm = maybe "" (\ m -> pretty m ++ " - ") (lName =<< lm)
|
||||
++ "cryptol"
|
||||
|
||||
setREPLTitle :: REPL ()
|
||||
setREPLTitle = do
|
||||
lm <- getLoadedMod
|
||||
io (setTitle (mkTitle lm))
|
||||
|
||||
-- Completion ------------------------------------------------------------------
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
module REPL.Logo where
|
||||
|
||||
import REPL.Monad
|
||||
import Cryptol.REPL.Monad
|
||||
import Paths_cryptol (version)
|
||||
|
||||
import Cryptol.Version (commitShortHash)
|
||||
|
@ -7,7 +7,7 @@
|
||||
-- Portability : portable
|
||||
|
||||
{-# LANGUAGE CPP, PatternGuards, FlexibleContexts #-}
|
||||
module REPL.Command (
|
||||
module Cryptol.REPL.Command (
|
||||
-- * Commands
|
||||
Command(..), CommandDescr(..), CommandBody(..)
|
||||
, parseCommand
|
||||
@ -29,8 +29,8 @@ module REPL.Command (
|
||||
, moduleCmdResult
|
||||
) where
|
||||
|
||||
import REPL.Monad
|
||||
import REPL.Trie
|
||||
import Cryptol.REPL.Monad
|
||||
import Cryptol.REPL.Trie
|
||||
|
||||
import qualified Cryptol.ModuleSystem as M
|
||||
import qualified Cryptol.ModuleSystem.Base as M (preludeName)
|
||||
@ -212,7 +212,7 @@ genHelp cs = map cmdHelp cs
|
||||
runCommand :: Command -> REPL ()
|
||||
runCommand c = case c of
|
||||
|
||||
Command cmd -> cmd `REPL.Monad.catch` handler
|
||||
Command cmd -> cmd `Cryptol.REPL.Monad.catch` handler
|
||||
where
|
||||
handler re = rPutStrLn "" >> rPrint (pp re)
|
||||
|
@ -11,7 +11,7 @@
|
||||
{-# LANGUAGE RecordWildCards #-}
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
|
||||
module REPL.Monad (
|
||||
module Cryptol.REPL.Monad (
|
||||
-- * REPL Monad
|
||||
REPL(..), runREPL
|
||||
, io
|
||||
@ -45,7 +45,8 @@ module REPL.Monad (
|
||||
, disableLet
|
||||
, enableLet
|
||||
, getLetEnabled
|
||||
, setREPLTitle
|
||||
, updateREPLTitle
|
||||
, setUpdateREPLTitle
|
||||
|
||||
-- ** Config Options
|
||||
, EnvVal(..)
|
||||
@ -58,7 +59,7 @@ module REPL.Monad (
|
||||
, setPutStr
|
||||
) where
|
||||
|
||||
import REPL.Trie
|
||||
import Cryptol.REPL.Trie
|
||||
|
||||
import Cryptol.Prims.Types(typeOf)
|
||||
import Cryptol.Prims.Syntax(ECon(..),ppPrefix)
|
||||
@ -82,7 +83,6 @@ import Data.IORef
|
||||
import Data.List (isPrefixOf)
|
||||
import Data.Monoid (Monoid(..))
|
||||
import Data.Typeable (Typeable)
|
||||
import System.Console.ANSI (setTitle)
|
||||
import qualified Control.Exception as X
|
||||
import qualified Data.Map as Map
|
||||
import Text.Read (readMaybe)
|
||||
@ -97,16 +97,17 @@ data LoadedModule = LoadedModule
|
||||
, lPath :: FilePath -- ^ Focused file
|
||||
}
|
||||
|
||||
-- REPL RW Environment.
|
||||
-- | REPL RW Environment.
|
||||
data RW = RW
|
||||
{ eLoadedMod :: Maybe LoadedModule
|
||||
, eContinue :: Bool
|
||||
, eIsBatch :: Bool
|
||||
, eModuleEnv :: M.ModuleEnv
|
||||
, eNameSupply :: Int
|
||||
, eUserEnv :: UserEnv
|
||||
, ePutStr :: String -> IO ()
|
||||
, eLetEnabled :: Bool
|
||||
{ eLoadedMod :: Maybe LoadedModule
|
||||
, eContinue :: Bool
|
||||
, eIsBatch :: Bool
|
||||
, eModuleEnv :: M.ModuleEnv
|
||||
, eNameSupply :: Int
|
||||
, eUserEnv :: UserEnv
|
||||
, ePutStr :: String -> IO ()
|
||||
, eLetEnabled :: Bool
|
||||
, eUpdateTitle :: REPL ()
|
||||
}
|
||||
|
||||
-- | Initial, empty environment.
|
||||
@ -114,14 +115,15 @@ defaultRW :: Bool -> IO RW
|
||||
defaultRW isBatch = do
|
||||
env <- M.initialModuleEnv
|
||||
return RW
|
||||
{ eLoadedMod = Nothing
|
||||
, eContinue = True
|
||||
, eIsBatch = isBatch
|
||||
, eModuleEnv = env
|
||||
, eNameSupply = 0
|
||||
, eUserEnv = mkUserEnv userOptions
|
||||
, ePutStr = putStr
|
||||
, eLetEnabled = True
|
||||
{ eLoadedMod = Nothing
|
||||
, eContinue = True
|
||||
, eIsBatch = isBatch
|
||||
, eModuleEnv = env
|
||||
, eNameSupply = 0
|
||||
, eUserEnv = mkUserEnv userOptions
|
||||
, ePutStr = putStr
|
||||
, eLetEnabled = True
|
||||
, eUpdateTitle = return ()
|
||||
}
|
||||
|
||||
-- | Build up the prompt for the REPL.
|
||||
@ -130,11 +132,6 @@ mkPrompt rw
|
||||
| eIsBatch rw = ""
|
||||
| otherwise = maybe "cryptol" pretty (lName =<< eLoadedMod rw) ++ "> "
|
||||
|
||||
mkTitle :: RW -> String
|
||||
mkTitle rw = maybe "" (\ m -> pretty m ++ " - ") (lName =<< eLoadedMod rw)
|
||||
++ "cryptol"
|
||||
|
||||
|
||||
-- REPL Monad ------------------------------------------------------------------
|
||||
|
||||
-- | REPL_ context with InputT handling.
|
||||
@ -244,7 +241,7 @@ getPrompt = mkPrompt `fmap` getRW
|
||||
setLoadedMod :: LoadedModule -> REPL ()
|
||||
setLoadedMod n = do
|
||||
modifyRW_ (\ rw -> rw { eLoadedMod = Just n })
|
||||
setREPLTitle
|
||||
updateREPLTitle
|
||||
|
||||
getLoadedMod :: REPL (Maybe LoadedModule)
|
||||
getLoadedMod = eLoadedMod `fmap` getRW
|
||||
@ -289,10 +286,15 @@ enableLet = modifyRW_ (\ rw -> rw { eLetEnabled = True })
|
||||
getLetEnabled :: REPL Bool
|
||||
getLetEnabled = fmap eLetEnabled getRW
|
||||
|
||||
setREPLTitle :: REPL ()
|
||||
setREPLTitle = unlessBatch $ do
|
||||
-- | Update the title
|
||||
updateREPLTitle :: REPL ()
|
||||
updateREPLTitle = unlessBatch $ do
|
||||
rw <- getRW
|
||||
io (setTitle (mkTitle rw))
|
||||
eUpdateTitle rw
|
||||
|
||||
-- | Set the function that will be called when updating the title
|
||||
setUpdateREPLTitle :: REPL () -> REPL ()
|
||||
setUpdateREPLTitle m = modifyRW_ (\rw -> rw { eUpdateTitle = m })
|
||||
|
||||
-- | Set the REPL's string-printer
|
||||
setPutStr :: (String -> IO ()) -> REPL ()
|
@ -6,7 +6,7 @@
|
||||
-- Stability : provisional
|
||||
-- Portability : portable
|
||||
|
||||
module REPL.Trie where
|
||||
module Cryptol.REPL.Trie where
|
||||
|
||||
import Cryptol.Utils.Panic (panic)
|
||||
import qualified Data.Map as Map
|
Loading…
Reference in New Issue
Block a user