Changes from Hy 0.9.7 [ Syntax Fixes ] * (fn) and (lambda) have been merged (ND) * New (defclass) builtin for class definitions (JD) Changes from Hy 0.9.6 [ Syntax Fixes ] * UTF-8 encoded hy symbols are now hy_... rather than __hy_..., it's silly to prefex them as such. (PT) * `j' is no longer always intepreted as a complex number; we use it much more as a symbol. (ND) * (decorate-with) has been moved to (with-decorate) (JD) * New (unless) macro (JD) * New (when) macro (JD) * New (take) macro (@eigenhombre) * New (drop) macro (@eigenhombre) * import-from and import-as finally removed. (GN) * Allow bodyless functions (JD) * Allow variable without value in `let' declaration (JD) * new (global) builtin (@eal) * new lambda-list syntax for function defs, for var-arity, kwargs. (JK) [ Language Changes ] * *HUGE* rewrite of the compiler. Massive thanks go to olasd and jd for making this happen. This solves just an insane number of bugs. (ND, PT, JD) * Eval no longer sucks with statements (ND) * New magic binary flags / mis fixes with the hy intepreter (WKG + @eigenhombre) Changes from Hy 0.9.5 [ Syntax Fixes ] * .pyc generation routines now work on Python 3. (Vladimir Gorbunov) * Allow empty (do) forms (JD) * The `else' form is now supported in `try' statements. (JD) * Allow `(raise)', which, like Python, will re-raise the last Exception. (JD) * Strings, bools, symbols are now valid top-level entries. (Konrad Hinsen) * UTF-8 strings will no longer get punycode encoded. (ND) * bare (yield) is now valid. (PT) * (try) now supports the (finally) form. (JD) * Add in the missing operators and AugAssign operators. (JD) * (foreach) now supports the (else) form. (JD) [ Language Changes ] =============== WARNING: WARNING: READ ME: READ ME: =================== From here on out, we will only support "future division" as part of hy. This is actually quite a pain for us, but it's going to be quite an amazing feautre. This also normalizes behavior from Py 2 --> Py 3. Thank you so much, Konrad Hinsen. ======================================================================= * (pass) has been removed from the language; it's a wart that comes from a need to create valid Python syntax without breaking the whitespace bits. (JD) * We've moved to a new import style, (import-from) and (import-as) will be removed before 1.0. (GN) * Prototypes for quoted forms (PT) * Prototypes for eval (PT) * Enhance tracebacks from language breakage coming from the compiler (JD) * The REPL no longer bails out if the internals break (Konrad Hinsen) * We now support float and complex numbers. (Konrad Hinsen) * Keywords (such as :foo) are now valid and loved. (GN) Changes from Hy 0.9.4 [ Syntax Fixes ] * `try' now accepts `else': (JD) (try BODY (except [] BODY) (else BODY)) Changes from Hy 0.9.4 [ Syntax Fixes ] * Statements in the `fn' path early will not return anymore. (PT) * Added "not" as the inline "not" operator. It's advised to still use "not-in" or "is-not" rather then nesting. (JD) * `let' macro added (PT) * Added "~" as the "invert" operator. (JD) * `catch' now accepts a new format: (JD) (catch [] BODY) (catch [Exception] BODY) (catch [e Exception] BODY) (catch [e [Exception1 Exception2]] BODY) * With's syntax was fixed to match the rest of the code. It's now: (PT) (with [name context-managed-fn] BODY) (with [context-managed-fn] BODY) [ Language Changes ] * Added `and' and `or' (GN) * Added the tail threading macro (->>) (PT) * UTF encoded symbols are allowed, but mangled. All Hy source is now presumed to be UTF-8. (JD + PT) * Better builtin signature checking (JD) * If hoisting (for things like printing the return of an if statement) have been added. '(print (if true true true))' (PT) [ Documentation ] * Initial documentation added to the source tree. (PT) Changes from Hy 0.9.3 [ Syntax Fixes ] * Nested (do) expressions no longer break Hy (PT) * `progn' is now a valid alias for `do' (PT) * `defun' is now a valid alias for `defn' (PT) * Added two new escapes for \ and " (PT) [ Language Changes ] * Show a traceback when a compile-error bubbles up in the Hy REPL (PT) * `setf' / `setv' added, the behavior of `def` may change in the future. * `print' no longer breaks in Python 3.x (PT) * Added `list-comp' list comprehensions. (PT) * Function hoisting (for things like inline invocation of functions, e.g. '((fn [] (print "hi!")))' has been added. (PT) * `while' form added. (ND) (while [CONDITIONAL] BODY) [ Documentation ] * Initial docs added. (WKG + CW) Changes from Hy 0.9.2 [ General Enhancements ] * hy.__main__ added, `python -m hy' will now allow a hy shim into existing Python scripts. (PT) [ Language Changes ] * `import-as' added to allow for importing modules. (Amrut Joshi) * `slice' added to slice up arrays. (PT) * `with-as' added to allow for context managed bits. (PT) * `%' added to do Modulo. (PT) * Tuples added with the '(, foo bar)' syntax. (PT) * `car' / `first' added. (PT) * `cdr' / `rest' added. (PT) * hy --> .pyc compiler added. (PT) * Completer added for the REPL Readline autocompletion. (PT) * Merge the `meth' macros into hy.contrib. (PT) * Changed __repr__ to match Hy source conventions. (PT) * 2.6 support restored. (PT) Changes from Hy 0.9.1 [ General Enhancements ] * Hy REPL added. (PT) * Doc templates added. (PT) [ Language Changes ] * Add `pass' (PT) * Add `yield' (PT) * Moved `for' to a macro, and move `foreach' to old `for'. (PT) * Add the threading macro (`->'). (PT) * Add "earmufs" in. (tenach) * Add comments in (PT) Changes from Hy 0.9.0 [ Language Changes ] * Add `throw' (PT) * Add `try' (PT) * add `catch' (PT) Changes from Hy 0.8.2 [ Notes ] * Complete rewrite of old-hy. (PT)