diff --git a/.gitignore b/.gitignore index 0490e69f..072a2bde 100644 --- a/.gitignore +++ b/.gitignore @@ -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.* \ No newline at end of file +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/ diff --git a/notebook/.gitignore b/ICryptol/.gitignore similarity index 100% rename from notebook/.gitignore rename to ICryptol/.gitignore diff --git a/ICryptol/ICryptol.cabal b/ICryptol/ICryptol.cabal new file mode 100644 index 00000000..d53c10e0 --- /dev/null +++ b/ICryptol/ICryptol.cabal @@ -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 diff --git a/ICryptol/LICENSE b/ICryptol/LICENSE new file mode 100644 index 00000000..e08c63fd --- /dev/null +++ b/ICryptol/LICENSE @@ -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. diff --git a/ICryptol/LICENSE.rtf b/ICryptol/LICENSE.rtf new file mode 100644 index 00000000..87608e4f --- /dev/null +++ b/ICryptol/LICENSE.rtf @@ -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.\ +} \ No newline at end of file diff --git a/ICryptol/Makefile b/ICryptol/Makefile new file mode 100644 index 00000000..7cb17e9a --- /dev/null +++ b/ICryptol/Makefile @@ -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 diff --git a/ICryptol/cabal.config b/ICryptol/cabal.config new file mode 100644 index 00000000..bc0b5ee4 --- /dev/null +++ b/ICryptol/cabal.config @@ -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 diff --git a/notebook/cryptolmagic.py b/ICryptol/cryptolmagic.py similarity index 100% rename from notebook/cryptolmagic.py rename to ICryptol/cryptolmagic.py diff --git a/examples/notebook/AES.ipynb b/ICryptol/examples/AES.ipynb similarity index 100% rename from examples/notebook/AES.ipynb rename to ICryptol/examples/AES.ipynb diff --git a/notebook/icryptol b/ICryptol/icryptol similarity index 84% rename from notebook/icryptol rename to ICryptol/icryptol index 68240312..940a1cbf 100755 --- a/notebook/icryptol +++ b/ICryptol/icryptol @@ -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 $@ diff --git a/notebook/pexpect.py b/ICryptol/pexpect.py similarity index 100% rename from notebook/pexpect.py rename to ICryptol/pexpect.py diff --git a/notebook/profile_cryptol/ipython_config.py b/ICryptol/profile_cryptol/ipython_config.py similarity index 100% rename from notebook/profile_cryptol/ipython_config.py rename to ICryptol/profile_cryptol/ipython_config.py diff --git a/notebook/profile_cryptol/static/base/images/ipynblogo.png b/ICryptol/profile_cryptol/static/base/images/ipynblogo.png similarity index 100% rename from notebook/profile_cryptol/static/base/images/ipynblogo.png rename to ICryptol/profile_cryptol/static/base/images/ipynblogo.png diff --git a/notebook/profile_cryptol/static/custom/custom.css b/ICryptol/profile_cryptol/static/custom/custom.css similarity index 100% rename from notebook/profile_cryptol/static/custom/custom.css rename to ICryptol/profile_cryptol/static/custom/custom.css diff --git a/notebook/profile_cryptol/static/custom/custom.js b/ICryptol/profile_cryptol/static/custom/custom.js similarity index 100% rename from notebook/profile_cryptol/static/custom/custom.js rename to ICryptol/profile_cryptol/static/custom/custom.js diff --git a/notebook/Main_notebook.hs b/ICryptol/src/Main_notebook.hs similarity index 95% rename from notebook/Main_notebook.hs rename to ICryptol/src/Main_notebook.hs index 3823f3bd..88ad7741 100644 --- a/notebook/Main_notebook.hs +++ b/ICryptol/src/Main_notebook.hs @@ -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 diff --git a/notebook/Notebook.hs b/ICryptol/src/Notebook.hs similarity index 96% rename from notebook/Notebook.hs rename to ICryptol/src/Notebook.hs index 07497a1b..036f3773 100644 --- a/notebook/Notebook.hs +++ b/ICryptol/src/Notebook.hs @@ -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) diff --git a/ICryptol/win32/ICryptol.wxs b/ICryptol/win32/ICryptol.wxs new file mode 100644 index 00000000..287a4c63 --- /dev/null +++ b/ICryptol/win32/ICryptol.wxs @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ICryptol/win32/crypto.ico b/ICryptol/win32/crypto.ico new file mode 100644 index 00000000..c89754ff Binary files /dev/null and b/ICryptol/win32/crypto.ico differ diff --git a/Makefile b/Makefile index 3a31f233..8281c174 100644 --- a/Makefile +++ b/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 diff --git a/cryptol.cabal b/cryptol.cabal index 562ef2c3..ce5f5ca6 100644 --- a/cryptol.cabal +++ b/cryptol.cabal @@ -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 diff --git a/cryptol/Main.hs b/cryptol/Main.hs index 184c1d77..5df4cd52 100644 --- a/cryptol/Main.hs +++ b/cryptol/Main.hs @@ -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 () diff --git a/cryptol/REPL/Haskeline.hs b/cryptol/REPL/Haskeline.hs index 74153c0b..73c662ce 100644 --- a/cryptol/REPL/Haskeline.hs +++ b/cryptol/REPL/Haskeline.hs @@ -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 ------------------------------------------------------------------ diff --git a/cryptol/REPL/Logo.hs b/cryptol/REPL/Logo.hs index 3ef3b106..e647bcae 100644 --- a/cryptol/REPL/Logo.hs +++ b/cryptol/REPL/Logo.hs @@ -8,7 +8,7 @@ module REPL.Logo where -import REPL.Monad +import Cryptol.REPL.Monad import Paths_cryptol (version) import Cryptol.Version (commitShortHash) diff --git a/cryptol/REPL/Command.hs b/src/Cryptol/REPL/Command.hs similarity index 99% rename from cryptol/REPL/Command.hs rename to src/Cryptol/REPL/Command.hs index 83837023..f7ce4638 100644 --- a/cryptol/REPL/Command.hs +++ b/src/Cryptol/REPL/Command.hs @@ -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) diff --git a/cryptol/REPL/Monad.hs b/src/Cryptol/REPL/Monad.hs similarity index 95% rename from cryptol/REPL/Monad.hs rename to src/Cryptol/REPL/Monad.hs index a28ca91a..2cb03a3c 100644 --- a/cryptol/REPL/Monad.hs +++ b/src/Cryptol/REPL/Monad.hs @@ -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 () diff --git a/cryptol/REPL/Trie.hs b/src/Cryptol/REPL/Trie.hs similarity index 98% rename from cryptol/REPL/Trie.hs rename to src/Cryptol/REPL/Trie.hs index d162d90c..7812597c 100644 --- a/cryptol/REPL/Trie.hs +++ b/src/Cryptol/REPL/Trie.hs @@ -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