wisp
Version:
Homoiconic JS with clojure syntax, s-expressions & macros
211 lines (153 loc) • 6.54 kB
Markdown
# History
## 0.10.0
- Implement support for `defprotocol`, `deftype`, `defrecord`,
`extend-type` and `extend-protocol` forms.
## 0.9.0
- 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.
## 0.8.1
- 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 to `aget` forms.
- Make re-pattern writer.
- Alias `compile*` as `compile-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 generate `debugger;` statements.
## 0.8.0
- Remove `:use` forms in favor of `:require`.
- Remove `import` macro in favor of `:require`.
## 0.7.1
- Implement `assoc` function.
- Make `:use` form for imports obsolete by extending `:require`.
## 0.7.0
- Migrate to imports via clojure compatible `ns` form instead custom
`import` forms used previously.
- Factor out interactive try tool into seperate project:
https://github.com/Gozala/try-wisp
## 0.6.7
- 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's `ns` that
compiles to plain requires. For now only few types of requirement
declarations are recognized and compiled to `require` 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.
## 0.6.6
- Fix indentation in compile output to avoid trailing white-spaces.
- Fix compile output for `get` special form to allow `nil` 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`.
## 0.6.5
- Implement `identity` function.
- Factor out parts of `compiler` into backend specific `writer`.
- 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.
## 0.6.4
- Fix regression in REPL.
- Change reader such that no unread is necessary.
- Fix metadata mixup in multiline forms.
## 0.6.3
- Fix bugs introduced by 0.6.1 and re-release.
## 0.6.2
- Revert back to 0.6.0 as builds were broken.
## 0.6.1
- Remove obsolete `exprots` form in favor of
implicit exports.
## 0.6.0
- 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 with `nil` `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.
## 0.5.0
- Improved REPL prints lisp forms instead of JS.
- Implement `pr-str` function from clojure.
- Symbols now obtain take metadata.
## 0.4.1
- Fix regressions introduced in 4.0.0
- Rewrite function compiler to depend less on symbol implementation details.
## 0.4.0
- Compile symbols to function calls `'foo => (symbol nil "foo")`.
- Covert `=` special form to clojure compliant function.
## 0.3.3
- Implement runtime equivalents of `= == + - / * > >= < <=` special forms.
- Implement runtime equivalents of `and or` special forms.
## 0.3.2
- Hotfix `(/ a b)` special forms.
## 0.3.1
- Fix the way `/` symbols are handled.
## 0.3.0
- Initial support for lazy sequences.
- Improve conventional name translation to handle `+ - / * > < >= <=` better.
- Minor bug fixes.
## 0.2.0
- Add short anonymous function literal support.
- Fix regex with `/` chars.
- Add line and column information to the metadata.
- Reader code cleanup.
## 0.1.2
- Remove backend specific forms like `.concat`, `.indexOf`, etc form
reader and compiler.
## 0.1.1
- Implement string module.
- Minor enhancements to runtime type check functions.
- Cleanup modules from JS specific calls.
## 0.1.0
- Implement type agnostic sequence module.
## 0.0.3
- Fix typos in introduction code.
## 0.0.2
- 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.
## 0.0.1
- Initial release