Pike 7.4.20 Release Notes

Changes since Pike 7.4.10

This document outlines the changes between Pike 7.4.10 and 7.4.20.

Bugfixes

  • Bugfix in Parser.C. "!=" is now considered one token instead of two.
  • Bugfixed loop over-optimization caused by faulty dependency analysis.
  • Postgres 7.3+ correctly detected.
  • Now function_object behaves as in Pike 7.2 again, returning zero if the argument is a constant in the parent class. In that case function_program() can be used to get the parent program.
  • Added System.dumpable() which can be used on Linux to enable coredumping even for seteuid/setegid processes.
  • Image.FreeType now selects the hopefully best character map when loading a font, instead of just picking a random one.
  • Fixed a bug that made searching for 8 bit strings in wider strings fail.
  • Fixed fencepost bug on overflow of the sprintf format info stack.
  • Fixed bugs in float parsing code, preventing very large positive or negative floats from being turned into 1.0 or -1.0.
  • More robustness has been added to dlinit() and __alldiv(), which fixes some start up crashes in Microsoft Windows when invoking Pike with the wrong path.
  • Process.create_process()->set_priority now works on Microsoft Windows.
  • SDL and GL now compile, link and work on Microsoft Windows.
  • Produce real zeroes and not false function pointers when a local function with only a prototype is referenced. This was a compatibility problem; there's code that assumes that false values can't be function references.
  • Fixed GTK issue where the new and old signal callback signature were randomly used for signals connected with signal_autoconnect(). This method now always uses the old method while a new method, signal_autoconnect_new() uses the new interface.
  • Added missing GTK method set_style.
  • Fixed a compatibility problem with Getopt, which caused Pike 7.4 to behave slightly different from previous versions when running in posix-me-harder mode.
  • Fixed a bug in the code handling boundaries in multipart messages in the MIME module.
  • Multiline tokens are now handled better in Parser.Pike when running in streaming mode.
  • Fixed a bug in sscanf when using %[] with wide characters.
  • Fixed a bug in low_backtrace where the backtrace itself could be reported as an argument to the top function if it was of varargs type.
  • Fixed security hole with running next_object in a Pike with security.
  • Fixes to make dumping work in a fakeroot environment.
  • Line numbers for C programs are now shown in backtraces even without having to compile with rtldebug.
  • It is possible to turn on only gc debug with trace(1,"gc").
  • The aim for 20% garbage between gc runs was calculated on the wrong total amount of objects, so in effect the gc aimed for 16.7% instead.
  • The decaying average calculation in the gc had a bug that caused the last reading (i.e. the last gc run) to be weighted very heavily. Thus a single "abnormal" gc run could cause the gc to schedule a fairly short or long gc interval the next time which might make it erratic.
  • More solutions to new and fresh autoconf compatibility problems, willfully introduced by the autoconf team.
  • Threads are disabled by default on OpenBSD/alpha <= 3.x.
  • Java module now supports native method registration on alpha.
  • Fixed floating point argument handling with native calls in Java module for Linux/PPC.
  • Pike will now look for the master path in SOFTWARE\Pike\ in the registry on Microsoft Windows.
  • Fixed icon transparency on Microsoft Windows.
  • Fixed a bug that could cause wrong line numbers in backtraces when ia32 machine code is used.
  • Fixed bug that could cause the stack to get out of sync when large 64 bit negative integers were converted to bignum objects.
  • Fixed bug in trampoline objects so that they can be indexed and printed as normal objects.
  • Accesses from child objects to symbols in their parent objects will no longer pass through LFUN::`[]() and LFUN::`[]=().
  • The object identifier index sorting order is no longer locale-dependent.
  • The opcodes F_{INC,DEC}{,_NEQ}_LOOP are now aware that the upper limit not neccessarily is an integer.
  • Fixed a bug in the dependency analyser. It didn't check arguments to side-effect free functions for written variables, which could cause overoptimization breakage.
  • The initialization code no longer calls fpsetmask(0) on operating systems where this API call is broken (eg OpenBSD 3.2/alpha).
  • Stdio.Stat()->size is now LARGEFILE aware.
  • Clearing a read-callback on operating systems that use select(2) no longer leaves it active in the read fd set if there is a read out-of-band data callback.
  • Fixed bug in Image.Image()->scale(0.5) where it could generate zero-size image objects.
  • Fixed rounding bug in Image.Colortable that caused it to disregard exact matches near cubicle boundaries.
  • Fixed Mac OS X memory allocation error when creating new threads.
  • Fixed opcode level trace and debug (when compiled with --with-rtldebug).
  • The Image module can now be compiled on SunOS 4.1.1_U1, whose assembler doesn't like long strings.
  • The pseudo random sequences generated by random() should now be the same on 32 bit and 64 bit machines, given the same random_seed().
  • Fixed handling of 64 bit file pointers on NT.
  • Fixed handling of 64 bit file pointers in Stdio.File.truncate and file_truncate.
  • Calendar.parse() now understands %f for sub-second precision. This was documented but unimplemented.
  • Calendar.parse() no longer fails to generate times after 23:00 on dates lacking an hour due to a DST shift.
  • map() could previously have been misoptimised when run on functions with external dependencies.
  • configure no longer lies about Java being enabled when it is not under Microsoft Windows.
  • Fixes to compile with --without-bignums. Not recommended, but it should work again now.
  • Fixes to make the Mysql module load under Microsoft Windows even when compiled as a dynamically loadable module.
  • Fixed a threading bug in Image.Image()->box().
  • Added more consistency checks to detect thread problems. This is enabled with the new -dT argument (--with-rtldebug is not necessary).