You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 follow all excepts, and finally must come last). This is only a 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
Bug Fixes
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