Pike 8.0 release 12
Peter Bortas <[email protected]> Sat, 19 May 2018 15:04:13 +0200
| Newsgroups | gmane.comp.lang.pike.user |
|---|---|
| Message-ID | <CA+NK+AB4GB9AtTqxnUGW_2CwiPyzgBHORExZrzKZ3RG0Udxy9g@mail.gmail.com> |
Pike 8.0.610 release 12 (build 8.0.610) is now out.
Source:
https://pike.lysator.liu.se/pub/pike/all/8.0.610/Pike-v8.0.610.tar.gz
Binary builds:
https://pike.lysator.liu.se/pub/pike/all/8.0.610/el6 (Redhat/CentOS 6)
https://pike.lysator.liu.se/pub/pike/all/8.0.610/el7 (Redhat/CentOS 7)
https://pike.lysator.liu.se/pub/pike/all/8.0.610/Pike-v8.0.610-MacOSX-10.12-x86_64
https://pike.lysator.liu.se/pub/pike/all/8.0.610/Pike-v8.0.610-MacOSX-10.9-x86_64
https://pike.lysator.liu.se/pub/pike/all/8.0.610/Pike-v8.0.622-win32-oldlibs.msi
Note that the Windows build of 610 contains a bug in normalize_path, so
it's replaced with a link to the next beta instead.
Changes since Pike 8.0.498 (release 11)
----------------------------------------------------------------------
New Features
------------
o Crypto.Hash.SCRAM
New class to support SCRAM authentication.
o Concurrent
- Add map_with() as an alias to flat_map().
- Add a convenience variant to zip().
- depend() can be used to collect multiple dependencies before
finalising the Promise.
o Debug.find_all_clones()
New convenience function to find all objects that are clones of a
program.
o MIME
Added a setter for the message boundary prefix.
o Sql.pgsql
- Added support for PostgreSQL 10's stronger password authentication
(SCRAM-SHA-256).
- Slightly reduced overhead.
- Support IEEE binary float database-wireformat.
- Support NUMERIC database-wireformat.
- Prevent new queries from starting in the local_backend.
- Make sure huge queries are not fully loaded into memory.
o Sql.Sql
Make big_typed_query() gracefully fallback to big_query().
o SSL.File
Support query_fd() and set_buffer_mode() methods.
o Stdio.File [NT]
A major clean-up and consistency improvment of the I/O layer on NT.
- All filesystem paths are now encoded in UTF-8 from Pike-code's
point of view. Previously this was a mix of Latin-1 and UTF-16,
with some stuff affected by the filesystem default character set.
This makes the entire filesystem accessible from Pike-code.
This new behavior can be detected by the presence of the constant
Stdio.__HAVE_UTF8_FS__.
- Added new low-level fd handling functions.
This should fix several potential race-conditions in the
I/O layer on NT.
o Stdio.Terminfo
Support the new terminfo format from ncurses 6.
o Thread.Farm
Added Thread.Farm()->set_thread_name_cb() to help applications
that monitor thread creation and termination for the purpose
of tracking thread names.
o Thread.ResourceCount
New module to allow threadsafe race-condition-free counting of
resources.
o Tools.Standalone.check_http
- Allow redirect responses.
- Support --expect option.
o Web.Sass
This is a module that interfaces to the SASS compilation
library "LibSass" (https://github.com/sass/libsass).
Bug fixes
---------
o ADT.CritBit
- Due to an off-by-one error the last limb of bignums was never
compared. This resulted (sometimes) in unequal bignums comparing
equal inside of the tree.
o Compiler
- Improved variant robustness.
- Fixed type leak for getters/setters implemented with
variant functions.
o Calendar
- Updated tzdata to 2018d.
- Calendar.TimeRanges.NullTimeRange now has a working __hash().
The expression ([ Calendar.TimeRanges.nulltimerange : 17 ])
no longer gives a backtrace.
o Concurrent
- Less filling, deadlock-free, faster, available without running
backend.
- Handle an empty argument array properly in results().
Previously code such as:
Concurrent.Future f2 = Concurrent.results(({}));
f2->on_success(lambda(array(string) a) {
werror("success: %O.\n", a);
})
->on_failure(lambda(mixed err) {
werror (describe_backtrace(err));
});
would lead to a backtrace because the future was destructed
prematurely.
- Readable/understandable documentation.
o Crypto.CCM
Fixed initialization of the iv.
o Crypto.Hash
Censor the password argument from backtraces in crypt_hash().
o Filesystem.Monitor
- Fixed some backend_check rescheduling isusues.
adjust_monitor() didn't reschedule the backend_check() call_out if
the adjusted monitor already was at the head of monitor_queue.
This caused polls to be delayed in some common cases.
register_path() didn't reschedule the backend_check() call_out.
If the newly registered monitor ends up at the head of the
monitor_queue, the backend_check() call_out likely needs to be
rescheduled.
- Fixed issue with next_poll being set to zero causing polling every
second.
- Fixed indexing the NULL value error when InotifyMonitor was used
in combination with a filter_file() that doesn't accept
everything.
- Fixed incorrect creation of new monitors.
Monitors were created using monitor() on the top level rather than
using Monitor::monitor(), which prevented the symlinks' overridden
DefaultMonitor from setting the correct state on newly created
monitors.
We now force a check on the directory monitor instead, which will
pick up the new file instantly and create the sub monitor.
- Fixed race condition on deletion.
This fixes a race that could occur on rapid exists => delete =>
exists transitions, where the directory monitor never noticed the
change but the sub monitor was removed from the monitor lookup
mapping. The directory monitor is now notified on sub-monitor
release.
- Added set_stable_time() function.
- Removed obsolete special case for co_id == 1.
o HTTPLoop:
Fixed some potential race conditions.
o Image.Image
- Improved argument checking in apply_curve(). Non-integer array
values lead to use of uninitialized curve values.
o Image.PVR
Fixed size check for twiddled images.
o MIME
Support trailing newline in MIME part epilogues.
o Protocols.HTTP.Query
- Fixed incoming chunked transfers (timed async works now, chunk
options are properly 'parsed'). Trailer headers are now correctly
parsed.
- Improved handling of multiple headers of the same kind.
- Fixed a bug where base64 encoded HTTP basic auth tokens were
encoded in a pretty-printed format including line breaks, which
lead to malformed HTTP requests on long username and password
combinations.
- Do not wait for SSL.File()->close() to complete when called
from the destruct() callback.
o Protocols.HTTP.Server
- The header parser exception mode now doesn't immediately throw an
exception.
- Attempt to ensure that data is sent before terminating an
HTTPS connection.
o Protocols.LDAP
Fixed race condition on initializing LDAPS.
o Search.Database.MySQL
Fixed issue where blobs didn't get updated after the initial blobs
got full.
o Search.Utils
Updated debug string format.
o Sql.pgsql
- Suppress spurious 'File not open' blurts on stderr when the
connection is still pending and we inspect the connection object.
- Signal EOF early before closing the SQL result portal and
thoroughly cleanup bufcon/stashcount to prevent occasional
deadlocks on asynchronous object destructions.
- Suppress rare "access in destructed object" messages.
- Simplified fundamentally flawed reconnect logic, made failures
consistent.
- Repair SSL connect logic.
- Update documentation.
- Repair fetch_row_array().
- Ensure that all database errors result in exceptions (eventually).
- affected_rows() and status_command_complete() now wait until they
have a meaningful result to report.
- Closing the database will wait until all running queries have been
committed.
- Report correct number of affected_rows() for INSERTs.
- Eliminate a rare deadlock when running many simultaneous queries
on a single filedescriptor.
o mktime/System.TM
- Make timezone management consistent (especially UTC handling).
- Fix memory leak in strftime().
o Standards.IIM
Disabled debug output for unknown segment markers.
o Stdio
- Restore the FD_SETSIZE on NT to 65536.
Due to #include file restructuring, the FD_SETSIZE value on NT had
fallen back to the default (64). This issue has probably affected
all releases of Pike since 7.9.2.
- mv() [NT]
Fixed single byte buffer overrun in mv() on NT.
A NUL-terminator was written outside a malloced buffer. This
caused intermittent crashes after unusual use of mv().
Fixes the crash in [PIKE-90].
- send_file()
Improved support for TLS/SSL; wait for TLS handshake to complete
before calling the sendfile done callback when sending an empty
string. This fixes the issue where the connection got closed
before TLS handshaking was completed, confusing the other side.
o Image
Creating images with mode "grey" now works as documented,
e.g. Image.Image(10,10,"grey",123);
Optimizations
-------------
o mktime/System.TM
Considerable speedup and a reduction in codesize.
o Unicode
Avoid scanning the string in NFC mode if the string is 8-bit,
as NFC normalization of 8-bit strings is the identity function.
Building & Tools
----------------
o Hilfe
Fix commands having priority over code. [LysLysKOM 22552693].
o Image.SVG
Fall back to using the unprefixed pkg-config if the arch-prefixed
doesn't exist.
o Mysql
Support MariaDB 10.2 headerfiles.
o export
- Fixed fix_configure.
This was broken in multiple ways:
* Did not consider timestamp on aclocal.m4
* Did not consider post_modules
* Did not check configure scripts directly under modules or
post_modules
* When fixing modules, it looked for the configure scripts in the
build directory rather than the source directory
* Did not use the run_autoconfig wrapper
This has caused xenofarm to export snapshots with out of date
configure scripts.
o precompile
Support precompilation with Pike 8.1 again.
o run_autoconfig
Fix localdir when relative and not "./"
o smartlink
Fixed multiple issues on Darwin & NetBSD.
o Whitefish
Use the standard VPATH.
o Yp
Support using libtirpc. Glibc 2.26 has removed the Sun RPC
implementation.