- Implement support for
defprotocol,deftype,defrecord,extend-typeandextend-protocolforms.
- Compiler no longer does dummy string concatinations instead
JS AST is emited from which
esprimagenerates 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.
fnform 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
&envand&formarguments. - Enhanced CLI tool.
- Remove support for third non-standard argument for
aget. - Implement
interleavehigh order function. - Implement
somehigh order function. - Implement
partitionhigh order function. - Implement
every?function. - Rewrite
getas macro compiling toagetforms. - Make re-pattern writer.
- Alias
compile*ascompile-program. - Implement
.operator as a macro. - Fix
agetwith for quoted attributes `(aget foo 'bar). - Move
instance?form expander to a writer. - Add
(debugger!)form to generatedebugger;statements.
- Remove
:useforms in favor of:require. - Remove
importmacro in favor of:require.
- Implement
assocfunction. - Make
:useform for imports obsolete by extending:require.
- Migrate to imports via clojure compatible
nsform instead customimportforms used previously. - Factor out interactive try tool into seperate project: https://github.com/Gozala/try-wisp
- Implement
repeatfunction 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
nsmacro that implements subset of clojure'snsthat compiles to plain requires. For now only few types of requirement declarations are recognized and compiled torequirecalls.(: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
getspecial form to allownilas 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
identityfunction. - Factor out parts of
compilerinto backend specificwriter. - Implement
seq?function. - Implement
take-whilefunction. - 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
exprotsform 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 withnilbarvalues. - Export all the top level definitions unless marked as private.
- Implement
defn-macro for defining private functions. - Implement
strmacro in order to inline common cases. - Fix keyword based metadata sugar
(^:foo bar) ;; => (with-meta bar {:foo true}). - Improvements to
assertmacro. - Reader simplifications.
- Improved REPL prints lisp forms instead of JS.
- Implement
pr-strfunction 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 orspecial 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
fninstallations as macros. - Implement built-in macros as functions.
- Implement
applyspecial form. - Fix
concat-listto 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