Notable changes in YAP 6.3.3
- exo compilation, a way to store large DBs much more compactly
- a new way to do save/restore
- improvements on the SWI interface, including improved support
of SWI packages. The core IO code has been updated to the latest SWI devel.
- interfaces Prolog->R (r..eal from Nicos and all) and YAP->Python
- PRiSM port
- PFL, a new language to write graphical models, by Tiago Gomes
- gobs of bug fixes.
Notable changes in YAP 6.3.2
- new tabling code that supports a global table and answer subsumption
- an interface to gecode
- a low-level interface to R
- a low-level interface to CUDD and also to c2d
- a PRISM interface
- the gprof interface works again, it has been rewritten to save the log as a file.
- the save/restore now can save a module only, and does not depend on memory tricks.
- there is a first (needs lots of work) Windows console (based on SWI code).
- Lots of bug fixes
Notable changes in YAP 6.3
- YAP now uses the SWI Input/Output routines.
This includes the SWI streams handling code,
and the SWI write routines.
- YAP also includes support to the pldoc and plunit libraries.
- New implementation of saved state routines allows saving modules.
- GECODE interface.
Changes in GNU Prolog version 1.4.4:
* add Prolog flags c_cc_version_data
* fix a regression bug in linedit
* fix a little bug in the debugger
* add subtract/3 built-in predicate
Changes in GNU Prolog version 1.4.3:
* add new C foreign interface functions converting term to/from C strings
* modify top-level banner to show 32/64 bits, compile date, C compiler name
* modify Linedit: fix Prolog prompt when Linedit is not activated
* modify linedit: accept gui=silent in env var LINEDIT
(does not warn if the windows gui DLL is not found)
* fixes for Windows 8 (i686 and x86_64) with MSVS 2012, mingw64 gcc > 4.5.3
* add Prolog flags address_bits, compiled_at, c_cc, c_cflags, c_ldflags
* fix a bug in the FD solver (option backtracks in fd_labeling)
* improve the FD solver (better propagation for reified constraints at labeling)
* improve the FD solver (add labeling option: value_method(bisect))
* improve the FD solver (avoid some cases of C stack overflow, improved fd_domain/3)
* fix a bug in the FD solver (regression bug in 1.4.2)
* add PlULong to gprolog.h and PlThrow(ball) to C foreign interface
Changes to Clojure in Version 1.5.1
* fix for leak caused by ddc65a96fdb1163b
Changes to Clojure in Version 1.5
1 Deprecated and Removed Features
1.1 Clojure 1.5 reducers library requires Java 6 or later
2 New and Improved Features
2.1 Reducers
2.2 Reader Literals improved
2.3 clojure.core/set-agent-send-executor!, set-agent-send-off-executor!,
and send-via
2.4 New threading macros
2.5 Column metadata captured by reader
2.6 gen-class improvements
2.7 Support added for marker protocols
2.8 clojure.pprint/print-table output compatible with Emacs Org mode
2.9 clojure.string/replace and replace-first handle special characters
more predictably
2.10 Set and map constructor functions allow duplicates
2.11 More functions preserve metadata
2.12 New edn reader, improvements to *read-eval*
3 Performance Enhancements
4 Improved error messages
5 Improved documentation strings
6 Bug Fixes
7 Binary Compatibility Notes
Version 2.6 November 2012
* Larger test set.
* Hyperlinked manual.
* Fixes several reported issues.
Version 2.5 October 2012
* FHS 2.3 compliant.
* Larger test set.
* Fixes minor issues.
* Adds routine "abend" (exits with runtime error).
NEWS for Mercury 13.05.1
------------------------
Changes to the Mercury standard library:
* We have added the function bimap.count/1.
NEWS for Mercury 13.05
----------------------
Changes to the Mercury standard library:
* We have swapped the argument order of the predicates set.singleton_set/2,
set_bbbtree.singleton_set/2, set_ordlist.singleton_set/2 and
set_unordlist.singleton_set/2 so that it conforms with the order in the
other set modules.
* All the modules that operate on sets now have two new predicates.
One is insert_new: if the item is not already in the set, it inserts
the item, otherwise it fails. The other is all_true: it succeeds if
and only if all elements in the set pass a test.
* The map and varset modules each have a new predicate that deletes
a sorted list of items from a map or varset, and can do so faster than
usual by exploiting the order.
* The map, bimap and tree234 modules each have a new predicate that does
a search, and if the search is unsuccessful, does an insertion during
the *same* traversal.
* The argument order of the following predicates has been changed so as to
make them more conducive to the use of state variable notation:
pqueue.insert/4, pqueue.remove/4, stack.push/3, stack.push_list/3,
stack.pop/3 and stack.det_pop/3.
* We have added versions of the operations in the math module that omit the
domain checks.
* We have added new predicates to the parsing_utils module:
input_string/3, get_skip_whitespace_pred/2 and next_char_no_progress/4.
* The lexer module returns base 10 integer literals in the string
representation, if the integer is too large for an `int'.
* We have add the following new predicates to the list module:
list.all_true_corresponding/3, list.all_false_corresponding/3 and
list.same_length3/3.
* We have added the type maybe.maybe_error/2 which is polymorphic in the
error type.
* We have added predicates to the calendar module for folding over the days
in a given range of dates: foldl_days/5, foldl2_days/7 and foldl3_days/9.
* We have added two functions to both the hash_table and version_hash_table
modules: copy/1 and from_assoc_list/4.
Changes to the Mercury compiler:
* Generation of 64-bit code on Windows using the MinGW64 port of GCC
is now supported, i.e. the x86_64-w64-mingw32 architecture is now
supported.
* We have improved compilation times for very large programs. In
particular, compilation times for predicates containing the following
have been improved:
- large ground terms
- large disjunctions
- large numbers of higher order constructs and/or code that uses
large hierarchies of type classes
* We have implemented a type representation optimisation, where a functor
with exactly one argument can be represented by a tagged pointer to the
argument value, which itself does not require the tag bits.
* In C grades, consecutive enumeration arguments in discriminated
union types can now be packed into a single word.
* Double-precision `float' constructor arguments are now stored in
unboxed form in high-level C grades.
* Double-precision `float' constructor arguments are now stored in
unboxed form on 32-bit architectures in the low-level C grades.
This was previously so for 64-bit architectures.
* Double-precision float arguments can now be passed via dedicated Mercury
abstract machine registers to avoid boxing, in low-level C grades on
32-bit architectures. Float variables can occupy two words on the
Mercury stack to avoid boxing.
* The option `--warn-non-tail-recursion' no longer requires
`--high-level-code'.
* A new option, `--sign-assembly', provides supports for signing
assemblies generated by the C# backend with a strong name.
* A new option, `--cstack-reserve-size', allows the size of the C
stack for executables to be changed on Microsoft Windows systems.
Changes to the Mercury debugger:
* We have added new capabilities to the "level", "retry" and "finish" mdb
commands. If these commands are given the argument "clentry", they will
operate on the ancestor of the current call that represents entry to the
clique of mutually recursive procedures that the current call belongs to.
If they are given the argument "clparent", they will operate on the parent
of that call.
* The mdb command "stack" can now find and mark cliques of mutually recursive
calls on the stack, and can (and by default, will) impose a limit on the
number of lines it prints for each clique.
Changes to the extras distribution:
* We have added a binding to the GLFW library.
NEWS for Mercury 11.07.2, 3 August 2012
---------------------------------------
This is a bug-fix release: it fixes the following:
* The name of the C# compiler in newer versions of Mono is now recognised.
* The configure script now distinguishes between the MS C# compiler and the
Chicken Scheme compiler.
* Thread local storage now works on Mac OS X when using clang as the C
compiler.
* Various build issues on Solaris 10 have been resolved.
* The --erlang option now sets all the relevant grade components correctly.
* The binary input and output streams are now set to binary translation
mode when using the MSVC CRT.
* The standard library's lexer module now correctly tokenizes binary, octal
and hexadecimal integer literals.
* Some bugs in the UTF-8 routines used by the C grades have been fixed.
Also, the performance of these routines has been improved.
* The exit status is now correctly set when --warn-non-tail-recursion
is being used.
Changes to the Mercury standard library:
* We have added additional modes to map.foldr/4, map.foldr/6 and the
list.foldl<N>_corresponding3 predicates.
* The predicates parsing_utils.float_literal/3 and
parsing_utils.float_literal_as_string/4 now accept an optional plus sign in
the exponent.
* The obsolete predicates string.remove_suffix_det/2 and string.index_det/2
have been removed.
* The predicate time.times/4 is now implemented for the csharp grade.
* The version_hash_table module is now supported in the csharp and java
grades.
* The unsafe versions of the predicates in the array2d module are now more
efficient.
Changes to the Mercury compiler:
* The compiler now outputs #line directives in C# code it generates.
NEWS for Mercury 11.07.1, 2 March 2012
--------------------------------------
This is a bug-fix release. It fixes a problem that was preventing the standard
library from building in the csharp grade on Cygwin and also adds support for
using GCC in C99 (or GNU99) mode with Mercury. In addition, there are a number
of minor changes to the standard library.
Changes to the Mercury standard library:
* We have added the predicate map.keys_and_values/3.
* We have added the predicates set.is_singleton/2, set_bbbtree.is_singleton/2,
set_ctree234.is_singleton/2 and set_unordlist.is_singleton/2.
* We have added the function list.foldl_corresponding/4.
changes in sbcl-1.1.8 relative to sbcl-1.1.7:
* notice: The implementation of MAP-ALLOCATED-OBJECTS (the heart of
ROOM, plus a few SB-INTROSPECT functions) has been completely
rewritten; it may now exhibit different bugs than before.
* new feature: minimal runtime/compiler intrastructure support for SSE
SIMD values, as SB-EXT:SIMD-PACK. Enabled on x86-64 via the build-time
feature :sb-simd-pack. This should enable intrinsics extensions as
libraries, without patching SBCL itself. Thanks to Alexander Gavrilov
for maintaining a branch for so long.
* enhancement: RUN-PROGRAM supports a :DIRECTORY argument to set
the working directory of the spawned process.
(lp#791800) (patch by Matthias Benkard)
* enhancement: boxed vectors (vectors of T or of FIXNUM) can now be
stack-allocated on PPC.
* enhancement: "fixed objects" can now be stack-allocated on PPC.
* enhancement: WITH-PINNED-OBJECTS no longer conses on PPC/GENCGC.
* enhancement: (sb-introspect:find-definition-sources-by-name x :vop) now
also returns VOPs which do not translate any functions, and finds
defoptimizer types ir2convert and stack-allocate-result.
* enhancement: better type derivation for APPEND, NCONC, LIST.
(lp#538957)
* enhancement: MAP-ALLOCATED-OBJECTS (the heart of ROOM) now walks the
heap in a manner similar to the GC rather than its previous ad-hoc
scheme, and is therefore no less and possibly more accurate.
* fixes and enhancements related to Unicode:
** the character database information has been updated to Unicode 6.2;
** support for canonical and compatibility decomposition of characters has
been added, along with support for primary composition;
** support for Unicode normalization forms of strings (NFC, NFKC, NFD and
NFKD) has been included;
** querying the character database for code points not defined by Unicode
gives less wrong answers (lp#1178038, reported by Ken Harris)
* enhancement: print intermediate evaluation results for some ASSERTed
expressions. (lp#789497) (patch by Alexandra Barchunova)
* enhancement: x86-64 disassemblies are annotated with unboxed constant
values when there are references to (RIP-relative) unboxed constants.
* bug fix: type derivation for LOG{AND,IOR,XOR} scales linearly instead
of quadratically with the size of the input in the worst case.
(lp#1096444)
* bug fix: handle errors when initializing *default-pathname-defaults*,
sb-ext:*runtime-pathname*, sb-ext:*posix-argv* on startup, like character
decoding errors, or directories being deleted.
* bug fix: Loading a core with a discontiguous dynamic space now correctly
computes the amount of dynamic space used.
* bug fix: disassembler missing ",8" on SHLD
* bug fix: backtracing through INTERNAL-ERROR signal handlers on systems
that provide an "invalid" stack frame link for the signal handler
itself now use the saved-fp-and-pc mechanism to pick up from the stack
frame in the interrupt (signal) context. This is known to affect
threaded FreeBSD/x86-64.
* bug fix: some LOOP statements couldn't be compiled.
(lp#1178989)
* bug fix: sb-sequence:dosequence works on literal vectors.
* bug fix: errors in generic arithmetic show the assembly routine's
caller on x86 and x86-64. (lp#800343)
* bug fix: Compile-time type errors should never result in COMPILE-FILE
failure. (lp#943953)
* bug fix: Known bad local calls do not cause strange failures when
emitting or dumping code. (lp#504121)
* bug fix: Multiply-inlined structure constructor don't cause IR2-time
codegen errors: type checks are inserted as necessary. (lp#1177703)
* bug fix: Unsigned modular arithmetic is correctly converted into signed
modular arithemtic (mostly to exploit fixnum-width VOPs). (lp#1026634)
* bug fix: a combination of inlined local function with &optional and
recursion no longer causes undescriptive compiler errors. (lp#1180992)
* bug fix: sub-word BOOLEAN alien types now disregard higher order bits
when testing for non-zero-ness.
* bug fix: (CONCATENATE 'null ...) no longer fails for generic sequences.
(lp#1162301)
* bug fix: Type mismatch for the value of conditional expressions are
correctly reported when detected at compile-time, instead of complaining
about a constant NIL (similar for non-EQ-comparable catch tags).
* bug fix: Referring to INLINE global functions as values should not result
in a compilation failure. (lp#1035721)
* optimization: faster ISQRT on fixnums and small bignums
* optimization: faster and smaller INTEGER-LENGTH on fixnums on x86-64.
* optimization: On x86-64, the number of multi-byte NOP instructions used
for code alignment is now always minimal.
* optimization: On 64-bit targets, the compiler generates much faster
code for type checks for types known at compile time that are smaller
than (SIGNED-BYTE 64) or (UNSIGNED-BYTE 64) and larger than FIXNUM, and
their COMPLEX variants.
* optimization: On x86 targets, more uses of ALIEN-FUNCALL during cross
compilation now inline the INVOKE-WITH-SAVED-FP-AND-PC dance.
* optimization: ROOM no longer conses so egregiously on non-x86oid
systems.
* optimization: associative bitwise operations reassociate patterns like
(f (f x k1) k2) to expose (f x (f k1 k2)). Same for + and * of
rational values.
* optimization: quasiquote expressions now perform more constant folding,
instead of consing equal lists at runtime. (lp#1026439)
* optimization: local call analysis of inlined higher-order function
should converge more quickly, resulting in better code for complex
functions.
* optimization: On x86-64, medium (word-sized but wider than 32 bits)
integer constants are handled more cleverly, especially when they
can be represented as sign-extended (signed-byte 32). (Based on a
patch by Douglas Katzman)
* optimization: IF/IF conversion should reliably result in sane code
when (some of) the results of the inner IF are always false or
always true.
* optimization: On x86oids, variable right shifts of machine words are
compiled into straight SAR/SHR, instead of going through the generic
VOP. (lp#1066204)
changes in sbcl-1.1.7 relative to sbcl-1.1.6:
* enhancement: TRACE :PRINT-ALL handles multiple-valued forms.
(lp#457053)
* bug fix: :allocation slot option works for condition slots
(lp#1049404)
* bug fix: redefining conditions does not lead to multiple evaluations of
hairy slot initfunctions anymore (lp#1164969)
* bug fix: CLASS-DIRECT-DEFAULT-INITARGS now works for condition classes
(lp#1164970)
* bug fix: function constants now work as initforms and default initarg
values of conditions (lp#539517)
* bug fix: svref/(setf svref) on symbol macros don't crash the compiler
anymore. (Minimal test case provided by James M. Lawrence on sbcl-devel)
* bug fix: no more bogus ## references when pretty printing backquoted
forms with non-trivial structure sharing. (lp#1161218)
* bug fix: Don't signal an error on (setf (documentation nil 'function)
"doc"). Signal a style-warning instead when trying to set documentation
of NIL for all other documentation types. (Reported by Zach
Beane; regression since 2e52fa05.)
* bug fix: modular arithmetic involving large constants and conditionals
should no longer result in spurious dead code elimination. (Reported by
Eric Marsden).
* bug fix: our mach exception handler can seemingly called very early in
the program execution process on OS X 10.8.0. Try and handle that case
robustly, without potentially leaking mach ports too much.
* optimization: LOGBITP and LOGTEST optimizations from x86 ported to x86_64.
changes in sbcl-1.1.6 relative to sbcl-1.1.5:
* enhancement: the continuable error when defknown-ing over extant
fndb entries can be ignored by passing :overwrite-fndb-silently t
as a keyword argument to sb-c:defknown (after attributes). Useful
to allow defknown to be re-loaded. Use with :allow-other-keys t
for backward compatibility.
* optimization: compiler is much faster in compiling SVREF and (SETF SVREF)
forms.
* bug fix: Prevent a make-array transform from modifying source forms
causing problems for inlined code. Thanks to Bart Botta.
(regression since 1.0.42.11-bis)
* bug fix: clear-output calls the correct gray stream routine,
sb-gray:stream-clear-output. (lp#1153257)
* bug fix: an error is signalled for an invalid format modifier: ~<~@>.
(lp#1153148)
* bug fix: Better error messages for package operations (lp#1154776)
* bug fix: delete-package on a nonexistent package should signal a cerror.
(regression since 1.0.37.44).
* bug fix: accessing &MORE (stack allocated &REST) arguments checks bounds.
(lp#1154946, lp#1072112)
* bug fix: compiling make-array no longer signals an error when the
element-type is an uknown type, a warning is issued instead.
Thanks to James Kalenius (lp#1156095)
* bug fix: SEARCH on generic (non-VECTOR non-LIST) sequence types no longer
produces wrong results for some inputs. (Thanks to Jan Moringen.)
(lp#1153312)
changes in sbcl-1.1.5 relative to sbcl-1.1.4:
* minor incompatible change: SB-SPROF:WITH-PROFILING no longer loops
by default.
* new feature: package local nicknames. See manual for details.
* new feature: SB-EXT:MAP-DIRECTORY provides a powerful interface for
directory traversal: it is the backend used by SBCL for CL:DIRECTORY.
* enhancement: easier to use restarts for resolving name-conflicts
resulting from IMPORT, EXPORT, or USE-PACKAGE.
* enhancement: variant DEFPACKAGE forms now signal a full error with
restarts provided for resolving the situation. (lp#891351)
* enhancement: by setting SB-EXT:*ON-PACKAGE-VARIANCE* appropriately variant
DEFPACKAGE forms can now signal a full error with restarts provided for
resolving the situation. See manual for details. (lp#891351)
* enhancement: make-random-state now uses CryptGenRandom as a seed on Windows.
(Thanks to Anton Kovalenko.) (lp#1102748)
* enhancement: backtrace improvements
** secondary CLOS dispatch functions have better debug names (lp#503081)
** easier to read method names in backtraces. See
SB-DEBUG:*METHOD-FRAME-STYLE*.
** SB-DEBUG:PRINT-BACKTRACE and SB-DEBUG:LIST-BACKTRACE are available as
forwards-compatible replacements for SB-DEBUG:BACKTRACE and
SB-DEBUG:BACKTRACE-AS-LIST.
** SB-DEBUG:*SHOW-ENTRY-POINT-DETAILS** has been deprecated, as the same
information is available in less intrusive form as frame annotations.
* enhancement: SB-POSIX now provides MAP-ANON.
* enhancement: test-suite results are colorized, failures in red, unexpected
success in green. Works on Windows and on terminals with ANSI escape code
support. Can be disabled with --no-color.
* optimization: SB-CONCURRENCY:QUEUE implementation is more efficient.
(thanks to James M. Lawrence)
* bug fix: no more unused variable style warnings from RESTART-CASE
macroexpansion (lp#1113859)
* bug fix: no more unused variable style warnings when loading
sb-bsd-sockets.asd (lp#1114681)
* bug fix: deleting a package removes it from implementation-package
lists of other packages.
* bug fix: SB-SPROF:WITH-PROFILING is now usable in the Slime REPL on Darwin.
This does not fix the occasional "interrupt already pending" issue, though.
* bug fix: (setf (documentation 'x 'function)) and
(setf (documentation #'x t)) set documentation in different places.
(regression since 1.0.43.63)
* bug fix: build on newer glibc. (lp#1095036)
changes in sbcl-1.1.4 relative to sbcl-1.1.3:
* optimization: LOOP expressions using "of-type character" have slightly
more efficient expansions.
* bug fix: very long (or infinite) constant lists in DOLIST do not result
in very long compile times or heap exhaustion anymore. (lp#1095488)
* bug fix: `#3(1) is read as #(1 1 1), not as #(1). (lp#1095918)
* bug fix: adjust-array ignored :initial-element for simple-vectors.
(lp#1096359)
* bug fix: optimizations to MAKE-INSTANCE with literal list initargs no
longer cause infinite loops (on circular data) or violate eqlity
constraints. (lp#1099708)
* bug fix: FIRST was not being open coded. (regression from 1.1.0)
changes in sbcl-1.1.3 relative to sbcl-1.1.2:
* enhancement: warnings about bad locale settings, LANG, LC_CTYPE, etc.
(lp#727625)
* enhancement: support for C-c to interrupt the foreground thread
on Windows. (Thanks to Anton Kovalenko.)
* enhancement: STDCALL alien callbacks. (Thanks to Anton Kovalenko.)
* enhancement: Safepoint builds on POSIX platforms can now optionally be
built without pseudo-atomic sequences and their run-time overhead.
* enhancement: Threads created outside of Lisp can enter Lisp through
alien callbacks and appear as Lisp threads for the duration of that
function invocation. On safepoint builds only.
* enhancement: Miscellaneous improvements to namestrings and underlying
calls to OS functions for file system access on Windows. (Thanks to
Anton Kovalenko.)
* enhancement: The MSI installer support for Windows now uses Windows
Installer XML at least version 3.5 and includes various usability
improvements. (Thanks to Dmitry Kalyanov and Anton Kovalenko.)
* enhancement: The sb-bsd-sockets contrib now supports non-blocking-mode
on Windows. (Thanks to Anton Kovalenko.)
* enhancement: The Windows backend now supports the x86-64 platform.
(Thanks to Anton Kovalenko.)
* bug fix: fasls are now once again directly executable (on platforms
supporting shebang lines, with a suitably-installed sbcl).
* bug fix: make.sh --help no longer runs clean.sh. (lp#937001)
* bug fix: Fix CAS access to slots of direct instances of structure classes
in the presence of subclasses sharing the same conc-name.
* bug fix: Logical pathname namestrings on Windows have been changed to
be lower-case, to minimize differences between POSIX and Windows.
R16B is a major new release of Erlang/OTP.
Detailed information on changes can be fetched at
http://www.erlang.org/download/otp_src_R16B.readme
--- HIGHLIGHTS ----------------------------------------------------------
OTP-7786 == ssh ==
Added User Guide for the SSH application
OTP-9892 == erts ==
Process optimizations. The most notable:
-- New internal process table implementation allowing for
both parallel reads as well as writes. Especially read
operations have become really cheap. This reduce contention
in various situations. For example when, spawning processes,
terminating processes, sending messages, etc.
-- Optimizations of run queue management reducing contention.
-- Optimizations of process state changes reducing
contention.
These changes imply changes of the characteristics the
system. Most notable: changed timing in the system.
OTP-9974 == erts ==
Non-blocking code loading. Earlier when an Erlang module was
loaded, all other execution in the VM were halted while the
load operation was carried out in single threaded mode. Now
modules are loaded without blocking the VM. Processes may
continue executing undisturbed in parallel during the entire
load operation. The load operation is completed by making the
loaded code visible to all processes in a consistent way with
one single atomic instruction. Non-blocking code loading will
improve realtime characteristics when modules are
loaded/upgraded on a running SMP system.
OTP-10256 == inets ==
httpc: The HTTP client now supports HTTPS through proxies
OTP-10336 == erts ==
Major port improvements. The most notable:
-- New internal port table implementation allowing for both
parallel reads as well as writes. Especially read operations
have become really cheap.This reduce contention in various
situations. For example when, creating ports, terminating
ports, etc.
-- Dynamic allocation of port structures. This allow for a
much larger maximum amount of ports allowed as a default. The
previous default of 1024 has been raised to 65536. Maximum
amount of ports can be set using the +Q command line flag of
erl(1). The previously used environment variable
ERL_MAX_PORTS has been deprecated and scheduled for removal
in OTP-R17.
-- Major rewrite of scheduling of port tasks. Major benefits
of the rewrite are reduced contention on run queue locks, and
reduced amount of memory allocation operations needed. The
rewrite was also necessary in order to make it possible to
schedule signals from processes to ports.
-- Improved internal thread progress functionality for easy
management of unmanaged threads. This improvement was
necessary for the rewrite of the port task scheduling.
-- Rewrite of all process to port signal implementations in
order to make it possible to schedule those operations. All
port operations can now be scheduled which allows for reduced
lock contention on the port lock as well as truly
asynchronous communication with ports.
-- Optimized lookup of port handles from drivers.
-- Optimized driver lookup when creating ports.
-- Preemptable erlang:ports/0 BIF.
-- Improving responsiveness by bumping reductions for a
process calling a driver callback directly.
These changes imply changes of the characteristics of the
system. The most notable:
-- Order of signal delivery -- The previous implementation of
the VM has delivered signals from processes to ports in a
synchronous stricter fashion than required by the language.
As of ERTS version 5.10, signals are truly asynchronously
delivered. The order of signal delivery still adheres to the
requirements of the language, but only to the requirements.
That is, some signal sequences that previously always were
delivered in one specific order may now from time to time be
delivered in different orders. This may cause Erlang programs
that have made false assumptions about signal delivery order
to fail even though they previously succeeded. For more
information about signal ordering guarantees, see the chapter
on communication in the ERTS user's guide. The +n command
line flag of erl(1) can be helpful when trying to find
signaling order bugs in Erlang code that have been exposed by
these changes.
-- Latency of signals sent from processes to ports -- Signals
from processes to ports where previously always delivered
immediately. This kept latency for such communication to a
minimum, but it could cause lock contention which was very
expensive for the system as a whole. In order to keep this
latency low also in the future, most signals from processes
to ports are by default still delivered immediately as long
as no conflicts occur. Such conflicts include not being able
to acquire the port lock, but also include other conflicts.
When a conflict occur, the signal will be scheduled for
delivery at a later time. A scheduled signal delivery may
cause a higher latency for this specific communication, but
improves the overall performance of the system since it
reduce lock contention between schedulers. The default
behavior of only scheduling delivery of these signals on
conflict can be changed by passing the +spp command line flag
to erl(1). The behavior can also be changed on port basis
using the parallelism option of the open_port/2 BIF.
-- Execution time of the erlang:ports/0 BIF -- Since
erlang:ports/0 now can be preempted, the responsiveness of
the system as a whole has been improved. A call to
erlang:ports/0 may, however, take a much longer time to
complete than before. How much longer time heavily depends on
the system load.
-- Reduction cost of calling driver callbacks -- Calling a
driver callback is quite costly. This was previously not
reflected in reduction cost at all. Since the reduction cost
now has increased, a process performing lots of direct driver
calls will be scheduled out more frequently than before.
Potential incompatibilities:
-- driver_send_term() has been deprecated and has been
scheduled for removal in OTP-R17. Replace usage of
driver_send_term() with usage of erl_drv_send_term().
-- driver_output_term() has been deprecated and has been
scheduled for removal in OTP-R17. Replace usage of
driver_output_term() with usage of erl_drv_output_term().
-- The new function erl_drv_busy_msgq_limits() has been added
in order to able to control management of port queues.
The driver API version has been bumped to 2.1 from 2.0 due to
the above changes in the driver API.
OTP-10410 == asn1 ==
The options for the ASN.1 compiler has been drastically
simplified. The backend is chosen by using ber, per, or uper.
The options optimize, nif, and driver are no longer needed.
The old options will still work, but will issue a warning.
Another change is that generated encode/2 function will
always return a binary (some backends used to return an
iolist).
OTP-10588 == asn1 ==
The ASN.1 compiler will now always include necessary run-time
functions in the generated Erlang modules (except for
asn1rt_nif which is still neeeded). If the option 'inline' is
used the ASN.1 compiler will generate a warning. But if
'{inline,OutputFile}' is use, the ASN.1 compiler will refuse
to compile the file. (Use a .set.asn file if you need to
remove the output file.)
The 'BIT STRING' type will now be decoded as Erlang
bitstrings by default. Use the new legacy_bit_string option
to encode as lists of ones and zeroes. (The
compact_bit_string option still works as before.)
Open types are now always returned as binaries (when there is
no information allowing them to be decoded).
--- POTENTIAL INCOMPATIBILITIES -----------------------------------------
OTP-9052 == common_test ==
Removed depricated run_test program, use ct_run instead.
OTP-9881 == common_test ==
It is now possible to let a test specification include other
test specifications. Included specs can either be joined with
the source spec (and all other joined specs), resulting in
one single test run, or they can be executed in separate test
runs. Also, a start flag/option, join_specs, has been
introduced, to be used in combination with the spec option.
With join_specs, Common Test can be told to either join
multiple test specifications, or run them separately. Without
join_specs, the latter behaviour is default. Note that this
is a change compared to earlier versions of Common Test,
where specifications could only be joined. More information
can be found in the Running Tests chapter in the User's Guide
(see the Test Specifications section).
OTP-10117 == inviso ==
The inviso application has been removed.
OTP-10170 == erts pman ==
Tuple funs (deprecated in R15B) are no longer supported.
OTP-10195 == edoc ==
Since EDoc 0.7.7 (R14B02) separate values of union types can
be annotated. However, the parser has hitherto chosen not to
add the necessary parentheses due to backwards compatibility.
From this release on code traversing the output of
edoc_parser needs to take care of parentheses around separate
values of union types. Examples of such code are layout
modules and doclet modules.
OTP-10336 == erts ==
Major port improvements. The most notable:
-- New internal port table implementation allowing for both
parallel reads as well as writes. Especially read operations
have become really cheap.This reduce contention in various
situations. For example when, creating ports, terminating
ports, etc.
-- Dynamic allocation of port structures. This allow for a
much larger maximum amount of ports allowed as a default. The
previous default of 1024 has been raised to 65536. Maximum
amount of ports can be set using the +Q command line flag of
erl(1). The previously used environment variable
ERL_MAX_PORTS has been deprecated and scheduled for removal
in OTP-R17.
-- Major rewrite of scheduling of port tasks. Major benefits
of the rewrite are reduced contention on run queue locks, and
reduced amount of memory allocation operations needed. The
rewrite was also necessary in order to make it possible to
schedule signals from processes to ports.
-- Improved internal thread progress functionality for easy
management of unmanaged threads. This improvement was
necessary for the rewrite of the port task scheduling.
-- Rewrite of all process to port signal implementations in
order to make it possible to schedule those operations. All
port operations can now be scheduled which allows for reduced
lock contention on the port lock as well as truly
asynchronous communication with ports.
-- Optimized lookup of port handles from drivers.
-- Optimized driver lookup when creating ports.
-- Preemptable erlang:ports/0 BIF.
-- Improving responsiveness by bumping reductions for a
process calling a driver callback directly.
These changes imply changes of the characteristics of the
system. The most notable:
-- Order of signal delivery -- The previous implementation of
the VM has delivered signals from processes to ports in a
synchronous stricter fashion than required by the language.
As of ERTS version 5.10, signals are truly asynchronously
delivered. The order of signal delivery still adheres to the
requirements of the language, but only to the requirements.
That is, some signal sequences that previously always were
delivered in one specific order may now from time to time be
delivered in different orders. This may cause Erlang programs
that have made false assumptions about signal delivery order
to fail even though they previously succeeded. For more
information about signal ordering guarantees, see the chapter
on communication in the ERTS user's guide. The +n command
line flag of erl(1) can be helpful when trying to find
signaling order bugs in Erlang code that have been exposed by
these changes.
-- Latency of signals sent from processes to ports -- Signals
from processes to ports where previously always delivered
immediately. This kept latency for such communication to a
minimum, but it could cause lock contention which was very
expensive for the system as a whole. In order to keep this
latency low also in the future, most signals from processes
to ports are by default still delivered immediately as long
as no conflicts occur. Such conflicts include not being able
to acquire the port lock, but also include other conflicts.
When a conflict occur, the signal will be scheduled for
delivery at a later time. A scheduled signal delivery may
cause a higher latency for this specific communication, but
improves the overall performance of the system since it
reduce lock contention between schedulers. The default
behavior of only scheduling delivery of these signals on
conflict can be changed by passing the +spp command line flag
to erl(1). The behavior can also be changed on port basis
using the parallelism option of the open_port/2 BIF.
-- Execution time of the erlang:ports/0 BIF -- Since
erlang:ports/0 now can be preempted, the responsiveness of
the system as a whole has been improved. A call to
erlang:ports/0 may, however, take a much longer time to
complete than before. How much longer time heavily depends on
the system load.
-- Reduction cost of calling driver callbacks -- Calling a
driver callback is quite costly. This was previously not
reflected in reduction cost at all. Since the reduction cost
now has increased, a process performing lots of direct driver
calls will be scheduled out more frequently than before.
Potential incompatibilities:
-- driver_send_term() has been deprecated and has been
scheduled for removal in OTP-R17. Replace usage of
driver_send_term() with usage of erl_drv_send_term().
-- driver_output_term() has been deprecated and has been
scheduled for removal in OTP-R17. Replace usage of
driver_output_term() with usage of erl_drv_output_term().
-- The new function erl_drv_busy_msgq_limits() has been added
in order to able to control management of port queues.
The driver API version has been bumped to 2.1 from 2.0 due to
the above changes in the driver API.
OTP-10410 == asn1 ==
The options for the ASN.1 compiler has been drastically
simplified. The backend is chosen by using ber, per, or uper.
The options optimize, nif, and driver are no longer needed.
The old options will still work, but will issue a warning.
Another change is that generated encode/2 function will
always return a binary (some backends used to return an
iolist).
OTP-10417 == kernel sasl ==
It is no longer possible to have {Mod,Vsn} in the 'modules'
list in a .app file.
This was earlier possible, although never documented in the
.app file reference manual. It was however visible in the
documentation of application:load/[1,2], where the same term
as in a .app file can be used as the first argument.
The possibility has been removed since the Vsn part was never
used.
OTP-10451 == ssl ==
Remove filter mechanisms that made error messages backwards
compatible with old ssl but hid information about what
actually happened.
This does not break the documented API however other reason
terms may be returned, so code that matches on the reason
part of {error, Reason} may fail.
OTP-10490 == stdlib ==
If a child process fails in its start function, then the
error reason was earlier only reported as an error report
from the error_handler, and supervisor:start_link would only
return {error,shutdown}. This has been changed so the
supervisor will now return {error,{shutdown,Reason}}, where
Reason identifies the failing child and its error reason.
(Thanks to Tomas Pihl)
OTP-10523 == tools ==
A new function, cover:flush(Nodes), is added which will fetch
data from remote nodes without stopping cover on those nodes.
This is used by test_server and common_test when it is safe
to assume that the node will be terminated after the test
anyway. The purpose is to avoid processes crashing when
re-loading the original beam if the processes is still
running old code.
Remote nodes will now continue to count code coverage if the
connection to the main node is broken. Earlier, a broken
connection would cause the cover_server on the remote node to
die and thus any still cover compiled modules would cause
process crash when trying to insert cover data in ets tables
that used to exist on the cover_server. The new functionality
also involves synchronization with the main node if the nodes
are reconnected.
OTP-10588 == asn1 ==
The ASN.1 compiler will now always include necessary run-time
functions in the generated Erlang modules (except for
asn1rt_nif which is still neeeded). If the option 'inline' is
used the ASN.1 compiler will generate a warning. But if
'{inline,OutputFile}' is use, the ASN.1 compiler will refuse
to compile the file. (Use a .set.asn file if you need to
remove the output file.)
The 'BIT STRING' type will now be decoded as Erlang
bitstrings by default. Use the new legacy_bit_string option
to encode as lists of ones and zeroes. (The
compact_bit_string option still works as before.)
Open types are now always returned as binaries (when there is
no information allowing them to be decoded).
OTP-10613 == ssl ==
Removed deprecated function ssl:pid/0, it has been pointless
since R14 but has been keep for backwards compatibility.
OTP-10633 == erts ==
Erlang specification 4.7.3 defines max tuple size to 65535
elements It is now enforced to no more than 16777215 elements
(arity 24 bits)
Previous edge cases (28 bits) were not validated and could
cause undefined behaviour.
OTP-10647 == erts ==
The previous default of a maximum of 32768 simultaneous
processes has been raised to 262144. This value can be
changed using the the +P command line flag of erl(1). Note
that the value passed now is considered as a hint, and that
actual value chosen in most cases will be a power of two.
OTP-10812 == stdlib ==
filelib:wildcard("some/relative/path/*.beam", Path) would
fail to match any file. That is, filelib:wildcard/2 would not
work if the first component of the pattern did not contain
any wildcard characters. (A previous attempt to fix the
problem in R15B02 seems to have made matters worse.)
(Thanks to Samuel Rivas and Tuncer Ayaz.)
There is also an incompatible change to the Path argument. It
is no longer allowed to be a binary.
OTP-10872 == erts ==
As of ERTS-5.10/OTP-R16A node names passed in the EPMD
protocol are required to be encoded in UTF-8. Since EPMD
previously accepted latin1 encoded node names this is an
incompatibility. However, since Erlang nodes always have
required characters in node names to be 7-bit ASCII
characters (and still do require this), this incompatibility
should not effect anyone using EPMD as an Erlang Port Mapper
Daemon.
06 Jun 2013, PHP 5.4.16
- Core:
. Fixed bug #64879 (Heap based buffer overflow in quoted_printable_encode,
CVE 2013-2110). (Stas)
. Fixed bug #64853 (Use of no longer available ini directives causes crash on
TS build). (Anatol)
. Fixed bug #64729 (compilation failure on x32). (Gustavo)
. Fixed bug #64720 (SegFault on zend_deactivate). (Dmitry)
. Fixed bug #64660 (Segfault on memory exhaustion within function definition).
(Stas, reported by Juha Kylm«£nen)
- Calendar:
. Fixed bug #64895 (Integer overflow in SndToJewish). (Remi)
- Fileinfo:
. Fixed bug #64830 (mimetype detection segfaults on mp3 file). (Anatol)
- FPM:
. Ignore QUERY_STRING when sent in SCRIPT_FILENAME. (Remi)
. Fixed some possible memory or resource leaks and possible null dereference
detected by code coverity scan. (Remi)
. Log a warning when a syscall fails. (Remi)
. Add --with-fpm-systemd option to report health to systemd, and
systemd_interval option to configure this. The service can now use
Type=notify in the systemd unit file. (Remi)
- MySQLi
. Fixed bug #64726 (Segfault when calling fetch_object on a use_result and DB
pointer has closed). (Laruence)
- Phar
. Fixed bug #64214 (PHAR PHPTs intermittently crash when run on DFS, SMB or
with non std tmp dir). (Pierre)
- SNMP:
. Fixed bug #64765 (Some IPv6 addresses get interpreted wrong).
(Boris Lytochkin)
. Fixed bug #64159 (Truncated snmpget). (Boris Lytochkin)
- Streams:
. Fixed bug #64770 (stream_select() fails with pipes returned by proc_open()
on Windows x64). (Anatol)
- Zend Engine:
. Fixed bug #64821 (Custom Exceptions crash when internal properties
overridden). (Anatol)
06 Jun 2013, PHP 5.3.26
- Core:
. Fixed bug #64879 (Heap based buffer overflow in quoted_printable_encode,
CVE 2013-2110). (Stas)
- Calendar:
. Fixed bug #64895 (Integer overflow in SndToJewish). (Remi)
- FPM:
. Fixed some possible memory or resource leaks and possible null dereference
detected by code coverity scan. (Remi)
. Log a warning when a syscall fails. (Remi)
- MySQLi:
. Fixed bug #64726 (Segfault when calling fetch_object on a use_result and DB
pointer has closed). (Laruence)
- Phar
. Fixed bug #64214 (PHAR PHPTs intermittently crash when run on DFS, SMB or
with non std tmp dir). (Pierre)
- Streams:
. Fixed bug #64770 (stream_select() fails with pipes returned by proc_open()
on Windows x64). (Anatol)
- Zend Engine:
. Fixed bug #64821 (Custom Exception crash when internal properties
overridden). (Anatol)
Changes:
* uv: Upgrade to 0.10.10
* npm: Upgrade to 1.2.25
* url: Properly parse certain oddly formed urls (isaacs)
* stream: unshift('') is a noop (isaacs)
Fixes errors seen on SmartOS with PKG_DEVELOPER=yes when the fixed file was
regenerated after the fixup, and appears to have the added benefit of removing
the warnings about out of date builds during install.
to address issues with NetBSD-6(and earlier)'s fontconfig not being
new enough for pango.
While doing that, also bump freetype2 dependency to current pkgsrc
version.
Suggested by tron in PR 47882
Changelog:
10.4.7
Eliminate unused JSON error message.
Elminated usage of $0 in replace on lists (no regular expressions). The count
of replacements now is contained in the new $count system var, not $0. The usage
of $0 - $15 now is strictly for regular expressions. This also speeds up replace.
read-expr now uses $count instead of $0 for the number of characters processed.
Eliminated undocumented usage of $0 for found elements in find-all on lists.
Only $it is used. $0 only on find-all on strings with regular expressions.
The system variable $count is updated for all forms of find-all, ref-all and
set-ref-all.
Link feature now built in with comandline flag -x for all OS flavors:
newlisp -x <source-file> <executable-file>
The file util/link.lsp is not required anymore but has been included and
adapted to changes for the -x linkage. The file illustrates the internals
of the linkage process when using the -x option.
An additional true flag in the real-path function allows finding the executable
path of executables - similar to the "which" utility on UNIX. This is a by-
product of fixing the link.lsp feature for UNIX. The additional flag works
on all platforms. 'real-path' on Windows and BSD now also veryfies that path
and file are valid, as it already did on non-BSD Unix (OSX, Linux).
Enforce MAX_SYMBOL for tags in xml-parse and symbol creation using sym.
Security fixes for strncpy and strncat.
Windows CGI server mode was broken in development version 10.4.6 (isDir()).
Preparation for 64-bit Windows (in early summer).
10.4.8
Cleanup of the factor function.
Like date-parse, date-value will produce negative values for dates before 1970-1-1
til 1901-12-14.
The function 'flat' now can take an optioal depth parameter to limit flattening
a list up to certain level: (flat <list> [<level>])
(flat '(1 2 (3 4 (5 6)) (7 8 (9 10))) ) => (1 2 3 4 5 6 7 8 9 10)
(flat '(1 2 (3 4 (5 6)) (7 8 (9 10))) 1) => (1 2 3 4 (5 6) 7 8 (9 10))
(flat '(1 2 (3 4 (5 6)) (7 8 (9 10))) 2) => (1 2 3 4 5 6 7 8 9 10)
A fix for 'extend' when passing wrong type to unitialized symbol.
A fix in the parser to accept -.9 as -0.9 or +.9 as +0.9
=, +, -, *, /, %, ++, --, >, <, <=, >=, != operators and the functions 'abs',
'even?', 'odd?', 'length', 'number?' and 'zero?' are all working on big-integers
of unlimited size. 'float' and 'int' convert bigints into double floats and
64-bit integers and the function 'bigint' converts integers and floats to big
integers. See the section "Big integer, unlimited precision arithmetik" in
chapter 8. of the Users Manual for more information.
Extended commandline buffer to 1024 bytes.
The "debug" option in: (get-url "http://newlisp.org" "header debug") will now also
output the status header line of the server response in the console.
10.5.0 Stable Release May 21st, 2013
Further speed improvements on big integer multiplication and division/modulus.
Check for division by zero in big integer division/modulus.
Memory fix for ++, -- on big integers.
The OSX Intel version is now 64-bit by default.
* Update with FreeBSD ports' patch-set file.
* Add patches from icedtea's rhino.patch file.
* Tested on NetBSD/amd64 current, NetBSD/i386 6.1, NetBSD/amd64 6.0.1,
and DragonFly/i386 3.2.2.
Changelog:
* Unknown because I do not know previous version, 1.7.0.147.20110811.
* Many bugs and security bugs should be fixed.
a) refer 'perl' in their Makefile, or
b) have a directory name of p5-*, or
c) have any dependency on any p5-* package
Like last time, where this caused no complaints.
18 of Perl 5.
You can find a full list of changes in the file "perldelta.pod" located in
the "pod" directory inside the release and on the web.
Perl v5.18.0 represents approximately 12 months of development since Perl
v5.16.0 and contains approximately 400,000 lines of changes across 2,100
files from 113 authors.
New in Mono 3.0.10
A hot-fix release.
Reverted parallel mkbundle.
Fixed duplicated debug symbol problem in the compiler.
New in Mono 3.0.9
Fix gtk+ copy & paste.
Fix debugger support for custom attributes.
Proper stack bounds calculation on windows.
Add partial generic methods to our C# compiler.
NaCL support for ARM.
Fix LLVM loading on OSX.
New in Mono 3.0.8
Multiple improvements to the BCL to reduce usage of non generic
collections and use faster string comparisons.
Optimize large object cloning and boxing.
Multiple changes to bring mono closer to full PCL compatibility.
Add System.WeakReference<T>
Sgen can now return memory to the system for
Many compiler fixes for async.
Improved FullAOT support for async.
NaCl build fixes and improvements.
WCF now has cookie support in .net 4.0.
Optimize Marshal.Read/Write methods to avoid a trip to unmanaged
when needed.
Optimize LINQ with arrays.
Multiple fixes to the sgen's concurrent collector.
New in Mono 3.0.7
Multiple fixes to the sgen's concurrent collector.
Performance improvements in primitive types parsing.
Add a configuration time option to disable remoting.
Optimize tls lookups on full-aot + arm.
Add a configuration option to disable remoting.
Multiple improvements and bug fixes in culture related code.
Runtime assembly mapping for PCL.
Fix Binder primitive conversion to make .net.
Optimize Activator.CreateInstance ().
Optimize icalls in FullAOT code.
Implement Volatile.Read/Write<T> and Interlocked.MemoryBarrier ().
Optimized unmanaged to managed string conversion.
New in Mono 3.0.6
This is another hotfix release. It reverses the visibility change
made to Mono.Runtime.GetDisplayName.
New in Mono 3.0.5
This is a hot-fix release. It fixes a crash in the runtime support
for generics, which could be triggered by Xamarin Studio. New in
Mono 3.0.4 Garbage Collector
Many changes went into our GC implementation. We added long links
support to our traditional Boehm collector. As for SGen, it is
finally a true concurrent GC, with cementing support. We also fixed
several bugs, such as #9928 pointer free deadlock problem and bugs
in mono_gc_weak_link_get. Async
Rewrite of async StreamReader/StreamWritter operations to not fail
on subsequent async call. Fixes#9761 ASP.NET
Updated encoding support.
Some minor bug fixes. Other improvements
New MONO_DISABLE_SHARED_AREA environment variable lets you turn of
the use of shared memory in Mono (used by performance counters and
optionally by the io-layer).
Updated EntityFramework version that ships with Mono.
Support for ConnectionLifetime parameter in SqlClient (contributed
by 7digital).
Fixed C# Evaluator Terse reader with loops
Don't report user operator error during probing user conversions.
Fixes#10170.
Add explicit interface GetType implementation to avoid object::GetType
become proxy. (C# compiler fix)
Implement use of __refvalue as an lvalue. Fixes#10034. Packaging
We no longer install a /usr/bin/pkg-config on OSX, to stop clashing
with Homebrew.
New in Mono 3.0.3
Mono garbage collectors now feature multiple dtrace probes for
users on MacOS and Solaris.
Many stability improvements and performance work on Mono's Async
support. Garbage Collector
Sgen now has a concurrent GC that can significantly reduce max
pauses. This is an experimental feature that is been continuously
developed. Click here for more details. Bug Fixes
#8401, #9247, #8903, #9087, #9225, #9186, #9118, #9137, #9133,
#9116, #1446, #2246, #6918, #8904, #8927, #2907, #8829, #8786 New
in Mono 3.0.2
We are now on a cadence to deliver new Mono features and updates
on a regular basis. A month after our last release we are now
bringing some 363 commits, with 3055 files changed, 171240
insertions(+), 179104 deletions(-) Major Features
'Reactive Extensions': Mono now bundles the open sourced Microsoft's
Reactive Extensions
F# 3.0: We have updated the bundled F# compiler on OSX to version
3.0 (tag 3.0.22 from the open source fsharp repository).
SGen Garbage Collector: new lazy sweep strategy in Mono's new GC
that reduces the GC times for major collections significantly. We
have also tuned and improved the collector.
System.Json: We reverted System.Json to Mono's version, as it was
lighter and tolerates more input than Microsoft's one. We ship
System.Json.Microsoft as well for users that want to use the
Microsoft stack.
Runtime: Many improvements to Mono, better x86 and ARM support
across the board.
NTLM: Large upgrade to our NTLM stack.
clang: Mono now builds with Clang.
monodoc: vast improvements to our documentation infrastructure.
Bug fixes in 3.0.2
#8566, #8565, #8549, #8646, #8592, #8561, #8559, #8557, #8553,
#8533, #8502, #8468, #8449, #8448, #8414, #8399, #8385, #8384,
#8383, #8366, #8334, #8320, #8312, #8285, #8283, #8263, #8232,
#8156, #8037, #7965, #6650, #5760, #4587, #3582, #3275, #2471 and
#2190
New in Mono 3.0 Major Highlights C# Compiler
Mono now has a complete C# 5.0 compiler with asynchronous programming
support.
Our C# compiler has now completed its migration from using
System.Reflection.Emit as its code generation backend to use the
IKVM.Reflection API. This functionality was previewed in Mono 2.10
and is now the default. With this functionality, developers can
use any mscorlib that they want (for example the MicroFramework
one, or a custom one) without having to build a custom compiler.
We were able to eliminate the multiple executables for the compiler,
and unify all the compilers into one as well as reducing our build
times significantly.
gmcs, dmcs and smcs are now merely aliases to call the mcs compiler
with the proper -sdk flag. Tool/Library Purpose Profile
New Backend 2.10 Backend gmcs C# Compiler 2.0
IKVM.Reflection System.Reflection 2.0 dmcs C# compiler
4.0 IVKM.Reflection System.Reflection 4.0 smcs C#
Compiler 2.1 (Silverlight, MonoTouch, MonoDroid)
IKVM.Reflection System.Reflection 2.0 mcs C# Compiler
Any profile, any mscorlib IKVM.Reflection IKVM.Reflection
csharp Interactive C# Shell/REPL 4.5 System.Reflection
4.5 System.Reflection 4.0 Mono.CSharp C# Compiler as a Service
2.0, 2.1 and 4.0. System.Reflection 4.0 System.Reflection
System.Reflection is still used as a backend for the compiler as
a service and the C# interactive shell. Evaluation can now Compile
Types
The Evaluator.Eval () API is no longer limited to expressions and
statements, you can now pass entire namespace, class, interface,
struct definitions as a string and have the result get compiled.
This extends to the csharp command:
csharp> class X { public int a; } csharp> var t = new X () { a =
1 }; csharp> print (t.a); 1 csharp>
Instance API
The compiler as a service exposed by the Mono.CSharp library is no
longer limited to be a global compiler, now you can instantiate
multiple scopes for the compiler, each having its own set of
localized types and global variables.
For example, the following sample assigns a string in one context
and an int in another one:
using System; using Mono.CSharp;
class MyWorld {
public Evaluator Evaluator;
public MyWorld (string [] args) {
var r = new Report (new ConsoleReportPrinter ());
var cmd = new CommandLineParser (r);
var settings = cmd.ParseArguments (args); if (settings
== null || r.Errors > 0)
Environment.Exit (1);
Evaluator = new Evaluator (settings, r); } }
class X {
static int Main (string [] args) {
var first = new MyWorld (args); var second = new
MyWorld (args);
first.Evaluator.Run ("var Demo = \"hello, world\";");
second.Evaluator.Run ("var Demo = 1;"); first.Evaluator.Run
("print (Demo);"); second.Evaluator.Run ("print
(Demo);"); return 0; } }
C# Interactive Shell
New convenience function print, can be used instead of Console.WriteLine
Additionally, the C# interactive shell will by default use a terse
syntax that does not require a semicolon at the end of an expression,
for example:
csharp> 1 + 2 3 csharp>
4.5 Profile
The 4.5 Profile is a strict superset of the 4.0 API and is now the
default profile.
Because 4.5 API is a strict superset of 4.0 API they both share
the same assembly version number, so we actually install the 4.5
library into the GAC.
Some of the changes in the 4.5 API family include:
New Async methods WinRT compatibility API Newly introduced
assemblies (System.Net.Http, System.Threading.Tasks.Dataflow)
New Microsoft Open Source Stacks
We now include the following assemblies as part of Mono from
Microsoft's ASP.NET WebStack:
System.Net.Http.Formatting.dll System.Web.Http.dll System.Web.Razor.dll
System.Web.WebPages.Deployment.dll System.Web.WebPages.Razor.dll
System.Web.WebPages.dll System.Web.Mvc.dll System.Json.dll
(Previously available in Mono, but now replaced with Microsoft's
implementation)
We also bundle the recently open sourced Entity Framework and
EntityFramework.dll
Garbage Collector
SGen now has a new task management system that allows it to easily
scale new GC-related tasks across multiple CPUs if available:
SGen on SMP systems is able to distribute more work across the
worker threads. Previously only the mark phase was distributed.
SGen is now able to perform parallel collection in the nursery.
SGen has been ported to Win32 SGen has been ported to the MIPS
platform Precise stack scanning has been improved considerably,
and it is now supported on x86 and ARM. On OSX, SGen now uses
Mach APIs directly to speedup some tasks in the garbage collector.
Runtime Optimizations
Implemented fast version of ThreadLocal<T> (it is now a low-level
intrinstic operation)
List<T> optimizations
Support for new attributes to force inlining.
Major change in Mono to support the full table of Unicode surrogate
characters. This code was written by Damien Diederen and David
Mitchell from Logos software.
Runtime supports deferred attaching to the process (when using
suspend=n,server=y the runtime collects metadata until a debugger
is attached).
Implement tail call optimizations on PowerPC for F# (Bug #664631)
New profiler that can be used with Intel's VTune Amplifier Profiler.
Support for System.Net.NetworkInformation.NetworkChanged events on
Linux.
New tool: crlupdate this is the Mono Certficate Revocation List
Downloader and Updater and can be used to download of new, or update
of existing, Certficate Revocation List (CRL) associated with the
certificates present in the user (default) or machine stores. The
CRL present in the stores are used to determine the validity of
unexpired, trusted X.509 certificates. ASP.NET
Bring the error page to the new millenium. CodeContracts
Alexander Chebaturkin has implemented initial version of static
Code Contract analyser as part of SoC 2011. Smaller Updates
Partial support for Portable Class Libraries (details)
Updated Unicode tables, fixes long-standing 480178 MacOS X
We continue to expand significantly our support for MacOS X and
iOS.
Mono can now be compiled by users as a 64-bit binary. Mono still
ships as a 32-bit binary, as most libraries that exist today for
Mono run only in 32 bits.
DriveInfo now returns correct information on OSX. Mono.Data.Sqlite
It is now possible to configure the threading model for SQLite
using the SetConfig method in the SQLiteConnection class.
Supports iOS crypto APIs. C5 Library
We have updated the venerable C5 library to the latest version.
Breaking Changes Since Mono 2.10
In order to be compatible with Microsoft .NET's behavior, exceptions
thrown in object finalizers now cause a full runtime abort. This
behavior was already present for thread pool threads, but hadn't
been enabled for the finalizer thread yet.
Generally, one should avoid exceptions in finalizers entirely. If
you must use them, catch them so that they do not terminate the
application. GDB
GDB support has been extended with a new gdb hook that is aware
of the SGenGC internals. Added pretty printers for more runtime
data structures like MonoVTable to the mono gdb mode.
MIPS port
The MIPS port is now complete, it can do a full bootstrap, and run
the runtime/corlib test suites. Soft Debugger
Single stepping is now implemented using breakpoints in most
cases, speeding it up considerably. Calls to
System.Diagnostics.Debugger:Log()/Break () are now routed to
the debugger using new UserLog/UserBreak event types. S390x
is now supported (Neale Ferguson). MIPS is now supported.
Added new methods to Mono.Debugger.Soft and the runtime to
decrease the amount of packets transmitted between the debugger
and the debuggee. This significantly improves performance over
high latency connections like USB. Many bug fixes.
Static Compiler (AOT)
Made changes to some AOT data structures to reduce their size,
especially when using generics. This reduces the size of an mscorlib
AOT image by about 1-2%.
Many changes to the class libraries allow more core Generics code
to run on systems that do not support JIT compilation.
opensource COBOL is based on OpenCOBOL compiler and has some
extensions used in Japan. It translate COBOL programs to C code
and compiles it using GCC.
This package tracks opensource COBOL UTF-8 version.