Enhancements were made to code features such as "use", which now explicitly enables feature bundles, a more consistent "eval" operator, and a revamped "substr" function. The "__SUB__" sequence now returns a reference to the current subroutine, allowing for recursive subroutines to be written more simply. Support for Unicode 6.1 was improved. Many other minor improvements and bugfixes, along with several deprecations, were made
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"
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)
The GCC projected released version 4.7.2 on 20 September. There were few
diff changes (only core and ada) between it and version 4.7.1, so it's a
straightforward update.
Release announcement: http://gcc.gnu.org/ml/gcc/2012-09/msg00181.html
Notable Excerpts:
GCC 4.7.2 is the first bug-fix release containing important fixes for
regressions and serious bugs in GCC 4.7.1 with over 70 bugs fixed since
the previous release
A notable change in GCC 4.7.2 compared to 4.7.1 are ABI bug fixes
related to some C++11 templates (std::list and std::pair). As a result,
code using those templates in C++11 mode is again ABI compatible with
code in C++03/C++98 mode or C++11 mode of GCC 4.6 and earlier, but might
be ABI incompatible with code compiled by GCC 4.7.1 or 4.7.0 in C++11
mode.
---
otcl-1.14 Released Sat Oct 29 2011
(Major change is to update for tcl-8.5 changes, contributed from Amir
Habibi (habibi@uci.edu)) TCL 8.5.3 has several fundamental internal and
API changes that render OTCL's use of its low level data structures and
API syntactically and semnatically incompatible. The major changes are:
* Variables are kept in a new internal hashtable type named
VarInHash. Majority of hashtable API functions do not take this
into consideration and lead to segmentation faults. Unfortunately
majority of the potential API functions are defined as static in
original TCL code under generic/tclVar.c and we have to redefine
them in OTCL code.
CallFrame.varTablePtr doesn't any longer refer to a string based
hashtable. The new type is TclVarHashtable that encapsulates a
VarInHash type hashtable (table) along with a namespace
(nsPtr). It doesn't need to be initialized as TCL engin will
allocate it if a local variable is to be defined.
+ Commands are parsed into object-based and string-based
functions in Tcl_CmdInfo and clientData is not any longer
guaranteed to be iof (Proc *) type.
Changes made in otcl1-13 to make it compatible with TCL 8.5.3 and
hopefully later versions are as follows: (Referenced line numbers
are with regards to the new version)
+ 0059-0064: Modified to reflect the change in the CallFrame. it
also defines TCL_VERSION_8_5_OR_HIGHER to simplify changes.
+ 0069-0083: Define few Tcl_xxx macros to make the changes as
clean as possible. These macros are defined for pre and post
TCL 8.5.3
+ 0587-0597: AddMethod is supposed to keep a copy of a
Tcl_CmdInfo data structure after TCL engine has parsed the tcl
code. ocd input argument is addded to the prototype to deal
with object-based ClientData or the (Proc *) of the tcl
procedure. For internal Object and Class objects only
string-based information is needed by OTCL. Based on this
change, calls to AddMethod in the following lines are
modified: 1418-1423, 1845-1849, 1945, 1954
+ 0609-0612: Apparently TCL calls the delete function on the
Tcl_CmdInfo and we don't need to call it again otherwise glibc
panics b/c of double free call on the same pointer. (I didn't
dig into this one and my fix may cause a memory leak)
+ 0732-0737: ListKeys is used for dumping keys in all hashtables
and since the variables has is no longer a string hash, this
functions is slightly modified to reflect this change. Since
TCL doesn't make VarHash related functions available to
public, we can't automatically recognize a VarInHash type and
I resorted to adding a new input argument, isVarHash, to
explicitly pass the flag to this function. Based on this
change, calls to Listkeys in the following lines are modified:
1372, 1388, 1804
+ 0784: Modified to reflect object-based versus string-based
functions use of clientData and objClientData in Tcl_CmdInfo
respectively.
+ 0920: VarTablePtr doesn't need to be initialized in TCL 8.5.3
and the call to Tcl_InitHashTable for older versions is added
to Tcl_VarHashInitilize macro.
+ 0949-0952: Modified to initialize additional fields in
CallFrame.
+ 1004: Modified to cover the cases where varTablePtr remains
null during the lifetime of the object.
+ 1008-1015: Modified to reflect changes in varTablePtr
+ 1021-1035: This block of code is no longer needed as in TCL
8.5.3 hPtr is removed Var structure and instead VarInHash
encapsualtes Var and Tcl_HashEntry. (This may need further
investigation !!!)
+ 1036-137: Modified to cover the cases where varTablePtr
remains null during the lifetime of the object.
+ 1069-1071: Modified to use macros that deal with different
ways of initialization of varTablePtr in TCL 8.5.3 and older
versions.
+ 1208-1210: Modified to use macros that deal with different
ways of initialization of varTablePtr in TCL 8.5.3 and older
versions.
+ 1211: Modified to clarify the assignment. This is not related
to changes for TCL 8.5.3
directory name used the new GCC_TARGET_MACHINE build define which is
${MACHINE_GNU_PLATFORM} by default and already used in
gcc47-libs/buildlink3.mk.
s/${TARGET_TRIPLE}/${GCC_TARGET_MACHINE}/
Note that because the default for GCC_TARGET_MACHINE _should_ be the
same as the 'gcc -dumpmachine' output theres no need for a revbump.
is the minimum version for gcc47 and gcc47-libs.
Remove BUILDLINK_ABI_DEPENDS.gcc47-libs as its now redundant.
This fixes the case where USE_PKGSRC_GCC_RUNTIME=yes and gcc-aux is needed
(In that case _GCC_REQD is 20120614, the version number of gcc-aux) as
pointed out by Jonathan Perkin.
Although Ruby 1.9.2 is still supported version, Ruby 1.9.3 has enough
compatibility for pkgsrc's packages and migration terms on pkgsrc now
ended.
And it costs to supporing multiple versions of Ruby along with multiple
versions of Ruby on Rails, too.
Although Ruby 1.9.2 is still supported version, Ruby 1.9.3 has enough
compatibility for pkgsrc's packages and migration terms on pkgsrc now
ended.
And it costs to supporing multiple versions of Ruby along with multiple
versions of Ruby on Rails, too.
Admittedly most of this cleanup is petty cosmetic stuff, but there are
so many warnings that real problems are obscured such as the direct use
of $LOCALBASE. Also the use of parentheses instead of curly braces
caused several fake errors about not finding patches.
Admittedly most of this cleanup is petty cosmetic stuff, but there are
so many warnings that real problems are obscured such as:
* refering jpeg buildlink directly
* using $LOCALBASE directly
LDFLAGS.DragonFly+= -rdynamic
Add four patches to support DragonFly:
* Teach configuration about DragonFly
* Add DragonFly to BSD signal handler code
* Fix mbsrtowcs conftest segfault of configure script
* Fix cast on string.c
Patches contributed by:
Chris Turner
Jelle Hermsen
Patches will be submitted upstream.
Revbump due to possible change due to result of mbstrowcs test.