From Peter Bex via pkgsrc-wip.
Changes since 4.7.0.6:
- Security fixes
- improved hash table collision resistance and added randomization
to prevent malicious external causes of collisions. All SRFI-69
procedures accept extra arguments to control randomization for
testing/debugging.
- Added checks for embedded '\0' characters in strings passed to some
C functions on a lower level than Chicken's FFI.
- Build system
- version information has been moved into a separate unit to make the
build-version shown in the banner and accessible through library
procedures more accurate, this also speeds up the build on version-
changes (thanks to Jim Ursetto for contributing this)
- the build was made more reliable with respect to cross-compilation
and custom installation names
- the test-suite is now working on the mingw32 platform (with
a few tests disabled due to missing functionality)
- the version and branch of the sources are now properly compiled
into the core libraries and shown in the "csi" and "chicken"
version headers
- Compiler
- Fixed bug in handling of symbols in constant-definitions (thanks to Peter
Bex)
- Stricter check for value-part of constant definition (thanks to Kon Lovett)
- Fixed bug that caused argument-signatures of external definitions to be
incorrectly modified during optimization (thanks to Peter Bex)
- Failing constant-folding expressions now produce a compile-time warning
- Fixed various bugs in the internal type-database (thanks to Kon Lovett and
Peter Bex)
- added "-specialize" option and "specialize" declaration which enables
optimizations of uses of core library procedures based on type-
information gathered during flow analysis
- "-optimize-level 3" and higher now implies "-specialize"
- added option "-strict-types" and "-emit-type-file"
- progress-information is now only shown with "-debug p"; the "-verbose"
option only shows informational but noncritical messages
- added optimizations for some library procedures
- variable propagation for global variable accesses is now done in certain
situations
- the algorithmic complexity of the closure-conversion pass has been
reduced which speeds up compilation noticably for large files
- the alternative branch in a conditional is dropped when the condition
is known to be a non-boolean value (suggested by Joerg Wittenberger)
- implemented numerous fixes and improvements for flow analysis
- fixed a bug in the compiler that could cause some variable bindings
to be optimized away in certain situations involving inlining
- added an experimental optimization called "clustering" (enable
with the compiler option of the same name)
- the optimizations done by the compiler are now listed as a comment
in the generated C file
- the type-information obtained during flow-analysis ("scrutiny") is
now used for performing type-sensitive optimizations of calls to
most of the core-library procedures
- deprecated the "constant" declaration specifier
- "unboxing" optimization has been completely removed - the implementation
was unreliable and unmaintainable; the "-unboxing" compiler option will
still be accepted but will produce a warning
- Peter Bex contributed an optimization to the analysis pass that
greatly reduces compile time for source code containing deeply nested
lexical bindings
- procedures that are known to have the value of a core library procedure
that is a "standard" or "extended binding" will be inlined
- enhanced line number tracking to get better error messages from
the scrutinizer.
- hygiene bugs related to compiler-syntax were fixed.
- the local flow-analysis was sometimes reporting multiple warnings
for the same type-conflict.
- the time/space-complexity of some algorithms used in the compiler
were reduced resulting in much better compile-times especially
for large source files.
- Interpreter
- ",q" leaves the currently active REPL invocation instead of
terminating the process (as suggested by John Cowan)
- ",m" properly switches between modules (thanks to Christian Kellermann)
- Core libraries
- Cleaned up the set of available internal SRFI-feature-identifiers
- The printer now does a better job at escaping certain single-character
symbol names
- Unit "lolevel"
- deprecated "null-pointer" and "null-pointer?"
- Disabled "-setup-mode" when compiling extensions for deployment (thanks
to Ivan Raikov)
- Got rid of some warnings in the C runtime system that were triggered on
the SunPro C compiler (thanks to Joe Python)
- added "foldl" and "foldr" procedures, which are more efficient and
have a more consistent argument order than the corresponding
SRFI-1 procedures
- "shuffle" has been deprecated
- added "queue-length"
- "queue->list" allocates and returns a fresh list now
- invoking a parameter-procedure with an argument will return the new
value
- added new procedure "quit"
- "repl" accepts an optional evaluator procedure (suggested by John
Cowan)
- added a setter procedure to "signal-handler" ("posix" unit)
- EINTR is properly handled for input routines that may block
waiting for input
- the implementation of R5RS evaluation environments is now fully
standards compliant
- "file-exists?" and "directory-exists?" work now properly for files
> 2GB (EOVERFLOW handling in stat(3) system call)
- fixed bug in implementation of "fifo?"
- the procedure returned by "condition-predicate" accepts any type
of argument now
- blobs have a readable textual representation ("#{...}")
- "find-files" does not follow symlinks by default (as it did previously)
- also, the old non-keyword argument signature for "find-files" is not
supported anymore
- added "alist-update" ("data-structures" unit)
- "irregex-replace" returns the original string instead of #f when the
regex does not match
- irregex "real" built-in utility pattern now accepts a leading sign
- added "change-directory*" ("posix" unit)
- number parsing has been made more reliable and standards compliant
- deprecated "none?", "always?" and "never?"
- library procedures that take ports as arguments now all perform checks
on port-direction and open/closed state
- "mutate-procedure" has been renamed to "mutate-procedure!" - the old
name is still available but deprecated
- deprecated C_hash_string and C_hash_string_ci functions in the C API in
favor of the more secure versions C_u_i_string_hash, C_u_i_string_ci_hash
- a number of bugs in the irregex regular expression engine have been
fixed; it has been updated to upstream release 0.8.3
- the "make" facility of the "setup-api" module has been deprecated,
please use the "make" extension when your egg requires this during
setup.
- Core tools
- "csc"
- The environment-variables "CHICKEN_C_INCLUDE_PATH" and
"CHICKEN_C_LIBRARY_PATH" can now be used to add default include-
and link-directories to C-compiler invocations
- "-O5" passed expensive optimization flags to the C compiler which
could expose C-Compiler bugs, depending on the compiler version
(thanks to Sven Hartrumpf for pointing this out).
- "-rpath" is ignored on OS X (thanks to Kon Lovett).
- Fixed handling of "-output-file" (it was being ignored)
- "chicken-install"
- Added option "-override", which allows retrieving extension-
versions from a file - this may be useful to ensure specific
versions of a complete set of eggs are installed
- Added option "-keep-installed"/"-x" that only installs explicitly
named extensions given on the command line, if they are not
already installed
- Added option "-list" that lists all extensions available
- Added option "-csi" to specify what interpreter should be used
to execute the setup-script of an installed extension
- Added option "-scan" that scans a local directory for the highest
available extension versions available
- Added option "-reinstall" that reinstalls all currently installed
eggs, keeping their versions, if possible
- Fixed bug with "chicken-install -test" when multiple extensions where
given on the command line (thanks to Kon Lovett)
- installing subdirectories works now on Windows.
- fixed handling of "-force" when a "chicken" dependency version did
not match
- added new option "-show-foreign-depends" which lists foreign egg
dependencies (if available)
- added new option "-show-depends" which lists egg dependencies
- added support for "or"-dependencies where a dependency is considered
installed if one of a set of candidates is available
- "chicken-profile"
- fixed some bugs in the profiler and the runtime support code for
profiling (thanks to Sven Hartrumpf)
- "chicken-status"
- Added option "-list" that dumps versions of installed extensions
in a format suitable for "chicken-install -override ..."
- the "pattern" argument is now actually treated as a pattern and not
as a regex
- Core syntax
- "assert" shows the line number of the form when a second argument
is not given or is a literal string
- "parameterize" now correctly omits invoking the guard procedure when
the old value is restored (thanks to Joo ChurlSoo)
- added ":", "the" and "assume" syntax for declaring types
- added "define-specialization" form to declare type-driven procedure
call rewrites in compiled code
- Syntax expander
- Fixed a bug that caused imported identifiers to leak into the
macroexpansion/compile-time environment (reported by Christian Kellermann)
- Peter Bex fixed a bug that caused bound variables to be incorrectly
renamed in quoted literals (thanks to Matthew Flatt)
- fixed devious bug in the invocation and generation of transformer
procedures
- using normal "lambda" forms as transformers for local or global
syntax definitions is deprecated - one should use "syntax-rules",
"er-macro-transformer" or "ir-macro-transformer" from now on
- Runtime system
- support for re-loading of compiled files has now been completely
removed
- the maximum length of strings is no longer limited to a 24-bit
number on 64-bit architectures but can be 56 bits.
- string-comparison handles embedded '\0' characters.
- numerical predicates handle infinity and NaN correctly.
- deprecated "[+-]nan", "[+-]inf" and other notations "accidentally"
accepted by Chicken due to the underlying C library's strtod() function,
standardizing on "[+-]nan.0" and "[+-]inf.0" from R6RS (and soon R7RS),
when displaying numbers only these forms are generated now.
- signals are queued to some extent and the interrupt handling has
been cleaned up somewhat
- the interpreter handles SIGINT directly - loading the "posix" unit
is not needed anymore to handle this feature
- changed default nursery size slightly and fixed a bug that caused
incorrect (too small) nursery sizes on 64-bit platforms
- deprecated the compiler option "-heap-initial-size", "-heap-growth"
and "-heap-shrinkage"
- the assembly-language stub routine for the implementation of "apply"
was broken for Sparc64 systems and has been disabled for this platform
- signal masks were accidentally reset upon GC for some platforms; use
sigsetjmp/siglongjmp on BSD, Linux, MacOS X and Haiku
- Type system
- added new type-specifiers "input-port", "output-port", "(list-of T)"
and "(vector-of T)"
- the type-specifiers "(vector T ...)" and "(list T ...)" represent
fixed size lists and vectors now
- added qualified types ("forall"), optionally with type constrains
- added the "define-type" special form and type-abbreviations
- added "compiler-typecase", a compile-time typematching form
- Module system
- Added "interfaces", which are named groups of exports
- Added "functors", which are parameterized modules
- Modules can now be aliased
- New syntax:
(define-interface NAME EXPORTS)
(functor (NAME ...) EXPORTS ...)
- Extended syntax of "module" for aliasing and functor-instantiation
- the "scheme" module has been integrated into the core library and
is not installed as a separate import library anymore
- added core module "r4rs" containing only bindings for R4RS identifiers
- added core module alias "r5rs" for "scheme" module
- added "module-environment" which returns an evaluation environment
for the bindings of a module
- fixed bugs related to using "export"/"reexport" in combination with
wildcard ("*") module export lists (thanks to "megane")
- Foreign function interface
- locatives are allowed as arguments declared "c-pointer"
* Bail out of a trial if byte count exceeds best byte count so far.
* Added -bail and -nobail options. Use -nobail to get a complete report
of filesizes.
* Added -blacken option, to enable changing the color samples of any
fully-transparent pixels to zero in PNG files with color-type 4 or 6,
potentially improving their compressibility.
pkgsrc changes:
* "user-destdir" is default these days, remove setting.
Changes in sbcl-1.1.0 relative to sbcl-1.0.58:
* enhancement: New variable, sb-ext:*disassemble-annotate* for controlling
source annotation of DISASSEMBLE output. Defaults to T.
* enhancement: TIMEOUT arguments added to WITH-MUTEX and WITH-RECURSIVE-LOCK, and
WAIT-P argument added to WITH-RECURSIVE-LOCK.
* enhancement: SB-EXT:ATOMIC-PUSH and SB-EXT:ATOMIC-POP allow atomic operations
on list heads.
* enhancement: Optional features (not enabled by default) allow the
use of signals for inter-thread synchronization to be reduced on certain
supported platforms (currently Linux, Solaris, and FreeBSD on x86 and
x86-64). Set (and :sb-thread :sb-safepoint :sb-thruption :sb-wtimer)
to test these experimental features. Known remaining bugs include minor
thread safety issues, less timely freeing of memory by GC, and certain
(not yet optimally low) runtime overhead. Thanks to Anton Kovalenko.
* optimization: CL:SORT and CL:STABLE-SORT of lists are faster and use fewer
comparisons, particularly on almost-sorted inputs.
* bug fix: Reading floats with large exponents no longer takes too much time
before reporting that the exponent is too large.
* bug fix: SB-BSD-SOCKETS:SOCKET-RECEIVE with a UDP socket now works
correctly when the received datagram is larger than the provided buffer.
(lp#1023438, thanks to Robert Uhl)
* bug fix: SB-EXT:GET-CAS-EXPANSION returned a bogus read-form when given
a SYMBOL-VALUE form with a constant symbol argument.
* bug fix: SB-EXT:GET-CAS-EXPANSION signaled an error when a macro expanding
into a DEFCAS defined place was used as the place.
* bug fix: FIND and POSITION signaled a type-error when non-bits where looked
for from bit-vectors.
* bug fix: a race condition around thread creation could (in SBCL 1.0.57)
lead to internal errors or crashes (lp#1058799).
* documentation: a section on random number generation has been added to the
manual. (lp#656839)
* Noteworthy changes in release 2.14 (2012-09-24) [stable]
- Added asn1_read_node_value() to obtain a node's value.
This is to deprecate the export of the node_asn internal structure
for the upcoming 3.x release. The ASN1_DATA_NODE type and the
ASN1_ETYPE_* constants were added to support the new function.
This is purely a bug fix release, and contain no new functionality
since 0.6.0.
This release fixes a bug in the iterator implementation of
flat_segment_tree. Prior to this release, the iterator would treat
the position immediately before the end position to be the end
position, which would result in incorrectly skipping the last data
position during iteration. This release contains a fix for that
bug.
It also contains fixes for various build errors and compiler
warnings.
Many thanks to David Tardon, Stephan Bergmann, Tomáš Chvátal,
and Markus Mohrhard for having submitted patches since the release
of 0.6.0.
Changes in 1.8 final:
Added support for OWNE ID3 frames.
Changed key validation in the new PropertyMap API.
ID3v1::Tag::setStringHandler will no londer delete the previous
handler, the caller is responsible for this.
File objects will also no longer delete the passed IOStream
objects. It should be done in the caller code after the File
object is no longer used.
Added ID3v2::Tag::setLatin1StringHandler for custom handling
of latin1-encoded text in ID3v2 frames.
Fixed validation of ID3v2 frame IDs (IDs with
Changes in 1.8 beta:
New API for accessing tags by name.
New abstract I/O stream layer to allow custom I/O handlers.
Support for writing ID3v2.3 tags.
Support for various module file formats (MOD, S3M, IT, XM).
Support for MP4 and ASF is now enabled by default.
Started using atomic int operations for reference counting.
Added methods for checking if WMA and MP4 files are DRM-protected.
Added taglib_free to the C bindings.
New method to allow removing pictures from FLAC files.
Support for reading audio properties from ALAC and Musepack
SV8 files.
Added replay-gain information to Musepack audio properties.
Support for APEv2 binary tags.
Many AudioProperties subclasses now provide information about
the total number of samples.
Various small bug fixes.
The changes against 1.13.0 are rather small:
a fix for a crash happening when mixing different gcc versions
and demangling fails (fdo#52539)
using portable way to include header for free (fdo#52536)
New in 1.12.4:
* WARNING: Future backward-incompatibilities!
- Future versions of Automake will likely drop support for the
long-deprecated 'configure.in' name for the Autoconf input file.
You are advised to use the recommended name 'configure.ac' instead.
- Support for the "Cygnus-style" trees (as enabled by the 'cygnus'
option) will be removed in the next major Automake release (1.13).
- The long-obsolete (since automake 1.10) AM_PROG_MKDIR m4 macro will
be removed in Automake 1.13. The $(mkdir_p) make variable and the
@mkdir_p@ substitution will still remain available (as aliases of
$(MKDIR_P)) for the moment, for better backward compatibility.
- Autoconf 2.65 or later will be required by the next major Automake
version (1.13). Until now, Automake has required Autoconf version
2.62 or later.
- Starting from the next major Automake version (1.13), the rules
to build pdf, ps and dvi output from Texinfo input will use the
'--build-dir' option by default. Since such an option was only
introduced in Texinfo 4.9, this means that Makefiles generated by
future Automake versions will require at least that version of
Texinfo.
- Starting from the next major Automake version (1.13), the parallel
testsuite harness (previously only enabled by the 'parallel-tests'
option) will become the default one; the older serial testsuite
harness will still be available through the use of the 'serial-tests'
option.
- The following long-obsolete m4 macros will be removed in the
next major Automake version (1.13):
AM_PROG_CC_STDC: superseded by AC_PROG_CC since October 2002
fp_PROG_CC_STDC: broken alias for AM_PROG_CC_STDC
fp_WITH_DMALLOC: old alias for AM_WITH_DMALLOC
AM_CONFIG_HEADER: superseded by AC_CONFIG_HEADERS since July 2002
ud_PATH_LISPDIR: old alias for AM_PATH_LISPDIR
jm_MAINTAINER_MODE: old alias for AM_MAINTAINER_MODE
ud_GNU_GETTEXT: old alias for AM_GNU_GETTEXT
gm_PROG_LIBTOOL: old alias for AC_PROG_LIBTOOL
fp_C_PROTOTYPES: old alias for AM_C_PROTOTYPES (which was part
of the now-removed automatic de-ANSI-fication
support of Automake)
- All the "old alias" macros in 'm4/obsolete.m4' will be removed in
the next major Automake version (1.13).
- The '--acdir' option of aclocal is deprecated, and will probably
be removed in the next major Automake release (1.13). You should
use the options '--automake-acdir' and '--system-acdir' instead
(which have been introduced in Automake 1.11.2).
- The 'missing' script will not try anymore to update the timestamp
of out-of-date files that require a maintainer-specific tool to be
remade, in case the user lacks such a tool (or has a too-old version
of it). In fact, starting from Automake 1.13, all it'll do will be
giving more useful warnings than a bare "command not found" from a
make recipe would.
* Warnings and deprecations:
- Warnings in the 'obsolete' category are enabled by default both in
automake and aclocal.
* Miscellaneous changes:
- Some testsuite weaknesses and spurious failures have been fixed.
Version 1.5.13beta01 [August 8, 2012]
Do not compile PNG_DEPRECATED, PNG_ALLOC and PNG_PRIVATE when __GNUC__ < 3.
Removed references to png_zalloc() and png_zfree() from the manual.
Revised PNG_FP_EXPORT and PNG_FIXED_EXPORT macros to avoid generating
lone semicolons (patch ported from libpng-1.6.0beta11).
Version 1.5.13beta02 [September 10, 2012]
Corrected handling of the image array and the row_pointers array in example.c
When png_set_filler is used to strip a filler channel during write, the
code prior to 1.5 would ignore the case where the output required an
alpha channel or when the output was a palettized PNG. In libpng-1.5 the
ignorance was lost and libpng proceeded to strip the channel resulting
in a bad (potential memory overwrite) failure later. This reverts
the behavior to the pre-1.5 state but issues a warning. libpng-1.6 is
expected to issue an error on the erroneous png_set_filler call.
Use png_memset() consistently (pngmem.c contained some bare "memset" calls).
Version 1.5.13rc01 [September 17, 2012]
No changes.
Version 1.5.13 [September 27, 2012]
No changes.