2018-02-07 01:50:57 +01:00
|
|
|
|
.. default-role:: code
|
|
|
|
|
|
2019-05-20 23:21:34 +02:00
|
|
|
|
Unreleased
|
|
|
|
|
==============================
|
|
|
|
|
|
|
|
|
|
Removals
|
|
|
|
|
------------------------------
|
|
|
|
|
* Python 2 is no longer supported.
|
2019-07-02 18:04:15 +02:00
|
|
|
|
* Support for attribute lists in `defclass` has been removed. Use `setv`
|
|
|
|
|
and `defn` instead.
|
2019-05-20 23:21:34 +02:00
|
|
|
|
|
2019-07-08 21:41:13 +02:00
|
|
|
|
Bug Fixes
|
|
|
|
|
------------------------------
|
|
|
|
|
* Statements in the second argument of `assert` are now executed.
|
|
|
|
|
|
2019-05-19 19:34:55 +02:00
|
|
|
|
0.17.0
|
2019-02-26 20:04:24 +01:00
|
|
|
|
==============================
|
|
|
|
|
|
2019-05-19 19:34:55 +02:00
|
|
|
|
**Warning**: Hy 0.17.x will be the last Hy versions to support Python 2,
|
|
|
|
|
and we expect 0.17.0 to be the only release in this line. By the time
|
|
|
|
|
0.18.0 is released (in 2020, after CPython 2 has ceased being developed),
|
|
|
|
|
Hy will only support Python 3.
|
|
|
|
|
|
2019-03-17 23:40:37 +01:00
|
|
|
|
Removals
|
|
|
|
|
------------------------------
|
|
|
|
|
* Python 3.4 is no longer supported.
|
|
|
|
|
|
2019-02-26 20:04:24 +01:00
|
|
|
|
New Features
|
|
|
|
|
------------------------------
|
2019-04-08 21:42:56 +02:00
|
|
|
|
* Python 3.8 is now supported.
|
2019-02-26 20:04:24 +01:00
|
|
|
|
* Format strings with embedded Hy code (e.g., `f"The sum is {(+ x y)}"`)
|
|
|
|
|
are now supported, even on Pythons earlier than 3.6.
|
2019-04-18 20:28:19 +02:00
|
|
|
|
* Added a special form `setx` to create Python 3.8 assignment expressions.
|
2019-05-19 19:34:55 +02:00
|
|
|
|
* Added new core functions `list?` and `tuple`.
|
2019-04-21 17:45:58 +02:00
|
|
|
|
* Gensyms now have a simpler format that's more concise when
|
|
|
|
|
mangled (e.g., `_hyx_XsemicolonXfooXvertical_lineX1235` is now
|
|
|
|
|
`_hyx_fooXUffffX1`).
|
2019-02-26 20:04:24 +01:00
|
|
|
|
|
2019-04-06 16:19:10 +02:00
|
|
|
|
Bug Fixes
|
|
|
|
|
------------------------------
|
2019-05-19 19:34:55 +02:00
|
|
|
|
* Fixed a crash caused by errors creating temporary files during
|
|
|
|
|
bytecode compilation.
|
2019-04-06 16:19:10 +02:00
|
|
|
|
|
2019-02-07 20:06:58 +01:00
|
|
|
|
0.16.0
|
2018-07-24 17:59:52 +02:00
|
|
|
|
==============================
|
|
|
|
|
|
|
|
|
|
Removals
|
|
|
|
|
------------------------------
|
|
|
|
|
* Empty expressions (`()`) are no longer legal at the top level.
|
|
|
|
|
|
2018-07-24 18:19:37 +02:00
|
|
|
|
New Features
|
|
|
|
|
------------------------------
|
2019-02-07 20:06:58 +01:00
|
|
|
|
* `eval` / `hy_eval` and `hy_compile` now accept an optional `compiler`
|
|
|
|
|
argument that enables the use of an existing `HyASTCompiler` instance.
|
2018-07-24 18:19:37 +02:00
|
|
|
|
* Keyword objects (not just literal keywords) can be called, as
|
|
|
|
|
shorthand for `(get obj :key)`, and they accept a default value
|
|
|
|
|
as a second argument.
|
2019-02-07 20:06:58 +01:00
|
|
|
|
* Minimal macro expansion namespacing has been implemented. As a result,
|
|
|
|
|
external macros no longer have to `require` their own macro
|
|
|
|
|
dependencies.
|
2018-10-14 08:04:41 +02:00
|
|
|
|
* Macros and tags now reside in module-level `__macros__` and `__tags__`
|
|
|
|
|
attributes.
|
2018-07-24 18:19:37 +02:00
|
|
|
|
|
2018-07-24 18:45:00 +02:00
|
|
|
|
Bug Fixes
|
|
|
|
|
------------------------------
|
2019-02-07 20:06:58 +01:00
|
|
|
|
* Cleaned up syntax and compiler errors.
|
|
|
|
|
* You can now call `defmain` with an empty lambda list.
|
2018-10-14 08:04:41 +02:00
|
|
|
|
* `require` now compiles to Python AST.
|
2019-02-07 20:06:58 +01:00
|
|
|
|
* Fixed circular `require`\s.
|
2018-08-25 03:42:48 +02:00
|
|
|
|
* Fixed module reloading.
|
|
|
|
|
* Fixed circular imports.
|
2019-02-07 20:06:58 +01:00
|
|
|
|
* Fixed errors from `from __future__ import ...` statements and missing
|
|
|
|
|
Hy module docstrings caused by automatic importing of Hy builtins.
|
2018-08-25 03:42:48 +02:00
|
|
|
|
* Fixed `__main__` file execution.
|
2018-07-24 18:45:00 +02:00
|
|
|
|
* Fixed bugs in the handling of unpacking forms in method calls and
|
|
|
|
|
attribute access.
|
2018-07-26 22:49:04 +02:00
|
|
|
|
* Fixed crashes on Windows when calling `hy-repr` on date and time
|
|
|
|
|
objects.
|
2019-02-07 20:06:58 +01:00
|
|
|
|
* Fixed a crash in `mangle` for some pathological inputs.
|
|
|
|
|
* Fixed incorrect mangling of some characters at low code points.
|
|
|
|
|
* Fixed a crash on certain versions of Python 2 due to changes in the
|
|
|
|
|
standard module `tokenize`.
|
2018-07-24 18:45:00 +02:00
|
|
|
|
|
2018-07-21 20:04:07 +02:00
|
|
|
|
0.15.0
|
2018-02-08 21:08:09 +01:00
|
|
|
|
==============================
|
|
|
|
|
|
2018-04-09 01:16:40 +02:00
|
|
|
|
Removals
|
|
|
|
|
------------------------------
|
2018-07-21 20:04:07 +02:00
|
|
|
|
* Dotted lists, `HyCons`, `cons`, `cons?`, and `list*` have been
|
|
|
|
|
removed. These were redundant with Python's built-in data structures
|
|
|
|
|
and Hy's most common model types (`HyExpression`, `HyList`, etc.).
|
2018-04-19 18:26:02 +02:00
|
|
|
|
* `&key` is no longer special in lambda lists. Use `&optional` instead.
|
2018-07-21 20:04:07 +02:00
|
|
|
|
* Lambda lists can no longer unpack tuples.
|
|
|
|
|
* `ap-pipe` and `ap-compose` have been removed. Use threading macros and
|
|
|
|
|
`comp` instead.
|
2018-06-12 20:13:06 +02:00
|
|
|
|
* `for/a` has been removed. Use `(for [:async ...] ...)` instead.
|
2018-07-21 20:04:07 +02:00
|
|
|
|
* `(except)` is no longer allowed. Use `(except [])` instead.
|
|
|
|
|
* `(import [foo])` is no longer allowed. Use `(import foo)` instead.
|
2018-04-09 01:16:40 +02:00
|
|
|
|
|
2018-02-28 01:33:21 +01:00
|
|
|
|
Other Breaking Changes
|
|
|
|
|
------------------------------
|
2018-04-15 05:58:52 +02:00
|
|
|
|
* `HyExpression`, `HyDict`, and `HySet` no longer inherit from `HyList`.
|
|
|
|
|
This means you can no longer use alternative punctuation in place of
|
|
|
|
|
square brackets in special forms (e.g. `(fn (x) ...)` instead of
|
|
|
|
|
the standard `(fn [x] ...)`).
|
2018-07-21 20:04:07 +02:00
|
|
|
|
* Mangling rules have been overhauled; now, mangled names are
|
|
|
|
|
always legal Python identifiers.
|
|
|
|
|
* `_` and `-` are now equivalent, even as single-character names.
|
2018-03-04 23:44:56 +01:00
|
|
|
|
|
2018-07-21 20:04:07 +02:00
|
|
|
|
* The REPL history variable `_` is now `*1`.
|
2018-03-04 23:44:56 +01:00
|
|
|
|
|
2018-02-28 01:33:21 +01:00
|
|
|
|
* Non-shadow unary `=`, `is`, `<`, etc. now evaluate their argument
|
2018-07-21 20:04:07 +02:00
|
|
|
|
instead of ignoring it.
|
2018-06-12 20:13:06 +02:00
|
|
|
|
* `list-comp`, `set-comp`, `dict-comp`, and `genexpr` have been replaced
|
|
|
|
|
by `lfor`, `sfor`, `dfor`, and `gfor`, respectively, which use a new
|
|
|
|
|
syntax and have additional features. All Python comprehensions can now
|
|
|
|
|
be written in Hy.
|
2018-07-11 20:36:32 +02:00
|
|
|
|
* `&`-parameters in lambda lists must now appear in the same order that
|
|
|
|
|
Python expects.
|
2018-07-21 20:04:07 +02:00
|
|
|
|
* Literal keywords now evaluate to themselves, and `HyKeyword` no longer
|
|
|
|
|
inherits from a Python string type
|
|
|
|
|
* `HySymbol` no longer inherits from `HyString`.
|
2018-02-28 01:33:21 +01:00
|
|
|
|
|
2018-03-05 01:42:38 +01:00
|
|
|
|
New Features
|
|
|
|
|
------------------------------
|
2018-07-21 20:04:07 +02:00
|
|
|
|
* Python 3.7 is now supported.
|
|
|
|
|
* `while` and `for` are allowed to have empty bodies.
|
|
|
|
|
* `for` supports the various new clause types offered by `lfor`.
|
|
|
|
|
* `defclass` in Python 3 supports specifying metaclasses and other
|
|
|
|
|
keyword arguments.
|
|
|
|
|
* Added `mangle` and `unmangle` as core functions.
|
|
|
|
|
* Added more REPL history variables: `*2` and `*3`.
|
|
|
|
|
* Added a REPL variable holding the last exception: `*e`.
|
|
|
|
|
* Added a command-line option `-E` per CPython.
|
|
|
|
|
* Added a new module `hy.model_patterns`.
|
2018-03-05 01:42:38 +01:00
|
|
|
|
|
2018-02-08 21:08:09 +01:00
|
|
|
|
Bug Fixes
|
|
|
|
|
------------------------------
|
2018-03-28 17:30:16 +02:00
|
|
|
|
* `hy2py` should now output legal Python code equivalent to the input Hy
|
2018-07-21 20:04:07 +02:00
|
|
|
|
code in all cases.
|
|
|
|
|
* Fixed `(return)` so it can exit a Python 2 generator.
|
|
|
|
|
* Fixed a case where `->` and `->>` duplicated an argument.
|
|
|
|
|
* Fixed bugs that caused `defclass` to drop statements or crash.
|
|
|
|
|
* Fixed a REPL crash caused by illegal backslash escapes.
|
|
|
|
|
* `NaN` can no longer create an infinite loop during macro-expansion.
|
|
|
|
|
* Fixed a bug that caused `try` to drop expressions.
|
|
|
|
|
* The compiler now properly recognizes `unquote-splice`.
|
|
|
|
|
* Trying to import a dotted name is now a syntax error, as in Python.
|
|
|
|
|
* `defmacro!` now allows optional arguments.
|
|
|
|
|
* Fixed handling of variables that are bound multiple times in a single
|
|
|
|
|
`let`.
|
2018-02-08 21:08:09 +01:00
|
|
|
|
|
2017-11-03 22:03:02 +01:00
|
|
|
|
Misc. Improvements
|
|
|
|
|
----------------------------
|
2018-07-21 20:04:07 +02:00
|
|
|
|
* `hy-repr` uses registered functions instead of methods.
|
|
|
|
|
* `hy-repr` supports more standard types.
|
2018-07-26 00:16:17 +02:00
|
|
|
|
* `macroexpand-all` will now expand macros introduced by a `require` in the body of a macro.
|
2017-11-03 22:03:02 +01:00
|
|
|
|
|
2018-02-07 02:01:20 +01:00
|
|
|
|
0.14.0
|
|
|
|
|
==============================
|
2017-06-22 18:57:26 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Removals
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Python 3.3 is no longer supported
|
|
|
|
|
* `def` is gone; use `setv` instead
|
|
|
|
|
* `apply` is gone; use the new `#*` and `#**` syntax instead
|
|
|
|
|
* `yield-from` is no longer supported under Python 2
|
|
|
|
|
* Periods are no longer allowed in keywords
|
|
|
|
|
* Numeric literals can no longer begin with a comma or underscore
|
|
|
|
|
* Literal `Inf`\s and `NaN`\s must now be capitalized like that
|
2018-02-07 01:27:19 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Other Breaking Changes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Single-character "sharp macros" are now "tag macros", which can have
|
|
|
|
|
longer names
|
|
|
|
|
* `xi` from `hy.extra.anaphoric` is now a tag macro `#%`
|
|
|
|
|
* `eval` is now a function instead of a special form
|
2018-02-07 01:27:19 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
New Features
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* The compiler now automatically promotes values to Hy model objects
|
|
|
|
|
as necessary, so you can write ``(eval `(+ 1 ~n))`` instead of
|
|
|
|
|
``(eval `(+ 1 ~(HyInteger n)))``
|
|
|
|
|
* `return` has been implemented as a special form
|
|
|
|
|
* Added a form of string literal called "bracket strings" delimited by
|
|
|
|
|
`#[FOO[` and `]FOO]`, where `FOO` is customizable
|
|
|
|
|
* Added support for PEP 492 (`async` and `await`) with `fn/a`, `defn/a`,
|
|
|
|
|
`with/a`, and `for/a`
|
2018-02-07 22:37:58 +01:00
|
|
|
|
* Added Python-style unpacking operators `#*` and `#**` (e.g.,
|
|
|
|
|
`(f #* args #** kwargs)`)
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Added a macro `comment`
|
|
|
|
|
* Added EDN `#_` syntax to discard the next term
|
|
|
|
|
* `while` loops may now contain an `else` clause, like `for` loops
|
|
|
|
|
* `#%` works on any expression and has a new `&kwargs` parameter `%**`
|
|
|
|
|
* Added a macro `doc` and a tag macro `#doc`
|
|
|
|
|
* `get` is available as a function
|
|
|
|
|
* `~@` (`unquote-splice`) form now accepts any false value as empty
|
2017-06-16 22:49:10 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Bug Fixes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Relative imports (PEP 328) are now allowed
|
|
|
|
|
* Numeric literals are no longer parsed as symbols when followed by a dot
|
|
|
|
|
and a symbol
|
|
|
|
|
* Hy now respects the environment variable `PYTHONDONTWRITEBYTECODE`
|
|
|
|
|
* String literals should no longer be interpreted as special forms or macros
|
|
|
|
|
* Tag macros (née sharp macros) whose names begin with `!` are no longer
|
|
|
|
|
mistaken for shebang lines
|
|
|
|
|
* Fixed a bug where REPL history wasn't saved if you quit the REPL with
|
|
|
|
|
`(quit)` or `(exit)`
|
|
|
|
|
* `exec` now works under Python 2
|
|
|
|
|
* No TypeError from multi-arity `defn` returning values evaluating to `None`
|
|
|
|
|
* `try` forms are now possible in `defmacro` and `deftag`
|
|
|
|
|
* Multiple expressions are now allowed in `try`
|
|
|
|
|
* Fixed a crash when `macroexpand`\ing a macro with a named import
|
|
|
|
|
* Fixed a crash when `with` suppresses an exception. `with` now returns
|
|
|
|
|
`None` in this case.
|
|
|
|
|
* Fixed a crash when `--repl-output-fn` raises an exception
|
|
|
|
|
* Fixed a crash when `HyTypeError` was raised with objects that had no
|
|
|
|
|
source position
|
|
|
|
|
* `assoc` now evaluates its arguments only once each
|
|
|
|
|
* Multiple expressions are now allowed in the `else` clause of
|
|
|
|
|
a `for` loop
|
|
|
|
|
* `else` clauses in `for` and `while` are recognized more reliably
|
|
|
|
|
* Statements in the condition of a `while` loop are repeated properly
|
|
|
|
|
* Argument destructuring no longer interferes with function docstrings
|
|
|
|
|
* Nullary `yield-from` is now a syntax error
|
|
|
|
|
* `break` and `continue` now raise an error when given arguments
|
|
|
|
|
instead of silently ignoring them
|
2017-06-22 18:57:26 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Misc. Improvements
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* `read`, `read_str`, and `eval` are exposed and documented as top-level
|
|
|
|
|
functions in the `hy` module
|
|
|
|
|
* An experimental `let` macro has been added to `hy.contrib.walk`
|
2017-08-06 02:29:15 +02:00
|
|
|
|
|
2018-02-07 02:05:25 +01:00
|
|
|
|
0.13.1
|
|
|
|
|
==============================
|
|
|
|
|
|
|
|
|
|
Bug Fixes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Changed setup.py to require astor 0.5, since 0.6 isn't
|
|
|
|
|
backwards-compatible.
|
2018-02-07 02:05:25 +01:00
|
|
|
|
|
2018-02-07 02:01:20 +01:00
|
|
|
|
0.13.0
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2017-01-31 23:31:27 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Pythons 2.6, 3.0, 3.1, and 3.2 are no longer supported
|
|
|
|
|
* `let` has been removed. Python's scoping rules do not make a proper
|
|
|
|
|
implementation of it possible. Use `setv` instead.
|
|
|
|
|
* `lambda` has been removed, but `fn` now does exactly what `lambda` did
|
|
|
|
|
* `defreader` has been renamed to `defsharp`; what were previously called
|
|
|
|
|
"reader macros", which were never true reader macros, are now called
|
|
|
|
|
"sharp macros"
|
|
|
|
|
* `try` now enforces the usual Python order for its elements (`else` must
|
2018-02-07 02:13:11 +01:00
|
|
|
|
follow all `except`\s, and `finally` must come last). This is only a
|
2018-02-07 02:11:10 +01:00
|
|
|
|
syntactic change; the elements were already run in Python order even when
|
|
|
|
|
defined out of order.
|
|
|
|
|
* `try` now requires an `except` or `finally` clause, as in Python
|
|
|
|
|
* Importing or executing a Hy file automatically byte-compiles it, or loads
|
|
|
|
|
a byte-compiled version if it exists and is up to date. This brings big
|
|
|
|
|
speed boosts, even for one-liners, because Hy no longer needs to recompile
|
|
|
|
|
its standard library for every startup.
|
|
|
|
|
* Added bytestring literals, which create `bytes` objects under Python 3
|
|
|
|
|
and `str` objects under Python 2
|
|
|
|
|
* Commas and underscores are allowed in numeric literals
|
|
|
|
|
* Many more operators (e.g., `**`, `//`, `not`, `in`) can be used
|
|
|
|
|
as first-class functions
|
|
|
|
|
* The semantics of binary operators when applied to fewer or more
|
|
|
|
|
than two arguments have been made more logical
|
|
|
|
|
* `(** a b c d)` is now equivalent to `(** a (** b (** c d)))`,
|
|
|
|
|
not `(** (** (** a b) c) d)`
|
|
|
|
|
* `setv` always returns `None`
|
|
|
|
|
* When a `try` form executes an `else` clause, the return value for the
|
|
|
|
|
`try` form is taken from `else` instead of the `try` body. For example,
|
|
|
|
|
`(try 1 (except [ValueError] 2) (else 3))` returns `3`.
|
|
|
|
|
* `xor`: If exactly one argument is true, return it
|
|
|
|
|
* `hy.core.reserved` is now `hy.extra.reserved`
|
|
|
|
|
* `cond` now supports single argument branches
|
2017-01-31 23:31:27 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Bug Fixes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* All shadowed operators have the same arities as real operators
|
|
|
|
|
* Shadowed comparison operators now use `and` instead of `&`
|
|
|
|
|
for chained comparisons
|
|
|
|
|
* `partition` no longer prematurely exhausts input iterators
|
|
|
|
|
* `read` and `read-str` no longer raise an error when the input
|
|
|
|
|
parses to a false value (e.g., the empty string)
|
|
|
|
|
* A `yield` inside of a `with` statement will properly suppress implicit
|
|
|
|
|
returns
|
|
|
|
|
* `setv` no longer unnecessarily tries to get attributes
|
|
|
|
|
* `loop` no longer replaces string literals equal to "recur"
|
|
|
|
|
* The REPL now prints the correct value of `do` and `try` forms
|
|
|
|
|
* Fixed a crash when tokenizing a single quote followed by whitespace
|
2017-02-04 00:48:57 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Misc. Improvements
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* New contrib module `hy-repr`
|
|
|
|
|
* Added a command-line option `--repl-output-fn`
|
2017-03-20 20:04:00 +01:00
|
|
|
|
|
2018-02-07 02:01:20 +01:00
|
|
|
|
0.12.1
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2017-01-31 23:31:27 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Bug Fixes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Allow installation without Git
|
2017-01-31 23:31:27 +01:00
|
|
|
|
|
2018-02-07 02:01:20 +01:00
|
|
|
|
0.12.0
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2017-01-17 22:43:02 +01:00
|
|
|
|
|
|
|
|
|
This release brings some quite significant changes on the language and as a
|
|
|
|
|
result very large portions of previously written Hy programs will require
|
|
|
|
|
changes. At the same time, documentation and error messages were improved,
|
|
|
|
|
hopefully making the language easier to use.
|
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* New syntax for let, with and defclass
|
|
|
|
|
* defmacro will raise an error on &kwonly, &kwargs and &key arguments
|
|
|
|
|
* Keyword argument labels to functions are required to be strings
|
|
|
|
|
* slice replaced with cut to stop overloading the python built-in
|
2018-02-15 16:35:33 +01:00
|
|
|
|
* removed redundant throw, catch, progn, defun, lisp-if, lisp-if-not,
|
2018-02-07 02:11:10 +01:00
|
|
|
|
filterfalse, true, false and nil
|
|
|
|
|
* global now takes multiple arguments
|
|
|
|
|
* Nonlocal keyword (Python 3 only)
|
|
|
|
|
* Set literals (#{1 2 3})
|
|
|
|
|
* Keyword-only arguments (Python 3 only)
|
|
|
|
|
* Setv can assign multiple variables at once
|
|
|
|
|
* Empty form allowed for setv, del and cond
|
|
|
|
|
* One-argument division, rationals and comparison operators (=, !=, <, >, <=, >=)
|
|
|
|
|
* partition form for chunking collection to n-sized tuples
|
|
|
|
|
* defn-alias and demacro-alias moved into hy.contrib.alias
|
|
|
|
|
* None is returned instead of the last form in --init--
|
|
|
|
|
* for and cond can take a multi-expression body
|
|
|
|
|
* Hex and octal support for integer literals
|
|
|
|
|
* Apply now mangles strings and keywords according to Hy mangling rules
|
|
|
|
|
* Variadic if
|
|
|
|
|
* defreader can use strings as macro names
|
|
|
|
|
* as-> macro added
|
|
|
|
|
* require syntax changed and now supports same features as import
|
|
|
|
|
* defmulti changed to work with dispatching function
|
|
|
|
|
* old defmulti renamed to defn
|
|
|
|
|
* Lazy sequences added to contrib
|
|
|
|
|
* defmacro! added for once-only evaluation for parameters
|
|
|
|
|
* comp, constantly, complement and juxt added
|
|
|
|
|
* keyword arguments allowed in method calls before the object
|
2017-01-17 22:43:02 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Bug Fixes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Better error when for doesn't have body
|
|
|
|
|
* Better error detection with list comprehensions in Python 2.7
|
|
|
|
|
* Setting value to callable will raise an error
|
|
|
|
|
* defclass can have properties / methods with built-in names
|
|
|
|
|
* Better error messages on invalid macro arguments
|
|
|
|
|
* Better error messages with hy2py and hyc
|
|
|
|
|
* Cmdline error to string conversion.
|
|
|
|
|
* In python 3.3+, generator functions always return a value
|
|
|
|
|
* &rest can be used after &optional
|
2017-01-17 22:43:02 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Misc. Improvements
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Version information includes SHA1 of current commit
|
|
|
|
|
* Improved Python 3.5 support
|
|
|
|
|
* Allow specification of global table and module name for (eval ...)
|
|
|
|
|
* General documentation improvements
|
|
|
|
|
* Contrib.walk: Coerce non-list iterables into list form
|
|
|
|
|
* Flow macros (case and switch)
|
|
|
|
|
* ap-pipe and ap-compose macros
|
|
|
|
|
* #@ reader macro for with-decorator
|
|
|
|
|
* Type check `eval` parameters
|
|
|
|
|
* `and` and `or` short-circuit
|
|
|
|
|
* `and` and `or` accept zero or more arguments
|
|
|
|
|
* read-str for tokenizing a line
|
|
|
|
|
* botsbuildbots moved to contrib
|
|
|
|
|
* Trailing bangs on symbols are mangled
|
|
|
|
|
* xi forms (anonymous function literals)
|
|
|
|
|
* if form optimizations in some cases
|
|
|
|
|
* xor operator
|
|
|
|
|
* Overhauled macros to allow macros to ref the Compiler
|
|
|
|
|
* ap-if requires then branch
|
|
|
|
|
* Parameters for numeric operations (inc, dec, odd?, even?, etc.) aren't type checked
|
|
|
|
|
* import_file_to_globals added for use in emacs inferior lisp mode
|
|
|
|
|
* hy.core.reserved added for querying reserved words
|
|
|
|
|
* hy2py can use standard input instead of a file
|
|
|
|
|
* alias, curry, flow and meth removed from contrib
|
|
|
|
|
* contrib.anaphoric moved to hy.extra
|
2017-01-17 22:43:02 +01:00
|
|
|
|
|
2015-05-03 19:19:25 +02:00
|
|
|
|
Changes from 0.10.1
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2015-05-03 19:19:25 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* new keyword-argument call syntax
|
|
|
|
|
* Function argument destructuring has been added.
|
|
|
|
|
* Macro expansion inside of class definitions is now supported.
|
|
|
|
|
* yield-from support for Python 2
|
|
|
|
|
* with-decorator can now be applied to classes.
|
|
|
|
|
* assert now accepts an optional assertion message.
|
|
|
|
|
* Comparison operators can now be used with map, filter, and reduce.
|
|
|
|
|
* new last function
|
|
|
|
|
* new drop-last function
|
|
|
|
|
* new lisp-if-not/lif-not macro
|
|
|
|
|
* new symbol? function
|
|
|
|
|
* butlast can now handle lazy sequences.
|
|
|
|
|
* Python 3.2 support has been dropped.
|
|
|
|
|
* Support for the @ matrix-multiplication operator (forthcoming in
|
|
|
|
|
Python 3.5) has been added.
|
2015-05-03 19:19:25 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Bug Fixes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Nested decorators now work correctly.
|
|
|
|
|
* Importing hy modules under Python >=3.3 has been fixed.
|
|
|
|
|
* Some bugs involving macro unquoting have been fixed.
|
|
|
|
|
* Misleading tracebacks when Hy programs raise IOError have been
|
|
|
|
|
corrected.
|
2015-05-03 19:19:25 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Misc. Improvements
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* attribute completion in REPL
|
|
|
|
|
* new -m command-line flag for running a module
|
|
|
|
|
* new -i command-line flag for running a file
|
|
|
|
|
* improved error messaging for attempted function definitions
|
|
|
|
|
without argument lists
|
|
|
|
|
* Macro expansion error messages are no longer truncated.
|
|
|
|
|
* Error messaging when trying to bind to a non-list non-symbol in a
|
|
|
|
|
let form has been improved.
|
2015-05-03 19:19:25 +02:00
|
|
|
|
|
2014-10-10 15:45:07 +02:00
|
|
|
|
Changes from 0.10.0
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2014-10-10 15:45:07 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
This release took some time (sorry, all my fault) but it's got a bunch of
|
|
|
|
|
really nice features. We hope you enjoy hacking with Hy as much as we enjoy
|
|
|
|
|
hacking on Hy.
|
2014-10-10 15:45:07 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
In other news, we're Dockerized as an official library image!
|
|
|
|
|
<https://registry.hub.docker.com/_/hylang/>
|
2014-10-10 15:45:07 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
$ docker run -it --rm hylang
|
|
|
|
|
hy 0.10.0 using CPython(default) 3.4.1 on Linux
|
|
|
|
|
=> ((lambda [] (print "Hello, World!")))
|
|
|
|
|
Hello, World!
|
2014-10-10 15:45:07 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
- Hy Society
|
2014-10-10 15:45:07 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Implement raise :from, Python 3 only.
|
|
|
|
|
* defmain macro
|
|
|
|
|
* name & keyword functions added to core
|
|
|
|
|
* (read) added to core
|
|
|
|
|
* shadow added to core
|
|
|
|
|
* New functions interleave interpose zip_longest added to core
|
|
|
|
|
* nth returns default value when out of bounds
|
|
|
|
|
* merge-with added
|
|
|
|
|
* doto macro added
|
|
|
|
|
* keyword? to find out keywords
|
|
|
|
|
* setv no longer allows "." in names
|
2017-03-08 17:37:45 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Internals
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Builtins reimplemented in terms of python stdlib
|
|
|
|
|
* gensyms (defmacro/g!) handles non-string types better
|
2014-10-10 15:45:07 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Tools
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Added hy2py to installed scripts
|
2014-10-10 15:45:07 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Misc. Fixes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Symbols like true, false, none can't be assigned
|
|
|
|
|
* Set sys.argv default to [''] like Python does
|
|
|
|
|
* REPL displays the python version and platform at startup
|
|
|
|
|
* Dockerfile added for https://registry.hub.docker.com/_/hylang/
|
2014-10-10 15:45:07 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Contrib changes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Fix ap-first and ap-last for failure conditions
|
2014-10-10 15:45:07 +02:00
|
|
|
|
|
|
|
|
|
|
2014-04-11 05:00:53 +02:00
|
|
|
|
Changes from 0.9.12
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2014-04-11 05:00:53 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
0.10.0 - the "oh man I'm late for PyCon" release
|
2014-04-11 05:00:53 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
Thanks to theanalyst (Abhi) for getting the release notes
|
|
|
|
|
together. You're the best!
|
|
|
|
|
- Hy Society
|
2014-04-11 05:00:53 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Breaking Changes
|
|
|
|
|
------------------------------
|
2017-03-08 17:37:45 +01:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
We're calling this release 0.10 because we broke
|
|
|
|
|
API. Sorry about that. We've removed kwapply in
|
|
|
|
|
favor of using `apply`. Please be sure to upgrade
|
|
|
|
|
all code to work with `apply`.
|
2017-03-08 17:37:45 +01:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
(apply function-call args kwargs) ; is the signature
|
2014-04-11 05:00:53 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Thanks
|
|
|
|
|
------------------------------
|
2014-04-11 05:00:53 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
Major shoutout to Clinton Dreisbach for implementing loop/recur.
|
|
|
|
|
As always, massive hugs to olasd for the constant reviews and for
|
|
|
|
|
implementing HyCons cells. Thanks to @kenanb for redesigning the
|
|
|
|
|
new Hy logo.
|
2017-03-08 17:37:45 +01:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
Many thanks to algernon for working on adderall, which helped
|
|
|
|
|
push Hy further this cycle. Adderall is an implementation of miniKanren
|
|
|
|
|
in Hy. If you're interested in using Adderall, check out hydiomatic,
|
|
|
|
|
which prettifies Hy source using Adderall rules.
|
2017-03-08 17:37:45 +01:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
This release saw an increase of about 11 contributors for a point
|
|
|
|
|
release, you guys rock!
|
2014-04-11 05:00:53 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
-Hy Society
|
2017-03-08 17:37:45 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2014-04-11 05:00:53 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* `for` revamped again (Last time, we hope!), this time using a saner
|
|
|
|
|
itertools.product when nesting
|
|
|
|
|
* `lisp-if`/`lif` added for the lisp-like everything is true if, giving
|
|
|
|
|
seasoned lispers a better if check (0 is a value, etc)
|
|
|
|
|
* Reader Macros are macros now!
|
|
|
|
|
* yield-from is now a proper yield from on Python 3. It also now breaks on
|
|
|
|
|
Python 2.x.
|
|
|
|
|
* Added if-not macro
|
|
|
|
|
* We finally have a lisp like cons cells
|
|
|
|
|
* Generator expressions, set & dict comprehensions are now supported
|
|
|
|
|
* (.) is a mini DSL for attribute access
|
|
|
|
|
* `macroexpand` & `macroexpand-1` added to core
|
|
|
|
|
* `disassemble` added to core, which dumps the AST or equivalent python code
|
|
|
|
|
* `coll?` added to core to check for a collection
|
|
|
|
|
* `identity` function added to core
|
2017-03-08 17:37:45 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Misc. Fixes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Lots of doc fixes. Reorganization as well as better docs on Hy internals
|
|
|
|
|
* Universal Wheel Support
|
|
|
|
|
* Pygments > 1.6 supports Hy now. All codeblocks in docs have been changed
|
|
|
|
|
from clojure to hy
|
|
|
|
|
* Hy REPL supports invoking with --spy & -i options [reword]
|
|
|
|
|
* `first` and `rest` are functions and not macros anymore
|
|
|
|
|
* "clean" target added to Makefile
|
|
|
|
|
* hy2py supports a bunch of commandline options to show AST, source etc.
|
|
|
|
|
* Sub-object mangling: every identifier is split along the dots & mangled
|
|
|
|
|
separately
|
2017-03-08 17:37:45 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Bug Fixes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Empty MacroExpansions work as expected
|
|
|
|
|
* Python 3.4 port. Sorry this wasn't in a 3.4 release time, we forgot to do
|
|
|
|
|
a release. Whoops.
|
|
|
|
|
* eg/lxml/parse-tumblr.hy works with Python 3
|
|
|
|
|
* hy2py works on Windows
|
|
|
|
|
* Fixed unicode encoding issue in REPL during unicode exceptions
|
|
|
|
|
* Fixed handling of comments at end of input (#382)
|
2014-04-11 05:00:53 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Contrib changes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Curry module added to contrib
|
|
|
|
|
* Loop/recur module added which provides TCO at tail position
|
|
|
|
|
* defmulti has been added - check out more in the docs -- thanks to Foxboron for this one!
|
|
|
|
|
* Walk module for walking the Hy AST, features a `macroexpand-all` as well
|
2014-04-11 05:00:53 +02:00
|
|
|
|
|
|
|
|
|
|
2013-12-01 19:19:53 +01:00
|
|
|
|
Changes from Hy 0.9.11
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2013-12-01 19:19:53 +01:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
tl;dr:
|
2013-12-31 18:04:43 +01:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
0.9.12 comes with some massive changes,
|
|
|
|
|
We finally took the time to implement gensym, as well as a few
|
|
|
|
|
other bits that help macro writing. Check the changelog for
|
|
|
|
|
what exactly was added.
|
2017-03-08 17:37:45 +01:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
The biggest feature, Reader Macros, landed later
|
|
|
|
|
in the cycle, but were big enough to warrant a release on its
|
|
|
|
|
own. A huge thanks goes to Foxboron for implementing them
|
|
|
|
|
and a massive hug goes out to olasd for providing ongoing
|
|
|
|
|
reviews during the development.
|
2017-03-08 17:37:45 +01:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
Welcome to the new Hy contributors, Henrique Carvalho Alves,
|
|
|
|
|
Kevin Zita and Kenan Bölükbaşı. Thanks for your work so far,
|
|
|
|
|
folks!
|
2017-03-08 17:37:45 +01:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
Hope y'all enjoy the finest that 2013 has to offer, - Hy Society
|
2013-12-31 18:04:43 +01:00
|
|
|
|
|
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Special thanks goes to Willyfrog, Foxboron and theanalyst for writing
|
|
|
|
|
0.9.12's NEWS. Thanks, y'all! (PT)
|
2013-12-31 18:04:43 +01:00
|
|
|
|
|
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Translate foo? -> is_foo, for better Python interop. (PT)
|
|
|
|
|
* Reader Macros!
|
|
|
|
|
* Operators + and * now can work without arguments
|
|
|
|
|
* Define kwapply as a macro
|
|
|
|
|
* Added apply as a function
|
|
|
|
|
* Instant symbol generation with gensym
|
|
|
|
|
* Allow macros to return None
|
|
|
|
|
* Add a method for casting into byte string or unicode depending on python version
|
|
|
|
|
* flatten function added to language
|
|
|
|
|
* Add a method for casting into byte string or unicode depending on python version
|
|
|
|
|
* Added type coercing to the right integer for the platform
|
2013-12-31 18:04:43 +01:00
|
|
|
|
|
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Misc. Fixes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Added information about core team members
|
|
|
|
|
* Documentation fixed and extended
|
|
|
|
|
* Add astor to install_requires to fix hy --spy failing on hy 0.9.11.
|
|
|
|
|
* Convert stdout and stderr to UTF-8 properly in the run_cmd helper.
|
|
|
|
|
* Update requirements.txt and setup.py to use rply upstream.
|
|
|
|
|
* tryhy link added in documentation and README
|
|
|
|
|
* Command line options documented
|
|
|
|
|
* Adding support for coverage tests at coveralls.io
|
|
|
|
|
* Added info about tox, so people can use it prior to a PR
|
|
|
|
|
* Added the start of hacking rules
|
|
|
|
|
* Halting Problem removed from example as it was nonfree
|
|
|
|
|
* Fixed PyPI is now behind a CDN. The --use-mirrors option is deprecated.
|
|
|
|
|
* Badges for pypi version and downloads.
|
2013-12-31 18:04:43 +01:00
|
|
|
|
|
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Syntax Fixes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* get allows multiple arguments
|
2013-12-31 18:04:43 +01:00
|
|
|
|
|
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Bug Fixes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* OSX: Fixes for readline Repl problem which caused HyREPL not allowing 'b'
|
|
|
|
|
* Fix REPL completions on OSX
|
|
|
|
|
* Make HyObject.replace more resilient to prevent compiler breakage.
|
2013-12-31 18:04:43 +01:00
|
|
|
|
|
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Contrib changes
|
|
|
|
|
------------------------------
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Anaphoric macros added to contrib
|
|
|
|
|
* Modified eg/twisted to follow the newer hy syntax
|
|
|
|
|
* Added (experimental) profile module
|
2013-12-31 18:04:43 +01:00
|
|
|
|
|
2013-12-01 19:19:53 +01:00
|
|
|
|
|
2013-11-13 03:56:56 +01:00
|
|
|
|
Changes from Hy 0.9.10
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2013-11-13 03:56:56 +01:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Many thanks to Guillermo Vayá (Willyfrog) for preparing this release's
|
|
|
|
|
release notes. Major shout-out. (PT)
|
2013-11-13 03:56:56 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Misc. Fixes
|
|
|
|
|
------------------------------
|
2013-11-13 03:56:56 +01:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Many many many documentation fixes
|
|
|
|
|
* Change virtualenv name to be `hy`
|
|
|
|
|
* Rewrite language.hy not to require hy.core.macros
|
|
|
|
|
* Rewrite the bootstrap macros in hy
|
|
|
|
|
* Cleanup the hy.macros module
|
|
|
|
|
* Add comments to the functions and reorder them
|
|
|
|
|
* Translation of meth from Python to Hy
|
|
|
|
|
* PY3 should really check for Python >= 3
|
|
|
|
|
* Add hy._compat module to unify all Python 2 and 3 compatibility codes.
|
|
|
|
|
* Import future.print_statement in hy code
|
|
|
|
|
* Coerce the contents of unquote-splice'd things to a list
|
|
|
|
|
* Various setup.py enhancements.
|
|
|
|
|
* PEP8 fixes
|
|
|
|
|
* Use setuptools.find_packages()
|
|
|
|
|
* Update PyPI classifiers
|
|
|
|
|
* Update website URL
|
|
|
|
|
* Install the argparse module in Python 2.6 and before
|
|
|
|
|
* Delete the duplicate rply in install_requires. With the PyPI version,
|
|
|
|
|
tests are failed.
|
|
|
|
|
* Finally fixed access to hy.core.macros here. have to explicitly require
|
|
|
|
|
them.
|
2013-11-13 03:56:56 +01:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2013-11-13 03:56:56 +01:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Slightly cleaner version of drop-while, could use yield-from when ready
|
|
|
|
|
* Added many native core functions
|
|
|
|
|
* Add zero? predicate to check if an object is zero
|
|
|
|
|
* Macro if-python2 for compile-time choice between Python 2 and Python 3
|
|
|
|
|
code branches
|
|
|
|
|
* Added new travis make target to skip flake8 on pypy but run
|
|
|
|
|
it on all others
|
|
|
|
|
* Add "spy mode" to REPL
|
|
|
|
|
* Add CL handling to hyc
|
|
|
|
|
* Add yield from via macro magic.
|
|
|
|
|
* Add some machinery to avoid importing hy in setup.py
|
|
|
|
|
* Add a rply-based parser and lexer
|
|
|
|
|
* Allow quoting lambda list keywords.
|
|
|
|
|
* Clarified rest / cdr, cleaned up require
|
|
|
|
|
* Make with return the last expression from its branch
|
|
|
|
|
* Fix yielding to not suck (#151)
|
|
|
|
|
* Make assoc accept multiple values, also added an even/odd check for
|
|
|
|
|
checkargs
|
|
|
|
|
* Added ability to parse doc strings set in defclass declarations,
|
|
|
|
|
* Provide bin scripts for both Windows and \*nix
|
|
|
|
|
* Removes setf in favor of setv
|
2013-11-13 03:56:56 +01:00
|
|
|
|
|
2013-07-07 20:03:25 +02:00
|
|
|
|
Changes from Hy 0.9.9
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2013-07-07 20:03:25 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Stupid Fixes
|
|
|
|
|
------------------------------
|
2017-03-08 17:37:45 +01:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* I forgot to include hy.core.language in the sdist. (PT)
|
2013-07-07 20:03:25 +02:00
|
|
|
|
|
2013-07-05 04:25:40 +02:00
|
|
|
|
Changes from Hy 0.9.8
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2013-07-05 04:25:40 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Syntax Fixes
|
|
|
|
|
------------------------------
|
2013-07-05 04:25:40 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Macros are now module-specific, and must be required when used. (KH)
|
|
|
|
|
* Added a few more string escapes to the compiler (Thomas Ballinger)
|
|
|
|
|
* Keywords are pseudo-callable again, to get the value out of a dict. (PT)
|
|
|
|
|
* Empty expression is now the same as an empty vector. (Guillermo Vaya)
|
2013-07-05 04:25:40 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2013-07-05 04:25:40 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* HyDicts (quoted dicts or internal HST repr) are now lists
|
|
|
|
|
that compiled down to dicts by the Compiler later on. (ND)
|
|
|
|
|
* Macros can be constants as well. (KH)
|
|
|
|
|
* Add eval-when-compile and eval-and-compile (KH)
|
|
|
|
|
* Add break and continue to Hy (Morten Linderud)
|
|
|
|
|
* Core language libraries added. As example, I've included `take` and
|
|
|
|
|
`drop` in this release. More to come (PT)
|
|
|
|
|
* Importing a broken module's behavior now matches Python's more
|
|
|
|
|
closely. (Morten Linderud)
|
2013-07-05 04:25:40 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Misc. Fixes
|
|
|
|
|
------------------------------
|
2013-07-05 04:25:40 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Ensure compiler errors are always "user friendly" (JD)
|
|
|
|
|
* Hy REPL quitter repr adjusted to match Hy syntax (Morten Linderud)
|
|
|
|
|
* Windows will no longer break due to missing readline (Ralph Moritz)
|
2013-07-05 04:25:40 +02:00
|
|
|
|
|
|
|
|
|
|
2013-05-08 15:50:43 +02:00
|
|
|
|
Changes from Hy 0.9.7
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2013-05-08 15:50:43 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Syntax Fixes
|
|
|
|
|
------------------------------
|
2013-05-08 15:50:43 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Quasi-quoting now exists long with quoting. Macros will also not
|
|
|
|
|
expand things in quotes.
|
|
|
|
|
* kwapply now works with symbols as well as raw dicts. (ND)
|
|
|
|
|
* Try / Except will now return properly again. (PT)
|
|
|
|
|
* Bare-names sprinkled around the AST won't show up anymore (ND)
|
2013-05-12 19:40:21 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2013-05-12 19:40:21 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Added a new (require) form, to import macros for that module (PT)
|
|
|
|
|
* Native macros exist and work now! (ND)
|
|
|
|
|
* (fn) and (lambda) have been merged (ND)
|
|
|
|
|
* New (defclass) builtin for class definitions (JD)
|
|
|
|
|
* Add unquote-splicing (ND)
|
2013-05-12 19:40:21 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Errata
|
|
|
|
|
------------------------------
|
2013-05-12 19:40:21 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Paul was an idiot and marked the j-related bug as a JD fix, it was
|
|
|
|
|
actually ND. My bad.
|
2013-05-08 15:50:43 +02:00
|
|
|
|
|
2013-05-06 05:03:55 +02:00
|
|
|
|
Changes from Hy 0.9.6
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2013-05-06 05:03:55 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Syntax Fixes
|
|
|
|
|
------------------------------
|
2013-05-06 05:03:55 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* 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 interpreted 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)
|
2013-05-06 05:03:55 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2013-05-06 05:03:55 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* *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 interpreter
|
|
|
|
|
(WKG + @eigenhombre)
|
2013-05-06 05:03:55 +02:00
|
|
|
|
|
|
|
|
|
|
2013-04-15 04:17:15 +02:00
|
|
|
|
Changes from Hy 0.9.5
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2013-04-15 04:17:15 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Syntax Fixes
|
|
|
|
|
------------------------------
|
2013-04-15 04:17:15 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* .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)
|
2013-04-15 04:17:15 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
WARNING: WARNING: READ ME: READ ME:
|
|
|
|
|
-----------------------------------
|
2013-04-15 04:19:33 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
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 feature.
|
2013-04-15 04:17:15 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
This also normalizes behavior from Py 2 --> Py 3.
|
2013-04-15 04:17:15 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
Thank you so much, Konrad Hinsen.
|
2018-02-07 01:50:57 +01:00
|
|
|
|
|
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2013-04-15 04:17:15 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* (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)
|
2013-04-15 04:17:15 +02:00
|
|
|
|
|
2013-04-08 15:58:43 +02:00
|
|
|
|
Changes from Hy 0.9.4
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
|
|
|
|
|
|
|
|
|
Syntax Fixes
|
|
|
|
|
------------------------------
|
2013-04-08 15:58:43 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* `try` now accepts `else`: (JD)
|
2013-04-08 15:58:43 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
`(try BODY (except [] BODY) (else BODY))`
|
2013-04-08 15:58:43 +02:00
|
|
|
|
|
|
|
|
|
|
2013-04-07 18:47:07 +02:00
|
|
|
|
Changes from Hy 0.9.4
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Syntax Fixes
|
|
|
|
|
------------------------------
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* 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 than 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)
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* 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)
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Documentation
|
|
|
|
|
------------------------------
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Initial documentation added to the source tree. (PT)
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Changes from Hy 0.9.3
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Syntax Fixes
|
|
|
|
|
------------------------------
|
2013-04-07 19:03:45 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* 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)
|
2013-04-07 19:03:45 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2013-04-07 19:03:45 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* 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)
|
2013-04-07 19:03:45 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Documentation
|
|
|
|
|
------------------------------
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Initial docs added. (WKG + CW)
|
2013-04-07 19:03:45 +02:00
|
|
|
|
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
|
|
|
|
Changes from Hy 0.9.2
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
General Enhancements
|
|
|
|
|
------------------------------
|
2013-04-07 19:24:19 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* hy.__main__ added, `python -m hy` will now allow a hy shim into existing
|
|
|
|
|
Python scripts. (PT)
|
2013-04-07 19:24:19 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* `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)
|
2013-04-07 19:24:19 +02:00
|
|
|
|
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
|
|
|
|
Changes from Hy 0.9.1
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
General Enhancements
|
|
|
|
|
------------------------------
|
2013-04-07 19:24:19 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Hy REPL added. (PT)
|
|
|
|
|
* Doc templates added. (PT)
|
2013-04-07 19:24:19 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* 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)
|
2013-04-07 19:24:19 +02:00
|
|
|
|
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
|
|
|
|
Changes from Hy 0.9.0
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Language Changes
|
|
|
|
|
------------------------------
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Add `throw` (PT)
|
|
|
|
|
* Add `try` (PT)
|
|
|
|
|
* add `catch` (PT)
|
2013-04-07 19:24:19 +02:00
|
|
|
|
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
|
|
|
|
Changes from Hy 0.8.2
|
2018-02-07 01:50:57 +01:00
|
|
|
|
==============================
|
2013-04-07 18:47:07 +02:00
|
|
|
|
|
2018-02-07 01:50:57 +01:00
|
|
|
|
Notes
|
|
|
|
|
------------------------------
|
2013-04-07 19:24:19 +02:00
|
|
|
|
|
2018-02-07 02:11:10 +01:00
|
|
|
|
* Complete rewrite of old-hy. (PT)
|