Skip to content


Subversion checkout URL

You can clone with
Download ZIP

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: Bronsa/clojurescript
head fork: Bronsa/clojurescript
Checking mergeability… Don’t worry, you can still create the pull request.
Commits on Aug 01, 2012
@Bronsa added IHash implementation to ChunkedSeq and ChunkedCons, fixes CLJS-348 6348f97
@Bronsa added test for CLJS-348 a56d939
Commits on Aug 03, 2012
@stuartsierra stuartsierra Add POM/scripts for google-closure-library(-third-party) releases
These scripts are drafts, to be modified for different releases.
They currently suffer from a bug related to handling of dependencies
in the third-party JAR, see CLJS-276.
@stuartsierra stuartsierra Update/improve google-closure-library release scripts; CLJS-276 cb95d65
Commits on Aug 09, 2012
@netguy204 netguy204 record printed forms that are consistent with Clojure fe7adc4
David Nolen Merge branch 'master' of 7e6e4f4
@raph-amiard raph-amiard CLJS-351 : replace .-length usage with alength f94d57f
Commits on Aug 10, 2012
@stuartsierra stuartsierra Update POM template to depend on fixed Google Closure Lib
The fixed version supports the Google Closure library third-party
Commits on Aug 12, 2012
David Nolen CLJS-354: node require util instead of sys 67e120c
Commits on Aug 14, 2012
David Nolen fix alength ea3d346
David Nolen ArrayChunk now uses array-reduce f845030
David Nolen CLJS-346: fix CLJ-319 regression for println when given no arguments. 5035eb9
Commits on Aug 17, 2012
David Nolen CLJS-356: make cljs.reader errors conform to Clojure JVM. df6f316
Commits on Aug 30, 2012
David Nolen CLJS-363: `format` %s behavior is incorrect for keyword, symbol etc. bf0622a
@michalmarczyk michalmarczyk CLJS-357: large PersistentVector benchmarks
Benchmarks for the following:

* building a large vector without using transients (to get an idea of
  conj perf),

* conjing onto a large vector in a situation where this involves a
  push-tail operation,

* associng in non-tail position in a large vector,

* popping a large vector where this involves a pop-tail op.
@r0man r0man Send proper content types when serving JPGs, PNGs and stylesheets.
The send-static fn in the browser repl tries to detect the content
type of a file by it's pathname extension. This patch adds support for
JPGs, PNGs and stylesheets as well. Without proper content type Chrome
and Firefox are refusing to apply stylesheets.
@michalmarczyk michalmarczyk CLJS-334: produce sane error message when ctor arg to new is not a sy…
David Nolen * benchmark/cljs/benchmark_runner.cljs: decrease large vector by orde…
…r of magnitude
David Nolen add apply benchmark fec8f7e
David Nolen CLJS-361: Invoking anonymous functions with wrong arity does not prod…
…uce a warning
Commits on Aug 31, 2012
David Nolen CLJS-366: revert CLJS-39, broke :when and change no longer necessary …
…now that we track let expressions in loops.
@michalmarczyk michalmarczyk CLJS-312: support :import, emit goog.provide for types/records
The following declaration causes the bar.Quux goog.provide'd
namespace/class/type/record be :require'd :as Quux and the symbol Quux
to act as an alias for bar.Quux in the foo.core namespace:

(ns foo.core
  (:import bar.Quux))

The compiler now emits goog.provide calls for deftype/defrecord forms
emitted from within compile-file*. Only one goog.provide will be
emitted for each type name defined in a given file, even in the
presence of multiple definitions specifying the same name. This has
the side effect of enabling deftype/defrecord-created types to be
specified as GClosure dependencies (in particular, it enables
deftype/defrecord support in :import).
David Nolen CLJS-180: Function params shadow top-level namespace segments 1c71ab3
David Nolen CLJS-336: Hyphenated Protocols 9824dbd
@brandonbloom brandonbloom Eliminates incorrect merging of metadata when redefining vars 8355d1e
Commits on Sep 03, 2012
@brandonbloom brandonbloom CLJS-346: Complete fix for CLJS-319 pr-str regression b8fcdf0
Commits on Sep 05, 2012
@emezeske emezeske Optimize pr-str by making more use of StringBuffer.
Previously, a huge number of temporary vectors and lazy sequences were
built up and concat-ed, which ran reasonably on newer JS engines (e.g.
V8) but suffered from miserable performance on old engines (such as
IE8).  By passing a StringBuffer down the callstack and appending to
that, performance gains of 10-100X can be seen in older JS engines.

For backwards compatibility, the new fastpath uses a new
IPrintWithWriter protocol, and the old IPrintable is left in place.
The old protocol is used as a fallback for items that do not satisfy
@brandonbloom brandonbloom CLJS-370: Fix integer? for integral floating point expressions 3c210d9
David Nolen add boolean type-hint to isNaN call c7198c9
David Nolen fail faster on js/Infinity && js/NaN since these cases much be tested…
… anyway - doing arithmetic on these cases is slow. Extra tests do incur a small perf hit when testing actual numbers.
Commits on Sep 06, 2012
@cemerick cemerick CLJS-373: prevent output from attempting to load deps.js when compile…
…d w/ :whitespace
Commits on Sep 07, 2012
David Nolen add missing fast path protocols aafc351
David Nolen Changes to remove calls to truth_. move identical? nil? not higher
up. eliminate the declare. similarly move Reduced, reduced, reduced?,
counted?, indexed? and eliminate declares around them. eliminate
truth_ call in find. set *unchecked-if* true for body of apply.
David Nolen move seq and rest to eliminate some declaration warnings. f00dfe8
David Nolen clean up some declares 5f20175
David Nolen CLJS-376: `case` doesn't match symbols. c8e301a
Commits on Sep 08, 2012
David Nolen symbol's :else clause was outside the cond expr, breaking behavior. f…
…ix + test.
Commits on Sep 09, 2012
@emezeske emezeske Fix a print(ln) regression where two newlines would be printed. f1996ac
Commits on Sep 13, 2012
@cemerick cemerick CLJS-377: allow any sequential value for :only and :refer `ns` options 5966580
Commits on Sep 20, 2012
Tom Jack CLJS-378: port 77ef4f2
Commits on Sep 26, 2012
@cemerick cemerick CLJS-382: use set to track visited requires so contains? works properly
Signed-off-by: Stuart Sierra <>
Commits on Sep 28, 2012
@brentonashworth brentonashworth Use records to implement IJavaScriptEnv instead of extending to

This is just flat out better and will allow one to create Rhino and
Browser evaluation environments within the same process.
@brentonashworth brentonashworth Clarify how to start the REPL in the sample/repl README 64acdf1
@stuartsierra stuartsierra Ignore ZIP files in .gitignore ab7a627
Tom Jack CLJS-379: optimize tail call in linear-traversal-nth 0023c7a
@edtsech edtsech Improve implementation of clojure.string/blank? ae466b2
Commits on Sep 29, 2012
@ohpauleez ohpauleez When compiling node, toggle *main-cli-fn* last refs #355 d6f7d0b
David Nolen refactor some ugly code in cljs.closure/build 6da149d
Commits on Oct 09, 2012
@ohpauleez ohpauleez Hashbang/Shebang updated use env; Fixes #CLJS-385 9ff4de2
Tom Jack CLJS-391: add some missing IEmptyableCollection impls b0a397f
Commits on Oct 12, 2012
@netguy204 netguy204 compiler warns on deprecated function and protocol use
If a deprecated function is invoked or a deprected protocol is
implemented the compiler will issue a warning.

These warnings can be suppressed by binding *cljs-warn-fn-deprecated*
to false or by attaching the ^:deprecation-nowarn metadata to the
invocation form or to the protocol symbol.
Commits on Oct 16, 2012
David Nolen remove IPrintable from defrecord 927d6f3
David Nolen CLJS-389: Compiler emits throw string ddcb192
@ejlo ejlo Bugfix PersistentTreeSet lookup 409fcc9
David Nolen CLJS-388: expose output-wrapper compiler option e83cf51
@gfredericks gfredericks Test and fix for CLJS-383 62aca8f
David Nolen CLJS-369: Capture variable shadows in analyzer; avoid

AST Changes

* Anywhere a binding was introduced for a local used to be a symbol,
  now it is a map with a :name key and potentially a :shadow key.

* Bindings vectors are no longer alternating symbols, then init maps.
  Instead, the are a vector of maps of the shape described for locals
  plus an :init key.

* The :gthis key for functions has been replaced with :type, which
  is the symbol describing the type name of the enclosing deftype form.

* recur frames now expose :params as binding maps, instead of :names


* Shadowed variables are now visible to downstream AST transforms.

* :tag, :mutable, and other metadata are now uniform across ops

* Eliminates usages of gensym inside the analyzer, which was a source
  of state that made the analyzer impossible to use for some
  transformations of let, letfn, etc which require re-analyzing forms.

* Removes JavaScript shadowing semantics from the analyze phase.
Tom Jack CLJS-390: exclude macro files from analysis 4defcbc
Commits on Oct 17, 2012
@edtsech edtsech CLJS-368: Make empty? faster for nil calls. 69897cf
@franks42 franks42 added :doc entries for ns and def bef56a7
Commits on Oct 18, 2012
@ejlo ejlo CLJS-393: Bugfixes for PersistentTreeMap: sorted-map-by and -sorted-s…
Commits on Oct 20, 2012
David Nolen fix issue where Clojure types were no longer printable at the REPL 82c5ca7
Commits on Oct 22, 2012
@cemerick cemerick CLJS-400: stop using goog.string.quote when printing strings 3b32345
@ohpauleez ohpauleez Added support for with-out-str using *print-fn* [cljs-321] eab6032
@ohpauleez ohpauleez *print-fn* is now dynamic to support with-out-str 6aeba31
@ohpauleez ohpauleez Two simple tests for with-out-str a7715c6
Commits on Oct 23, 2012
David Nolen CLJS-405: fix reify regression caused by CLJS-369 and add test. a6fa901
@ohpauleez ohpauleez Add the nodejs dependency by hand to enforce providing it [cljs-395]
Force nodejs into the dependencies check; leave nodejscli tacked on to the end [cljs-395]
@bendlas bendlas CLJS-397 var reads in a :statement context get omitted
This is done so that google closure can optimize away unused deftypes.
@bendlas bendlas CLJS-403 REPL is changed to analyze forms in an :expr context.
Thereby making explicit, that the REPL actually compiles each input in an :expr context; in a wrapper form, to capture the return value. When an exception is printed, the REPL attaches the js compiled from the original.

Several builtin forms, however, don't get emitted in a :statement context, which could lead to apparent inconsistencies when looking at the js on a stacktrace.
Commits on Oct 27, 2012
@brandonbloom brandonbloom CLJS-401: Wrap top-level forms in a function scope. aea65a6
David Nolen tests for CLJS-401 a615f5e
@brandonbloom brandonbloom CLJS-409: Extract emit-provide function d8f490e
@brandonbloom brandonbloom CLJS-408: Include :form key on fn :methods 3ea4a93
Commits on Oct 28, 2012
David Nolen add CLJS-411 test cases a3d2270
Commits on Oct 29, 2012
David Nolen support generating basic GClosure source maps. This patch does not ha…

merging information generated by CLJS compiler and the GClosure compiler.
Commits on Nov 02, 2012
David Nolen revert Brandon Bloom's patch for CLJS-401 3acacf7
@bendlas bendlas CLJS-401: gensym let names in statement context in the emitter
This fixes a bug where two subsequent lets could overwrite each other's names
David Nolen bring top level let test back 3500ddd
Commits on Nov 16, 2012
@kanaka kanaka Start of ClojureScript compiler in ClojureScript.
Compile like this:

rm -rf out/; bin/cljsc bs.cljs > bs.js && \
    bin/cljsc src/cljs/cljs/compiler.cljs > compiler.js && \
    bin/cljsc src/cljs/cljs/reader.cljs > reader.js

Then load comp.html. You will have a rep JavaScript function which
will read, eval and print:

    rep("(+ 1 1)");

CAVEAT: macros are not yet supported.
@kanaka kanaka Misc cleanup and add ns-snap. 9055ada
Commits on Nov 17, 2012
@kanaka kanaka Fix strings, numbers, false, regexp. 9e88716
@kanaka kanaka Add chouser's jsrepl modified to use the analyzer/compiler.
Build like this:

cd web
../bin/cljsc ../src/cljs/jsrepl.cljs > jsrepl.js
@kanaka kanaka Add build script for jsrepl.js. df22857
@kanaka kanaka Add some explanatory text to the jsrepl page. 3184a66
@kanaka kanaka Update README to explain the patched version. e58ebc2
Commits on Nov 29, 2012
@kanaka kanaka CLJS compiler and REPL working in Node.js
Compile and run the CLJS REPL:
    cd node
    ../bin/cljsc ../src/cljs/noderepl.cljs > noderepl.js
    cp ../src/cljs/goog.js out/
    ./run.js noderepl.js

Compile and run the the CLJS compiler wrapper:
    cd node
    ../bin/cljsc ../src/cljs/nodecljs.cljs > nodecljs.js
    cp ../src/cljs/goog.js out/
    ./run.js nodecljs.js hello.cljs

The :nodejs compilation target is currently broken. However, the
node/run.js bootstrap script enables compiled CLJS code to be
invoked that was not compiled with a :target.

Also, rename the jsrepl.cljs to webrepl.cljs to disambiguate with the
node.js equivalent (noderepl.js).
Commits on Dec 01, 2012
@kanaka kanaka Generate analyzer namespace snapshot while compiling.
This replaces the hardcoded bs.cljs file that only
provided cljs.core and cljs.user for the analyzer.

In order to load the snapshot, in Javascript (either in web/jsrepl.html
for web based or node/run.js) we set cljs.analyzer.namespaces to point
to cljs.namespaces (the snapshot built up during compilation).
Commits on Dec 08, 2012
@kanaka kanaka Add syntax quote/unquote to the reader. 0345cad
@kanaka kanaka Define *out* and *ns* to squelch compile warnings. fe0a35e
@kanaka kanaka Make node and web REPL prompt be *cljs-ns* 39d13a9
@kanaka kanaka Remove verbose reader debug. 8b24ba0
@kanaka kanaka Move namespaces to cljs.core and "refer" it from cljs.analyzer.
This removes the need for the custom Javascript code in the bootstrap
files and in the namespace snapshot code.
@kanaka kanaka Add macro support to JS built cljs analyzer/compiler.
This doesn't yet enable defining and immediate use of macros during
JVM based analyze/compile of cljs.

In other words, in the live Node.js and web REPL you can define new
macros and use them via the REPL. However, you can't define them yet
in a file, analyzer/compile it and then use them during or after
@kanaka kanaka Remove old multimethod version of emit-constant. f9d971e
@kanaka kanaka Remove old version of ns-snap from compiler.cljs f0e8369
@kanaka kanaka Move PushbackReader to core.cljs.
In normal Clojure this comes from java so it makes sense to put it in
core.cljs to make it more widely available (analyzer.cljs and
compiler.cljs will want this when they begin supporting whole files).
@kanaka kanaka Remove debug. ca7996f
@kanaka kanaka Remove require of bs from jsrepl.html. 0e23110
@kanaka kanaka Fix nodecljs.cljs wrapper to use correct push-back-reader location. fc472bf
@kanaka kanaka Update README and add runtime macro examples. bb7a168
@kanaka kanaka Correction to web and node.js REPL startup comments. 68081b5
Commits on Dec 12, 2012
@kanaka kanaka Properly munge symbols to JS names in get-expander.
Downside is that this creates an implicit dependency of cljs.analyzer
on cljs.compiler (munge).
Commits on Dec 14, 2012
@kanaka kanaka Debug and stack trace in noderepl and webrepl. fbd5901
@kanaka kanaka Fix syntax quote typos and syntax quote nil handling. 4255b31
@kanaka kanaka Activate and fix reader for ";" comments. 74ed2d3
@kanaka kanaka Add readers for anonymous functions and args. 75dc7ca
@kanaka kanaka Add destructure and Clojure core macros.
Add macros from Clojure core (specifically src/clj/clojure/core.clj).

In order to eval macros during analysis, we :use-macros to include
clj-defmacro which is then used to define precompile/analyzed macros
for later use at runtime.

Some minor changes have to be made to the macros to make them work
in ClojureScript via clj-defmacro:

- Use cljs.core/* symbols explicitly within syntax quoted sections of
  the macros.
- Convert java exceptions to Javascript exceptions.
- Stub out any code that tries to apply metadata to var/symbols.

Macros added:

- Add non destructuring stubs for let, loop.

- Add macros from Clojure (JVM) core:
    defn, when, when-not, cond, if-not, and, or, ->, ->>, if-let,
    when-let, doto, memfn, fn, when-first, comment, while, letfn.
@kanaka kanaka Add ClojureScript core macros.
This adds macros from ClojureScript (specifically
src/clj/cljs/core.clj) to the runtime.

- Add destructuring forms of let and loop

- Other macros added:
    satisfies?, binding, lazy-seq, delay, condp, case, try, assert,
    for, doseq, amap, areduce, dotimes, time, with-out-str
Commits on Dec 15, 2012
@kanaka kanaka Misc node and web REPL fixes/cleanup.
- Save last exception as noderepl/*e or webrepl/*e.
- Split ep function out of pep in webrepl to match noderepl.
- Don't throw EOF error in noderepl when line is blank.
@kanaka kanaka Update README. c4d36bf
Commits on Dec 16, 2012
@kanaka kanaka Remove REPL note about missing predefined macros. b197f9f
Commits on Dec 24, 2012
@kanaka kanaka Make symbols first class objects rather than prefixed strings.
Specifically this allows symbols to have metadata. This is widely used
for communicating metadata among the type/protocol macros and the
analyzer. The downside is that symbol map keys can be slower because
in Javascript objects cannot be used as attribute keys. This means
that a slower path is used for objects that contain symbols as keys.
@kanaka kanaka Cleanup various exceptions. 913c689
@kanaka kanaka Synchronize spacing/ordering with Clojure/ClojureScript core.* e9a9405
@kanaka kanaka Add array macros and add commented out '.. and 'js-obj
This brings core.cljs more in sync with core from
Clojure/ClojureScript core.clj
@kanaka kanaka Add type/protocol macros from ClojureScript core.clj
Add these macros and supporting functions/macros.

reify, extend-type, deftype, defrecord, defprotocol
@kanaka kanaka Add multimethod macros (defmulti, defmethod). 3654132
@kanaka kanaka Update TODOs and bugs in README. 9140c7c
Commits on Dec 27, 2012
@kanaka kanaka Fix iEquiv of namespaced symbols. ba2fe80
@kanaka kanaka Fix protocol-prefix regex to match multiple delimiters. ec757d8
@kanaka kanaka Allow ns multiple times for same namespace.
The ns "macro" normally generates goog.provide for the namespace,
however, goog.provide will error if the name already exists. We set
the *emittted-provides* to an empty var even if we are compiling
outside a file (i.e. REPL) so that multiple invocation of ns will not
cause an error. This mirrors Clojure behavior.
@kanaka kanaka Add in-ns, fix munging of names in create-ns
Also, move *ns* and create-ns to cljs.core.
@kanaka kanaka Web and node REPL namespace related fixups.
- Better bootstrap of initial cljs.user namespace that allows
  switching back in.
- Redefine analyzer environment for each new form before evaluation so
  that the current namespace is set correctly based on *cljs-ns*.
- Update current namespace in front of the prompt textarea.
- Remove some old debug functions from jsrepl.html
@kanaka kanaka Add extend-protocol. 29ecdba
Commits on Dec 28, 2012
@kanaka kanaka Implement ".." macro with analyzer/compiler fixes.
- In compiler/munge, replace ".." with "_DOTDOT_".
- In analyzer/resolve*var, do not treat ".." as ".abc" form.
@kanaka kanaka Update README 1d7b6de
@kanaka kanaka Fix webrepl typo. 31d296d
Commits on Jan 01, 2013
@kanaka kanaka Refactor namespaces as normal Clojure datastructure.
In Clojure, a namespace is a mutable Java object that changes as the
namespace is modified (new vars are added). For example, *ns* will
hash to the same thing before and after def'ing a new var even though
*ns* now contains the new var. In ClojureScript, all namespaces are
contained ina single atom cljs.core/namespaces that are indexed by
namespace symbol.

Instead of using a special global *ns* symbol that holds the current
namespace as a mutable Java object, use *ns-sym* as the symbol name of
the current namespace and whenever the namespace is needed, deref the
namespaces atom to look it up.

Remove ns related functions from analyzer and add some ns functions to
core based on those in Clojure core but using cljs.core/namespaces:
create-ns, find-ns, resolve, resolve-ns.
Commits on Jan 05, 2013
@kanaka kanaka Add declare, defonce and stub defn-
- defn- marks the def :private but there is nothing that will stop
  non-local lookups as yet.
@kanaka kanaka Fix -prototype call in extend-type. 9a420c1
@kanaka kanaka Add load-file, forms-seq, compile-forms*.
load-file is similar to the Clojure version but returns a map of
compile info rather than the result of the final form in the file.
load-file* returns the same map but includes :emit-str (the emitted
Javascript) and :output (any output printed during load, rather than
printing it directly).
@kanaka kanaka Fix typo in comment. daf59f0
@kanaka kanaka Fix nodecljs.cljs to not rely on js/env. a3cce03
@kanaka kanaka Add quick.cljs test to cover basics quickly.
At the REPL load and run like this:

> (load-file "../test/cljs/cljs/quick.cljs")
> (runt-tests)
Commits on Jan 06, 2013
@Gozala Gozala Fix reader to read regexp properly. d963f82
@Gozala Gozala Remove repeated definition of emit-str function b7619ff
@Gozala Gozala Move regexp escaping from reader to compiler. 45a222d
@kanaka kanaka Merge pull request #1 from Gozala/selfhosted/regexp
Fix for regexps containing / character
@Gozala Gozala Configure integration tests. 4308fb2
@Gozala Gozala Print read & analysed forms in debug mode. 8a719e4
@kanaka kanaka Merge pull request #2 from Gozala/selfhosted/travis
Configure integration tests.
Commits on Jan 07, 2013
@Gozala Gozala `re-seq` has tail only if `past-match` is non empty string. cded82c
@kanaka kanaka Merge pull request #3 from Gozala/selfhosted/debug-print
Print read & analysed forms in debug mode.
@Gozala Gozala Fix regression introduced by #1 c2805bc
@kanaka kanaka Merge pull request #4 from Gozala/selfhosted/re-seq
Fix for (re-seq #"^$" "")
@kanaka kanaka Update README, REPL debug, quick.cljs tests.
- Update bugs and TODOs in README.
- Separately print the read, analyzed and emitted code so that if it
  breaks after one step the intermediate results are still output.
- Add a regex test for fixed cases. Remove a couple of redundant tests
  (this focus is quick after all). Add a case for the time macro.
Commits on Jan 08, 2013
@kanaka kanaka Revert "Move PushbackReader to core.cljs."
This reverts commit eaa8eeb.

Having it in core.cljs doesn't really clean up dependencies and there
are tighter relationships between the push-back-reader and the other
read functions in reader.cljs.


@kanaka kanaka Fix typo in quick.cljs test. 004c0d3
@kanaka kanaka Add File/file ops to io.cljs. Restore analyzer/compiler file routines.
- Add File type, file I/O, path operations to src/cljs/cljs/io.cljs.
- Restore analyze-file in analyzer.cljs
- Restore compile-file, compile-root and other file related functions
  to compiler.cljs.
- Copy ns-snap (namespace snapshot) from src/clj/cljs/compiler.cljs to
@Gozala Gozala Unescape regerxp source before printing it. 644ea39
@kanaka kanaka Merge pull request #5 from Gozala/selfhosted/print-regexp
Fix: regexes with forward slashes are printed with extra escaping
Commits on Jan 14, 2013
@kanaka kanaka Web REPL clean. Split out CSS. Fix multiline entry. 2caa19d
@kanaka kanaka Merge remote branch 'kanaka/cljs_in_cljs' into cljs_in_cljs 0317c18
@arthuredelstein arthuredelstein use the same font for input and output code f4642f3
@kanaka kanaka Merge pull request #11 from arthuredelstein/cljs_in_cljs
use the same font for input and output code
Commits on Jan 15, 2013
@arthuredelstein arthuredelstein Add support for *1,*2,*3 a5a849f
Commits on Jan 16, 2013
@kanaka kanaka Cleanup web and node REPL/compiler bootstrap code.
Move the pre-compiled bootstrap code from JavaScript to the .cljs
@kanaka kanaka Merge pull request #13 from arthuredelstein/a5a849fef5bcfcc0a79d0d1e1…

Support in web REPL for *1, *2, *3
@kanaka kanaka Add web REPL UI based on Himera.
- Import base HTML, stylesheets and images from Himera
  ( Also, import synonym.html
  sibling file that has JavaScript to ClojureScript translations.
- Add src/cljs/webrepl2.cljs that implements the new REPL.

The new REPL can be built like this:

    cd web
    ../bin/cljsc ../src/cljs/webrepl2.cljs > webrepl2.js

Then open web/repl.html. The new REPL page has a much better design
and style with the reference/links from the Himera front page. The
REPL window is based on jquery.console and has history (up arrow)
Commits on Jan 17, 2013
@fogus fogus Minor modifications.
 * Made header link and tweaked style to support that
 * Added attribution
@kanaka kanaka Merge pull request #14 from fogus/cljs_in_cljs
Minor modifications.
@kanaka kanaka Fix division symbol.
- In ns-snap munge the cljs.core// symbol before and after read-string
  to avoid the Clojure-side exception.
- For cljs.core/name and cljs.core/namespace, correctly handle / and
  cljs.core//. This brings these functions in sync with
@kanaka kanaka Misc README updates. be624b7
Commits on Jan 18, 2013
@Gozala Gozala Fix keyword reader. eb17897
@Gozala Gozala Fix keyword function to match clojure's behaviour. 32ba9d9
@kanaka kanaka Merge pull request #16 from Gozala/bug/numeric-keywords
Fix for numeric keywords #7
Commits on Jan 19, 2013
@Gozala Gozala Write keyword tests. a99adce
@kanaka kanaka Merge pull request #17 from Gozala/bug/numeric-keywords
Write keyword tests for #16 (numeric keywords)
Commits on Jan 20, 2013
@Gozala Gozala Fix reader bug for a hex literals #9 e51c76d
@Gozala Gozala Fix compiler support for unicode strings #10 e666270
Commits on Jan 21, 2013
@kanaka kanaka Merge pull request #19 from Gozala/bug/hex
Fix reader bug for a hex literals #9
@kanaka kanaka Merge pull request #21 from Gozala/bug/unicode
Fix compiler support for unicode strings #10
Commits on Jan 22, 2013
@arthuredelstein arthuredelstein swap in jq-console; swap out jquery.console 47007ff
@arthuredelstein arthuredelstein swap in jq-console; swap out jquery.console 6de1f93
@arthuredelstein arthuredelstein update jq-console 4b3bb87
@arthuredelstein arthuredelstein use minimized jqconsole 9690a83
@arthuredelstein arthuredelstein primitive but tolerable indentation 497aaa2
@arthuredelstein arthuredelstein improve indentation matters by varying continuation label 1e053b4
@arthuredelstein arthuredelstein remove unneeded requires 9541dc5
Commits on Jan 24, 2013
@arthuredelstein arthuredelstein go back to using minimized jqconsole 4b80a1b
@arthuredelstein arthuredelstein remove obsolete function b27aa6b
@kanaka kanaka Import original closure.clj to closure.cljs ce4889f
@kanaka kanaka add .isDirectory and .listFiles methods to File type. b661eb3
Commits on Jan 25, 2013
@kanaka kanaka First pass at require function. 041cbea
@kanaka kanaka Fix cljs version of ns-snap. 6537c1f
@kanaka kanaka cljs.compiler: better already provided detection.
Trying to provide multiple times should just be a no-op.
@kanaka kanaka Better error feedback from eval in compile-forms*. a7dc121
@kanaka kanaka Use *ns-sym* in REL code instead of analyzer's *cljs-ns*. d98a93a
@kanaka kanaka cljs.analyzer: restore locals/macro lookup in get-expander. a1ab87a
@kanaka kanaka Merge remote branch 'arthuredelstein/jqconsole' into cljs_in_cljs 37c26d2
@kanaka kanaka Fix web REPL lookup of *ns-sym*. ea928da
@kanaka kanaka First pass at porting closure.clj and cljsc.clj.
Build like this:
    ../bin/cljsc ../src/cljs/cljsc.cljs > cljsc.js && cp ../src/cljs/goog.js out

Run like this:
    ./run.js cljsc.js hello.cljs > hello.js

It will attempt to compile using out2 as the output directory
and will blow up trying to compile core.cljs.
@kanaka kanaka Better long line handling in web REPL (Himera version). 6876d9c
Commits on Jan 26, 2013
@amasad amasad Update jqconsole to enable middle click paste on linux 60b73e3
Commits on Jan 28, 2013
@kanaka kanaka Merge pull request #24 from amasad/cljs_in_cljs
Update jqconsole to enable middle click paste on linux
Commits on Jan 30, 2013
@Bronsa reader: use blind's Reader types implementation d27ec9d
@Bronsa reader: use line/column info where possible b9891b0