- Implement support for
defprotocol
,deftype
,defrecord
,extend-type
andextend-protocol
forms.
- Compiler no longer does dummy string concatinations instead
JS AST is emited from which
esprima
generates JS. - Implement analyzer that does analyzes read forms to add variable shadowing info, do macroexpansion etc..
- Reader now includes source location into all read forms except primitives.
- Compiler generates source maps unless disabled manually.
fn
form no longer supports clojure(script) incompatible API.- Improvements in conventional name translations.
- Compiler now throws errors on invalid forms, instead of generating invalid JS.
- Add support for binding shadowing in let and loop forms, now bindings defined in those forms get unique names with suffix of the shadow depth.
- Bunch of reader improvements.
- Macros now support special
&env
and&form
arguments. - Enhanced CLI tool.
- Remove support for third non-standard argument for
aget
. - Implement
interleave
high order function. - Implement
some
high order function. - Implement
partition
high order function. - Implement
every?
function. - Rewrite
get
as macro compiling toaget
forms. - Make re-pattern writer.
- Alias
compile*
ascompile-program
. - Implement
.
operator as a macro. - Fix
aget
with for quoted attributes `(aget foo 'bar). - Move
instance?
form expander to a writer. - Add
(debugger!)
form to generatedebugger;
statements.
- Remove
:use
forms in favor of:require
. - Remove
import
macro in favor of:require
.
- Implement
assoc
function. - Make
:use
form for imports obsolete by extending:require
.
- Migrate to imports via clojure compatible
ns
form instead customimport
forms used previously. - Factor out interactive try tool into seperate project: https://github.com/Gozala/try-wisp
- Implement
repeat
function that is similar to clojure's but is not lazy and only supports finite options. - Implement
(print foo bar)
function & macro that serves as a shortcut for(.log console foo bar)
. - Implement
ns
macro that implements subset of clojure'sns
that compiles to plain requires. For now only few types of requirement declarations are recognized and compiled torequire
calls.(:require module.name)
(:require lib.foo :as foo)
(:use wisp.sequence :only [first second])
- `(:use wisp.sequence :rename {first car rest cdr}) Relative requires forms are produced by resolving requirements to a defined ns name. If requirement does not shares root of ns name then absolute require forms are generated.
- Update travis-ci config to test on later node versions.
- Fix indentation in compile output to avoid trailing white-spaces.
- Fix compile output for
get
special form to allownil
as first argument and add fallback argument support. - Stop tracking compiled JS in git.
- Change file layout to allow loading of core modules like:
wisp/runtime
.
- Implement
identity
function. - Factor out parts of
compiler
into backend specificwriter
. - Implement
seq?
function. - Implement
take-while
function. - Various code maintainibily improvements.
- Add
read*
function for reading out multiple forms. - Add
compile*
function for complining multiple forms.
- Fix regression in REPL.
- Change reader such that no unread is necessary.
- Fix metadata mixup in multiline forms.
- Fix bugs introduced by 0.6.1 and re-release.
- Revert back to 0.6.0 as builds were broken.
- Remove obsolete
exprots
form in favor of implicit exports.
- Add support for
()
form as a sugar to'()
- Improve REPL support for multi-line inputs.
- Add
*debug*
setting to REPL to print intermediate forms. - Allow access to last 3 forms read in REPL from
**1
,**2
,**3
. - Allow access to last 3 evalution result in REPL as
*1
,*2
*3
. - Make wisp types more tolarant to multiple JS contexts.
- Fix bug in
(get (or a b) c)
like forms. - Make
(:foo bar)
compatible withnil
bar
values. - Export all the top level definitions unless marked as private.
- Implement
defn-
macro for defining private functions. - Implement
str
macro in order to inline common cases. - Fix keyword based metadata sugar
(^:foo bar) ;; => (with-meta bar {:foo true})
. - Improvements to
assert
macro. - Reader simplifications.
- Improved REPL prints lisp forms instead of JS.
- Implement
pr-str
function from clojure. - Symbols now obtain take metadata.
- Fix regressions introduced in 4.0.0
- Rewrite function compiler to depend less on symbol implementation details.
- Compile symbols to function calls
'foo => (symbol nil "foo")
. - Covert
=
special form to clojure compliant function.
- Implement runtime equivalents of
= == + - / * > >= < <=
special forms. - Implement runtime equivalents of
and or
special forms.
- Hotfix
(/ a b)
special forms.
- Fix the way
/
symbols are handled.
- Initial support for lazy sequences.
- Improve conventional name translation to handle
+ - / * > < >= <=
better. - Minor bug fixes.
- Add short anonymous function literal support.
- Fix regex with
/
chars. - Add line and column information to the metadata.
- Reader code cleanup.
- Remove backend specific forms like
.concat
,.indexOf
, etc form reader and compiler.
- Implement string module.
- Minor enhancements to runtime type check functions.
- Cleanup modules from JS specific calls.
- Implement type agnostic sequence module.
- Fix typos in introduction code.
- Compiler simplifications
- Switch to literal forms of array, hash, symbols now that new compiler supports them.
- Improve internal macro system to allow
fn
installations as macros. - Implement built-in macros as functions.
- Implement
apply
special form. - Fix
concat-list
to support multiple unquote-splicings in a list. - Implement function overload on arity.
- Implement generic sequence functions in a sequence module.
- Write wisp introduction guide.
- Initial release