mirror of
https://github.com/GaloisInc/cryptol.git
synced 2024-09-11 14:06:13 +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
|
.DS_Store
|
||||||
@ -11,7 +10,13 @@ results.xml
|
|||||||
#docs/CryptolPrims.pdf
|
#docs/CryptolPrims.pdf
|
||||||
#docs/ProgrammingCryptol.pdf
|
#docs/ProgrammingCryptol.pdf
|
||||||
#docs/Syntax.pdf
|
#docs/Syntax.pdf
|
||||||
d#ocs/Version2Changes.pdf
|
#docs/Version2Changes.pdf
|
||||||
|
|
||||||
# don't check in distribution files
|
# 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
|
# POSIX layout for the installation of the icryptol-kernel executable
|
||||||
# and the profile.tar that contains the basic cryptol profile for
|
# and the profile.tar that contains the basic cryptol profile for
|
||||||
# IPython. By setting the IPYTHONDIR environment variable, you can
|
# 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).
|
# $HOME/.ipython).
|
||||||
|
|
||||||
|
IPYTHONDIR=${IPYTHONDIR:-$HOME/.ipython}
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
command -v ipython >/dev/null 2>&1 || {
|
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 || {
|
ipython locate profile cryptol 2>&1 || {
|
||||||
tar -C $IPYTHONDIR \
|
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 $@
|
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 Notebook
|
||||||
|
|
||||||
import REPL.Command
|
import Cryptol.REPL.Command
|
||||||
import REPL.Monad (lName, lPath)
|
import Cryptol.REPL.Monad (lName, lPath)
|
||||||
import qualified REPL.Monad as REPL
|
import qualified Cryptol.REPL.Monad as REPL
|
||||||
|
|
||||||
import qualified Cryptol.ModuleSystem as M
|
import qualified Cryptol.ModuleSystem as M
|
||||||
import qualified Cryptol.ModuleSystem.Monad as M (setFocusedModule)
|
import qualified Cryptol.ModuleSystem.Monad as M (setFocusedModule)
|
||||||
@ -45,10 +45,8 @@ main = do
|
|||||||
easyKernel profileFile cryptolConfig
|
easyKernel profileFile cryptolConfig
|
||||||
_ -> do
|
_ -> do
|
||||||
putStrLn "Usage:"
|
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"
|
\communication with the frontend"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Kernel Configuration --------------------------------------------------------
|
-- Kernel Configuration --------------------------------------------------------
|
||||||
cryptolConfig :: KernelConfig NB String String
|
cryptolConfig :: KernelConfig NB String String
|
@ -9,9 +9,9 @@
|
|||||||
{-# LANGUAGE DeriveDataTypeable #-}
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
module Notebook where
|
module Notebook where
|
||||||
|
|
||||||
import REPL.Command (loadPrelude,findNbCommand,parseCommand,runCommand,replParse,liftModuleCmd)
|
import Cryptol.REPL.Command (loadPrelude,findNbCommand,parseCommand,runCommand,replParse,liftModuleCmd)
|
||||||
import REPL.Monad (REPL(..) ,runREPL, lName, lPath)
|
import Cryptol.REPL.Monad (REPL(..) ,runREPL, lName, lPath)
|
||||||
import qualified REPL.Monad as REPL
|
import qualified Cryptol.REPL.Monad as REPL
|
||||||
|
|
||||||
import qualified Cryptol.ModuleSystem as M
|
import qualified Cryptol.ModuleSystem as M
|
||||||
import Cryptol.Parser (defaultConfig, parseModule, Config(..), ParseError)
|
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
|
endif
|
||||||
|
|
||||||
CRYPTOL_EXE := ./dist/build/cryptol/cryptol${EXE_EXT}
|
CRYPTOL_EXE := ./dist/build/cryptol/cryptol${EXE_EXT}
|
||||||
ICRYPTOL_EXE := ./dist/build/cryptol/icryptol-kernel${EXE_EXT}
|
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: ${CRYPTOL_EXE}
|
all: ${CRYPTOL_EXE}
|
||||||
@ -64,14 +63,6 @@ all: ${CRYPTOL_EXE}
|
|||||||
run: ${CRYPTOL_EXE}
|
run: ${CRYPTOL_EXE}
|
||||||
CRYPTOLPATH=$(call adjust-path,$(CURDIR)/lib) ${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
|
.PHONY: docs
|
||||||
docs:
|
docs:
|
||||||
(cd docs; make)
|
(cd docs; make)
|
||||||
@ -105,37 +96,27 @@ CRYPTOL_SRC := \
|
|||||||
-and \( -not -name \*\#\* \) -print) \
|
-and \( -not -name \*\#\* \) -print) \
|
||||||
$(shell find lib -name \*.cry)
|
$(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
|
src/GitRev.hs: .git/index
|
||||||
sh configure
|
sh configure
|
||||||
|
|
||||||
print-%:
|
print-%:
|
||||||
@echo $* = $($*)
|
@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
|
dist/setup-config: cryptol.cabal | ${CS_BIN}/alex ${CS_BIN}/happy
|
||||||
$(CABAL_INSTALL) --only-dependencies
|
$(CABAL_INSTALL) --only-dependencies
|
||||||
$(CABAL) configure \
|
$(CABAL) configure \
|
||||||
--prefix=$(call adjust-path,${PREFIX_ABS}) \
|
--prefix=$(call adjust-path,${PREFIX_ABS}) \
|
||||||
--datasubdir=cryptol
|
--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)
|
$(CABAL_BUILD)
|
||||||
|
|
||||||
|
|
||||||
PKG_BIN := ${PKG_PREFIX}/bin
|
PKG_BIN := ${PKG_PREFIX}/bin
|
||||||
PKG_SHARE := ${PKG_PREFIX}${PREFIX_SHARE}
|
PKG_SHARE := ${PKG_PREFIX}${PREFIX_SHARE}
|
||||||
PKG_CRY := ${PKG_SHARE}/cryptol
|
PKG_CRY := ${PKG_SHARE}/cryptol
|
||||||
PKG_ICRY := ${PKG_SHARE}/icryptol
|
|
||||||
PKG_DOC := ${PKG_SHARE}${PREFIX_DOC}
|
PKG_DOC := ${PKG_SHARE}${PREFIX_DOC}
|
||||||
PKG_EXAMPLES := ${PKG_DOC}/examples
|
PKG_EXAMPLES := ${PKG_DOC}/examples
|
||||||
PKG_EXNB := ${PKG_EXAMPLES}/notebook
|
|
||||||
PKG_EXCONTRIB := ${PKG_EXAMPLES}/contrib
|
PKG_EXCONTRIB := ${PKG_EXAMPLES}/contrib
|
||||||
|
|
||||||
PKG_EXAMPLE_FILES := docs/ProgrammingCryptol/aes/AES.cry \
|
PKG_EXAMPLE_FILES := docs/ProgrammingCryptol/aes/AES.cry \
|
||||||
@ -146,45 +127,30 @@ PKG_EXAMPLE_FILES := docs/ProgrammingCryptol/aes/AES.cry \
|
|||||||
examples/Test.cry \
|
examples/Test.cry \
|
||||||
examples/SHA1.cry \
|
examples/SHA1.cry \
|
||||||
|
|
||||||
PKG_EXNB_FILES := examples/notebook/AES.ipynb
|
|
||||||
|
|
||||||
PKG_EXCONTRIB_FILES := examples/contrib/mkrand.cry \
|
PKG_EXCONTRIB_FILES := examples/contrib/mkrand.cry \
|
||||||
examples/contrib/RC4.cry \
|
examples/contrib/RC4.cry \
|
||||||
examples/contrib/simon.cry \
|
examples/contrib/simon.cry \
|
||||||
examples/contrib/speck.cry
|
examples/contrib/speck.cry
|
||||||
|
|
||||||
PROFILE_CRYPTOL_SRC := notebook/profile_cryptol/ipython_config.py \
|
${PKG}: ${CRYPTOL_EXE} \
|
||||||
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 \
|
|
||||||
docs/*.md docs/*.pdf LICENSE \
|
docs/*.md docs/*.pdf LICENSE \
|
||||||
${PKG_EXAMPLE_FILES} ${PKG_EXCONTRIB_FILES}
|
${PKG_EXAMPLE_FILES} ${PKG_EXCONTRIB_FILES}
|
||||||
$(CABAL) copy --destdir=${PKG}
|
$(CABAL) copy --destdir=${PKG}
|
||||||
# script not included in the copy
|
# script not included in the copy
|
||||||
cp notebook/icryptol ${PKG_BIN}
|
|
||||||
# don't want to bundle the cryptol library in the binary distribution
|
# don't want to bundle the cryptol library in the binary distribution
|
||||||
rm -rf ${PKG_PREFIX}/lib
|
rm -rf ${PKG_PREFIX}/lib
|
||||||
mkdir -p ${PKG_CRY}
|
mkdir -p ${PKG_CRY}
|
||||||
mkdir -p ${PKG_ICRY}
|
mkdir -p ${PKG_ICRY}
|
||||||
mkdir -p ${PKG_DOC}
|
mkdir -p ${PKG_DOC}
|
||||||
mkdir -p ${PKG_EXAMPLES}
|
mkdir -p ${PKG_EXAMPLES}
|
||||||
mkdir -p ${PKG_EXNB}
|
|
||||||
mkdir -p ${PKG_EXCONTRIB}
|
mkdir -p ${PKG_EXCONTRIB}
|
||||||
cp docs/*.md ${PKG_DOC}
|
cp docs/*.md ${PKG_DOC}
|
||||||
cp docs/*.pdf ${PKG_DOC}
|
cp docs/*.pdf ${PKG_DOC}
|
||||||
cp LICENSE ${PKG_DOC}
|
cp LICENSE ${PKG_DOC}
|
||||||
for EXAMPLE in ${PKG_EXAMPLE_FILES}; do \
|
for EXAMPLE in ${PKG_EXAMPLE_FILES}; do \
|
||||||
cp $$EXAMPLE ${PKG_EXAMPLES}; done
|
cp $$EXAMPLE ${PKG_EXAMPLES}; done
|
||||||
for EXAMPLE in ${PKG_EXNB_FILES}; do \
|
|
||||||
cp $$EXAMPLE ${PKG_EXNB}; done
|
|
||||||
for EXAMPLE in ${PKG_EXCONTRIB_FILES}; do \
|
for EXAMPLE in ${PKG_EXCONTRIB_FILES}; do \
|
||||||
cp $$EXAMPLE ${PKG_EXCONTRIB}; done
|
cp $$EXAMPLE ${PKG_EXCONTRIB}; done
|
||||||
cp -r notebook/profile.tar ${PKG_ICRY}
|
|
||||||
|
|
||||||
${PKG}.tar.gz: ${PKG}
|
${PKG}.tar.gz: ${PKG}
|
||||||
tar -czvf $@ $<
|
tar -czvf $@ $<
|
||||||
@ -233,7 +199,6 @@ clean:
|
|||||||
rm -rf cryptol-${VERSION}*.tar.gz
|
rm -rf cryptol-${VERSION}*.tar.gz
|
||||||
rm -rf cryptol-${VERSION}*.zip
|
rm -rf cryptol-${VERSION}*.zip
|
||||||
rm -rf cryptol-${VERSION}*.msi
|
rm -rf cryptol-${VERSION}*.msi
|
||||||
rm -rf .ipython
|
|
||||||
|
|
||||||
.PHONY: squeaky
|
.PHONY: squeaky
|
||||||
squeaky: clean
|
squeaky: clean
|
||||||
|
@ -18,10 +18,6 @@ flag static
|
|||||||
default: False
|
default: False
|
||||||
description: Create a statically-linked binary
|
description: Create a statically-linked binary
|
||||||
|
|
||||||
flag notebook
|
|
||||||
default: True
|
|
||||||
description: Build the IPython-style Cryptol notebook interface
|
|
||||||
|
|
||||||
library
|
library
|
||||||
Default-language:
|
Default-language:
|
||||||
Haskell98
|
Haskell98
|
||||||
@ -118,12 +114,16 @@ library
|
|||||||
Cryptol.Eval.Value,
|
Cryptol.Eval.Value,
|
||||||
|
|
||||||
Cryptol.Testing.Random,
|
Cryptol.Testing.Random,
|
||||||
Cryptol.Testing.Exhaust
|
Cryptol.Testing.Exhaust,
|
||||||
|
|
||||||
Cryptol.Symbolic
|
Cryptol.Symbolic,
|
||||||
Cryptol.Symbolic.BitVector
|
Cryptol.Symbolic.BitVector,
|
||||||
Cryptol.Symbolic.Prims
|
Cryptol.Symbolic.Prims,
|
||||||
Cryptol.Symbolic.Value
|
Cryptol.Symbolic.Value,
|
||||||
|
|
||||||
|
Cryptol.REPL.Command,
|
||||||
|
Cryptol.REPL.Monad,
|
||||||
|
Cryptol.REPL.Trie
|
||||||
|
|
||||||
Other-modules: Cryptol.Parser.LexerUtils,
|
Other-modules: Cryptol.Parser.LexerUtils,
|
||||||
Cryptol.Parser.ParserUtils,
|
Cryptol.Parser.ParserUtils,
|
||||||
@ -139,11 +139,8 @@ executable cryptol
|
|||||||
Main-is: Main.hs
|
Main-is: Main.hs
|
||||||
hs-source-dirs: cryptol
|
hs-source-dirs: cryptol
|
||||||
Other-modules: OptParser,
|
Other-modules: OptParser,
|
||||||
REPL.Command,
|
|
||||||
REPL.Haskeline,
|
REPL.Haskeline,
|
||||||
REPL.Logo,
|
REPL.Logo,
|
||||||
REPL.Monad,
|
|
||||||
REPL.Trie,
|
|
||||||
Paths_cryptol
|
Paths_cryptol
|
||||||
build-depends: ansi-terminal
|
build-depends: ansi-terminal
|
||||||
, base
|
, base
|
||||||
@ -164,34 +161,3 @@ executable cryptol
|
|||||||
|
|
||||||
if os(linux) && flag(static)
|
if os(linux) && flag(static)
|
||||||
ld-options: -static -pthread
|
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
|
module Main where
|
||||||
|
|
||||||
import OptParser
|
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.Haskeline
|
||||||
import REPL.Monad (REPL,setREPLTitle,io,DotCryptol(..),
|
|
||||||
prependSearchPath,setSearchPath)
|
|
||||||
import REPL.Logo
|
import REPL.Logo
|
||||||
import qualified REPL.Monad as REPL
|
|
||||||
import Paths_cryptol (version)
|
import Paths_cryptol (version)
|
||||||
|
|
||||||
import Cryptol.Version (commitHash, commitBranch, commitDirty)
|
import Cryptol.Version (commitHash, commitBranch, commitDirty)
|
||||||
@ -144,7 +144,8 @@ main = do
|
|||||||
setupREPL :: Options -> REPL ()
|
setupREPL :: Options -> REPL ()
|
||||||
setupREPL opts = do
|
setupREPL opts = do
|
||||||
displayLogo True
|
displayLogo True
|
||||||
setREPLTitle
|
setUpdateREPLTitle setREPLTitle
|
||||||
|
updateREPLTitle
|
||||||
mCryptolPath <- io $ lookupEnv "CRYPTOLPATH"
|
mCryptolPath <- io $ lookupEnv "CRYPTOLPATH"
|
||||||
case mCryptolPath of
|
case mCryptolPath of
|
||||||
Nothing -> return ()
|
Nothing -> return ()
|
||||||
|
@ -12,9 +12,10 @@
|
|||||||
|
|
||||||
module REPL.Haskeline where
|
module REPL.Haskeline where
|
||||||
|
|
||||||
import REPL.Command
|
import Cryptol.REPL.Command
|
||||||
import REPL.Monad
|
import Cryptol.REPL.Monad
|
||||||
import REPL.Trie
|
import Cryptol.REPL.Trie
|
||||||
|
import Cryptol.Utils.PP
|
||||||
|
|
||||||
import qualified Control.Exception as X
|
import qualified Control.Exception as X
|
||||||
import Control.Monad (guard, when)
|
import Control.Monad (guard, when)
|
||||||
@ -23,13 +24,13 @@ import qualified Control.Monad.Trans.Class as MTL
|
|||||||
import Data.Char (isAlphaNum, isSpace)
|
import Data.Char (isAlphaNum, isSpace)
|
||||||
import Data.Function (on)
|
import Data.Function (on)
|
||||||
import Data.List (isPrefixOf,nub,sortBy)
|
import Data.List (isPrefixOf,nub,sortBy)
|
||||||
|
import System.Console.ANSI (setTitle)
|
||||||
import System.Console.Haskeline
|
import System.Console.Haskeline
|
||||||
import System.Directory ( doesFileExist
|
import System.Directory ( doesFileExist
|
||||||
, getHomeDirectory
|
, getHomeDirectory
|
||||||
, getCurrentDirectory)
|
, getCurrentDirectory)
|
||||||
import System.FilePath ((</>))
|
import System.FilePath ((</>))
|
||||||
|
|
||||||
|
|
||||||
-- | Haskeline-specific repl implementation.
|
-- | Haskeline-specific repl implementation.
|
||||||
repl :: DotCryptol -> Maybe FilePath -> REPL () -> IO ()
|
repl :: DotCryptol -> Maybe FilePath -> REPL () -> IO ()
|
||||||
repl dotC mbBatch begin =
|
repl dotC mbBatch begin =
|
||||||
@ -124,6 +125,16 @@ instance MonadException REPL where
|
|||||||
return (return a)
|
return (return a)
|
||||||
unREPL runBody ref
|
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 ------------------------------------------------------------------
|
-- Completion ------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
module REPL.Logo where
|
module REPL.Logo where
|
||||||
|
|
||||||
import REPL.Monad
|
import Cryptol.REPL.Monad
|
||||||
import Paths_cryptol (version)
|
import Paths_cryptol (version)
|
||||||
|
|
||||||
import Cryptol.Version (commitShortHash)
|
import Cryptol.Version (commitShortHash)
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
-- Portability : portable
|
-- Portability : portable
|
||||||
|
|
||||||
{-# LANGUAGE CPP, PatternGuards, FlexibleContexts #-}
|
{-# LANGUAGE CPP, PatternGuards, FlexibleContexts #-}
|
||||||
module REPL.Command (
|
module Cryptol.REPL.Command (
|
||||||
-- * Commands
|
-- * Commands
|
||||||
Command(..), CommandDescr(..), CommandBody(..)
|
Command(..), CommandDescr(..), CommandBody(..)
|
||||||
, parseCommand
|
, parseCommand
|
||||||
@ -29,8 +29,8 @@ module REPL.Command (
|
|||||||
, moduleCmdResult
|
, moduleCmdResult
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import REPL.Monad
|
import Cryptol.REPL.Monad
|
||||||
import REPL.Trie
|
import Cryptol.REPL.Trie
|
||||||
|
|
||||||
import qualified Cryptol.ModuleSystem as M
|
import qualified Cryptol.ModuleSystem as M
|
||||||
import qualified Cryptol.ModuleSystem.Base as M (preludeName)
|
import qualified Cryptol.ModuleSystem.Base as M (preludeName)
|
||||||
@ -212,7 +212,7 @@ genHelp cs = map cmdHelp cs
|
|||||||
runCommand :: Command -> REPL ()
|
runCommand :: Command -> REPL ()
|
||||||
runCommand c = case c of
|
runCommand c = case c of
|
||||||
|
|
||||||
Command cmd -> cmd `REPL.Monad.catch` handler
|
Command cmd -> cmd `Cryptol.REPL.Monad.catch` handler
|
||||||
where
|
where
|
||||||
handler re = rPutStrLn "" >> rPrint (pp re)
|
handler re = rPutStrLn "" >> rPrint (pp re)
|
||||||
|
|
@ -11,7 +11,7 @@
|
|||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
{-# LANGUAGE LambdaCase #-}
|
{-# LANGUAGE LambdaCase #-}
|
||||||
|
|
||||||
module REPL.Monad (
|
module Cryptol.REPL.Monad (
|
||||||
-- * REPL Monad
|
-- * REPL Monad
|
||||||
REPL(..), runREPL
|
REPL(..), runREPL
|
||||||
, io
|
, io
|
||||||
@ -45,7 +45,8 @@ module REPL.Monad (
|
|||||||
, disableLet
|
, disableLet
|
||||||
, enableLet
|
, enableLet
|
||||||
, getLetEnabled
|
, getLetEnabled
|
||||||
, setREPLTitle
|
, updateREPLTitle
|
||||||
|
, setUpdateREPLTitle
|
||||||
|
|
||||||
-- ** Config Options
|
-- ** Config Options
|
||||||
, EnvVal(..)
|
, EnvVal(..)
|
||||||
@ -58,7 +59,7 @@ module REPL.Monad (
|
|||||||
, setPutStr
|
, setPutStr
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import REPL.Trie
|
import Cryptol.REPL.Trie
|
||||||
|
|
||||||
import Cryptol.Prims.Types(typeOf)
|
import Cryptol.Prims.Types(typeOf)
|
||||||
import Cryptol.Prims.Syntax(ECon(..),ppPrefix)
|
import Cryptol.Prims.Syntax(ECon(..),ppPrefix)
|
||||||
@ -82,7 +83,6 @@ import Data.IORef
|
|||||||
import Data.List (isPrefixOf)
|
import Data.List (isPrefixOf)
|
||||||
import Data.Monoid (Monoid(..))
|
import Data.Monoid (Monoid(..))
|
||||||
import Data.Typeable (Typeable)
|
import Data.Typeable (Typeable)
|
||||||
import System.Console.ANSI (setTitle)
|
|
||||||
import qualified Control.Exception as X
|
import qualified Control.Exception as X
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
import Text.Read (readMaybe)
|
import Text.Read (readMaybe)
|
||||||
@ -97,16 +97,17 @@ data LoadedModule = LoadedModule
|
|||||||
, lPath :: FilePath -- ^ Focused file
|
, lPath :: FilePath -- ^ Focused file
|
||||||
}
|
}
|
||||||
|
|
||||||
-- REPL RW Environment.
|
-- | REPL RW Environment.
|
||||||
data RW = RW
|
data RW = RW
|
||||||
{ eLoadedMod :: Maybe LoadedModule
|
{ eLoadedMod :: Maybe LoadedModule
|
||||||
, eContinue :: Bool
|
, eContinue :: Bool
|
||||||
, eIsBatch :: Bool
|
, eIsBatch :: Bool
|
||||||
, eModuleEnv :: M.ModuleEnv
|
, eModuleEnv :: M.ModuleEnv
|
||||||
, eNameSupply :: Int
|
, eNameSupply :: Int
|
||||||
, eUserEnv :: UserEnv
|
, eUserEnv :: UserEnv
|
||||||
, ePutStr :: String -> IO ()
|
, ePutStr :: String -> IO ()
|
||||||
, eLetEnabled :: Bool
|
, eLetEnabled :: Bool
|
||||||
|
, eUpdateTitle :: REPL ()
|
||||||
}
|
}
|
||||||
|
|
||||||
-- | Initial, empty environment.
|
-- | Initial, empty environment.
|
||||||
@ -114,14 +115,15 @@ defaultRW :: Bool -> IO RW
|
|||||||
defaultRW isBatch = do
|
defaultRW isBatch = do
|
||||||
env <- M.initialModuleEnv
|
env <- M.initialModuleEnv
|
||||||
return RW
|
return RW
|
||||||
{ eLoadedMod = Nothing
|
{ eLoadedMod = Nothing
|
||||||
, eContinue = True
|
, eContinue = True
|
||||||
, eIsBatch = isBatch
|
, eIsBatch = isBatch
|
||||||
, eModuleEnv = env
|
, eModuleEnv = env
|
||||||
, eNameSupply = 0
|
, eNameSupply = 0
|
||||||
, eUserEnv = mkUserEnv userOptions
|
, eUserEnv = mkUserEnv userOptions
|
||||||
, ePutStr = putStr
|
, ePutStr = putStr
|
||||||
, eLetEnabled = True
|
, eLetEnabled = True
|
||||||
|
, eUpdateTitle = return ()
|
||||||
}
|
}
|
||||||
|
|
||||||
-- | Build up the prompt for the REPL.
|
-- | Build up the prompt for the REPL.
|
||||||
@ -130,11 +132,6 @@ mkPrompt rw
|
|||||||
| eIsBatch rw = ""
|
| eIsBatch rw = ""
|
||||||
| otherwise = maybe "cryptol" pretty (lName =<< eLoadedMod rw) ++ "> "
|
| otherwise = maybe "cryptol" pretty (lName =<< eLoadedMod rw) ++ "> "
|
||||||
|
|
||||||
mkTitle :: RW -> String
|
|
||||||
mkTitle rw = maybe "" (\ m -> pretty m ++ " - ") (lName =<< eLoadedMod rw)
|
|
||||||
++ "cryptol"
|
|
||||||
|
|
||||||
|
|
||||||
-- REPL Monad ------------------------------------------------------------------
|
-- REPL Monad ------------------------------------------------------------------
|
||||||
|
|
||||||
-- | REPL_ context with InputT handling.
|
-- | REPL_ context with InputT handling.
|
||||||
@ -244,7 +241,7 @@ getPrompt = mkPrompt `fmap` getRW
|
|||||||
setLoadedMod :: LoadedModule -> REPL ()
|
setLoadedMod :: LoadedModule -> REPL ()
|
||||||
setLoadedMod n = do
|
setLoadedMod n = do
|
||||||
modifyRW_ (\ rw -> rw { eLoadedMod = Just n })
|
modifyRW_ (\ rw -> rw { eLoadedMod = Just n })
|
||||||
setREPLTitle
|
updateREPLTitle
|
||||||
|
|
||||||
getLoadedMod :: REPL (Maybe LoadedModule)
|
getLoadedMod :: REPL (Maybe LoadedModule)
|
||||||
getLoadedMod = eLoadedMod `fmap` getRW
|
getLoadedMod = eLoadedMod `fmap` getRW
|
||||||
@ -289,10 +286,15 @@ enableLet = modifyRW_ (\ rw -> rw { eLetEnabled = True })
|
|||||||
getLetEnabled :: REPL Bool
|
getLetEnabled :: REPL Bool
|
||||||
getLetEnabled = fmap eLetEnabled getRW
|
getLetEnabled = fmap eLetEnabled getRW
|
||||||
|
|
||||||
setREPLTitle :: REPL ()
|
-- | Update the title
|
||||||
setREPLTitle = unlessBatch $ do
|
updateREPLTitle :: REPL ()
|
||||||
|
updateREPLTitle = unlessBatch $ do
|
||||||
rw <- getRW
|
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
|
-- | Set the REPL's string-printer
|
||||||
setPutStr :: (String -> IO ()) -> REPL ()
|
setPutStr :: (String -> IO ()) -> REPL ()
|
@ -6,7 +6,7 @@
|
|||||||
-- Stability : provisional
|
-- Stability : provisional
|
||||||
-- Portability : portable
|
-- Portability : portable
|
||||||
|
|
||||||
module REPL.Trie where
|
module Cryptol.REPL.Trie where
|
||||||
|
|
||||||
import Cryptol.Utils.Panic (panic)
|
import Cryptol.Utils.Panic (panic)
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
Loading…
Reference in New Issue
Block a user