Pike 7.6.112 Release Notes

Changes in Pike 7.6.112

This document outlines the changes between Pike 7.6.86 and 7.6.112.

Changes in Pike

  • Updated timezone data files. This includes the recent US DST change.
  • Fixed mktime to work better with out of bounds time fields. [bug 4326]
  • Fixed support for big endian 64-bit.
  • Added conversion from Gmp.mpz objects to Gmp.bignum when cast to int.
  • Added support for variable length records to Standards.IIM.
  • Added timeout to Image.PS. Now kills the ghostscript process if it hasn't returned after 30s.
  • Added GL 1.2 and 1.3 constants.
  • Added possibility to set offset and stride when creating textures from memory objects in GL. (Not currently usable on win32.)
  • Fixed CMYK calculation in Image.Image.
  • Added adjusted_cmyk to Image.Image and use it when decoding with Image.PS.
  • Now handles more eps images internally in Image.PS without spawning ghostscript.
  • Added Standards.IIM that handles IPTC Information Interchange Model data in JPEG or Postscript images created with PhotoShop.
  • Added support for little endian TIFFs.
  • Added support for TIFF to Image.Dims.
  • Changed HTTP.Query to close connections explicitly.
  • Changed sslfile to avoid blocking IO in destroy() as that could lock up the gc. You should explicitly close() SSL connections since the close packet might block.
  • Fixed a bug in SSL module that could stop communication while keeping the connection open indefinitely.
  • General cleanup of SSL module.
  • Improved Parser.XML.Validating.
  • More paranoid checks of image headers when using Image.AVS.
  • Fixes to make describe_value work as usual in the free pass of the gc, so that e.g. sprintf("%O",...) behave well when called from destroy().
  • Fixed truncated field names in ODBC.
  • Fixed masking of file positions larger than 2 GiB on 64-bit.
  • Fixed low-level parsing of HTTP headers to not reorder the headers.
  • Added set_charset and get_charset proxy functions to Sql.Sql.
  • Changed Protocols.HTTP.Query async_close() to care about the value returned by ponder_answer(). Fixes requests to broken servers that don't send proper results.
  • Fixed bad free_string() in exit_bytecode().
  • Fixed an off-by-one crash when drawing alpha boxes all the way to the bottom of the image.
  • Fixed a multiset bug that could cause incorrect multiset sizes.
  • Fixed a multiset bug that caused ints to be called as sorting function when no sorting function was set.
  • Fixed hour formatting in Calendar.Time.format_smtp().
  • Fixed TTL parsing of SRV records in Protocols.DNS.
  • Fixed fatal "Unknown identifier type" that was caused by attempts to encode programs that had not been fixated.
  • Fixed some events in Calendar.Events.
  • Fixed a double free in Shuffler.
  • Fixed an inverted error test in Mysql.set_charset.
  • Fixed a compilation crash of the Cache module on Pikes without threads.
  • Fixed optimization bug for objects with a value of false.
  • Fixed -t (tracing) on win32.
  • Added support to Mysql for the charsetnr column attribute and proper recognition of binary fields in unicode decode mode by using charsetnr instead of the binary flag (which might be set for nonbinary columns too, e.g. "VARCHAR(17) BINARY").

    Unfortunately this means that unicode decode mode is disabled if Pike is compiled with a client lib without support for the charsetnr attribute, i.e. libmysql prior to v4.1.0. If you want to enable it for compatibility reasons, set the environment variable PIKE_BROKEN_MYSQL_UNICODE_MODE when starting pike.


  • Improved Valgrind support.
  • Now checks the return code from win32 VirtualProtect. This breaks assembler optimized builds on Windows. It never worked in the first place, but used to fail silently, so this is better. This has been fixed in 7.7 by using another heap manager, but it has not been decided if it should be be backported.
  • Adjusted array growth policy in array_insert to double the size instead of growing with approximately one eighth of the size. This to ensure O(1) time complexity and lessen fragmentation. (This affects ADT.Sequence._insert_element and ADT.CircularList._insert_element.)
  • Fixed support for UnixODBC.
  • Made IA32 machine code compatible with Darwin IA32 ABI. Enabled machine code for Darwin.
  • Upgraded bundled GMP from 4.2 to 4.2.1

Build fixes

  • Support GNU Java (GCJ)
  • Did away with the use of the undocumented internal MS win32 CRT functions __loctotime_t and __dtoxmode.
  • Fixed compilation of Nettle and Mysql on win32.
  • Fixed typo that caused the configure script to search for lots of nonapplicable include dirs on windows.
  • Backported new INT_TYPE_{ADD,NEG}_OVERFLOW implementation from 7.7. The old one does not work with GCC 4.1.
  • Fixed problem where mysql_character_set_name exists in mysql.h but not in the lib for some old mysql clients.
  • Fixed epoll support to not require /dev/epoll on Linux. That means epoll will be enabled all mainstream Linux distributions running on a 2.6 kernel. If for some reason you want to disable it use --without-epoll.
  • Added Objective C support to the module build system.
  • Fixed libnettle bundle compilation on win32.
  • Fixed compilation of ffmpeg.
  • Fixed compilation problem on OpenSolaris by checking for broken Postgres environment.