Changelog from release notes:
Bug Fixes in Qore:
* fixed a reference bug in the Queue class introduced in the last release
(issue 1309)
* fixed a bug where database types could not be correctly aligned if they had
dependencies (issue 1314); entailed updates in the following modules:
SqlUtil
FreetdsSqlUtil
MysqlSqlUtil
OracleSqlUtil
PgsqlSqlUtil
Schema
* fixed a bug in trunc_str() where an infinite loop could be triggered with
certain arguments and multi-byte character encodings (issue 1327)
* improved prompt collection performance with larger graphs of objects by
eliminating unnecessary graph scans made during object method calls
(issue 1363)
* fixed bugs in date(string) and date(string, string) where invalid input data
was ignored and invalid dates were returned (issue 1369)
* CsvUtil.qm module:
fixed a bug in AbstractCsvIterator::identifyTypeImpl() generating an
error message (issue 1355)
* MailMessage.qm module:
fixed a bug using the default encoding in Message::attach()
(issue issue 1352)
* SqlUtil.qm module:
* fixed the ignored character_semantics column option in schema alignmed
(issue 1379)
* implemented the cop_length() column function (issue 1395)
* OracleSqlUtil.qm module:
OraclePackage attribute body_src is now public to access package bodies
* Qorize.qm module:
Qorize module: new qorize_val() set of functions; qorize_named()
introduced; qorize tests
* TableMapper.qm module:
* fixed runtime option propagation to
TableMapper::SqlStatementMapperIterator from
TableMapper::AbstractSqlStatementOutboundMapper::iterator()
(issue 1418)
* fixed SqlStatementMapperIterator::getCount() (issue 1417)
* added the following methods:
TableMapper::AbstractSqlStatementOutboundMapper::getRowIterator()
TableMapper::InboundTableMapper::iterator()
TableMapper::InboundTableMapperIterator::getRuntime()
TableMapper::InboundTableMapperIterator::replaceRuntime()
TableMapper::InboundTableMapperIterator::setRuntime()
TableMapper::SqlStatementMapperIterator::getRuntime()
TableMapper::SqlStatementMapperIterator::replaceRuntime()
TableMapper::SqlStatementMapperIterator::setRuntime()
* QUnit.qm module:
fixed showing the assertion location when there are test modules on
top of QUnit.qm (issue 1046)
* fixed inconsistency between list splice operator and splice function
(issue 1380)
* fixed the documentation (and DB modules) where
SQLStatement::fetchColumns() was inconsistent; now it will return a
empty hash when no more rows are available to fetch (issue 1241)
* added I/O timeout support to the FtpClient class (issue 1252)
* fixed bugs in Socket::recv() and Socket::recvBinary() with size = 0
where NOTHING could be returned which is invalid according to the
methods' declared return types (issue 1260)
* fixed a bug where FtpClient:get() would fail with an exception when
retrieving an empty file (issue 1255)
* fixed a bug where executing a call reference to a deleted object
method would cause a crash (issue 1268)
* fixed a bug where Qore would allow methods to be called on already
deleted objects under certain conditions (issue 1270)
* fixed a bug where calling exit() in a multithreaded program could
result in a segmentation fault (issue 1215)
* fixed a bug where HttpServer::addListener() could not accept a bind on
port 0 to mean any random port (issue 1284)
* fixed a race condition in prompt collection that could lead to a crash
(issue 1084)
* fixed a bug clearing Socket event queues when the Socket goes out of
scope that could lead to a crash (issue 1292)
* fixed a bug with FtpClient::setWarningQueue() that could cause a crash
(issue 1293)
* fixed a bug where Qore::FtpClient::pwd() returned invalid directory
names (issue 1295)
* fixed bugs in handling websocket close status codes in the
WebSocketUtil, WebSocketClient, and WebSocketHandler modules
(issue 1216)
* TableMapper module fixes:
* fixed a bug with the SqlStatementOutboundMapper::iterator() method;
corrected the iterator object return value which was causing
AbstractMapperIterator::mapBulk() to fail (issue 979)
* fixed a bug with SqlStatementOutboundMapper; it would throw an error
if the required "table" or "sh" options were used and only worked
with subclasses that declared these options (issue 981)
* fixed a bug where AbstractSqlStatementOutboundMapper::iterator()
failed to use options when creating the new Mapper object
(issue 1088)
* fixed a bug where optional arguments were not handled correctly in
some rare cases (issue 974)
* fixed a bug causing a crash when parse_base64_string_to_string() was
called with an empty string (issue 996)
* fixed a bug resolving base class method calls during parse
initialization (issue 1075)
* fixed thread memory handling bug with some operator expressions and
the background operator (issue 1096)
* fixed a race condition in the prompt collection of closure-bound local
variables in the garbage collector (issue 1103)
* fixed a bug where HTTPClient class method variants such as
HTTPClient::get() without a callback would fail to return the message
body when the server sent a reply with chunked transfer encoding
(issue 1117)
* fixed a bug in CsvUtil where backward compatibility was broken for
single-row-type format (issue 1124)
* fixed bugs where declared public functions were missing from the
library ABI (issue 1126)
* fixed bugs where Qore::format_number() and <float>::format() gave
incorrect results when rounding to the significant decimals given in
the format string (issue 1149)
* fixed a bug referencing self in base class constructor arguments
(issue 1169)
* fixed a bug where the incorrect class destructor was called in the
openldap module (issue 1174)
* fixed a bug where declaring a copy() method as synchronized would
result in a crash when the method was called (issue 1188)
* fixed bugs in <string>::getEncoded() and <string>::getDecoded()
regarding CE_XML and CE_NONASCII (issue 1193)
* fixed bugs where Qore::call_object_method() and
Qore::call_object_method_args() allowed private methods to be called
from outside the class (issue 1194)
* fixed a bug where "Deprecated" Functions methods were being internally
registered as RUNTIME_NOOP (issue 1197)
* fixed bugs where the Datasource class would open a connection to the
server in the constructor before options were set and where a server
connection was required to call Datasource::getOption() or
Datasource::setOption() (issue 1201)
* fixed memory errors in the Queue class where spurious exceptions could
be raised (issue 1202)
* fixed a memory leak with static class member initializers (issue 1206)
- buffer:
- Reverted the runtime deprecation of calling Buffer() without new.
- Fixed buffer.transcode() for single-byte character encodings to UCS2.
- promise: --trace-warnings now produces useful stacktraces for Promise
warnings.
- repl: Fixed a bug preventing correct parsing of generator functions.
- V8: Fixed a significant instanceof performance regression.
- buffer: coerce slice parameters consistently
- deps:
- npm: upgrade npm to 3.10.9
- V8: Various fixes to destructuring edge cases
- cherry-pick 3c39bac from V8 upstream
- cherry pick 7166503 from upstream v8
- gtest: the test reporter now outputs tap comments as yamlish
- inspector: inspector now prompts user to use 127.0.0.1 rather
than localhost
- tls: fix memory leak when writing data to TLSWrap instance
during handshake
The SEMVER-MINOR changes include:
- build: export openssl symbols on Windows making it possible to
build addons linking against the bundled version of openssl
- debugger: make listen address configurable in the debugger server
- dgram: generalized send queue to handle close fixing a potential
throw when dgram socket is closed in the listening event handler.
- http: Introduce the 451 status code "Unavailable For Legal Reasons"
- tls: introduce secureContext for tls.connect which is useful for
caching client certificates, key, and CA certificates.
Notable SEMVER-PATCH changes include:
build:
- introduce the configure --shared option for embedders
- gtest: the test reporter now outputs tap comments as yamlish
- src: node no longer aborts when c-ares initialization fails
- tls: fix memory leak when writing data to TLSWrap instance during
handshake
The runpath issue only affected the x86-64 arch on NetBSD. The
spec change was only effective on i386, so relocating the change
enables the RUNPATH tag in the gcc libraries on the amd64 platform.
NetBSD doesn't seem to be honoring -rpath, at least not with binutils
from base. Using binutils from pkgsrc doesn't work either because it
uses the gold linker (for an unknown reason) which fails with an
"unsupported operation". As a result, gcc5-aux was limited to base
binutils for NetBSD 7 and later. The issue was never resolved.
New in version 1.3.12
* enhancement: on x86-64, compiled functions loaded from fasl
files can not be moved, but can be freed, by GC.
Additionally, COMPILE will produce immobile code
if SB-C::*COMPILE-TO-MEMORY-SPACE* is set to :IMMOBILE.
(Caution: the flag is experimental and subject to change.)
The benefits are better physical separation of code from
data, and potentially easier examination of live images by
external tools.
* enhancement: the docstring for SAVE-LISP-AND-DIE has been
amended to say that the :ROOT-STRUCTURES parameter is not
meaningless on gencgc, depending on the platform.
* bug fix: calling a named function (e.g. a DEFUN) concurrently
with redefining that same function could lead to execution of
random bytes.
* bug fix: yes-or-no-p accepts formatter functions (#1639490)
* bug fix: better handling of exceptions on macOS.
New in version 1.3.11
* minor incompatible change: SB-EXT:*INTEXP-MAXIMUM-EXPONENT*
is removed.
* enhancement: TRACE ... :REPORT {TRACE,NIL} now work as
advertised in the documentation string (based on patch by
Patrick Stein)
* enhancement: support unboxed signed-word structure slots on
x86, x86-64 and ARM64. (#377616)
* optimization: faster logical bit-array operations on
multidimensional arrays.
* optimization: better GC performance in the presence of many
threads. (patch by Ilya Perminov, #1339924)
* optimization: multiple-value-call is optimized with multiple
argument forms, not just one. (#753803)
* bug fix: MAKE-ALIEN-STRING returns the number of allocated
bytes as a second value as advertised (reported by Johann
'Myrkraverk' Oskarsson)
* bug fix: when TO-READTABLE is supplied to COPY-READTABLE, it
will contain only the macros in FROM-READTABLE and no others.
(#1631506)
* enhancement: gencgc has been modified for x86-64 on Linux and
macOS to a support mark-and-sweep as well as the traditional
copying strategy. It is conceivable that some applications
might be adversely affected. Please see ':immobile-space' in
'base-target-features.lisp-expr' for further details, and
possible reasons to disable this feature.
* enhancement: x86-64 supports shrinking the fixed overhead in
a structure from 2 words to 1 word, reducing memory
consumption in applications which create many small
structures.
pkgsrc change: rubygems dose not blame open-ended dependency unless verbose
option is enabled.
Ruby 2.3.2 Released Posted by nagachika on 15 Nov 2016
Ruby 2.3.2 has been released.
This is the TEENY version release of the stable 2.3 series.
This release contains update of RubyGems 2.5.2 and update of included ssl
certificates.
Ruby 2.3.3 Released Posted by nagachika on 21 Nov 2016
Ruby 2.3.3 has been released.
This release contains a bug fix about Refinements and Module#prepend. The
mixture use of Module#refine and Module#prepend to the same Class could cause
unexpected NoMethodError. This is a regression on Ruby 2.3.2 released last
week. See [Bug #12920] for details.
There are some bugfixes too. See the ChangeLog for details.
pkgsrc change: rubygems dose not blame open-ended dependency unless verbose
option is enabled.
Ruby 2.2.6 Released Posted by usa on 15 Nov 2016
Ruby 2.2.6 has been released.
This release includes new SSL certificates for RubyGems. And, this also
includes about 80 bug fixes after the previous release. See the ChangeLog for
details.
Two security-related issues were recently reported, and to address these issues
we have just released Go 1.6.4 and Go 1.7.4.
We recommend that all users update to one of these releases (if you're not sure
which, choose Go 1.7.4).
The issues addressed by these releases are:
On Darwin, user's trust preferences for root certificates were not honored. If
the user had a root certificate loaded in their Keychain that was explicitly
not trusted, a Go program would still verify a connection using that root
certificate. This is addressed by https://golang.org/cl/33721, tracked in
https://golang.org/issue/18141.
Thanks to Xy Ziemba for identifying and reporting this issue.
The net/http package's Request.ParseMultipartForm method starts writing to
temporary files once the request body size surpasses the given "maxMemory"
limit. It was possible for an attacker to generate a multipart request crafted
such that the server ran out of file descriptors. This is addressed by
https://golang.org/cl/30410, tracked in https://golang.org/issue/17965.
Thanks to Simon Rawet for the report.
Solves:
/usr/libexec/binutils225/elf/ld.gold: error: cannot find -lreadline
The missing specification is obvious on DragonFly because there's
no publically accessible version of readline in base.
This compiler is mainly used for Ada which normally does not require
gcc5-aux to be installed. Set it as a build dependency by default.
While here, remove obsolete NLS option check.
This large commit accomplishes the following:
1) Switch USE_LANGUAGES=ada to require lang/gcc5-aux (gcc 5.4) instead
of lang/gcc-aux (gcc 4.9.2) on gcc.mk
2) Bump affected ports and fix paths as necessary
3) Upgrade devel/gprbuild to the latest release
- No longer requires lang/gnat_util
- gprslave requires gcc6-aux, so it was disabled for now
4) Fix lang/gnat_util but set PKG_SKIP_REASON
- It has no further purpose in the pkgsrc tree
- It has no practical purpose outside of the pkgsrc tree
- Indicate intent to remove from tree in Jan. 2017
5) Set devel/GPS as failed with PKG_FAIL_REASON
- This version of GPS is several years old and at the time they were
strongly tied to compiler.
- Latest release of GPS require gcc6-aux (not available) and several
new and complex dependencies
- maintainer (me) has no interest to continue supporting it
- Leaving GPS in place until Jan 2017 to give another person chance to
upgrade and take over support
- Latest version in FreeBSD Ports Collection as a reference point
- crypto: The Decipher methods setAuthTag() and setAAD now return this.
- dns: Implemented {ttl: true} for resolve4() and resolve6().
- libuv: Upgrade to v1.10.1
- Fixed a potential buffer overflow when writing data to console on
Windows 10.
- process: Added a new external property to the data returned by
memoryUsage().
- tls: Fixed a memory leak when writes were queued on TLS connection that
was destroyed during handshake.
- V8 (dep): Upgrade to v5.4.500.43
- v8: The data returned by getHeapStatistics() now includes three new
fields: malloced_memory, peak_malloced_memory, and does_zap_garbage.
The compiler failed to build on DragonFly and I think it was because
--enable-shared wasn't explicitly set. Previously this was the default
but maybe it's not anymore. While here I added a new (non-default)
option to build via a long 3 stages instead of a quick single stage.
Versioned as 1.8.5 despite the distfile version, as that seemed like
a confusing misnomer (especially compared to other branches versioning).
SpiderMonkey is the code-name for the Mozilla's C implementation of JavaScript.
* Drop CppBackend. It is removed.
Changelog:
* GCC ABI Tag
* LLVM IR: new intrinsics etc.
* Change LLVM IPO model
* Support ThinLTO
* Improve the ARM targets, ARMv8.2-A support etc.
* Improve the MIPS targets
* Improve the PowerPC target, default optim O3 to O2
* Improve the X86 target, SKylake AVX-512 etc.
* Improve the AMDGPU, better support for Mesa 12
USERLIMIT is given.
From Brad Forschinger in PR pkg/49787
Also from both boehm-gc commit, where there is a longer description of issues
in issue #122:
https://github.com/ivmai/bdwgc/issues/12281cae56522
we have the additions here (adding the definition of STACKBOTTOM if USERLIMIT
otherwise use HEURISTIC2), but not the removal of the first part, which
declares STACKBOTTOM unconditionally.
Reportedly fixes build on SunOS 5.10 sun4u.
- buffer: add buffer.transcode to transcode a buffer's content from one
encoding to another primarily using ICU
- child_process: add public API for IPC channel
- icu:
- Upgraded to ICU 58 - small icu
- Add cldr, tz, and unicode to process.versions
- lib: make String(global) === '\[object global\]'
- libuv: Upgraded to 1.10.0
- readline: use icu based string width calculation
- src:
- add NODE_PRESERVE_SYMLINKS environment variable that has the same effect
as the --preserve-symlinks flag
- Fix String#toLocaleUpperCase() and String#toLocaleLowerCase()
- build: It is now possible to build the documentation from the release
tarball
- buffer: Buffer.alloc() will no longer incorrectly return a zero filled
buffer when an encoding is passed
- deps: upgrade npm in LTS to 2.15.11
- repl: Enable tab completion for global properties
- url: url.format() will now encode all # in search
distinfo from cvs: trusted to convey hashes
patches from same cvs: untrusted thus require hashes to verify
absurdness: Any intruder that can modify the patch in cvs can also modify
the distinfo file.
Only externally hosted patches require hashes. Hopefully some day
thousands of future commits to distinfo files everywhere can be avoided by
making the framework smarter. </rant>
go1.7.2 should not be used. It was tagged but not fully released. The release
was deferred due to a last minute bug report. Use go1.7.3 instead, and refer to
the summary of changes below.
go1.7.3 (released 2016/10/19) includes fixes to the compiler, runtime, and the
crypto/cipher, crypto/tls, net/http, and strings packages. See the Go 1.7.3
milestone on our issue tracker for details.
* Include a patch from PR pkg/51221
Changelog:
security-libs/java.security
SunPKCS11 Provider no longer offering SecureRandom by default
SecureRandom.PKCS11 from the SunPKCS11 Provider is disabled by default on Solaris because the native PKCS11 implementation has poor performance and is not recommended. If your application requires SecureRandom.PKCS11, you can re-enable it by removing "SecureRandom" from the disabledMechanisms list in conf/security/sunpkcs11-solaris.cfg
Performance improvements have also been made in the java.security.SecureRandom class. Improvements in the JDK implementation have allowed for synchronization to be removed from the java.security.SecureRandom.nextBytes(byte[] bytes) method.
See JDK-8098581
Fix following security bugs:
CVE-2016-5556
CVE-2016-5582
CVE-2016-5573
CVE-2016-5597
CVE-2016-5554
CVE-2016-5542
Node.js is an evented I/O framework for the V8 JavaScript engine. It is
intended for writing scalable network programs such as web servers.
This package holds the 6.x LTS release.
This new major version of Node.js includes: V8 5.4 which brings along with
98% coverage of ES6 language features, improved reliability and performance,
and a new experimental URL parser based on the WHATWG URL standard.
As an odd numbered release, in accordance with our Long Term Support plan,
Node.js v7 will be supported only until about June, 2017, with Node.js v8
currently scheduled for release in April, 2017.
Notable changes
Buffer
- Passing invalid input to Buffer.byteLength will now throw an error #8946.
- Calling Buffer without new is now deprecated and will emit a process
warning #8169.
- Passing a negative number to allocUnsafe will now throw an error #7079.
Child Process
- The fork and execFile methods now have stronger argument validation #7399.
Cluster
- The worker.suicide method is deprecated and will emit a process warning
#3747.
Deps
- V8 has been updated to 5.4.500.36 #8317, #8852, #9253.
- NODE_MODULE_VERSION has been updated to 51 #8808.
File System
- A process warning is emitted if a callback is not passed to async file
system methods #7897.
Intl
- Intl.v8BreakIterator constructor has been deprecated and will emit a
process warning #8908.
Promises
- Unhandled Promise rejections have been deprecated and will emit a process
warning #8217.
Punycode
- The punycode module has been deprecated #7941.
URL
- An Experimental WHATWG URL Parser has been introduced #7448.
Local changes:
- add test target
- build and install optional modules (right now: oo, tree, binary,
readline, rlprompt, mk, tclprefix, sqlite3, zlib, win32)
- install shared library
- simplify usage of the GitHub framework
- use --docdir instead of the SUBST framework
Upstream changelog
==================
CHANGES SINCE VERSION 0.76
This release contains some bug fixes plus a number of additional features. A summary is below. See git for the full changelog.
Thanks to everyone who contributed to this release.
Bugs fixed in version 0.77
exec - better handline of pipeline abnormal termination
exec - fix append redirection on Windows
regsub - fix substitution with trailing backslash
expr - improved mathfunc handling and pow/**
chained tailcalls were not always being run
Features added in version 0.77
Add support for configure --docdir=...
Add support for jimsh --help
Add support for booleans in string is and expressions (true, false, on, off, yes, no)
aio - add sync, openssl bindings, posix locking
expr - add support for atan2, hypot and fmod
regexp, regsub:
Add support for \D, \W and \S
Add partial support for \A, \Z
Add support for all character classes: [[::blank:]], [[::xdigit::]], etc.
Update included sqlite3 to v3.14.1
Add $tcl_platform(engine)
Add basic (optional) zlib support
Add interp child interprester support
oo:
Add support for constructor, runs on new object creation
Add support for unknown method
Add Travis and AppVeyor continuous integration support
Use pkg-config in configure to find packages if possibe
Steve Bennett (steveb@workware.net.au)
-- http://jim.tcl.tk/fossil/doc/www/www/news/
Changes in ABCL 1.4.0
Enhancements
============
* Consolidated RUN-PROGRAM fixes (ferada, pipping)
In support of getting a more universal UIOP:RUN-PROGAM across all
contemporary Lisp implementations.
* Upstream consolidated patchset (ferada)
** [r14857] Support `FILE-POSITION` on string streams.
** [r14859] Add multiple disassembler selector.
** [r14860] Add EXTERNAL-ONLY option to APROPOS.
** [r14861] Fix nested classes from JARs not visible with JSS.
* [r14840-2] (Scott L. Burson) Introduced "time of time" semantics for
{encode,decode}-universal time.
* EXTENSIONS:MAKE-TEMP-FILE now takes keyword arguments to
specify values of the prefix and suffix strings to the underlying
JVM implementation of java.io.File.createTempFile().
* [r14849] EXT:OS-{UNIX,WINDOWS}-P now provide a pre-ASDF runtime
check on hosting platform
Fixes
-----
* [r14863] RandomCharacterFile (vibhu)
* [r14839] (JSS) Ensure the interpolation of Java symbol names as
strings (alan ruttenberg)
* [r14889] Fix ANSI-TEST SXHASH.8 (dmiles)
Updates
------
* [r14883] asdf-3.1.7.27
* [r14849] jna-4.2.2
Removed
-------
* [r14885] ASDF-INSTALL was removed
Changes in Racket 6.6
- The new Macro Profiler command-line tool (`raco macro-profiler`) shows
how macros contribute to the final expanded code size of a program.
- Typed Racket supports intersection types. This allows the type system
to track more information, and for programmers to express more precise
types.
- Typed Racket produces up to 4x smaller compiled files compared with
Racket 6.5, reducing the size of the Racket distribution by 50M.
- Typed Racket issues warnings in cases where the contract generated for
`Any` was not strict enough in the past. These warnings will become
errors in a future release. Warnings are enabled via View -> Show Log
in DrRacket, and shown by default on command-line Racket.
- Typed Racket enforces uses of `cast` more correctly, by checking both
the "casted-to" and "casted-from" types. Previously, only the former
were checked. In some cases, this will produce contract errors in
programs that did not have errors before.
- `syntax-parse` raises an error when an ellipsis pattern has an empty
match rather than diverging, and it logs a warning when it statically
detects a nullable pattern, such as `((~seq) ...)`. In the next version
of Racket, it will reject the pattern instead, and it will remove
special handling that currently makes some uses of such patterns
terminate.
- `htdp/dir`: The `create-dir` function delivers data information for
files in a new field. The domain of its functions are backwards
compatible.
Changes in Racket 6.5
- Typed Racket and the racket/contract library generate code with lower
overhead, speeding up typed/untyped interaction in a number of gradual
typing programs we studied.
- Macros written using `syntax-parse` automatically emit more accurate
error messages.
- The contract profiler captures costs from more contract combinators,
including all those in the main distribution.
- Hash table and set iteration, via both existing and new non-generic
sequences, is more performant, up to twice as fast on microbenchmarks.
- The Racket optimizer detects many more optimization opportunities,
including when variables always hold numbers.
- The `db` library supports multi-result statements in MySQL.
- The `net/dns` library supports SRV records.
- The `racket/unix-socket` library supports listen and accept operations.
Use these versions as well in Makefile and PLIST.
It's unclear whether buildlink3.mk might include Makefile.version, this
is the reason to duplicate this information.
There are other packages that might be versioned similarily:
- sqlite3,
- thread.
No user-visible change in the main package.
New in version 1.3.10
* enhancement: more compact low-level error signaling code
* enhancement: more compact encoding of cross-reference information
* optimization: faster out of line fixnum-float comparisons.
* optimization: filling a known simple-vector with a constant value is about
as fast in unoptimized code as in code compiled with (SPEED 3), and the
x86-64 implementation is able to use SSE instructions.
* bug fix: correctly handle the case of a non-local exit within a function
terminating the extent of dynamic-extent functions and variables in the
presence of multiple-values (#1563127)
* bug fix: restore builds on the latest OSX with the latest Xcode (#1470996)
New in version 1.3.9
* minor incompatible change: NAMESTRING prefers to return a BASE-STRING
instead of (ARRAY CHARACTER (*)) when possible.
* enhancement: cached make-instance/allocate-instance constructors can now
get garbage collected.
* optimization: better performance for some unoptimized operations on complex
numbers.
* bug fix: using the options :LOCAL-NICKNAMES and :LOCK in the same
DEFPACKAGE form no longer signals a bogus error
New in version 1.3.8
* minor incompatible change: the system now understands that the CONDITION
type is disjoint with many other system types.
* minor incompatible change: argument types in condition report functions are
now declared (in combination with the above change, this can result in
early detection of erroneous code).
* enhancement: simple arrays of any rank can be stack-allocated on platforms
supporting stack allocation of vectors.
* optimization: improved type derivation for FIND, POSITION, COUNT, SEARCH,
MISMATCH and other array and sequence functions.
* optimization: ALLOCATE-INSTANCE is now as fast as MAKE-INSTANCE.
* optimization: more efficient CHANGE-CLASS.
* bug fix: versions of getresuid() and getresgid() in SB-POSIX no longer
cause memory faults, and should work properly (#1603806, reported by Kieran
Grant)
* bug fix: handle ENOENT from getprotobyname() (#1596043, reported by Stephen
Hassard)
New in version 1.3.7
* bug fix: preserve the name of the destructive function for the destroyed
constant and important result warnings, even when declared NOTINLINE.
* optimization: faster operations on list-sets.
* optimization: better type derivation of set functions. (#1592152)
* optimization: load-time TLS-INDEX assignment, and other microoptimizations,
on x86.
* optimizations in:
+ APPEND;
+ ECASE/ETYPECASE;
+ ARRAY-DIMENSIONS;
+ ARRAY-TOTAL-SIZE;
+ REMOVE, REMOVE-DUPLICATES, DELETE and DELETE-DUPLICATES on lists.
New in version 1.3.6
* bug fix: do not insert conditional newlines in print-unreadable-object
(#1398290). This reverses a change made in #488979 which reversed a fix
advertised in release 0.8.14 to pass the GCL ANSI Test Suite.
* bug fix: constant negative rotations of 32-bit quantities are compiled
correctly on x86-64 and arm. (#1586614, reported by Guillaume Le Vaillant)
- crypto: Don't automatically attempt to load an OpenSSL
configuration file, from the OPENSSL_CONF environment variable
or from the default location for the current platform. Always
triggering a configuration file load attempt may allow an attacker
to load compromised OpenSSL configuration into a Node.js process
if they are able to place a file in a default location.
- node: Introduce the process.release.lts property, set to "Boron".
This value is "Argon" for v4 LTS releases and undefined for all
other releases.
- V8: Backport fix for CVE-2016-5172, an arbitrary memory read.
- v8_inspector: Generate a UUID for each execution of the
inspector. This provides additional security to prevent
unauthorized clients from connecting to the Node.js process via
the v8_inspector port when running with --inspect.
Add LICENSE
Upstream changes:
* 20160813 GnuCOBOL 2.0rc1
** User Defined Functions
** New cobc options:
*** -t listing, -T wide listing, --tlines=lines, lines per page of listing
*** -K <entry>, entry point compile static
*** -i -info, display build/environment
*** -j -job=args, run job after compile
*** -P, generate preprocessor listing
*** -Xref, generate cross reference (requires cobxref)
*** -A, add options to C compile phase
*** -Q, add options to C link phase
*** -D define symbol for Compiler Directive Facility
*** -f<tag>=value override .conf configuration setting
*** -list-reserved, -list-intrinsics, -list-mnemonics, -list-system
*** -W enable ALL warnings (more than -Wall, which excludes some)
*** -Wunreachable report on unreachable statements
*** -Wprototypes warn missing FUNCTION prototypes/definitions
*** -fmfcomment * or / in column 1 as comment
*** -facucomment $ in idicator area treated as *, | treated as *>
*** Many compiler messaging changes, refactored for translation
*** input filename of '-' reads source from standard in
*** New -std=cobol2014
*** new configuration settings
**** call-overflow, literal-length, numeric-literal-length
**** specify-reserved-words
** New cobcrun options:
*** -i -info, display build/environment
*** -r -runtime-env, display runtime configuration
*** -c -config, set runtime config from file
*** -M -module, set path/module name when looking for entry
** New build features
*** coloured textsuite output
*** Windows(tm) Visual Studio build support files added to source tree
** New GnuCOBOL features
*** User Defined Functions, FUNCTION-ID.
*** Most of the COBOL 2014 spec Compiler Directive Facility is in
*** Spanish and Dutch messages along with English and Japanese
*** More C/C++ reserved words tested to avoid conflicts
*** screen IO, many extended ACCEPT DISPLAY screen section changes
*** stricter ordering of CONFIGURATION SECTION paragraphs
*** PICTURE clause, more to COBOL 2014 spec
*** ACCEPT OMITTED, waits for return/enter
*** More Intrinsic Functions, including ISO 8601 FORMATTED-DATE and TIME
*** Changes to INITIAL and RECURSIVE program handling, needs to improve more
*** More IEEE numeric types added, FLOAT-DECIMAL-16, FLOAT-DECIMAL-34, etc
*** More SWITCHes, from SWITCH-01 to SWITCH-36
*** TALLY special register predefined
*** More literal types added, numeric boolean etc.
*** Nested OCCURS DEPENDING ON (when proper config settings
*** comment keywords in IDENTIFICATION DIVISION treated as end-of-line comments
*** PROCEDURE DIVISION RETURNING OMITTED support matching void C functions
*** New system functions
**** CBL_OC_HOSTED - provides access to C extern variables, like stdin, errno
*** More support for EC-exception codes
*** SET LAST EXCEPTION TO OFF
* All files created by GnuCOBOL runtime use the same file permission settings
now: COB_FILE_MODE which was changed to 0666
Notable changes
- fs:
- SyncWriteStream now inherits from Stream.Writable.
- fs.existsSync() has been undeprecated. fs.exists() remains
deprecated.
- http: http.request() now accepts a timeout option.
- module: The module loader now maintains its own realpath cache.
- npm: Upgraded to 3.10.8
- stream: Duplex streams now show proper instanceof Stream.Writable.
- timers: Improved setTimeout/Interval performance by up to 22%.
Release Notes:
Better R7RS conformance
* Keyword-symbol integration: Gauche keywords (e.g. :key) can be symbols
that are automatically bound to itself. It breaks the backward
compatibility in some corner cases, however, so we haven't make the
change in effect by default in 0.9.5. Setting the environment variable
GAUCHE_KEYWORD_IS_SYMBOL turns on this feature. See Keywords, for the
details. We urge you to test your code with this feature turned on,
for pretty soon (probably in the next release) we'll make this feature
effective by default.
* R7RS raise is now conformant of R7RS (which is slightly different from
Gauche's builtin raise, which is srfi-18 conformant).
New modules and procedures
* Renamed modules (old names are still valid, but new code should use
the new names):
+ Data structure implementations are now named data.*; so
util.queue, util.sparse, util.trie are renamed to data.queue,
data.sparse, data.trie.
+ Module text.unicode is renamed to gauche.unicode, for it's
essential for R7RS support.
* New modules:
+ data.cache - Cache
+ data.heap - Heap
+ data.ring-buffer - Ring buffer
+ data.imap - Immutable map
+ data.ideque - Immutable deque
+ text.console: Simple console control module, works on both
vt100-ish terminals and Windows console. Try examples/snake.scm to
see it in action.
+ util.dominator - Find a dominator tree of a directed graph.
+ util.levenshtein - Calculate various edit-dinstances.
+ util.unification - Unification algorithm.
* Low-level hygienic macro support by er-macro-transformer.
* New builtin macros and procedures:
+ and-let1.
+ macroexpand-all - Expands everything in the given form.
+ sys-available-processors - query # of processor cores at runtime.
+ symbol-append.
+ sys-getgroups, sys-mkdtemp.
+ debug-label - Get unique label of an object.
+ length<?, length>?, length>=?, length=? - We had length<=?, so why
not?
+ encode-float, inverse of decode-float.
* In gauche.uvector:
+ New procedures:string->u32vector!, string->s32vector!,
make-uvector, port->uvector
+ Generic accessor and mutator uvector-ref, uvector-set!.
* In gauche.sequence:
+ New searching procedures - sequence-contains,
break-list-by-sequence, break-list-by-sequence!, sequence->
kmp-stepper.
+ New utilities - common-prefix, common-prefix-io.
* In gauche.array: Add constructors u8array, etc., for the consistency.
* In gauche.lazy: lappend-map
* In gauche.generator: gflatten, uvector->generator.
* In gauche.process:
+ run-process-pipeline - for easier pipelining.
+ shell-tokenize-string.
* In gauche.termios: sys-termios-copy
* In gauche.test:
+ test-none-of - As an expected value.
+ test-script - To test script files.
* In gauche.vport: List ports are added. See open-input-char-list,
open-input-byte-list.
* In data.queue: mtqueue-num-waiting-readers.
* In data.trie: trie-longest-match.
* In data.random: samples$, for random sampling.
* In text.csv: Middle-layer procedures: csv-rows->tuples,
make-csv-header-parser, make-csv-record-parser.
* In rfc.uri: uri-ref to access components of uri conveniently.
* In rfc.http: http-status-code->description.
Added srfi supports
* srfi-69: Basic hash tables
* srfi-111: Boxes
* srfi-112: Environment inquiry
* srfi-113: Sets and Bags
* srfi-114: Comparators
* srfi-117: Mutable queues
* srfi-118: Simple adjustable-size strings
* srfi-121: Generators - Covered by gauche.generator.
* srfi-128: Comparators (reduced) - the comparator is actually built-in
to Gauche's core, so that other built-in mechanism such as hashtables,
treemaps, sort, etc. can take comparators.
* srfi-131: ERR5RS Record Syntax (reduced) - Subset of gauche.record.
* srfi-133: Vector library
* srfi-134: Immutable deques - Covered by data.ideque.
More pleasant interactive experience
* Better error message while loading/compiling, using <mixin-condition>
mechanism. Details.
* Improved describe.
* Toplevel REPL commands. See blog entry, or see the manual section
"Working in REPL"
* Scheme-defined procedures maintain source code and source location. It
can be queried by source-code and source-location. The source location
is also shown by describe. (Source code isn't kept for precompiled
Scheme code for now.)
* Online REPL document (info procedure, or ,info/,doc toplevel command)
now shows just the named entry.
* Experimental support of line-editing. If the environment variable
GAUCHE_READ_EDIT is set and the terminal is capable, you can use line
editing (with emacs-like key binding). This feature still in early
development stage and has number of known issues---especially,
multiline edit only partially work. If you're brave, give it a shot,
but don't blame me if your REPL explodes.
* You can invoke editor from repl by (ed file-or-procedure) (see ed). If
the source location is known, you can directly jump to the source of
the procedure, edit, and reload it.
* Now REPL consumes the trailing newline of input S-expr; that is, when
you type (read-line) on REPL, it waits for your input. Before, REPL
didn't consume the trailing newline, so (read-line) immediately
returned when it sees the newline character left in the input buffer,
but that confused users.
* use, select-module, export, import - Now these forms evaluate to zero
values instead of #<undef>, for less cluttering of REPL.
Other notable improvements
* gauche.configure: More feature tests on compilers and linking. Start
using package.scm for the source of package metainformation.
* Extended number syntax:
+ You can insert _ in prefixed numeric literal for readability, e.g.
#b1101_1000_0001_1101.
+ Polar notation of numeric literal recognize pi suffix, e.g.
2@0.5pi => 0.0+2.0i.
+ The reader recognizes CL-ish #<radix>r syntax, e.g. #3r121 for 121
on base 3 (which is 16 in decimal).
* Hashtables are now salted, meaning, it uses different hash functions
at least for each invocation of the program, so that it is immune to
the hash collision attack. The hash function is deprecated, replaced
by default-hash, portable-hash and legacy-hash. See the manual entry
for the details.
* sys-sleep, sys-nanosleep: Changed to retry sleep/nanosleep by default
if it is interrupted by as signal.
* A new debug special reader macro: #?,, which can be used as #?,(proc
arg ...). When evaluated, it displays the form (proc arg ...) and each
value of arg, then calls proc with those arguments and displays the
return value(s). Similar to #?= but you can also check the actual
value of arguments. The #?= stub is also improved to show the thread
from which it is displaying.
* gauche.vport: open-output-uvector now takes an option to make the
output buffer extendable.
* load searches .sld suffix as well, as some other R7RS implementations
do.
* Stack trace now works for threads (but you have to call report-error
within guard clauses explicitly, for by default unhandled error is
propagated to the thread that calls thread-join!).
* gauche.uvector: s8vector->string and u8vector->string now take
optional 'terminator' argument, convenient to extract NUL-terminated
string from fixed size buffer.
* gauche.net: More flexible port number selection in make-server-socket
and make-server-sockets.
* data.sparse: Allow default value per vector (a sparse vector returns
its default value when unset element is accessed).
* rfc.http: Handles ipv6-style server address spec, e.g. [::1]:8888.
* file.util: copy-file - Now takes :if-exists and :append keyword
arguments.
* crypt.bcrypt: Update bcrypt implementation and changed the default
from 2a to 2b.
* gauche.termios: Support mintty on MSYS.
* rfc.tls: Add basic server-side certificate support.
Changes that may alter the behavior of existing code
* gauche.generator: gtake - changed optional argument spec to match
srfi-121. Existing code that needs the old behavior can use a new
procedure gtake*.
* If a hygienic macro inserts a fresh toplevel identifier, that
identifier is renamed. E.g. if you say
(define-syntax define-x (syntax-rules () ((_) (define x #t))))
and then
(define-x)
the toplevel x is renamed and can't be referred to from outside. This
is not explicitly specified in R7RS, but renaming is consistent with
hygiene.
* U+180e Mongolian Vowel Separator is no longer treated as a whitespace
character, since Unicode 6.3.0 changed its category from Zs to Cf.
* when, unless - Now they require at least one expr in their body.
* require: Now loads a file into a special module, instead of #<module
gauche>. This may catch an error that was previously ignored. See the
manual entry for the details.
* include, include-ci: Now relative pathnames, including ones that begin
with ./ or ../, are taken relative to the includer file. Before, files
beginning with ./ and ../ are treated specially, just like load. But
it is less useful for include and just increases confusion.
Bug fixes
* Fixed numerous bugs in hygienic macro expander.
* When a module exports an inherited binding from renaming, it wasn't
searched properly.
* util.match: Fixed a bug that doesn't handle match expressions
generated by hygienic macros.
* Make -fcase-fold option affect REPL as well.
* fixnum-width: It returned a number one smaller than the correct value.
* Fixed a number reader bug handling very big or very small exponent.
* srfi-13: Fixed a bug in xsubstring when 'from' argument is negative.
* parameterize: Fixed a bug that failed to restore parameter values in
some edge cases.
switch the use of nops (most likely used to eliminate hazards too) to
ehb/ssnop. nop doesn't eliminate hazards on a superscalar MIPS CPU.
probably helps the report of vague problems on loongson2f.
comment for the patch.
note: the choice of o32 for this package is questionable, and defaulting
to n32 on gcc/config.gcc instead is probably the right thing, this package
won't run on platforms that use o32, and the n32 linker can't handle the
o32 objects apparently - it dies with "not enough GOT space for local GOT
entries" (PR toolchain/51521).
defaulting to n32 will allow deleting this patch, but I won't make the
transition because I can't get further in the build and hit a compile
assertion about MTYPE not matching CEXT (double float in my case), similar
to GCC bug #20633.
Some highlights of the release are:
- erts: Improved dirty scheduler support. A purge of a module will
- not have to wait for completion of all ongoing dirty NIF calls.
- erts: Improved accuracy of timeouts on MacOS X.
- kernel: Add net_kernel:setopts/2 and net_kernel:getopts/2 to
- control options for distribution sockets in runtime.
- asn1: Compiling multiple ASN.1 modules in the same directory with
- parallel make (make -j) should now be safe.
- httpd: support for PUT and DELETE in mod_esi
- ~30 contributions since 19.0
You can find the Release Notes with more detailed info at
http://www.erlang.org/download/otp_src_19.1.readme
on platforms which do not include driver-arm.o in gcc/config.host, and do
not have this function. such as netbsd/arm.
an alternative would be to add driver-arm.o for the netbsd/arm case too, but
it would be diverging from netbsd base gcc, and /proc/cpuinfo which is needed
for this function to do anything useful is empty at least on my machine.
(I still can't complete a build on ARM)
it was only a precaution to ensure we don't override other values as well.
append to the value rather than overwriting while adding an irrelevant
(and likely unset) variable. NFC
netbsd/mips gcc defaults to -mips1 which lacks ll/sc instructions
(or anything like them), and rejects the assembly code used here.
switch to mips3 (bare minimum for synchronization primitives) for
these instructions. this will result in runtime failures (illegal
instruction) on mips1, but we're unlikely to see any such users
(MIPS3 was released in 1992).
I'm not comfortable using the proper fix of switching to using
__sync_* because that seems to be a compiler builtin and gcc 4.1.2
might not have it.
Also, that change requires careful testing that this 'dumb' change
doesn't. Additionally, g95 is a dead end (upstream gone), so not
worth the effort.
PR pkg/44547: pkgsrc build failure for g95 on NetBSD/cobalt
No change for i386/amd64, but arm needs additional extra_objs to build.
Mistake was in a netbsd-specific part of configure as well.
Thanks to Richard Earnshaw and ktkachov at GCC for finding the problem.
it fails at configure as an unsupported language for powerpc, and is not
too useful.
not bumping pkgrevision as requested - it shouldn't matter to anyone who
already has the package, even on netbsd, and avoids an expensive rebuild.
- openssl: Remove support for loading dynamic third-party engine
modules. An attacker may be able to hide malicious code to be
inserted into Node.js at runtime by masquerading as one of the
dynamic engine modules.
- http: CVE-2016-5325 - Properly validate for allowable characters
in the reason argument in ServerResponse#writeHead().
- buffer: Zero-fill excess bytes in new Buffer objects created
with Buffer.concat() while providing a totalLength parameter
that exceeds the total length of the original Buffer objects
being concatenated.
- src: Fix regression where passing an empty password and/or salt
to crypto.pbkdf2() would cause a fatal error
- tls: CVE-2016-7099 - Fix invalid wildcard certificate validation
check whereby a TLS server may be able to serve an invalid
wildcard certificate for its hostname due to improper validation
of *. in the wildcard string.
- v8: Fix regression where a regex on a frozen object was broken
- openssl: Remove support for loading dynamic third-party engine
modules. An attacker may be able to hide malicious code to be
inserted into Node.js at runtime by masquerading as one of the
dynamic engine modules.
- http: CVE-2016-5325 - Properly validate for allowable characters
in the reason argument in ServerResponse#writeHead().
- buffer: Zero-fill excess bytes in new Buffer objects created
with Buffer.concat() while providing a totalLength parameter
that exceeds the total length of the original Buffer objects
being concatenated.
- tls: CVE-2016-7099 - Fix invalid wildcard certificate validation
check whereby a TLS server may be able to serve an invalid
wildcard certificate for its hostname due to improper validation
of *. in the wildcard string.
cint is no longer developed upstream and was replaced with cling in root.
Add the latest version available from https://root.cern.ch/download/
New HOMEPAGE ships an unversioned tarball as the latest release, but its
conent is unrecognized and very different from the known cint from the old
cern.ch site.
FreeBSD claims to ship with cint-5.18 and there are references to it, but
it's probably root version 5.18 with possibly extracted files for cint.
If there is a newer version somewhere it will be upgraded later accordingly.
pkgsrc changes:
- refactor configure & build & install stages
- install demo files
- add license
- update DESCR
- new HOMEPAGE
- new MASTER_SITES
- remove conflict with devel/man-pages
Upstream changelog
==================
* 5.16.2, July 14 2005
* 6.1.2, July 14 2005
* - , Convert most of the C source file from K&R C to Ansi C++
* - The files *.c were renamed v6_*.cxx. The interfaces are
* - kept backward compatible (extern "C")
*
* 5.16.3, November 11, 2005
* 6.1.3, November 11, 2005
* - , Port to windows visual C++ version 8
* - , Many bugs fixes (see CVS change log for details)
*
* 5.16.4 November 30, 2005
* 6.1.4 November 30, 2005
* - Add support for generating dictionary using the reflex API (makecint -c3)
* - See CVS Change log for other updates.
*
* 5.16.5 November 30, 2005
* 6.1.5 November 30, 2005
* - Improve support for generating dictionary using the reflex API (makecint -c3)
* - Extend ClassInfo to better support array allocation and deallocation
* - See CVS Change log for other updates.
*
* 5.16.6 January 9, 2006
* 6.1.6 January 9, 2006
* - Import and use the shadow class mechanism from ROOT. This allows the
* calculation of the data member offset even if they are protected/private.
* - See CVS Change log for other updates (http://root.cern.ch/root/ChangeLog-cint.phtml)
*
* 5.16.7 January 19, 2006
* 6.1.7 January 19, 2006
* - Many improvement to the shadow class generation.
* - See CVS Change log for other updates (http://root.cern.ch/root/ChangeLog-cint.phtml)
*
* 5.16.8 February 9, 2006
* 6.1.8 February 9, 2006
* - Update and streamline the handling operator new and delete
* - See CVS Change log for other updates (http://root.cern.ch/root/ChangeLog-cint.phtml)
*
* 5.16.9 March 3, 2006
* 6.1.9 March 3, 2006
* - Upgrade the support for operator new and delete in the dictionaries (improve usage
of user provided operator new).
* - Add a new command line option (-E) to insure exit on error.
* - Improve error message in case of missing symbols.
* - See CVS Change log for other updates (http://root.cern.ch/root/ChangeLog-cint.phtml)
*
* 5.16.10 March 30, 2006
* 6.1.10 March 30, 2006
* - Refresh of the port to icc and alpha cxx
* - Fix for comment parsing in the CPP parser.
* - See CVS Change log for other updates (http://root.cern.ch/root/ChangeLog-cint.phtml)
*
* 5.16.11 April 14, 2006
* 6.1.10 April 14, 2006
* - Improve template support
* - Port to MacOS on Intel
* - See CVS Change log for other updates (http://root.cern.ch/root/ChangeLog-cint.phtml)
*
* 5.16.12 May 16, 2006
* 6.1.12 May 16, 2006
* - Add support for variadic functions on AMD64 and EM64T.
* - See CVS Change log for other updates (http://root.cern.ch/root/ChangeLog-cint.phtml)
*
* 5.16.13 June 8, 2006
* 6.1.13 June 8, 2006
* - New build system based on the configure/make model. MAKEINFO is not longer used.
* - A few more function has been officially exported and/or added to the appropriate
* header files
* - See CVS Change log for other updates (http://root.cern.ch/root/ChangeLog-cint.phtml)
*
* 5.16.14 August 18, 2006
* 6.1.14 August 18, 2006
* - Clarification of the license (Now MIT License)
* - See CVS Change log for other updates (http://root.cern.ch/root/ChangeLog-cint.phtml)
*
* 5.16.15 September 21, 2006
* 6.1.15 September 21, 2006
* - Various bug fixes (include a couple of cint dlls cleanups)
* - See CVS Change log for other updates (http://root.cern.ch/root/ChangeLog-cint.phtml)
*
* 5.16.16 November 24, 2006
* 6.1.16 November 24, 2006
* - Some minor bug fixes: remove G__CINTVERSION from strm dict files, AMD64 vararg passing, long comments, extern "C" multiline issue
* - G__sizeof, G__getfunction now part of the API
* - respect system macros when generating dictionaries
* - Move public header files into inc/
* - Changes to achieve binary compatibility with cint7; some of these are temporary
* - Move C++ API into namespace Cint
* - added build support for linux x86_64
* - See CVS Change log for other updates (http://root.cern.ch/root/ChangeLog-cint.phtml)
*
* 5.16.17 December 12, 2006
* 6.1.17 December 12, 2006
* - Some previously publicly visibly types are now private. Please let us know if this
* causes problems for you!
* - G__MethodInfo::Get/SetUserParam() added
* - extend G__ClassInfo::AddMethod
* - the relevant platform macros are now known to CINT, except when interpreting where the
* compiler macros (e.g. __GNUC__) are hidden
* - Fix prec_stl for solarisgcc, cygwin (posix)
*
* 5.16.18 February 9, 2007
* 6.1.18 February 9, 2007
* - Fix a few bugs (fix arithmetics involving long double, "!",
* LL suffix for operators' long long args, quoting of default
* params,
* - Implement G__pop_tempobject_nodel() to "steal" temp object from CINT
* - modify algo.h's random_shuffle to use new Cint::G__long_random in new v6_random.cxx
* - make G__free_ifunc_table non-recursive
* - for ROOT, use R__HAVE_CONFIG, not HAVE_CONFIG
*
* 5.16.19 March 16, 2007
* 6.1.19 March 16, 2007
* - handle 1dim arrays properly (!= scalar)
* - more memory effient G__param and G__inherit
* - implement forward decl in dictionaries (e.g. if dict for "A* f()" is
* setup, lib containing A will not be loaded)
* - add a reference layer between API ifunc* and internal ifunc*, so
* reloading (scrupto of scripts) doesn't invalidate the external
* ptrs for dependent libs
* - update tagnums below scrupto limit if they are autoload entries
* - allow multiple shared lib init routines
* - bug fixes: fix decl locations in .so-s, distinguish "class*",
* "decl if unknown" in G__search_tagname
* - split Shadow.h off Api.h
* - remove temporary files on windows once they are unused (fixes problem
* with tmp file flooding)
*
configs for gcc on netbsd don't build -march=native support, but this
stray prototype was left, causing build errors:
gcc.o:(.rodata+0x58c4): undefined reference to
`host_detect_local_cpu(int, char const**)'
Notable changes
- crypto: Added crypto.timingSafeEqual().
- events: Made the "max event listeners" memory leak warning more
accessible.
- promises: Unhandled rejections now emit a process warning after
the first tick.
- repl: Added auto alignment for .editor mode.
- util: Some functionality has been added to util.inspect():
- Returning this from a custom inspect function now works.
- Added support for Symbol-based custom inspection methods.
Original changes in python27/Makefile r1.62-r1.67
=================================================
Add an option for Python: x11
Fix dlopen(3) calls in _ctypes.so for X11BASE libraries
A Python code can dynamically load shared libraries and it's wrapped with
a plain dlopen(3) call. The holder of this interface (_ctypes module)
without rpath set to X11BASE cannot detect libs like 'GL'.
Fixing find_library() on POSIX-like (excluding Darwin) systems.
This isn't addressing Python's wrapper for dlopen(3).
This possibily addresses mostly NetBSD as other popular OSes have ldconfig.
Testing commands:
- before applying the patch
>>> from ctypes.util import find_library
>>> find_library("m")
'libm.so.0'
>>> find_library("crypto")
'libcrypto.so.11'
>>> find_library("GL")
>>> find_library("curl")
- after applying the patch
>>> from ctypes.util import find_library
>>> find_library("m")
'libm.so.0'
>>> find_library("crypto")
'libcrypto.so.11'
>>> find_library("GL")
'libGL.so.2'
>>> find_library("curl")
'libcurl.so.4'
This patch doesn't solve the case of custom dirs like $PREFIX/qt5/lib.
However it's solving most common cases of using this call.
A possible solution is to parse the output "pkg_info -La"... however it's
very slow. In other words a cache with libraries might be needed to handle
it efficiently.
Original changes in python27/Makefile r1.62-r1.67
=================================================
Add an option for Python: x11
Fix dlopen(3) calls in _ctypes.so for X11BASE libraries
A Python code can dynamically load shared libraries and it's wrapped with
a plain dlopen(3) call. The holder of this interface (_ctypes module)
without rpath set to X11BASE cannot detect libs like 'GL'.
Fixing find_library() on POSIX-like (excluding Darwin) systems.
This isn't addressing Python's wrapper for dlopen(3).
This possibily addresses mostly NetBSD as other popular OSes have ldconfig.
Testing commands:
- before applying the patch
>>> from ctypes.util import find_library
>>> find_library("m")
'libm.so.0'
>>> find_library("crypto")
'libcrypto.so.11'
>>> find_library("GL")
>>> find_library("curl")
- after applying the patch
>>> from ctypes.util import find_library
>>> find_library("m")
'libm.so.0'
>>> find_library("crypto")
'libcrypto.so.11'
>>> find_library("GL")
'libGL.so.2'
>>> find_library("curl")
'libcurl.so.4'
This patch doesn't solve the case of custom dirs like $PREFIX/qt5/lib.
However it's solving most common cases of using this call.
A possible solution is to parse the output "pkg_info -La"... however it's
very slow. In other words a cache with libraries might be needed to handle
it efficiently.
Nim (formerly known as "Nimrod") is a statically typed, imperative
programming language that tries to give the programmer ultimate power
without compromises on runtime efficiency. This means it focuses on
compile-time mechanisms in all their various forms.
Beneath a nice infix/indentation based syntax with a powerful (AST based,
hygienic) macro system lies a semantic model that supports a soft realtime
GC on thread local heaps. Asynchronous message passing is used between
threads, so no "stop the world" mechanism is necessary. An unsafe shared
memory heap is also provided for the increased efficiency that results from
that model.
Originally packaged in pkgsrc-wip by:
- Christian Koch
- Roland Illig
and
- myself.
pointed out by jperkin, thanks
fix netbsd gcc-java option build
netbsd has gethostbyname_r in libc, but not in any headers.
configure test succeeds, but compilation fails.
workaround with passing ac_cv_func_gethostbyname_r=no to autoconf
thanks joerg for the suggestion.
- buffer: Fix regression introduced in v6.4.0 that prevented
.write() at buffer end
- deps: update V8 to 5.1.281.75
- inspector:
- fix inspector hang while disconnecting
- add support for uncaught exception
- repl: Fix saving editor mode text in .save
- Revert "repl,util: insert carriage returns in output"
XXX add logic to mk/compiler/gcc.mk
Changes from GCC5 series:
Caveats
The default mode for C++ is now -std=gnu++14 instead of -std=gnu++98.
Support for a number of older systems and recently unmaintained or untested target ports of GCC has been declared obsolete in GCC 6. Unless there is activity to revive them, the next release of GCC will have their sources permanently removed.
The following ports for individual systems on particular architectures have been obsoleted:
SH5 / SH64 (sh64-*-*) as announced here.
The AVR port requires binutils version 2.26.1 or later for the fix for PR71151 to work.
General Optimizer Improvements
UndefinedBehaviorSanitizer gained a new sanitization option, -fsanitize=bounds-strict, which enables strict checking of array bounds. In particular, it enables -fsanitize=bounds as well as instrumentation of flexible array member-like arrays.
Type-based alias analysis now disambiguates accesses to different pointers. This improves precision of the alias oracle by about 20-30% on higher-level C++ programs. Programs doing invalid type punning of pointer types may now need -fno-strict-aliasing to work correctly.
Alias analysis now correctly supports weakref and alias attributes. This makes it possible to access both a variable and its alias in one translation unit which is common with link-time optimization.
Value range propagation now assumes that the this pointer of C++ member functions is non-null. This eliminates common null pointer checks but also breaks some non-conforming code-bases (such as Qt-5, Chromium, KDevelop). As a temporary work-around -fno-delete-null-pointer-checks can be used. Wrong code can be identified by using -fsanitize=undefined.
Link-time optimization improvements:
warning and error attributes are now correctly preserved by declaration linking and thus -D_FORTIFY_SOURCE=2 is now supported with -flto.
Type merging was fixed to handle C and Fortran interoperability rules as defined by the Fortran 2008 language standard.
As an exception, CHARACTER(KIND=C_CHAR) is not inter-operable with char in all cases because it is an array while char is scalar. INTEGER(KIND=C_SIGNED_CHAR) should be used instead. In general, this inter-operability cannot be implemented, for example, on targets where function passing conventions of arrays differs from scalars.
More type information is now preserved at link time reducing the loss of accuracy of the type based alias analysis compared to builds without link-time optimization.
Invalid type punning on global variables and declarations is now reported with -Wodr-type-mismatch.
The size of LTO object files was reduced by about 11% (measured by compiling Firefox 46.0).
Link-time parallelization (enabled using -flto=n) was significantly improved by decreasing the size of streamed data when partitioning programs. The size of streamed IL while compiling Firefox 46.0 was reduced by 66%.
The linker plugin was extended to pass information about type of binary produced to GCC back end (that can be also manually controlled by -flinker-output). This makes it possible to properly configure the code generator and support incremental linking. Incremental linking of LTO objects by gcc -r is now supported on plugin-enabled setups.
There are two ways to perform incremental linking:
Linking by ld -r will result in an object file with all sections from individual object files mechanically merged. This delays the actual link time optimization to final linking step and thus permits whole program optimization. Linking final binary with such object files is however slower.
Linking by gcc -r will lead to link time optimization and produce final binary into the object file. Linking such object file is fast but avoids any benefits from whole program optimization.
GCC 7 will support incremental link-time optimization with gcc -r.
Inter-procedural optimization improvements:
Basic jump threading is now performed before profile construction and inline analysis, resulting in more realistic size and time estimates that drive the heuristics of the of inliner and function cloning passes.
Function cloning now more aggressively eliminates unused function parameters.
New Languages and Language specific improvements
Compared to GCC 5, the GCC 6 release series includes a much improved implementation of the OpenACC 2.0a specification. Highlights are:
In addition to single-threaded host-fallback execution, offloading is supported for nvptx (Nvidia GPUs) on x86_64 and PowerPC 64-bit little-endian GNU/Linux host systems. For nvptx offloading, with the OpenACC parallel construct, the execution model allows for an arbitrary number of gangs, up to 32 workers, and 32 vectors.
Initial support for parallelized execution of OpenACC kernels constructs:
Parallelization of a kernels region is switched on by -fopenacc combined with -O2 or higher.
Code is offloaded onto multiple gangs, but executes with just one worker, and a vector length of 1.
Directives inside a kernels region are not supported.
Loops with reductions can be parallelized.
Only kernels regions with one loop nest are parallelized.
Only the outer-most loop of a loop nest can be parallelized.
Loop nests containing sibling loops are not parallelized.
Typically, using the OpenACC parallel construct gives much better performance, compared to the initial support of the OpenACC kernels construct.
The device_type clause is not supported. The bind and nohost clauses are not supported. The host_data directive is not supported in Fortran.
Nested parallelism (cf. CUDA dynamic parallelism) is not supported.
Usage of OpenACC constructs inside multithreaded contexts (such as created by OpenMP, or pthread programming) is not supported.
If a call to the acc_on_device function has a compile-time constant argument, the function call evaluates to a compile-time constant value only for C and C++ but not for Fortran.
See the OpenACC and Offloading wiki pages for further information.
C family
Version 4.5 of the OpenMP specification is now supported in the C and C++ compilers.
The C and C++ compilers now support attributes on enumerators. For instance, it is now possible to mark enumerators as deprecated:
enum {
newval,
oldval __attribute__ ((deprecated ("too old")))
};
Source locations for the C and C++ compilers are now tracked as ranges, rather than just points, making it easier to identify the subexpression of interest within a complicated expression. For example:
test.cc: In function 'int test(int, int, foo, int, int)':
test.cc:5:16: error: no match for 'operator*' (operand types are 'int' and 'foo')
return p + q * r * s + t;
~~^~~
In addition, there is now initial support for precise diagnostic locations within strings:
format-strings.c:3:14: warning: field width specifier '*' expects a matching 'int' argument [-Wformat=]
printf("%*d");
^
Diagnostics can now contain "fix-it hints", which are displayed in context underneath the relevant source code. For example:
fixits.c: In function 'bad_deref':
fixits.c:11:13: error: 'ptr' is a pointer; did you mean to use '->'?
return ptr.x;
^
->
The C and C++ compilers now offer suggestions for misspelled field names:
spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'?
return ptr->colour;
^~~~~~
New command-line options have been added for the C and C++ compilers:
-Wshift-negative-value warns about left shifting a negative value.
-Wshift-overflow warns about left shift overflows. This warning is enabled by default. -Wshift-overflow=2 also warns about left-shifting 1 into the sign bit.
-Wtautological-compare warns if a self-comparison always evaluates to true or false. This warning is enabled by -Wall.
-Wnull-dereference warns if the compiler detects paths that trigger erroneous or undefined behavior due to dereferencing a null pointer. This option is only active when -fdelete-null-pointer-checks is active, which is enabled by optimizations in most targets. The precision of the warnings depends on the optimization options used.
-Wduplicated-cond warns about duplicated conditions in an if-else-if chain.
-Wmisleading-indentation warns about places where the indentation of the code gives a misleading idea of the block structure of the code to a human reader. For example, given CVE-2014-1266:
sslKeyExchange.c: In function 'SSLVerifySignedServerKeyExchange':
sslKeyExchange.c:629:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
^~
sslKeyExchange.c:631:5: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'
goto fail;
^~~~
This warning is enabled by -Wall.
The C and C++ compilers now emit saner error messages if merge-conflict markers are present in a source file.
test.c:3:1: error: version control conflict marker in file
<<<<<<< HEAD
^~~~~~~
C
It is possible to disable warnings when an initialized field of a structure or a union with side effects is being overridden when using designated initializers via a new warning option -Woverride-init-side-effects.
A new type attribute scalar_storage_order applying to structures and unions has been introduced. It specifies the storage order (aka endianness) in memory of scalar fields in structures or unions.
C++
The default mode has been changed to -std=gnu++14.
C++ Concepts are now supported when compiling with -fconcepts.
-flifetime-dse is more aggressive in dead-store elimination in situations where a memory store to a location precedes a constructor to that memory location.
G++ now supports C++17 fold expressions, u8 character literals, extended static_assert, and nested namespace definitions.
G++ now allows constant evaluation for all non-type template arguments.
G++ now supports C++ Transactional Memory when compiling with -fgnu-tm.
Runtime Library (libstdc++)
Extensions to the C++ Library to support mathematical special functions (ISO/IEC 29124:2010), thanks to Edward Smith-Rowland.
Experimental support for C++17, including the following new features:
std::uncaught_exceptions function (this is also available for -std=gnu++NN modes);
new member functions try_emplace and insert_or_assign for unique_key maps;
non-member functions std::size, std::empty, and std::data for accessing containers and arrays;
std::invoke;
std::shared_mutex;
std::void_t and std::bool_constant metaprogramming utilities.
Thanks to Ville Voutilainen for contributing many of the C++17 features.
An experimental implementation of the File System TS.
Experimental support for most features of the second version of the Library Fundamentals TS. This includes polymorphic memory resources and array support in shared_ptr, thanks to Fan You.
Some assertions checked by Debug Mode can now also be enabled by _GLIBCXX_ASSERTIONS. The subset of checks enabled by the new macro have less run-time overhead than the full _GLIBCXX_DEBUG checks and don't affect the library ABI, so can be enabled per-translation unit.
Timed mutex types are supported on more targets, including Darwin.
Improved std::locale support for DragonFly and FreeBSD, thanks to John Marino and Andreas Tobler.
Fortran
Fortran 2008 SUBMODULE support.
Fortran 2015 EVENT_TYPE, EVENT_POST, EVENT_WAIT, and EVENT_QUERY support.
Improved support for Fortran 2003 deferred-length character variables.
Improved support for OpenMP and OpenACC.
The MATMUL intrinsic is now inlined for straightforward cases if front-end optimization is active. The maximum size for inlining can be set to n with the -finline-matmul-limit=n option and turned off with -finline-matmul-limit=0.
The -Wconversion-extra option will warn about REAL constants which have excess precision for their kind.
The -Winteger-division option has been added, which warns about divisions of integer constants which are truncated. This option is included in -Wall by default.
libgccjit
The driver code is now run in-process within libgccjit, providing a small speed-up of the compilation process.
The API has gained entrypoints for
timing how long was spent in different parts of code,
creating switch statements,
allowing unreachable basic blocks in a function, and
adding arbitrary command-line options to a compilation.
New Targets and Target Specific Improvements
AArch64
A number of AArch64-specific options have been added. The most important ones are summarised in this section but for usage instructions please refer to the documentation.
The new command-line options -march=native, -mcpu=native and -mtune=native are now available on native AArch64 GNU/Linux systems. Specifying these options causes GCC to auto-detect the host CPU and choose the optimal setting for that system.
-fpic is now supported when generating code for the small code model (-mcmodel=small). The size of the global offset table (GOT) is limited to 28KiB under the LP64 SysV ABI, and 15KiB under the ILP32 SysV ABI.
The AArch64 port now supports target attributes and pragmas. Please refer to the documentation for details of available attributes and pragmas as well as usage instructions.
Link-time optimization across translation units with different target-specific options is now supported.
The option -mtls-size= is now supported. It can be used to specify the bit size of TLS offsets, allowing GCC to generate better TLS instruction sequences.
The option -fno-plt is now fully functional.
The ARMv8.1-A architecture and the Large System Extensions are now supported. They can be used by specifying the -march=armv8.1-a option. Additionally, the +lse option extension can be used in a similar fashion to other option extensions. The Large System Extensions introduce new instructions that are used in the implementation of atomic operations.
The ACLE half-precision floating-point type __fp16 is now supported in the C and C++ languages.
The ARM Cortex-A35 processor is now supported via the -mcpu=cortex-a35 and -mtune=cortex-a35 options as well as the equivalent target attributes and pragmas.
The Qualcomm QDF24xx processor is now supported via the -mcpu=qdf24xx and -mtune=qdf24xx options as well as the equivalent target attributes and pragmas.
Code generation for the ARM Cortex-A57 processor is improved. Among general code generation improvements, a better algorithm is added for allocating registers to floating-point multiply-accumulate instructions offering increased performance when compiling with -mcpu=cortex-a57 or -mtune=cortex-a57.
Code generation for the ARM Cortex-A53 processor is improved. A more accurate instruction scheduling model for the processor is now used, and a number of compiler tuning parameters have been set to offer increased performance when compiling with -mcpu=cortex-a53 or -mtune=cortex-a53.
Code generation for the Samsung Exynos M1 processor is improved. A more accurate instruction scheduling model for the processor is now used, and a number of compiler tuning parameters have been set to offer increased performance when compiling with -mcpu=exynos-m1 or -mtune=exynos-m1.
Improvements in the generation of conditional branches and literal pools were made to allow the compiler to compile functions of a large size. Constant pools are now placed into separate rodata sections. The new option -mpc-relative-literal-loads is introduced to generate per-function literal pools, limiting the maximum size of functions to 1MiB.
Several correctness issues with generation of Advanced SIMD instructions for big-endian targets have been fixed resulting in improved code generation for ACLE intrinsics with -mbig-endian.
ARM
Support for revisions of the ARM architecture prior to ARMv4t has been deprecated and will be removed in a future GCC release. The -mcpu and -mtune values that are deprecated are: arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620, arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720, arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi, arm8, arm810, strongarm, strongarm110, strongarm1100, strongarm1110, fa526, fa626. The value arm7tdmi is still supported. The values of -march that are deprecated are: armv2,armv2a,armv3,armv3m,armv4.
The ARM port now supports target attributes and pragmas. Please refer to the documentation for details of available attributes and pragmas as well as usage instructions.
Support has been added for the following processors (GCC identifiers in parentheses): ARM Cortex-A32 (cortex-a32), ARM Cortex-A35 (cortex-a35). The GCC identifiers can be used as arguments to the -mcpu or -mtune options, for example: -mcpu=cortex-a32 or -mtune=cortex-a35.
Heterogeneous Systems Architecture
GCC can now generate HSAIL (Heterogeneous System Architecture Intermediate Language) for simple OpenMP device constructs if configured with --enable-offload-targets=hsa. A new libgomp plugin then runs the HSA GPU kernels implementing these constructs on HSA capable GPUs via a standard HSA run time.
If the HSA compilation back end determines it cannot output HSAIL for a particular input, it gives a warning by default. These warnings can be suppressed with -Wno-hsa. To give a few examples, the HSA back end does not implement compilation of code using function pointers, automatic allocation of variable sized arrays, functions with variadic arguments as well as a number of other less common programming constructs.
When compilation for HSA is enabled, the compiler attempts to compile composite OpenMP constructs
#pragma omp target teams distribute parallel for
into parallel HSA GPU kernels.
IA-32/x86-64
GCC now supports the Intel CPU named Skylake with AVX-512 extensions through -march=skylake-avx512. The switch enables the following ISA extensions: AVX-512F, AVX512VL, AVX-512CD, AVX-512BW, AVX-512DQ.
Support for new AMD instructions monitorx and mwaitx has been added. This includes new intrinsic and built-in support. It is enabled through option -mmwaitx. The instructions monitorx and mwaitx implement the same functionality as the old monitor and mwait instructions. In addition mwaitx adds a configurable timer. The timer value is received as third argument and stored in register %ebx.
x86-64 targets now allow stack realignment from a word-aligned stack pointer using the command-line option -mstackrealign or __attribute__ ((force_align_arg_pointer)). This allows functions compiled with a vector-aligned stack to be invoked from objects that keep only word-alignment.
Support for address spaces __seg_fs, __seg_gs, and __seg_tls. These can be used to access data via the %fs and %gs segments without having to resort to inline assembly. Please refer to the documentation for usage instructions.
Support for AMD Zen (family 17h) processors is now available through the -march=znver1 and -mtune=znver1 options.
MeP
Support for the MeP (mep-elf) architecture has been deprecated and will be removed in a future GCC release.
MSP430
The MSP430 compiler now has the ability to automatically distribute code and data between low memory (addresses below 64K) and high memory. This only applies to parts that actually have both memory regions and only if the linker script for the part has been specifically set up to support this feature.
A new attribute of either can be applied to both functions and data, and this tells the compiler to place the object into low memory if there is room and into high memory otherwise. Two other new attributes - lower and upper - can be used to explicitly state that an object should be placed in the specified memory region. If there is not enough left in that region the compilation will fail.
Two new command-line options - -mcode-region=[lower|upper|either] and -mdata-region=[lower|upper|either] - can be used to tell the compiler what to do with objects that do not have one of these new attributes.
PowerPC / PowerPC64 / RS6000
PowerPC64 now supports IEEE 128-bit floating-point using the __float128 data type. In GCC 6, this is not enabled by default, but you can enable it with -mfloat128. The IEEE 128-bit floating-point support requires the use of the VSX instruction set. IEEE 128-bit floating-point values are passed and returned as a single vector value. The software emulator for IEEE 128-bit floating-point support is only built on PowerPC GNU/Linux systems where the default CPU is at least power7. On future ISA 3.0 systems (POWER 9 and later), you will be able to use the -mfloat128-hardware option to use the ISA 3.0 instructions that support IEEE 128-bit floating-point. An additional type (__ibm128) has been added to refer to the IBM extended double type that normally implements long double. This will allow for a future transition to implementing long double with IEEE 128-bit floating-point.
Basic support has been added for POWER9 hardware that will use the recently published OpenPOWER ISA 3.0 instructions. The following new switches are available:
-mcpu=power9: Implement all of the ISA 3.0 instructions supported by the compiler.
-mtune=power9: In the future, apply tuning for POWER9 systems. Currently, POWER8 tunings are used.
-mmodulo: Generate code using the ISA 3.0 integer instructions (modulus, count trailing zeros, array index support, integer multiply/add).
-mpower9-fusion: Generate code to suitably fuse instruction sequences for a POWER9 system.
-mpower9-dform: Generate code to use the new D-form (register+offset) memory instructions for the vector registers.
-mpower9-vector: Generate code using the new ISA 3.0 vector (VSX or Altivec) instructions.
-mpower9-minmax: Reserved for future development.
-mtoc-fusion: Keep TOC entries together to provide more fusion opportunities.
New constraints have been added to support IEEE 128-bit floating-point and ISA 3.0 instructions:
wb: Altivec register if -mpower9-dform is enabled.
we: VSX register if -mpower9-vector is enabled for 64-bit code generation.
wo: VSX register if -mpower9-vector is enabled.
wp: Reserved for future use if long double is implemented with IEEE 128-bit floating-point instead of IBM extended double.
wq: VSX register if -mfloat128 is enabled.
wF: Memory operand suitable for POWER9 fusion load/store.
wG: Memory operand suitable for TOC fusion memory references.
wL: Integer constant identifying the element number mfvsrld accesses within a vector.
Support has been added for __builtin_cpu_is() and __builtin_cpu_supports(), allowing for very fast access to AT_PLATFORM, AT_HWCAP, and AT_HWCAP2 values. This requires use of glibc 2.23 or later.
All hardware transactional memory builtins now correctly behave as memory barriers. Programmers can use #ifdef __TM_FENCE__ to determine whether their "old" compiler treats the builtins as barriers.
Split-stack support has been added for gccgo on PowerPC64 for both big- and little-endian (but not for 32-bit). The gold linker from at least binutils 2.25.1 must be available in the PATH when configuring and building gccgo to enable split stack. (The requirement for binutils 2.25.1 applies to PowerPC64 only.) The split-stack feature allows a small initial stack size to be allocated for each goroutine, which increases as needed.
GCC on PowerPC now supports the standard lround function.
A new configuration option ---with-advance-toolchain=at was added for PowerPC 64-bit GNU/Linux systems to use the header files, library files, and the dynamic linker from a specific Advance Toolchain release instead of the default versions that are provided by the GNU/Linux distribution. In general, this option is intended for the developers of GCC, and it is not intended for general use.
The "q", "S", "T", and "t" asm-constraints have been removed.
The "b", "B", "m", "M", and "W" format modifiers have been removed.
S/390, System z, IBM z Systems
Support for the IBM z13 processor has been added. When using the -march=z13 option, the compiler will generate code making use of the new instructions and registers introduced with the vector extension facility. The -mtune=z13 option enables z13 specific instruction scheduling without making use of new instructions.
Compiling code with -march=z13 reduces the default alignment of vector types bigger than 8 bytes to 8. This is an ABI change and care must be taken when linking modules compiled with different arch levels which interchange variables containing vector type values. For newly compiled code the GNU linker will emit a warning.
The -mzvector option enables a C/C++ language extension. This extension provides a new keyword vector which can be used to define vector type variables. (Note: This is not available when enforcing strict standard compliance e.g. with -std=c99. Either enable GNU extensions with e.g. -std=gnu99 or use __vector instead of vector.)
Additionally a set of overloaded builtins is provided which is partially compatible to the PowerPC Altivec builtins. In order to make use of these builtins the vecintrin.h header file needs to be included.
The new command line options -march=native, and -mtune=native are now available on native IBM z Systems. Specifying these options will cause GCC to auto-detect the host CPU and rewrite these options to the optimal setting for that system. If GCC is unable to detect the host CPU these options have no effect.
The IBM z Systems port now supports target attributes and pragmas. Please refer to the documentation for details of available attributes and pragmas as well as usage instructions.
-fsplit-stack is now supported as part of the IBM z Systems port. This feature requires a recent gold linker to be used.
Support for the g5 and g6 -march=/-mtune= CPU level switches has been deprecated and will be removed in a future GCC release. -m31 from now on defaults to -march=z900 if not specified otherwise. -march=native on a g5/g6 machine will default to -march=z900.
SH
Support for SH5 / SH64 has been declared obsolete and will be removed in future releases.
Support for the FDPIC ABI has been added. It can be enabled using the new -mfdpic target option and --enable-fdpic configure option.
SPARC
An ABI bug has been fixed in 64-bit mode. Unfortunately, this change will break binary compatibility with earlier releases for code it affects, but this should be pretty rare in practice. The conditions are: a 16-byte structure containing a double or a 8-byte vector in the second half is passed to a subprogram in slot #15, for example as 16th parameter if the first 15 ones have at most 8 bytes. The double or vector was wrongly passed in floating-point register %d32 in lieu of on the stack as per the SPARC calling conventions.
Operating Systems
AIX
DWARF debugging support for AIX 7.1 has been enabled as an optional debugging format. A more recent Technology Level (TL) and GCC built with that level are required for full exploitation of DWARF debugging capabilities.
Linux
Support for the musl C library was added for the AArch64, ARM, MicroBlaze, MIPS, MIPS64, PowerPC, PowerPC64, SH, i386, x32 and x86_64 targets. It can be selected using the new -mmusl option in case musl is not the default libc. GCC defaults to musl libc if it is built with a target triplet matching the *-linux-musl* pattern.
RTEMS
The RTEMS thread model implementation changed. Mutexes now use self-contained objects defined in Newlib <sys/lock.h> instead of Classic API semaphores. The keys for thread specific data and the once function are directly defined via <pthread.h>. Self-contained condition variables are provided via Newlib <sys/lock.h>. The RTEMS thread model also supports C++11 threads.
OpenMP support now uses self-contained objects provided by Newlib <sys/lock.h> and offers a significantly better performance compared to the POSIX configuration of libgomp. It is possible to configure thread pools for each scheduler instance via the environment variable GOMP_RTEMS_THREAD_POOLS.
Solaris
Solaris 12 is now fully supported. Minimal support had already been present in GCC 5.3.
Solaris 12 provides a full set of startup files (crt1.o, crti.o, crtn.o), which GCC now prefers over its own ones.
Position independent executables (PIE) are now supported on Solaris 12.
Constructor priority is now supported on Solaris 12 with the system linker.
libvtv has been ported to Solaris 11 and up.
Windows
The option -mstackrealign is now automatically activated in 32-bit mode whenever the use of SSE instructions is requested.
Other significant improvements
The gcc and g++ driver programs will now provide suggestions for misspelled command line options.
$ gcc -static-libfortran test.f95
gcc: error: unrecognized command line option '-static-libfortran'; did you mean '-static-libgfortran'?
The --enable-default-pie configure option enables generation of PIE by default.
Non exhaustive list of bug fixes in GCC 6.2.0 release:
77463 internal compiler error: in output_move_qimode
71092 [6/7 Regression] ICE: in cxx_eval_call_expression
77034 [6.2RC regression] g++.dg/init/elide5.C fails on powerpc64-unknown-linux-gnu with -m32
70597 [6/7 Regression] cmd/go: deduplicate gccgo afiles by package path
71936 [6/7 Regression] ICE in wide_int_to_tree
77279 build error in isl/ctx.h
67419 gfortran.dg/large_real_kind_2.F90 FAILs
73434 [6/7 Regression] Wrong code with casting
71972 [6 Regression] ICE with ""-std=c++14"" on x86_64-linux-gnu (internal compiler error: Segmentation fault
72819 [AArch64] ABI error: HFA structs of __fp16 incorrectly passed to functions
73456 [6/7 regression][concepts] ICE in non_atomic_constraint_p
72853 gcc/testsuite/gcc.c-torture/execute/20021120-1.c generates incorrect stxssp op with -mcpu=power9
71981 [6/7 Regression] ICE at -O2 and -O3 on x86_64-linux-gnu (internal compiler error: in get_dynamic_type
71881 [6 Regression] ICE on valid code at -O3 with -g enabled on x86_64-linux-gnu: cannot update SSA form
72802 powerpc64le: -mcpu=power9 emits lxssp instruction with offset that isn't a multiple of 4
72800 [5/6 Regression] ICE on invalid C++14 code with initialized lambda capture: tree check: expected class ‘type’
70040 [5 Regression] ICE in gimplify.c with deferred-length strings
72699 [6/7 Regression] ICE in gfc_check_dependency
70677 Suboptimal cond on AVR: unneeded stack frame
71853 [6/7 regression] ICE on an ill-formed case statement in c_do_switch_warnings
72457 [6/7 Regression] ICE: Segmentation fault
71738 [4.9/5/6/7 Regression] ICE on valid C++ code: tree check: expected record_type or union_type or qual_union_type
71350 [4.9/5/6/7 regression] ICE on trailing return type declaration with initializer list
70847 [6/7 Regression] exponential time in cp_fold for chained virtual function calls
71756 [5/6/7 Regression] internal compiler error: in ~saved_token_sentinel
71147 [6 Regression] Flexible array member wrongly rejected in template
67579 [concepts] Memoization for constraint expressions
67565 [concepts] Very slow compile time and high memory usage with complex concept definitions
71941 [6/7 Regression] ICE with OpenMP tasks and queue
71495 [6/7 Regression] Spurious ""note: initializing argument ... of ..."" without any warning/error
70822 [6 Regression] bogus ""error: lvalue required as unary ‘&’ operand"" with C++14 parenthesized SCOPE_REF
71718 [6/7 Regression] ICE on erroneous recursive template error printing
70824 [6/7 Regression] cc1plus consumes all available memory on specific template code
70781 [6/7 Regression] ICE on invalid C++ code with lambda expressions on x86_64-linux-gnu in finish_expr_stmt
71896 [6/7 Regression] Constexpr function with pointer to member parameter doesn't return constexpr value
71117 [6/7 Regression] Overeager application of conversion to function pointer during overload resolution of call to function object
71511 [6/7 Regression] ICE on valid C++11 code (with decltype) on x86_64-linux-gnu: in cxx_incomplete_type_diagnostic
71513 [6/7 Regression] ICE on valid C++11 code (with alignas specifier) on x86_64-linux-gnu: Segmentation fault
71604 [6/7 Regression] ICE on valid C++11 code with range-based for loop: in pop_binding
71711 [6/7 Regression] ICE on valid C++1z code with fold expression: tree check: expected tree_vec
71814 [6/7 Regression] ICE on valid C++11 code: in write_type
70972 [6 Regression] Inheriting constructors taking parameters by value should move them
71856 [6/7 Regression] _GLIBCXX_DEBUG-mode breaks GNU parallel extension
71916 [6/7 Regression] ICE at -O3 on valid code on x86_64-linux-gnu in ""maybe_record_trace_start
71835 [6/7 Regression] ICE on invalid C++ code with ambiguous overloaded operators: tree check: expected tree that contains ‘decl minimal’ structure
71828 [6/7 regression] ICE on valid C++11 code with constexpr __Complex int variable declaration: in operand_equal_p
71822 [6/7 Regression] ICE: in gimplify_expr
70869 [6 Regression] internal compiler error: Segmentation fault on array of pointer to function members
71493 [6/7 regression] accidental ABI change for structure return on PowerPC
69515 partial specialization of variable templates is broken
70584 constexpr variables cannot be used as intrinsic arguments where an immediate is expected
71164 [6/7 Regression] tree check fail at cp/pt.c:12961
71733 ICE in vmx test cases with -mcpu=power9
71624 [6 regression][CHKP] internal compiler error: in duplicate_thunk_for_node
71823 [6/7 Regression] g++ segfaults with -mfma and -ftree-slp-vectorize
71173 [6/7 regression] Qualified name lookup
70685 [6/7 Regression] ICE: Segmentation fault
70222 Test miscompiled with -O1
71100 [6/7 regression] Internal compiler error while calling a pointer to member function that throws
71739 [6/7 Regression] ICE on valid C++11 code: tree check: expected identifier_node
70916 [6 Regression] gcc ICE at -O3 on valid code on x86_64-linux-gnu in ""tree_operand_check
71521 [6 Regression] Regression in GCC-7.0.0's optimizer
30417 Section .data cannot be moved with -mmcu=atmega88
71057 [6 Regression] ICE in schedule_generic_params_dies_gen
71056 [6 Regression] __builtin
70540 [4.9/5 Regression] ICE on invalid code in cxx_incomple
Reset PKGREVISION, set gcc48-libs PKGREVISION to 1 (+1 of gcc48)
The following list of 74 PRs have been resolved in the 4.8.5 release
(non-exhaustive list):
64557 get_addr in true_dependence_1 cannot handle VALUE inside an expr
66215 [4.8/4.9/5/6 Regression] Wrong after label NOP emission for -mhotpatch
66233 [4.8/4.9 Regression] internal compiler error: in expand_fix
65550 [4.8/4.9 Regression] ICE (segfault) with pch
62642 [4.8/4.9 Regression] x86 rdtsc is moved through barrier
63608 [4.8/4.9 Regression] error: type mismatch in binary expression
59626 [4.8 Regression] /usr/include/bits/unistd.h:173:1: error: inlining failed in call to always_inline 'readlinkat': recursive inlining
65549 [4.9 Regression] crash in htab_hash_string with -flto -g
59990 [4.8 regression] incorrect memcpy optimization
60656 [4.8 regression] x86 vectorization produces wrong code
66470 [4.8/4.9/5/6 Regression] TLS ICE due to ix86_split_long_move
66481 Implicit lambda capture of variable named ""closure"" causes crash
66275 __attribute__((sysv_abi)) with x86_64-w64-mingw32-gcc generates incorrect code
65680 [4.8/4.9 Regression] ICE at -O1 and above on x86_64-linux-gnu in expand_assignment
65368 [4.8/4.9 Regression]_bzhi_u32 intrinsic generates incorrect code when -O1 or above is specified and index is an immediate
64634 [4.8/4.9 Regression] gcov reports catch(...) as not executed
66123 [4.8 Regression] Array of labels as values + ternary operator + pointer arithmetic = internal compiler error
65518 [4.8 Regression] gcc consumes all memory with -O3
66140 ICE at extract_insn
65721 [4.8/4.9/5/6 Regression] Internal compiler error segmentation fault
65727 [4.8/4.9/5/6 Regression] Segfault With Decltype In Lambda Expression Used To Initialize Static Class Member
59016 f951: internal compiler error: Segmentation fault
65693 [4.8/4.9 Regression] ICE in assign_by_spills
61977 [4.8/4.9/5 Regression] powerpc preprocessor breaks on lines that end with ""vector
59513 [4.8/4.9/5 Regression] Fortran runtime error: Sequential READ or WRITE not allowed after EOF marker
65279 [4.8/4.9 Regression] std::scoped_allocator_adaptor is not assignable
65543 rvalue stream insertion and extraction operators incorrectly implemented
61138 [4.8/4.9/5 Regression] Wrong code with pointer-bounds remapping
65072 Segfault when parsing dectlype in trailing return type
65327 GCC rejects ""constexpr volatile int i = 5;
65409 [4.8/4.9/5 Regression] ICE in store_field
52579 [4.8/4.9/5 regression] i386_w32_fallback_frame_state should care ffi raw-closure stub function
60898 [4.8/4.9/5 Regression] model compile error with gfortran 4.7 and gcc 4.9
57059 [4.8/4.9/5 Regression] Host configuration of loose_warn breaks for build components for Canadian crosses
52664 [4.8 Regression]: gcc.dg/tree-ssa/pr31261.c fails
65220 [4.8/4.9/5 Regression] integer division in stack alignment for VLA allocation
43701 [4.8/4.9/5 Regression] ICE: SIGSEGV (too deep recursion) with -mno-sse and __float128
35330 [4.8/4.9/5 regression] ICE with invalid pragma weak
46102 [4.8/4.9/5 Regression] ICE: SIGSEGV in dwarf2out_finish (dwarf2out.c:8490) with -feliminate-dwarf2-dups when using precompiled headers
61634 [4.8 Regression] ICE in in vect_get_vec_def_for_operand
65063 [4.8 Regression] gcc.dg/vect/vect-double-reduc-6.c FAILs with -O3 -fno-tree-loop-ivcanon -fno-tree-vectorize
63593 ICE: verify_gimple failed: incompatible types in PHI argument 0 with -O3 -fno-tree-vectorize
63844 [4.8 Regression] open mp parallelization prevents vectorization
64493 [4.8 Regression] ICE at -O3 on x86_64-linux-gnu
64495 [4.8 Regression] ICE at -O3 for trunk and wrong code for 4.8/4.9 on x86_64-linux-gnu
64199 [4.8 Regression] ICE: tree check: expected class 'constant'
56273 [4.8 regression] Bogus -Warray-bounds warning
58123 [4.8/4.9/5 Regression] debug line not tracked for last autovariable dtor
45402 [4.8/4.9/5 Regression] ICE in extract_insn
64768 [4.8/4.9/5 Regression] internal compiler error: tree check: expected tree that contains ‘decl with RTL’ structure
63744 [4.8/4.9/5 Regression] Duplicate use-statement causes error
64979 [4.8 Regression] stdarg optimization not able to find escape sites in phi nodes
57653 [4.8/4.9 Regression] filename information discarded when using -imacros
60718 [4.8/4.9 regression] Test case gfortran.dg/select_type_4.f90 fails on ARM
64479 [4.8 Regression][SH] wrong optimization delayed-branch
39722 [4.8/4.9 Regression][cond-optab] worse code with bitfields on v850
64882 ICE on valid code at -O3 with -g enabled in simplify_subreg
61058 [4.8/4.9 Regression] ICE: RTL check: expected elt 3 type 'B'
64513 [4.8/4.9 Regression] ICE: in maybe_record_trace_start
64766 [4.8/4.9 Regression] internal compiler error: tree check: expected block
64487 [4.8/4.9 Regression] internal compiler error: in fold_offsetof_1
62044 [4.8/4.9 Regression] ICE in USE statement with RENAME for extended derived type
57748 [4.8 Regression] ICE when expanding assignment to unaligned zero-sized array
57023 [4.8 Regression] Not packing arrays with changing variable used for size
52306 [4.8 regression] ICE in cselib_record_set
52714 [4.8 regression] ICE in fixup_reorder_chain
58369 [4.8 regression] ICE in subreg_get_info when compiling boost for m68k-linux
63733 [4.8/4.9/5 Regression] [OOP] wrong resolution for OPERATOR generic
Version 2.8.3, March 2016
* Fixes garbage collector bug.
* Fixes "execve output" that caused a "too many open files" type error.
* Fixes ncurses support on Ubuntu.
Update including pear-Archive_Tar to 1.4.2.
Release date: 2016-02-25 05:31 UTC
Changelog:
* Fix reading of archives with files > 8GB
* Performance optimizations
* Do not try to call require_once on PEAR.php if it has already been loaded by the autoloader
Release date: 2016-02-25 05:24 UTC
Changelog:
* Update composer.json to use pear-core-minimal 1.10.0alpha2
fix some build errors I see (using same patches as lang/gcc46)
build still failing at:
unwind-dw2.c:1452:5: error: unknown field 'ptm_ceiling' specified in initializer
unwind-dw2.c:1452:5: warning: missing braces around initializer
unwind-dw2.c:1452:5: warning: (near initialization for 'once_regsizes.pto_mutex.<anonymous>')
go1.7.1 (released 2016/09/07) includes fixes to the compiler, runtime,
documentation, and the compress/flate, hash/crc32, io, net, net/http,
path/filepath, reflect, and syscall packages. See the Go 1.7.1 milestone on our
issue tracker for details.