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.