Pkgsrc changes:
- Add a patch to track the addition of Parrot_get_cpu_type() to misc.c,
which is platform-dependent on NetBSD.
- Fix pbc_to_exec.winxed so that there are no rpath build-directory
references in installed executables. Reported upstream as issue #803.
- Adjust PLIST to match installed files.
Upstream changes:
- Core
+ Added .write_bytes and .read_bytes methods to FileHandle and Socket
PMCs.
+ Added Parrot_api_set_stdhandle, Parrot_api_new_call_object and
Parrot_api_setup_signature functions to the embedding API
+ Removed the "can" VTABLE
- Languages
+ Winxed snapshot updated to 1.9.1
- New syntax for parameters in multi
- New syntax for initalization with new
- Cast to var improved
- IMCC
+ Removed .line, .file, setline and setfile directives from IMCC
- Documentation
+ Fixed up Pod in 240 files to pass 't/codingstd/pod_description.t'.
- Tests
+ Added 'docs/pdds' and 'docs/pdds/draft' as files for
'Parrot::Test::Pod.pm' to exclude.
- Build
+ Reduced number of packages under 'lib/Parrot/Pmc2c/'.
+ Added method-level documentation to several of the remaining packages.
+ Added 'docs/pdds' and 'docs/pdds/draft' as files for
'Parrot::Test::Pod.pm' to exclude.
- Community
+ M1, a C-like language that targets M0 had a burst of development
and now has many working examples such as recursive Fibonacci and
recursive factorial : https://github.com/parrot/m1
+ Parrot bindings to LAPACK are being worked on as part of Google
Summer of Code: https://github.com/leto/parrot-lapack
ECL 12.7.1:
===========
* Bugs fixed:
- The implementation of locks and condition variables based on POSIX threads
was not safe under interrupts. It has all been reimplemented using atomic
userspace operations plus a new wait queue.
- :CDECL was not accepted as an FFI declaration due to a typo.
- REMOVE-METHOD and FIND-METHOD were not generic functions.
- MAKE-LOAD-FORM's methods for standard-object, structure-object and
condition did not signal an error).
* Visible changes:
- ECL builds with support for threads by default (where available).
- DIRECTORY no longer complains when it finds an inexistent directory
component: it simply returns NIL as the list of pathnames.
- CASE now complains when the OTHERWISE/T clause is not the last one.
- Instead of issuing an error, LOOP now only produces a STYLE-WARNING
when iteration forms appear at the wrong place, as in (LOOP WHILE ...)
followed by some assignment.
- EXT:MKDIR no longer accepts pathnames as inputs to avoid problems with
pathnames that contain name or type components.
- ENSURE-DIRECTORIES-EXIST accepts the keyword argument :MODE which is
passed to MKDIR.
- In EXT:RUN-PROGRAM the child process is delayed until the parent has created
the process structure and stored the process id in it. Formerly we had race
conditions due to the child exiting before the parent was able to call
sigwait().
- Where available, ECL now defines the constants EXT:+SIGRTMIN+ and
EXT:+SIGRTMAX+, as well as EXT:+SIGRT0+ through EXT:+RTMINn+ where n =
SIGRTMAX - SIGRTMIN Those signals can be then trapped.
- The interrupt handler for floating point exceptions does not care about
the value of EXT:*INTERRUPTS-ENABLED* or similar mechanisms because such
interrupt has to be treated as an error, not as something optional. The
same applies to other evil signals, such as SIGSEGV or SIGBUS.
- New functions (EXT:GET-INTERRUPT-HANDLER code) and
(EXT:SET-INTERRUPT-HANDLER code function-designator) allow the user to
customize how these interrupts are caught. SET-INTERRUPT-HANDLER runs an
implicit EXT:CATCH-SIGNAL.
- ECL now exports the symbols FFI:C-INT-MAX, FFI:C-INT-MIN, FFI:C-LONG-MAX,
etc, which correspond to the POSIX C constants INT_MAX, INT_MIN, LONG_MAX,
and similar ones.
- APROPOS-LIST no longer returns duplicate symbols.
- The ABORT restart is now bound on every new thread (except the main one,
where either the user or the toplevel must take care of that).
* Windows:
- ECL guesses whether the input / output / error streams are consoles. If
so, it sets up a special type of stream that copes with the deficiencies
of read()/write() and similar functions on consoles -- namely that they
may read or write a larger number of bytes than demanded because they
translate the input/output to and from the corresponding codepage.
(EXPERIMENTAL)
- ECL detects the codepage that the console is using and applies it as
the appropriate external format (with :CRLF convention).
- ECL's console stream signals EOF when Ctrl-Z is detected.
* Metaobject protocol:
- Implemented CLOS:COMPUTE-APPLICABLE-METHODS-USING-CLASSES.
- COMPUTE-APPLICABLE-METHODS and CLOS:COMPUTE-EFFECTIVE-METHOD are now
generic functions.
- Implemented and used in the core: VALIDATE-SUPERCLASSES
- UPDATE-DEPENDENT, MAP-DEPENDENTS and related functions have been fixed. They
are now invoked by REMOVE-METHOD and REINITIALIZE-INSTANCE, when acting on
generic functions, standard classes, etc.
- (SETF CLASS-NAME) is now implemented using REINITIALIZE-INSTANCE.
- ENSURE-CLASS-USING-CLASS now registers the class with
FIND-CLASS. ENSURE-CLASS relies on E-C-U-C doing that.
- EXTRACT-LAMBDA-LIST and EXTRACT-SPECIALIZER-NAMES implemented.
- CLOS:GENERIC-FUNCTION-DECLARATIONS and slot CLOS:DECLARATIONS are now
implemented (even if not used by ECL itself).
- Implemented the class CLOS:METAOBJECT
- Implemented SPECIALIZER and EQL-SPECIALIZER, together with
ADD-DIRECT-METHOD, REMOVE-DIRECT-METHOD, SPECIALIZER-DIRECT-METHODS,
SPECIALIZER-DIRECT-GENERIC-FUNCTIONS and EQL-SPECIALIZER-OBJECT. ECL now
uses these objects internally for method dispatch.
- DEFMETHOD now relies on MAKE-METHOD-LAMBDA to create the appropriate
function.
- Implemented COMPUTE-DISCRIMINATING-FUNCTION.
- ECL's discriminating functions use COMPUTE-APPLICABLE-METHODS-USING-CLASSES
on those classes in which the user may redefine or extend the
method. Elsewhere, ECL relies on the internal equivalent of
COMPUTE-APPLICABLE-METHODS, which _always_ memoizes results.
- When reinitializing a class instance, ECL would not remove the class from
its former superclasses.
- The method combination slot of a generic function is now precomputed by
using FIND-METHOD-COMBINATION in SHARED-INITIALIZE.
- METHOD-COMBINATION is now a class with slots and it is used by ECL for
computing effective methods.
- The MOP and CL classes and metaclasses do not contain any slot whose name
is exported by any of the CL or CL-USER packages.
This adds shlib version handling to rubyversion.mk, a fix to configure
(include <sys/time.h> when checking for struct timespec) and a workaround
for broken code if getgrnam_r is available.
Pkgsrc changes -- minor adaptation to installed files.
Upstream changes:
- Core
+ Most internal calls to libc exit(x) have been replaced with
Parrot_x_* API calls or PARROT_FORCE_EXIT
- Documentation
+ 'pdd31_hll.pod' made stable in 'docs/pdds/'.
+ Updated main 'README' to 'README.pod'
+ Updated various dependencies, e.g., 'lib/Parrot/Distribution.pm'.
+ Updated all 'README' files to 'README.pod' files.
+ Added 'README.pod' files to top-level directories.
- Tests
+ Update various tests to pull from new 'README.pod'
+ Updated 't/tools/install/02-install_files.t' to pull from new
'README.pod'
- Community
- Platforms
- Tools
+ pbc_merge has been fixed to deduplicate constant strings and
merge annotations segments
No security fix, but bug fix only,
Fri Jun 29 21:26:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (stack_extend): prevent ALLOCA_N, which reserves a memory
space with for restoring machine stack stored in each threads, from
optimization out. backport r34278 from the trunk.
Mon Jun 18 18:32:43 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
* backport r32609 from trunk.
* ext/openssl/ossl_hmac.c: Revert checking return type of
HMAC_Init_ex as it is not compatible with OpenSSL < 1.0.0.
Mon Jun 18 18:32:43 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
* backport r32606 from trunk.
* ext/openssl/ossl_digest.c: Check return value of EVP_DigestInit_ex.
* ext/openssl/ossl_hmac.c: Check return value of HMAC_Init_ex.
Thanks, Jared Jennings, for the patch.
[ Ruby 1.9 - Bug #4944 ] [ruby-core:37670]
Sun Jun 10 03:00:21 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (ruby_setjmp): need to save the stack after r2 (the Table
of Contents on ppc64) is saved onto the stack by getcontext().
based on <https://bugzilla.redhat.com/show_bug.cgi?id=628715>.
Bug#4411
Thu Jun 7 19:00:35 2012 Kenta Murata <mrkn@mrkn.jp>
* ext/bigdecimal/bigdecimal.c (VpMemAlloc): Fixes a bug reported
by Drew Yao <ayao at apple.com>
Wed Jun 6 15:09:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_thread_join), ext/thread/thread.c (wake_one): adjusts
targets of rest waiting threads to join. [ruby-core:23457]
Wed Jun 6 14:44:13 2012 Kenta Murata <mrkn@mrkn.jp>
* bignum.c (rb_big2dbl), test/ruby/test_bignum.rb (test_to_f):
A negative Bignum out of Float range should be converted to -Infinity.
[ruby-core:30492] [Bug #3362]
Wed Jun 6 14:06:02 2012 Tanaka Akira <akr@fsij.org>
* lib/webrick/utils.rb: fix fcntl call.
* lib/drb/unix.rb: ditto.
Mon May 21 16:29:47 2012 Akinori MUSHA <knu@iDaemons.org>
* ext/syslog/syslog.c (mSyslog_inspect): Make sure self is a
module before calling rb_class2name().
Fri May 11 14:09:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/bigdecimal/bigdecimal.c (PUSH): to prevent VALUE from GC,
must not cast it to unsigned long, which may be shorter than
VALUE, and the result can be mere garbage.
Sat Apr 14 18:51:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* bignum.c (rb_big2str0): prevent working clone from
GC. [exerb-dev:0578]. patched by MURASE Masamitsu
<masamitsu.murase AT gmail.com> at [exerb-dev:0580]
Fri Mar 2 11:44:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* marshal.c (mark_dump_arg): mark destination string. patch by
Vit Ondruch. [Bug #4339]
* marshal.c (clear_dump_arg, clear_load_arg): clean up also data
tables as same as symbols tables.
Fri Mar 2 11:44:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* marshal.c (struct {dump,load}_arg): manage with dfree, instead
of using local variable which may be moved by context switch.
Minor fixes in documentation
Path to AWK interpreter is detected at build time (not hardcoded
/usr/bin/awk). This fixes runawk on, for example, Haiku.
Clean-ups in build system. mk-configure-0.23.0 is required.
19-July-2012
o Core
* Fixed bug #62443 (Crypt SHA256/512 Segfaults With Malformed Salt)
* Fixed bug #62432 (ReflectionMethod random corrupt memory on high
concurrent)
* Fixed bug #62373 (serialize() generates wrong reference to the
object).
* Fixed bug #62357 (compile failure: (S) Arguments missing for
built-in function __memcmp)
* Fixed bug #61998 (Using traits with method aliases appears to result
in crash during execution)
* Fixed bug #51094 (parse_ini_file() with INI_SCANNER_RAW cuts a value
that includes a semi-colon)
* Fixed potential overflow in _php_stream_scandir (CVE-2012-2688)
o EXIF
* Fixed information leak in ext exi
o FPM
* Fixed bug #62205 (php-fpm segfaults (null passed to strstr)
* Fixed bug #62160 (Add process.priority to set nice(2) priorities)
* Fixed bug #62153 (when using unix sockets, multiples FPM instances)
* Fixed bug #62033 (php-fpm exits with status 0 on some failures to
start)
* Fixed bug #61839 (Unable to cross-compile PHP with --enable-fpm)
* Fixed bug #61835 (php-fpm is not allowed to run as root)
* Fixed bug #61295 (php-fpm should not fail with commented 'user'
* Fixed bug #61218 (FPM drops connection while receiving some binary
values in FastCGI requests)
* Fixed bug #61045 (fpm don't send error log to fastcgi clients).
(fat) for non-root start)
* Fixed bug #61026 (FPM pools can listen on the same address).
(fat) can be launched without errors)
o Iconv
* Fixed bug #55042 (Erealloc in iconv.c unsafe)
o Intl
* Fixed bug #62083 (grapheme_extract() memory leaks)
* Fixed bug #62081 (IntlDateFormatter constructor leaks memory when
called twice)
* Fixed bug #62070 (Collator::getSortKey() returns garbage)
* Fixed bug #62017 (datefmt_create with incorrectly encoded timezone
leaks pattern)
* Fixed bug #60785 (memory leak in IntlDateFormatter constructor)
* ResourceBundle constructor now accepts NULL for the first two arguments
o JSON
* Fixed bug #61359 (json_encode() calls too many reallocs)
o libxml
* Fixed bug #62266 (Custom extension segfaults during xmlParseFile
with FPM SAPI)
o Phar
* Fixed bug #62227 (Invalid phar stream path causes crash)
o Readline
* Fixed bug #62186 (readline fails to compile - void function should
not return a value)
o Reflection
* Fixed bug #62384 (Attempting to invoke a Closure more than once
causes segfault)
* Fixed bug #62202 (ReflectionParameter::getDefaultValue() memory
leaks with constant)
o Sockets
* Fixed bug #62025 (__ss_family was changed on AIX 5.3)
o SPL
* Fixed bug #62433 (Inconsistent behavior of
RecursiveDirectoryIterator to dot files)
* Fixed bug #62262 (RecursiveArrayIterator does not implement
Countable)
o XML Writer
* Fixed bug #62064 (memory leak in the XML Writer module)
o Zip
* Upgraded libzip to 0.10.
{
19-July-2012
o Zend Engine
* Fixed bug #51094 (parse_ini_file() with INI_SCANNER_RAW cuts a value
that includes a semi-colon)
o COM
* Fixed bug #62146 com_dotnet cannot be built shared
o Core
* Fixed potential overflow in _php_stream_scandir, CVE-2012-2688
* Fixed bug #62432 (ReflectionMethod random corrupt memory on high
concurrent)
* Fixed bug #62443 (Crypt SHA256/512 Segfaults With Malformed Salt)
o Fileinfo
* Fixed magic file regex support
o FPM
* Fixed bug #61045 (fpm don't send error log to fastcgi clients)
* Fixed bug #61835 (php-fpm is not allowed to run as root)
* Fixed bug #61295 (php-fpm should not fail with commented 'user' for
non-root start)
* Fixed bug #61026 (FPM pools can listen on the same address)
* Fixed bug #62033 (php-fpm exits with status 0 on some failures to
start)
* Fixed bug #62153 (when using unix sockets, multiples FPM instances
can be launched without errors)
* Fixed bug #62160 (Add process.priority to set nice(2) priorities)
* Fixed bug #61218 (FPM drops connection while receiving some binary
values in FastCGI requests)
* Fixed bug #62205 (php-fpm segfaults (null passed to strstr))
o Intl
* Fixed bug #62083 (grapheme_extract() memory leaks)
* Fixed bug #62081 (IntlDateFormatter constructor leaks memory when
called twice)
* Fixed bug #62070 (Collator::getSortKey() returns garbage)
* Fixed bug #62017 (datefmt_create with incorrectly encoded timezone
leaks pattern)
* Fixed bug #60785 (memory leak in IntlDateFormatter constructor)
o JSON
* Reverted fix for bug #61537
o Phar
* Fixed bug #62227 (Invalid phar stream path causes crash)
o Reflection
* Fixed bug #62384 (Attempting to invoke a Closure more than once
causes segfault)
* Fixed bug #62202 (ReflectionParameter::getDefaultValue() memory
leaks with constant)
o SPL
* Fixed bug #62262 (RecursiveArrayIterator does not implement Countable)
o SQLite
* Fixed open_basedir bypass, CVE-2012-3365
o XML Write
* Fixed bug #62064 (memory leak in the XML Writer module)
o Zip
* Upgraded libzip to 0.10
The condition in the gcc-aux buildlink3.mk file requires the file
mk/pkg-build-options.mk to be included in order to work. This fixes the
bug introduced yesterday.
The NLS option is optional, but the buildlink pulled in gettext-lib
unconditionally. This caused failures in Tinderbox and pbuld chroot
when gettext-lib couldn't be found in those clean environments. The
final result is that all Ada programs file to build in those environments.
Also removed whitespace from DESC.
and various attempts to fix it have failed. Plus, gcc3 is highly obsolete
at this point and it's hardly worth spending effort on this. I believe
gcc-java support is available in most or all of the gcc4 packages.
Until now, GCC builders had to choose between Ada and C/C++ on the
following platforms:
i386-FreeBSD
i386-DragonFly
On these platforms, depending on the value of the configuration macro
TARGET_96_ROUND_53_LONG_DOUBLE, either Ada precision or C/C++ long
double precision was broken. The reason is that the floating point unit
of these platforms round off real-time calculations to 53-bit mantissas.
GCC will adjust accordingly to compensate. Since a common backend is used
for all languages, one had to choice which language they wanted correct.
The solution is to break out the object file responsible for this from
the common backend library. Ada now receives an altered version of
insn-modes.o, one that instructs the FPU not to round off the results.
This is all handled by patched Makefiles.
Other changes:
- Configure DragonFly to add ".note.GNU-stack" section to assembly files
to determine if program needs executable stacks
- Skip 2 subtests of Wconversion-real on i386 FreeBSD and DragonFly.
Due to the rounding behavior mentioned above, they fail to produce
error messages as expected. It's not possible to set target with
xfail, and every target && target seems not work work. So we will
assume all gcc-aux platform targets are long-double capabile and
just set xfail for x86 FreeBSD and DragonFly.
- Rework Fortran large real test 2 to skip on x86_64 *BSD. This test
should pass on x86 machines.
- Rework Fortran large real test 3 to be skipped when compiles with -O0
only x86_64 machines. All other combinations will pass.
- Rename C format test typedef from quad_t to quad2_t. DragonFly
has a standard type called quad_t and the type conflict causes a
large number of gcc tests to fail.
- Add dummy dg-error line to avoid an assembly comparison tests on
large files not built (test was marked as UNSUPPORTED but dejagnu is
too dumb to know not to check for the tests' products.)
- Reorder path passed during build when using an already-built gcc-aux
compiler to build new compiler. If gnat-aux is also installed, it
would use the gnat* tools from that compiler rather than gcc-aux
which results in build failure (different versions of tools are
getting used together resulting in build failure).
> ruby193 binary built on NetBSD/sparc64 with gcc 4.5.1 and the default -O2
> dumps core during generating RDocs.
> Using -O1 works around.
ruby193 binary with this hacks.mk is confirmed by running net/mikutter
on Ultra5.
Like i386-FreeBSD, the i386-DragonFly floating point unit uses a 53-bit
mantissa. GCC uses the TARGET_96_ROUND_53_LONG_DOUBLE macro to know
which platforms behave this way.
Unfortunately, setting this macro to 1 breaks precision on Ada, and
leaving it at 0 breaks precision on c/c++ long double handling. However
lang/gcc47 likely will never support Ada, so we'll favor c/c++. This
is only an issue for i386; the setting on x86_64 should be zero as it
uses 64-bit precision.
The primary difference between this compiler package and lang/gcc47 is
that lang/gcc-aux supports the Ada language. Additionally, it is
intended that the USE_LANGUAGES makefile variable whill be extended to
recognize "ada" as a valid language, and that specifying it will cause
lang/gcc-aux to be used to build the package.
All current Ada-based packages will be modified to build with
USE_LANGUAGES+= ada rather than specifying a dependency on lang/gnat-aux,
the other Ada-capable compiler in pkgsrc based on gcc-4.6.3.
lang/gcc-aux supports C, C++, Objective-C, Fortran, and Ada by default,
but the latter four languages can be disabled via the options framework.
The three non-default options are "nls", "testsuite" and "static" which
enable Native Language Support, languages tests, and building the compiler
statically.
The "static" option is unalterably enabled for NetBSD in order to use dl_iterate_phdr error handling on NetBSD 6. On the NetBSD 6 beta builds,
exceptions won't unwind properly with the libgcc_s shared library, and
the issue seems to be external to gcc-aux. It's hoped the libgcc_s
exception handling works on NetBSD 5.x series as dl_iterate_phdr isn't
supported by rtld there, but gcc-aux hasn't been tested on 5.x yet.
lang/gcc-aux can be built by 5 platforms currently: NetBSD i386/x86_64,
DragonFly i386/x86_64, and OpenSolaris i386. New platform support
requires new bootstraps. FreeBSD i386/x86_64 could be added easily as
bootstrap compilers are available for FreeBSD ports lang/gnat-aux.
OpenBSD bootstrap compilers have been built but never used, but further
patches are on a couple of gcc's configuration files are needed as well
as testing to provide OpenBSD support.
All five platforms pass all tests (over 3200) in the Ada testsuite.
See http://gcc.gnu.org/gcc-4.7/changes.html
for more information about improvements over the GCC 4.6 series.
Pkgsrc changes:
* Remove patch-ak, as the fix is now adopted upstream.
Upstream changes:
- Core
+ Winxed snapshot updated to 1.7.0
+ Add type introspection to lexical variables.
+ New 'tools/release/parrot_github_release.pl' script to automate
updates to the 'parrot.github.com' and 'parrot-docsx' repositories.
+ Numerous casting and consting fixes thanks to GCC 4.8.
- Documentation
+ Updated 'docs/projects/release_manager_guide.pod'
+ Updated 'docs/projects/release_parrot_github_guide.pod'
+ Improved function documentation.
- Tests
- Community
- Platforms
+ Fixed alignment issues on ia64, sparc and mipsel.
+ Fixed a platform-specific issue with dlclose().
ECL 12.2.1:
===========
* Bugs fixed:
- Fixed several dozens of typos.
- ENSURE-DIRECTORIES-EXIST did not work properly with logical pathnames.
- EXT:SET-LIMIT with option EXT:FRAME-STACK corrupted the frame stack.
- The array of boot-time symbols is fixed and independent of the features
that are compiled in. This is essential for cross-compilation and also
for sharing C code among different builds.
- Fixed externalization of bytecodes with literals that need MAKE-LOAD-FORM.
- When parsing a floating point number at least one digit should be
present. ECL parsed +.e0 as +0.0e0, instead of as a symbol.
- For OS X Lion we need a newer version of the garbage collector. Since the
maintainers' advise is that we use the unstable tree, we have made a copy
and use it _only_ for this port (src/gc-unstable).
* Visible changes:
- When printing error messages, the condition type is shown (M. Mondor)
- SI:TOP-LEVEL, when invoked without arguments, does not process the
command line.
- The command line used by EXT:PROCESS-COMMAND-ARGS is now by default
the one stored in *COMMAND-ARGS*, and this may be "cleared" by the
user.
- SOCKET-MAKE-STREAM now accepts an :ELEMENT-TYPE argument.
- When --enable-rpath is used in combination with --with-gmp-prefix, then the
path of the GMP library is hardcoded into ECL. If the remaining libraries
(GC, libffi) are in a similar location this will make ECL work without
further flags, and without modifying LD_LIBRARY_PATH or DYLD_LIBRARY_PATH.
- All arguments after the '--' command line option are stored in a global
variable, ext:*unprocessed-ecl-command-args*.
- In the rules passed to ext:process-command-args, :stop now implies that all
remaining arguments including the current one are collected and passed to
the rule code. An example of use of this option
;; Collect all arguments _after_ the command line option --
("--" 1 (setf ext:*unprocessed-ecl-command-args* (rest 1)) :stop)
;; Collect all arguments including the first unknown one
("*DEFAULTS*" 1 (setf ext:*unprocessed-ecl-command-args* 1) :stop)
- ECL will always build, by default, with support for Unicode strings.
- EXT:GETENV coerces its input argument to type BASE-STRING.
- The garbage collector would reset the counters on every call to
SI:GC-STATS. This made nested TIME calls not to work, as the statistics of
the inner call would spoil those of the outer one. This has been fixed.
- ECL implements CDR 6 (ext:*inspector-hook*) as described in
http://cdr.eurolisp.org/document/6/index.html
- ECL implements CDR 5 (Sub-interval Numerical Types) as described in
http://cdr.eurolisp.org/document/5/index.html
- ECL ships libffi together with its source tree, much like GMP and GC.
- On POSIX platforms ECL traps SIGCHLD and uses it to update the status of
external processes.
- DIRECTORY accepts the keyword argument :RESOLVE-SYMLINKS.
- Compiling files now generates C headers with the extension "eclh". This
is done to avoid accidentally generating header files with the same name
as those in the C library. Take for instance, float.lsp -> float.h.
- ECL no longer relies on "git" being installed to gather the git commit id
and setting (ext:lisp-implementation-vcs-id).
- When building shared and statically linked libraries, ECL creates an
extra function that performs two tasks: initializing ECL if it wasn't done
before, and initializing the library. This can be used to create standalone
libraries to be linked with other programs. The name of the function typically
begins with main_dll or main_lib but it is output by ECL on screen.
- Hash tables do no longer have implicit locking. All complex structures in
ECL (arrays, hash tables, objects) should be dealt with sufficient care on
the user side, just as in other programming languages, making use of
WITH-LOCK and similar facilities.
- In OPEN the default format is :UTF-8 for Unicode builds and :LATIN-1 for
others, and the stream element type is always CHARACTER by default.
- Function read_VV is renamed to ecl_init_module()
- Initialization of random number generator is done using only 16 bytes from
/dev/urandom (Phillip Marek).
- Each thread keeps a copy of the process sigmask (POSIX) and it is inherited
by children thread. The sigmask can be manipulated by the function
EXT:CATCH-SIGNAL which has the signature
(ext:catch-signal signal-code action &key process)
The ACTION is one of :IGNORE, :DEFAULT, :CATCH, determining what ECL does
when it receives the signal, or it can be :MASK/:UNMASK to determine whether
the process is blocking the signal or not. The optional argument :PROCESS
only applies to :MASK/:UNMASK and it can be the current process, some
process that has not been activated or any other value (indicating that
the function has a global effect, as sigprocmask).
- Allocate executable memory using libffi instead of using just the
Boehm-Weiser garbage collector.
- In bytecodes.h, deactivate the threaded interpreter when using the LLVM
compiler. The problem is that llvm-gcc disguises itself as GCC but it is
not capable of properly compiling the jump table.
- Implemented SEQUENCE-STREAMs, which are input/output streams defined on some
specialized array type. The functions to create them are
(ext:make-sequence-input-stream vector &key :start :end :external-format)
(ext:make-sequence-output-stream vector &key :external-format)
* If the array is a string, it is a character stream.
- When no external format is supplied, it defaults to the usual encoding
and the stream behaves like a string stream.
- When an external format is supplied, each character in the string
is interpreted as a single byte and used for that external format.
* If the array is specialized over integers and EXTERNAL-FORMAT is NIL
the stream is a binary stream.
* Otherwise, it is a binary string but READ/WRITE-CHAR may be used on it.
Reading and writing does not preserve the original word size of the array
but rather threads the array as a collection of bytes (octets), writing
sequentially over it. Thus, if you use encodings such as UCS2 and UCS4, make
sure that you choose the right endianness to match the shape of the array.
- DELETE-FILE works on empty directories.
- In DIRECTORY, :RESOLVE-SYMLINKS defaults to T.
- Added POSIX function (EXT:CHMOD filename mode)
- ECL's compiler is now less verbose and hides performance notes, as well as
invocations of the C compiler. This can be modfied by changing the type
specifier in c:*suppress-compiler-messages*.
- Hash tables can now be printed readably when *READ-EVAL* is true. This is
done using two new functions, EXT:HASH-TABLE-CONTENT and
EXT:HASH-TABLE-FILL.
- When a compiler macro fails, ECL simply ignores the errors and
continues. This is more to the spirit of the compiler macros, as explained
here http://lists.common-lisp.net/pipermail/pro/2011-December/000675.html
- INLINE declarations now actually cause the function to be inlined. If
the function is also proclaimed as INLINE, ECL will store a copy of its
definition for later use _in other files_. Otherwise INLINE declarations
remain local to the file being processed.
- ECL now implements weak hash tables. They are built as ordinary hash tables
with an extra argument, :WEAKNESS, which may be :KEY, :VALUE,
:KEY-AND-VALUE, or NIL, for the default behavior. The status of the hash
table is returned by EXT:HASH-TABLE-WEAKNESS. Note that these associations
are no substitute for proper management of resources, as the time of
collection can not be guaranteed.
- In pathnames, ".." is translated to :UP, not :BACK.
- ECL introduces two special forms, EXT:CHECKED-VALUE and EXT:TRULY-THE, which
have the same syntax as THE, but in the first case lead to a type assertion
at low safety levels and in the second case lead to an unchecked
declaration. By default THE maps to EXT:CHECKED-VALUE (as in SBCL), but this
may be controlled globally using the declaration/proclamation
EXT:THE-IS-CHECKED.
- Unicode strings were not properly saved in C compiled code.
Upstream changes:
- API Changes
+ The signature of getprop was changed from (PMC,String,PMC) to
(PMC, PMC,String) for consistency
- Core
+ Parrot Calling Conventions (pcc) now reuses Continuation PMCs
internally, which reduces GC work by 25% and improves
the fib.pir benchmark by 6%
+ Winxed snapshot updated to 1.6.devel 44a04cfa7b
+ Improved the detection of Clang-ish compilers during configuration
+ Fixed a possible segfault bug when reading packfiles with no
constants or main_sub
+ By default, Parrot has now elevated these GCC warnings to errors
during compile time:
implicit-function-declaration, undef, missing-braces,
nested externs, old-style-definition, strict-prototypes,
+ The OS Dynamic PMC now has separate functions to unlink a file
and remove an empty directory (rmdir)
+ Fix building on Cygwin due to an improperly named DLL file
+ Various small bug fixes pointed out by static and dynamic analysis
tools
- Branches
+ Work on M0 continues now in the m0 branch, which contains both
implementations (currently C and Perl) and specification.
+ Good progress has been made on the threads branch which builds
on the green_threads branch. This gets Parrot much closer to
being able to utilize multiple CPU cores seemlessly. More details
at http://niner.name/Hybrid_Threads_for_the_Parrot_VM.pdf
- Documentation
+ New release manager documentation for parrot.github.com :
http://git.io/parrot-github-guide
- Community
+ Parrot was accepted to Google Summer of Code 2012!
Ideas Page: http://git.io/parrot-gsoc-2012
GCC47 was marked NOT-FOR-DRAGONFLY, so support has been added.
* DragonFly-specific files added via patch mechanism
* Some existing patches modified to add DragonFly configuration items
* dl_iterate_phdr error handling support added (FreeBSD support was altered,
NetBSD and OpenBSD support is commented out)
* The java language is taken off as a default option
On the i386 platform, the compiler will build from a full bootstrap, but
one of the later stages fails on x86_64. It fails to find libstdc++.so.6
even though the previous stage library was built and -B, -L flags point
to it. The cause of the platform-specific build failure isn't clear --
The workaround is to disable the bootstrap on DragonFly so that the compiler
is built in one stage instead of three. This workaround could have been
limited to the x86_64-DragonFly platform only, but currently is applied to
i386-DragonFly too.
Solaris build. While here, stop stuffing pointers in ints on 64-bit
platforms (other than Alpha, which it already knew about) and therefore
bump PKGREVISION to 1.
In terms of the core YAP, most changes are small bug fixes. They include
- better support for 64 bits in win64,
- some fixes to the garbage collector
- OSX Lion compilation
- wide char support
- bug in copy_term when some variables have attributes
- fixes to lam interface
- C-interface and SWI support
- over-optimisation of =/2.
- arithmetic exceptions
- write_canonical (Ulrich)
- retracting may not follow lu semantics
- minor predicate import bug.
There has been a lot of progress in ProbLog and cplint.
* PHP_VERSION_DEFAULT, PHP_VERSIONS_ACCEPTED, PKG_PHP_VERSION now
don't accept 5 any more but 52, 53, 54.
Each value corresponding to PHP 5.2.x, 5.3.x, 5.4.x.
* PHP_PKG_PREFIX might be "php54".
* phpversion.mk defines PHP_BASE_VERS.
* phpversion.mk defines each PHP's exact version for now.
TODO:
php{5,53,54}/Makefile.{common,php} could be arranged to some
redundant codes.
Version 5.3.14
06-June-2012
* CLI SAPI
- Fixed bug #61546 (functions related to current script failed when
chdir() in cli sapi)
* Core
- Fixed CVE-2012-2143
- Fixed bug #62005 (unexpected behavior when incrementally assigning to a
member of a null object)
- Fixed bug #61730 (Segfault from array_walk modifying an array passed by
reference)
- Fixed missing bound check in iptcparse()
- Fixed bug #61764 ('I' unpacks n as signed if n > 2^31-1 on LP64)
- Fixed bug #54197 ([PATH=] sections incompatibility with
user_ini.filename set to null)
- Fixed bug #61713 (Logic error in charset detection for htmlentities)
- Fixed bug #61991 (long overflow in realpath_cache_get())
- Changed php://fd to be available only for CLI.
* CURL
- Fixed bug #61948 (CURLOPT_COOKIEFILE '' raises open_basedir restriction)
* COM
- Fixed bug #62146 com_dotnet cannot be built shared
* Fileinfo
- Fixed bug #61812 (Uninitialised value used in libmagic)
* Iconv
- Fixed a bug that iconv extension fails to link to the correct library
when another extension makes use of a library that links to the iconv
library. See https://bugs.gentoo.org/show_bug.cgi?id=364139 for detail
* Intl
- Fixed bug #62082 (Memory corruption in internal function
get_icu_disp_value_src_php()
* JSON
- Fixed bug #61537 (json_encode() incorrectly truncates/discards
information)
* PDO
- Fixed bug #61755 (A parsing bug in the prepared statements can lead to
access violations)
* Phar
- Fixed bug #61065 (Secunia SA44335)
* Streams
- Fixed bug #61961 (file_get_contents leaks when access empty file with
maxlen set)
For Ruby on Rails component packages depends strictly on teeny version
(RUBY_RAILS_STRICT_DEP is "yes") and others depends on minor version.
Fix some none-component packages which accidently depends strictly.
PR 46532 by Wen Heping.
While here, set LICENSE.
Version 2.762 (September 16, 2005)
- Swapped the precedence of unary minus and exponentiation to
follow the mainstream of programming languages. Suggested
by Mike Hoffman.
- Fixed a bug with drawing the outline of a triangle.
- Lots bugs and typos fixed in the docu. Thanx to A. Costa !
- rinstr() is okay again.
- system$() may not dump any longer, if an external command returns no output.
- Some improvements for compiling on FreeBSD.
- Made the text-command working again.
- Maybe yabasic does not leak resources under Windows 95 any longer.
- Some fixes related with the console window under Windows
- Added a list of reserved words to the documentation.
- Special thanks to Derek and Mike Huffmann !
Version 2.76 (April 25, 2005)
Some major improvements for grafics
- Full color support !
- Different fonts for the text-command
- The new command triangle
Version 2.75 (May 19, 2004)
- Yabasic finally has an Icon under Windows
- The str$()-function, may now format numbers
like 123,456.56 (or 123.456,56 for german conventions)
- Changed the system()-function under Windows
to use the right command-processor
- Added a list of command, grouped by topics to the
documentation
- Yellow is no longer brown under windows
- Removed a security problem related with printing
under Unix
- Programs, that import libraries can now be
bound, including all the imported libraries
Version 2.740 (January 18, 2003)
- Implemented the bind-feature
- More verbose messages on failing open-calls
Version 2.730 (August 19, 2003)
- Complete rewrite of the documentation
- Updated my system, which introduced new
versions of the toolchain (gcc, autoconf, ...)
- No changes in yabasic itself