0.14.0
Removals
* 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
Other Breaking Changes
* 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
New Features
* 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
* Added Python-style unpacking operators #* and #** (e.g.,
(f #* args #** kwargs))
* 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
Bug Fixes
* 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
Misc. Improvements
* 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
* Disable SunOS support for a while
Changelog:
Version 1.24.0 (2018-02-15)
Language
External sysv64 ffi is now available. eg. extern "sysv64" fn foo () {}
Compiler
rustc now uses 16 codegen units by default for release builds. For
the fastest builds, utilize codegen-units=1.
Added armv4t-unknown-linux-gnueabi target.
Add aarch64-unknown-openbsd support
Libraries
str::find::<char> now uses memchr. This should lead to a 10x improvement
in performance in the majority of cases.
OsStr's Debug implementation is now lossless and consistent with Windows.
time::{SystemTime, Instant} now implement Hash.
impl From<bool> for AtomicBool
impl From<{CString, &CStr}> for {Arc<CStr>, Rc<CStr>}
impl From<{OsString, &OsStr}> for {Arc<OsStr>, Rc<OsStr>}
impl From<{PathBuf, &Path}> for {Arc<Path>, Rc<Path>}
float::from_bits now just uses transmute. This provides some optimisations
from LLVM.
Copied AsciiExt methods onto char
Remove T: Sized requirement on ptr::is_null()
impl From<RecvError> for {TryRecvError, RecvTimeoutError}
Optimised f32::{min, max} to generate more efficent x86 assembly
[u8]::contains now uses memchr which provides a 3x speed improvement
Stabilized APIs
RefCell::replace
RefCell::swap
atomic::spin_loop_hint
The following functions can now be used in a constant expression.
eg. let buffer: [u8; size_of::<usize>()];, static COUNTER: AtomicUsize =
AtomicUsize::new(1);
AtomicBool::new
AtomicUsize::new
AtomicIsize::new
AtomicPtr::new
Cell::new
{integer}::min_value
{integer}::max_value
mem::size_of
mem::align_of
ptr::null
ptr::null_mut
RefCell::new
UnsafeCell::new
Cargo
Added a workspace.default-members config that overrides implied --all
in virtual workspaces.
Enable incremental by default on development builds. Also added
configuration keys to Cargo.toml and .cargo/config to disable on
a per-project or global basis respectively.
Misc
Compatibility Notes
Floating point types Debug impl now always prints a decimal point.
Ipv6Addr now rejects superfluous ::'s in IPv6 addresses This is in
accordance with IETF RFC 4291 Sec. 2.2.
Unwinding will no longer go past FFI boundaries, and will instead abort.
Formatter::flags method is now deprecated. The sign_plus, sign_minus,
alternate, and sign_aware_zero_pad should be used instead.
Leading zeros in tuple struct members is now an error
column!() macro is one-based instead of zero-based
fmt::Arguments can no longer be shared across threads
Access to #[repr(packed)] struct fields is now unsafe
Cargo sets a different working directory for the compiler
Vala 0.38.7
===========
* Regression fix:
- codegen: Don't try to infer error argument on async begin methods [#793158]
This was a regression introduced by [#614294]
Vala 0.38.6
===========
* Various bug fixes:
- girparser:
+ Set NoAccessorMethod for non-readable and construct-only properties
+ Ignore conflicting closure/destroy indexes
+ Don't accept methods as property-accessor which throw errors [#792998]
- codegen:
+ Infer error parameter from abstract/virtual base methods [#614294]
+ Fix return-type for cancelled async creation methods of classes [#792942]
- vala: Variadic constructors without a real first parameter are not allowed
- libvaladoc: Keep bootstrap-support with valac >= 0.16.1
* Bindings:
- gstreamer-1.0: Update from 1.13+ git master
- gtk+-4.0: Only override type of "event" parameters
Vala 0.38.5
===========
* Various improvements and bug fixes:
- codegen
+ Only add property-enum and GParamSpec-array for GObject classes
+ Add destroy param when invoking delegate returned by delegate [#792077]
- vala: Add pkgdatadir and pkglibdir to pkg-config file
- gidlparser: Update type qualifiers
- libvaladoc: Allow @link tags to be split over multiple lines [#646982]
- libvaladoc: Add support for single line documentation comments [#736483]
- vala: Fix parameter type inference of overridden async methods [#792660]
- codewriter: Don't use string.replace() to apply header_to_override [#731322]
* Bindings:
- glib-2.0: Add GLib.OPTION_REMAINING and GLib.OptionFlags.NONE
- gstreamer-1.0: Update from 1.13+ git master
- gtk+-2.0: Mark MessageDialog constructor parameter, message_format, as
nullable [#791570]
- gtk+-2.0/3.0: Don't hide user_data in Clipboard.set_with_data() [#792237]
- gtk+-3.0: Update to 3.22.26+6f26d0dc
- gtk+-4.0: Update to 3.93.0 and split Gsk.RenderNode into several classes
- libwnck-3.0: Update to 3.24.1
- posix: Add ctime(3) and fix binding of struct hostent and gethostbyname(3)
- webkit2gtk-4.0: Update to 2.19.5
- webkit2gtk-web-extension-4.0: Fix DOM.EventTarget interface
Version 5.1.1:
Correct code used to identify the directory in which the library and its zip file are located.
Ensure that the pythoncom and pywintypes DLLs are found in the lib directory, not in the base directory.
Copy dependent files to the same directory as the file it depends on, not the root directory; also add a sample for PyQt5 to demonstrate its correct use.
Version 5.1:
Use fixed library location on all platforms; should correct the error “no module named __startup__”.
Correct sqlite3 hook for use in Python 2.7.
Correct usage of scipy.lib.
Correct handling of __path__ attribute in module.
Fix gevent bug 42.
Droppped support for Python 3.4.
the patch predates php56, doesn't seem to be necessary when building
with apache22, and we want to reduce diffs against upstream; maybe
that part was needed with distant past with apache 1.3 or whatnot,
but that is not in pkgsrc any more
By using the clang or gcc plugin mechanism, it was possible for an attacker to
trick the “go get” command into executing arbitrary code. The go command now
restricts the set of allowed host compiler and linker arguments in cgo source
files to a list of allowed flags, in particular disallowing -fplugin= and
-plugin=.
The issue is CVE-2018-6574 and Go issue golang.org/issue/23672. See the Go
issue for details.
Thanks to Christopher Brown of Mattermost for reporting this problem.
This was added 8 years ago intending to ensure pkgsrc libtool was used, except
it actually did the opposite. By default we will try to replace any script
named "libtool" up to the override depth. Setting LIBTOOL_OVERRIDE changes
the behaviour to instead override the list of filenames specified by the
LIBTOOL_OVERRIDE variable. Thus we were trying to replace any file named
"YES" instead of "libtool".
Noticed by SmartOS/clang builds of php-intl which were using the supplied
broken libtool script instead of the correct pkgsrc one.
With the introduction of beta and rc releases of php7* into pkgsrc the pattern
matching is often incorrect (for example the current version of php-7.1.0rc6
breaks both <7.1.0 and >=7.1.0). Using .99 is not ideal but does at least
avoid the confusion developers seem to be having with the pmatch ordering.
PHP bundles it's own copy of pcre 8.41 with the distribution, which
is used when build doesn't find system one. Switch to the pkgsrc
pcre, so that we don't need to maintain local PHP JIT patch here.
Upcoming PHP 7.3 already switched to pcre2, so no value maintaining
private PCRE patch any more (if there ever was).
XXX devel/pcre doesn't seem to enable PCRE JIT, might be good to do so
PHP bundles a sqlite3 lib, it's used when the build can't find
system one. Switch to the pkgsrc-provided one, eliminating also
need to maintain a local patch for it. While here make this into a
tunable compile option 'sqlite3', by default on, same as before.
PC-LISP is a small implementation of LISP for just about any machine with a
good C compiler. This manual is biased towards the UNIX and MS-DOS versions.
While small, it is capable of running a pretty good subset of Franz LISP.
The functions are supposed to perform in the same way as Franz with a few
exceptions made for effeciencies sake.
8.6.8:
[array names -regexp] supports backrefs
Fix gcc build failures due to #pragma placement
(bug)[b50fb2] exec redir append stdout and stderr to file
(bug)[2a9465] http state 100 continue handling broken
(bug)[0e4d88] replace command, delete trace kills namespace
(bug)[1a5655] [info * methods] includes mixins
tzdata updated to Olson's tzdata2017c
(bug)[fc1409] segfault in method cloning, oo-15.15
(bug)[6f2f83] More robust [load] for ReactOS
(bug)[3298012] Stop crash when hash tables overflow 32 bits
(bug)[5d6de6] Close failing case of [package prefer stable]
(bug)[fab924] Fix misleading [load] message on Windows
(bug)[4f6a1e] Crash when ensemble map and list are same
(bug)[ce3a21] file normalize failure when tail is empty
(new)[TIP 477] nmake build system reform
(bug)[586e71] EvalObjv exception handling at level 0
Interpreter for purely symbolic, pure, lexically scoped dialect of LISP
Zenlisp is an interpreter for a purely symbolic, side effect-free,
lexically scoped dialect of LISP. It may be considered an
implementation of pure LISP plus global definitions.
Zenlisp is derived from ArrowLISP.
Changes since 7.1.13:
Core:
Fixed bug #75679 (Path 260 character problem).
Fixed bug #75786 (segfault when using spread operator on generator passed by reference).
Fixed bug #75799 (arg of get_defined_functions is optional).
Fixed bug #75396 (Exit inside generator finally results in fatal error).
Fixed bug #75079 (self keyword leads to incorrectly generated TypeError when in closure in trait).
FCGI:
Fixed bug #75794 (getenv() crashes on Windows 7.2.1 when second parameter is false).
IMAP:
Fixed bug #75774 (imap_append HeapCorruction).
Opcache:
Fixed bug #75720 (File cache not populated after SHM runs full).
Fixed bug #75579 (Interned strings buffer overflow may cause crash).
PGSQL:
Fixed bug #75671 (pg_version() crashes when called on a connection to cockroach).
Readline:
Fixed bug #75775 (readline_read_history segfaults with empty file).
SAPI:
Fixed bug #75735 ([embed SAPI] Segmentation fault in sapi_register_post_entry).
SOAP:
Fixed bug #70469 (SoapClient generates E_ERROR even if exceptions=1 is used).
Fixed bug #75502 (Segmentation fault in zend_string_release).
SPL:
Fixed bug #75717 (RecursiveArrayIterator does not traverse arrays by reference).
Fixed bug #75242 (RecursiveArrayIterator doesn't have constants from parent class).
Fixed bug #73209 (RecursiveArrayIterator does not iterate object properties).
Standard:
Fixed bug #75781 (substr_count incorrect result).
Changes since 7.2.1:
Core:
Fixed bug #75742 (potential memleak in internal classes's static members).
Fixed bug #75679 (Path 260 character problem).
Fixed bug #75614 (Some non-portable == in shell scripts).
Fixed bug #75786 (segfault when using spread operator on generator passed by reference).
Fixed bug #75799 (arg of get_defined_functions is optional).
Fixed bug #75396 (Exit inside generator finally results in fatal error).
FCGI:
Fixed bug #75794 (getenv() crashes on Windows 7.2.1 when second parameter is false).
IMAP:
Fixed bug #75774 (imap_append HeapCorruction).
Opcache:
Fixed bug #75720 (File cache not populated after SHM runs full).
Fixed bug #75687 (var 8 (TMP) has array key type but not value type).
Fixed bug #75698 (Using @ crashes php7.2-fpm).
Fixed bug #75579 (Interned strings buffer overflow may cause crash).
PDO:
Fixed bug #75616 (PDO extension doesn't allow to be built shared on Darwin).
PDO MySQL:
Fixed bug #75615 (PDO Mysql module can't be built as module).
PGSQL:
Fixed bug #75671 (pg_version() crashes when called on a connection to cockroach).
Readline:
Fixed bug #75775 (readline_read_history segfaults with empty file).
SAPI:
Fixed bug #75735 ([embed SAPI] Segmentation fault in sapi_register_post_entry).
SOAP:
Fixed bug #70469 (SoapClient generates E_ERROR even if exceptions=1 is used).
Fixed bug #75502 (Segmentation fault in zend_string_release).
SPL:
Fixed bug #75717 (RecursiveArrayIterator does not traverse arrays by reference).
Fixed bug #75242 (RecursiveArrayIterator doesn't have constants from parent class).
Fixed bug #73209 (RecursiveArrayIterator does not iterate object properties).
Standard:
Fixed bug #75781 (substr_count incorrect result).
Fixed bug #75653 (array_values don't work on empty array).
Zip:
Display headers (buildtime) and library (runtime) versions in phpinfo (with libzip >= 1.3.1).