ca69732006-11-13Peter Bortas Changes since Pike 7.6.86 ---------------------------------------------------------------------- Changes in Pike: o Added conversion from Gmp.mpz objects to Gmp.bignum when cast to int. o Added timeout to Image.PS. Now kills the ghostscript process if it hasn't returned after 30s. o Added GL 1.2 and 1.3 constants. o Added possibility to set offset and stride when creating textures from memory objects in GL. o Fixed CMYK calculation in Image.Image. o Added adjusted_cmyk to Image.Image and use it when decoding with Image.PS. o Now handles more eps images internally in Image.PS without spawning ghostscript. o Added Standards.IIM that handles IPTC IPTC Information Interchange Model data in JPEG or Postscript images created with PhotoShop. o Added support for little endian TIFFs. o Added support for TIFF to Image.Dims. o Changed HTTP.Query to close connections explicitly.
7a86582006-12-29Peter Bortas o 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.
ca69732006-11-13Peter Bortas o Improved Parser.XML.Validating. o More paranoid checks of image headers when using Image.AVS. o 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(). o Fixed truncated field names in ODBC. o Fixed masking of file positions larger than 2 GiB on 64-bit. o Fixed low-level parsing of HTTP headers to not reorder the headers. o Added set_charset and get_charset proxy functions to Sql.Sql. o 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.
3c9ca02007-01-27Martin Nilsson o Fixed a bug in SSL module that could stop communication while keeping the connection open indefinitely.
ca69732006-11-13Peter Bortas o Fixed bad free_string() in exit_bytecode(). o Fixed an off-by-one crash when drawing alpha boxes all the way to the bottom of the image.
7a86582006-12-29Peter Bortas o Fixed a multiset bug that could cause incorrect multiset sizes. o Fixed a multiset bug that caused ints to be called as sorting function when no sorting function was set. o Fixed hour formatting in Calendar.Time.format_smtp(). o Fixed TTL parsing of SRV records in Protocols.DNS.
80b74a2007-01-06Peter Bortas o Fixed fatal "Unknown identifier type" that was caused by attempts to encode programs that had not been fixated.
964e7b2007-01-06Peter Bortas o Fixed some events in Calendar.Events.
7a86582006-12-29Peter Bortas o Fixed an inverted error test in Mysql.set_charset.
3c9ca02007-01-27Martin Nilsson o Fixed a compilation crash of the Cache module on Pikes wihtout threads.
7a86582006-12-29Peter Bortas o 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
5078082006-12-29Martin Nilsson  attribute, i.e. libmysql prior to v4.1.0. If you want to enable it
7a86582006-12-29Peter Bortas  for compatibility reasons, set the environment variable PIKE_BROKEN_MYSQL_UNICODE_MODE when starting pike.
ca69732006-11-13Peter Bortas  Other: o Improved Valgrind support. o 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. o 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.) o Fixed support for UnixODBC. o Made IA32 machine code compatible with Darwin IA32 ABI. Enabled machine code for Darwin.
669b032007-01-04Peter Bortas o Upgraded bundled GMP from 4.2 to 4.2.1
ca69732006-11-13Peter Bortas  Build fixes: o Support GNU Java (GCJ) o Did away with the use of the undocumented internal MS win32 CRT functions __loctotime_t and __dtoxmode. o Fixed typo that caused the configure script to search for lots of nonapplicable include dirs on windows. o Backported new INT_TYPE_{ADD,NEG}_OVERFLOW implementation from 7.7. The old one does not work with GCC 4.1. o Fixed problem where mysql_character_set_name exists in mysql.h but not in the lib for some old mysql clients.
7a86582006-12-29Peter Bortas o 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. o Added Objective C support to the module build system.
669b032007-01-04Peter Bortas o Fixed libnettle bundle compilation on win32.
3c9ca02007-01-27Martin Nilsson o Fixed compilation of ffmpeg.
ca69732006-11-13Peter Bortas 
98d2272006-02-27Peter Bortas Changes since Pike 7.6.66 ---------------------------------------------------------------------- Changes in Pike:
eba07d2006-03-31Peter Bortas o Added support for "100 Continue" to Protocols.HTTP.Server.
9934472006-05-17Martin Nilsson o Fixed Keep alive issues in Protocols.HTTP.Server.
eba07d2006-03-31Peter Bortas o Fixed SSL.sslfile to ensure that a read callback gets a call if it's installed when there already is data in the internal read buffer.
98d2272006-02-27Peter Bortas o Fixed Cache.cache to work without threads again. o Fixed a typo in Array.diff3 that in some rare cases caused it to merge a difference into a three-way equality.
9a8cb82006-03-06Peter Bortas o Fixed a bug where reused local variables weren't cleared properly.
eba07d2006-03-31Peter Bortas o Fixed sorting order for huge characters.
9934472006-05-17Martin Nilsson o The values returned by Thread.status is now available as constants in the Thread module. o Added peek() method to ADT.Heap and Priority_queue. o Fixed "file not open" error when performing multiple operations on a Filesystem.Tar file. o Fixed a rare PNG decoding issue. o Proper handling of NULL elements in Postgres.
d59fcb2006-05-25Peter Bortas o Fix for potential SQL injection vulnerability in Postgres.
36c2082006-06-01Peter Bortas o Added support for WSAECONNRESET in SSL on win32.
98d2272006-02-27Peter Bortas  Other: o Fixed bug causing local variables to never be reused, which in turn leads to huge stack frames. o Fix to avoid the cleanup thread becoming garbage when the cache object is destructed. o Various UCS-2/SQLWCHAR related fixes in Odbc. Potentially fixes problems where wchar_t is 4 bytes (eg MacOS X).
eba07d2006-03-31Peter Bortas o More multiset gc fixes.
9934472006-05-17Martin Nilsson o Fixed support for running dmalloc Pike with -d.
98d2272006-02-27Peter Bortas 
36c2082006-06-01Peter Bortas Build fixes:
ca69732006-11-13Peter Bortas 
36c2082006-06-01Peter Bortas o Fixed VC8 compilation. o Fixed support for C++ modules. o Improved support for Darwin x86.
98d2272006-02-27Peter Bortas 
e2d3412005-11-29Peter Bortas Changes since Pike 7.6.50 ----------------------------------------------------------------------
e84a602006-01-18Peter Bortas Changes in Pike:
e2d3412005-11-29Peter Bortas 
c996202005-12-19Peter Bortas o Added support for chunked transfer encoding and handle unexpected multiple headers in HTTP.Server.Request.
f559832006-01-22Peter Bortas o Added support for "urlencoded" as an alias for "url-encoded" in HTTP.Server.Request. o Added callback support to Stdio.FakeFile.
21b0382006-01-06Peter Bortas o Added iso_646.irv, iso_4873.dv and iso_4873 to charsets.
e84a602006-01-18Peter Bortas o Added UCS-2 API support to Odbc.
100acd2005-12-01Martin Nilsson o Fixed some bugs in Protocol.HTTP.Server.HeaderParser.
6a75db2005-12-18Martin Nilsson o Fixed decoding boolean datatype in Protocols.XMLRPC.
21b0382006-01-06Peter Bortas o Fixed short names in Standards.XML.Wix.
e84a602006-01-18Peter Bortas o Fixed time(0) to behave like time(), not time(1). This is considered a bugfix and does not have backward compatibility. o Allow _disable_callbacks and _enable_callbacks on closed fd's.
e2d3412005-11-29Peter Bortas  Other: o Added compatibility for more odbc drivers.
6a75db2005-12-18Martin Nilsson o Optimized XML.Tree simplenode creation.
c996202005-12-19Peter Bortas o Fixed reference underflow in modify_shared_string()
e2d3412005-11-29Peter Bortas o Fixed segfault when exiting uninitialized mutex keys.
e84a602006-01-18Peter Bortas o Fixed segfault for two special cases of indexing unexisting stuff. o Fixed gc problem that could produce an error "gc_mark() called for thing in zap weak pass that wasn't marked before" in pikes compiled with rtldebug. o Fixed multiset node ref bugs that affected iterators when the multisets contain destructed objects.
f559832006-01-22Peter Bortas o Fixed out of C-stack errors when resizing unbalanced mappings.
e2d3412005-11-29Peter Bortas  Build fixes: o Fixed win32 compilation. o Fixed detection of SDL.Joystick on win32 o Automaticly add Pike icon to win32 binary.
c996202005-12-19Peter Bortas o Fixed signal_handler compilation on OperBSD. o Fixed gcc 4.0 compatibility. o Added mmap PROT_EXEC support to MacOS X via MAP_ANON.
e2d3412005-11-29Peter Bortas 
beafe02005-07-25H. William Welliver III Changes since Pike 7.6.24
8010aa2005-07-25H. William Welliver III ----------------------------------------------------------------------
beafe02005-07-25H. William Welliver III  Changes in Pike code: o added Standards.UUID o added Standards.XML.Wix, Tools.Standalone.make_wxs
aa99a42005-07-27Martin Nilsson o Parser.XML: added 7.2 compatibility mode that allows multiple tags at the top level. Also fixed bug where comments and PI:s after the top level element weren't allowed. PIs are allowed at the top level. o Parser.XML: Added additional validity checks which may be turned on to get stricter XML parsing.
beafe02005-07-25H. William Welliver III o Parser.XML: added compatibility wrapper for 7.2 parse_input() o Parser.XML: can pass compat_allow_errors to XML parser in simple_parse_input() and parse_input(). o Parser.XML: stricter detection of RXML entities. o better garbage generation for Remote. o SSL.sslfile: added wrapper for Stdio.File.is_open().
aa99a42005-07-27Martin Nilsson o Protocols.HTTP.Query: keepalive operation fixed when remote has closed.
6d44972005-10-04Martin Nilsson o Protocols.HTTP.Quert: added timed_async_fetch().
beafe02005-07-25H. William Welliver III o UNDEFINED arguments are better described in backtraces. o Protocols.DNS: improved support for T_TXT. o Cache.Policy: made some debug output optional. o ADT.Relation.Binary: bugfixes, added cast().
aa99a42005-07-27Martin Nilsson o Hilfe: added result formatter for binary, octal and hexadecimal integers. o Protocols.LDAP.client: filter value unescaping function complies more closely to the somewhat peculiar escape method in RFC 1960. o Protocols.LDAP.client: The paged result control should be optional in the first search query and critical in the rest, not the other way around. This fixes servers that don't support paged queries in the whole tree. o SSL.sslfile: Various fixes: notably the close callback is also called on errors, which is consistent with Stdio.File. Added
8010aa2005-07-25H. William Welliver III  set_(non)blocking_keep_callbacks. See also Pike.Backend.
beafe02005-07-25H. William Welliver III o Stdio: Propogates return values from callbacks properly.
aa99a42005-07-27Martin Nilsson o Stdio: Always check that the user callbacks are installed before
beafe02005-07-25H. William Welliver III  calling them.
aa99a42005-07-27Martin Nilsson o Protocols.HTTP.Server.Request: allow methods other than POST to send data in the request body, as long as the content-length header is set.
8010aa2005-07-25H. William Welliver III o Added support for versioned pike -x. o Standards.EXIF: bugfix for BIAS. o Web.Crawler: bugfix to cope better with non-absolute redirects.
beafe02005-07-25H. William Welliver III  Changes in C code: o is_eq() works properly with objects now. o Improvements made in rtldebug, valgrind and cleanup-on-exit. o Searches for 64 bit mysql libraries. o Displays errors when the compile time replace() optimizer fails. o Zero-type is correctly cleared in a number of opcodes.
aa99a42005-07-27Martin Nilsson o Fixed leak in Oracle module when Oracle.Date objects are created or cast.
5cfccd2005-08-14Martin Nilsson o Several fixes for improved performance and compatibility with Oracle 9.
5843d02005-08-27Jonas Wallden o Fixes for compiling under Solaris 10, AmigaOS4, OpenBSD and Mac OS X.
beafe02005-07-25H. William Welliver III o Machine code disabled under FreeBSD 5.x. o Preprocessor now handles escaped newlines in ordinary text. o #if expressions can now be broken with escaped newlines. o sprintf() %f segfaults fixed. o Stdio.UDP->wait() now handles EINTR. o Stdio.File sockets are properly released when connect() fails.
5843d02005-08-27Jonas Wallden o XML parser fixes (see Pike code changes).
beafe02005-07-25H. William Welliver III o mktime() works before 1970 now in all situations.
aa99a42005-07-27Martin Nilsson o gmtime() works for localtime now, and maps to closest valid time when presented with an invalid time.
beafe02005-07-25H. William Welliver III o Odbc: configure fixes for modern libiodbc. o fixes for modify_shared_string() and rehash_string_backwards()
aa99a42005-07-27Martin Nilsson o Pike.Backend: Fixed bug in timeout calculation that caused the timeout to be zero (effectively causing busylooping) if one requested infinite timeout to Backend.(). (This doesn't affect the default backend since it has a timeout of 3600.0.) o Pike.Backend: proper closing of kqueue descriptors on *BSD systems that use kqueue instead of poll(). o Pike.Backend: fixed a bug that caused delays when setting callbacks. Fixes bad performance for SSL.sslfile based servers.
5843d02005-08-27Jonas Wallden o Sybase: SybaseOpenClient framework on Mac OS X.
aa99a42005-07-27Martin Nilsson o CMOD precompiler: fixes for polymorphic function overloading and module level functions. o Do not decode non-shortest forms in utf8_to_string and _Charset, for
8010aa2005-07-25H. William Welliver III  security reasons and unicode 3.1 compliance. o Image.PNG: fix a memory leak.
5cfccd2005-08-14Martin Nilsson o Image.FreeType: Added support for monochrome pixel fonts.
8010aa2005-07-25H. William Welliver III o Postgres: Fixes to create() variable 5 parsing. o GTK: a number of typos were fixed. o A large number of fixes for 64 bit architectures.
5cfccd2005-08-14Martin Nilsson o Significant optimization of sscanf %*s and %*[...].
5843d02005-08-27Jonas Wallden o Optimized Mac OS X cache management in machine code generation resulting in better performance in some areas (e.g. startup time).
beafe02005-07-25H. William Welliver III  Other Changes: o Windows installer fixes
8010aa2005-07-25H. William Welliver III o Updated Nettle included o Bug reports fixed: 3855, 3928, 3941, 3950
beafe02005-07-25H. William Welliver III 
3cbd4b2004-09-12Martin Nilsson Changes since Pike 7.6.6 ---------------------------------------------------------------------- Changes in Pike code: o Fixed a cyclic resolver problem when running Pike with -V7.4 o Fixed #if constant so it doesn't rethrow a compilation error when #if constant failes to to compilation error. o Better sslfile backward compatibility. o Fix to prevent Regexp from throwing an error when PCRE isn't installed. o Fixed pop() in ADT.Priority_queue. o Fixes in Calendar.dwim_day for better accuracy. o Major fixes and extensions of Parser.XML.Tree. o Protocols.LMTP now displays correct error information. o Content-type can now be set manually in Protocols.HTTP.Session. o Protocols.LDAP now support paged searches. Fixed bugs related to dequoting and escaping values in filters. o Fixed memory leak in Protocols.LysKOM. o Fixed argument order in Remote.Client->provide. o Fixed setting DES and DES3 keys. o SSL now falls back to TLS 1.0 when accessed with SSL 3.2 (TLS 1.1). o Fixed bug in decoding SSL2 hello messaged that caused incorrect padding of client challenges longer than 16 bytes. This caused some clients, typically based on OpenSSL, to fail to connect. o Fixed an SSL bug that caused the session cache from working. o Fixed an SSL bug where calls to the read callback could get lost when frequent switches between callback and non-callback mode occurs. o Added EXIF kludge to handle broken FUJIFILM MakerNote. o Fixed close in Stdio.FakeFile. o Fixed Stdio.exist. o Ensure that errno() is relevant if recurse_rm returns with an error. o Fixed a type parser bug in Hilfe. o rdf:ID and rdf:about now takes xml:base into account in Web.RDF.
0582eb2004-09-19Martin Nilsson o Fix for Protocols.DNS on MacOS X.
3cbd4b2004-09-12Martin Nilsson  Changes in C code: o Fixed bug in profiling support. o Backend and UDP fixes for poll and AIX. o Fixed bug in f_exit when called with multiple arguments. o Fix for segmentation fault in random_string with negative argument. o Added mprotect workaround. o Avoid default usage of machine code on OpenBSD. o Improved handling out-of-stack errors. o find_external_context() now supports objects being destructed. o Fixed copy_mapping_recursively(). o Fixed indices() and values() on objects to hide hidden items. o rusage fix for system without 64 bit integer support. o Fixes in create_process(). o Fixed memory leak when createing tuned boxed images. o MMX no longer used for `* and `+ image object operators because of precision problems. o New module: Kerberos o Mysql module support Mysql 4.1.3. o Bugfix in dbdate_cast() in the Oracle module. o Several bugfixes in Shuffler. o Added Stdio.Port()->bind_unix().
8010aa2005-07-25H. William Welliver III o Several bugfixes for rare array problems.
0582eb2004-09-19Martin Nilsson o Several cpp fixes to ensure that #if constant never interrupts compiliation. Use --show-all-cpp-warnings to see such failures. o cpp expressions are now short-circuited.
3cbd4b2004-09-12Martin Nilsson  Other chages: o Several fixes in the Pike package generation to make them work with GNU tar 1.14. o Preliminary support for local variable extraction in unbug.
0582eb2004-09-19Martin Nilsson o New installer system for Microsoft Windows.
3cbd4b2004-09-12Martin Nilsson 
ffd9ed2002-12-05Martin Nilsson Changes since Pike 7.4:
6bf19a2002-09-15Peter Bortas ----------------------------------------------------------------------
cd683a2001-07-27Johan Sundström 
bf7e8e2002-09-26Martin Nilsson New/improved functionality: ---------------------------
cd683a2001-07-27Johan Sundström 
559bd42004-05-05Leif Stensson o fewer magical hacks
a6a1f12003-09-30Johan Sundström  Several Pike modules have been cleaned up from old hacks and workarounds for problems which now have proper solutions. This
559bd42004-05-05Leif Stensson  should reduce size, and improve performance, dumpability and readability of the affected code. In addition lots of internal types in Pike have been tightened up and several more files now use the pragma strict_types, which has helped locating and fixing some previously undiscovered bugs. o garbage collection strategy is now configurable The garbage collector can now be configured to take both the amount of garbage and the cpu time spent in the gc into account. Automatic garbage collections can also be disabled in critical regions. (Use the function Pike.gc_parameters for this.) o hash() modified The string hash functions are now byte-order independent. The old hash function is available as hash_7_4 or as hash when running in 7.4 compatibility mode or lower. o --help The Pike --help message has been improved, and it is possible to retrieve further information about options and environment variables. In addition, most of the tools and build scripts now accept --help and describes what they do and what options they take.
8d23b02003-09-30Martin Nilsson  o INT64
ca69732006-11-13Peter Bortas  On 64 bit architectures Pike will now use full 64 bits integer
0876ef2004-02-19Martin Nilsson  before resorting to Gmp.mpz objects for large numbers. o IPv6
b15a162004-05-01Martin Nilsson  Networking code in Pike has been updated to work with IPv6. This
559bd42004-05-05Leif Stensson  includes both low-level fixes in the socket handling as well as high-level changes such as IP parsing and protocol additions such
b15a162004-05-01Martin Nilsson  as AAAA records in Protocol.DNS.
8d23b02003-09-30Martin Nilsson 
559bd42004-05-05Leif Stensson o module system improved Both dynamic and static modules now appears as objects, and they both support having an identifier _module_value, which will then be what is presented by the resolver as the module. _module_value can be a constant, which will prevent the program from being automatically cloned.
582dd62004-04-25Martin Nilsson o mysqls
559bd42004-05-05Leif Stensson  The Mysql glue can operate over SSL, providing additional data security. Use the "mysqls://" protocol in the Sql.Sql module to access this feature. o reworked codec The codec for serialization of Pike data types has been updated and has a significally improved success rate at encoding modules. (See the encode_value and decode_value functions.) o sort() is portable Sort is now locale and platform independent. In other words, strings are now compared only according to the unicode value of every character. o sort() is stable Unlike previous releases, sort() will keep the original order of elements that are equal. At first, we considered keeping the old sort function in parallel with the new one, as a "faster but unstable" alternative, but it turned out that there was no noticable
5ad42c2004-06-01Martin Stjernholm  difference in speed between the new and the old function.
582dd62004-04-25Martin Nilsson  o trace() can trace all threads The configure option --without-thread-trace has been removed, but instead the trace() function has been extended to make it possible to set the trace level in all threads simultaneously.
5ad42c2004-06-01Martin Stjernholm o the debug trace system is more configurable In addition to the trace levels set by the trace function or by the command line argument -t, trace can now be turned on and off for the individual subsystems. All trace levels have also been increased by one to make room for gc only messages at level 1.
8416432004-05-01Martin Nilsson o unbug The Pike debugger unbug has been significtly optimized.
c3371f2004-05-03Martin Nilsson o Unicode Pike 7.6 uses the Unicode 4.0.1 tables for case info and normalization.
559bd42004-05-05Leif Stensson o upper_case() and lower_case() extended The built-in functions upper_case and lower_case now also works on single characters represented as integers.
c3371f2004-05-03Martin Nilsson  o #warning A new The Pike preprocessor directive #warning has been added. It
8d7bed2004-05-05Johan Sundström  simply writes the rest of the line to stderr.
c3371f2004-05-03Martin Nilsson 
8416432004-05-01Martin Nilsson 
dfaa782004-05-02Martin Nilsson The Pike master: ----------------
8416432004-05-01Martin Nilsson  o The new option --dumpversion prints out the Pike version in a more
53c7be2004-05-05Leif Stensson  easily parsed way than --version.
8416432004-05-01Martin Nilsson 
559bd42004-05-05Leif Stensson o The master now supplies argv to the started application, so it can use the create() method for execution. Some people find it a more elegant solution than having a main function.
8416432004-05-01Martin Nilsson 
559bd42004-05-05Leif Stensson o The "-e" flag to Pike has been improved with a number of convenience wrappers. When compiling code with "pike -e", the macro NOT(X) will
8416432004-05-01Martin Nilsson  expand to !(X) and CHAR(X) to 'X', making it easier to solve quote problems from a shell. If the return from a pike -e statement is a positive integer it will be used as pikes exit code. If the return
559bd42004-05-05Leif Stensson  value is a string it will be output (with a "\n" added, if the string didn't already end in "\n"). Finally there is a predefined variable env that contains the environment variables as a string:string mapping.
8416432004-05-01Martin Nilsson 
dfaa782004-05-02Martin Nilsson 
8416432004-05-01Martin Nilsson Building and installing pike: -----------------------------
dfaa782004-05-02Martin Nilsson  o To simplify the process of building Pike source distributions it is now possible to bundle less common libraries such as Nettle with
559bd42004-05-05Leif Stensson  Pike. The bundles, found in the "bundles" directory, will be compiled and statically linked if no matching library is found on the system.
dfaa782004-05-02Martin Nilsson  o The Pike build process no longer builds a bootstrap pike, used to run various small programs to generate source files. This means that in order to build Pike from CVS you need the latest major version of
559bd42004-05-05Leif Stensson  Pike installed on your system. Pike source distributions contain these generated files, and are not affected.
dfaa782004-05-02Martin Nilsson 
559bd42004-05-05Leif Stensson o By default, pike want to build a documentation source file, i.e.
dfaa782004-05-02Martin Nilsson  "make && make doc && make install". This makes it possible for third party modules to integrate its documentation into the system Pike documentation. If you do not want to build a documentation source file, use "make install_nodoc" instead of "make install".
deeeee2004-04-20Martin Nilsson 
582dd62004-04-25Martin Nilsson Changes and additions to -x utilities: -------------------------------------- o benchmark A set of benchmarks is available in the benchmark tool. They are
8d7bed2004-05-05Johan Sundström  based on the Great Computer Language Shootout, but have been
559bd42004-05-05Leif Stensson  modified to make more sense in the context of Pike, and to test
582dd62004-04-25Martin Nilsson  various aspects of Pike we suspect (or at least at one time
559bd42004-05-05Leif Stensson  suspected) to have bad performance.
582dd62004-04-25Martin Nilsson  o cgrep
559bd42004-05-05Leif Stensson  Context sensitive grep is very helpful when you are looking for substrings that are common. The implemented search modes are:
582dd62004-04-25Martin Nilsson  o Complete token o Part of a token o Complete string literal o Part of a string literal o Part of a comment Example: $ cd Pike/7.6/src $ grep or * | wc -l 18907 $ pike -x cgrep -T or * | wc -l 14 o dump Dumps Pike .pike and .pmod module files to precompiled .o files for shorter load times. Previously available as src/dumpmodule.pike in the Pike source tree, but moved into the Pike builtin tools to facilitate dumping of external modules. o extract_locale Locale extractor utility used to extract localizable strings from an application into an xml format, to later be used by the Locale module. o monger A new utility to download, install and otherwise manage external
559bd42004-05-05Leif Stensson  modules from the Fresh Pike project (modules.gotpike.com). o rsif rsif can now work recursively in a file structure if given the flag -r or --recursive. Example: pike -x rsif -r 7.4 7.6
582dd62004-04-25Martin Nilsson 
cd683a2001-07-27Johan Sundström 
8a6b142002-11-29Martin Nilsson New modules / classes / methods added: --------------------------------------
cd683a2001-07-27Johan Sundström 
559bd42004-05-05Leif Stensson o ADT.BitBuffer When operating on data formats that are defined on bit level, the ADT.BitBuffer presents a convenient interface. It operates as a FIFO buffer on bit level, which allows you to read and write bits and bytes. > ADT.BitBuffer b=ADT.BitBuffer(); > b->put1(2); (1) Result: ADT.BitBuffer(11) > b->put0(15); (2) Result: ADT.BitBuffer("À\0"0) > b->drain(); (3) Result: "À\0" > sizeof(b); (4) Result: 1 o ADT.CircularList This is an circular list implemented as a C wrapper around an array. It has a constant time complexity for pop and push. It has a limited max size but it can be increased manually by calling the allocate() method. It supports pushing, popping and peeking at both ends of the list, as well as removing and insering elements at any position in the list. o ADT.Sequence The sequence work similar to an array but has the ability to insert and remove elements at any position. It also has functions to retrieve iterators for forward and backward iteration over the elements in the sequence. o ADT.Struct This module makes it possible to work with binary formats of the "packed struct" type. Simply create a class inheriting ADT.Struct, specify its members in order, create an object with a file object as argument, and then read the decoded values from the object as ordinary variables. An example, reading ID3 metadata headers from an MP3 file: class ID3 { inherit ADT.Struct; Item head = Chars(3); Item title = Chars(30); Item artist = Chars(30); Item album = Chars(30); Item year = Chars(4); Item comment = Chars(30); Item genre = Byte(); } Stdio.File f = Stdio.File("foo.mp3"); f->seek(-128); ADT.Struct tag = ID3(f); if(tag->head=="TAG") { write("Title: %s\n", tag->title); tag->title = "A new title" + "\0"*19; f->seek(-128); f->write( (string)tag ); } o Array The Array module has been extended with Array.all and Array.any which determine if all or any of the elements in an array meet a given condition. The function Array.partition has also been added, which divides the elements of an array into two arrays, selected according to a given condition. o Bz2 Support for the compression format used by the bzip2 program. The module interface is almost identical to that of the Gz module. o Calendar module The %S format was added to Calendar.parse() to parse seconds since the Epoch. The TimeRange class is extended with a format method format_commonlog(), a tzname_utc_offset (+HHMM) and tzname_location(), which, when available, returns zone names like "Europe/Stockholm". The database has been updated with Swedish pre-1901 namedays and Finnish namedays.
0876ef2004-02-19Martin Nilsson  o Crypto/Nettle
559bd42004-05-05Leif Stensson  The crypto module has been almost completely rewritten, and now uses libnettle as backend instead of the built-in crypto
412eb12004-04-20Martin Nilsson  algorithms that Pike had before. This way Pike will benefit from the more active development and optimization work in the Nettle project. The most common hash and cipher methods are already written in assembler for several platforms. As an example SHA1 is about 40% faster than before on Intel platforms. With the new nettle support comes support for two new cipher algorithms, Blowfish and Serpent, and the new NIST hash algorithm SHA256. Note that the new Crypto module has renamed its identifiers to be consistent with the rest of Pike, and in some cases to clarify or correct bad names. The old names still work, but produce a warning unless Pike is run in compatibility mode. Compatibility outside compatibility mode will be removed in the future.
aa1f342004-05-05Johan Sundström  The interfaces for the hash and cipher algorithms have been
559bd42004-05-05Leif Stensson  improved, and no longer only conform to predefined interfaces,
412eb12004-04-20Martin Nilsson  but actually inherits Hash/HashState and Cipher/CipherState. Every algorithm is in itself a module in the Crypto module, and inherits the Hash/Cipher class. This module contains instance non-specific methods such as digest_size or key_size. By calling the `() method in the module a HashState/CipherState object is returned, which is a hash/cipher instance which can be used for streaming operations. Examples: Crypto.MD5.hash("Hash this string"); Crypto.MD5()->update("Hash this ")->update("string")->digest();
559bd42004-05-05Leif Stensson  The confusing and hard-to-use Crypto.randomness has been obsoleted
6f68f42004-04-21Martin Nilsson  by the Nettle implementation of the Yarrow random generator. The Nettle implementation of Yarrow uses AES and SHA256. The Crypto.Random module acts as a frontend before system crypto
559bd42004-05-05Leif Stensson  sources, and ensure that almost no matter how bad your OS is, you will still get cryptographically strong random data.
6f68f42004-04-21Martin Nilsson  o Crypto.PGP The start of a PGP/GPG toolkit. It still cannot handle all types of signatures nor generate any, but it is useful to verify selfsigned code and data.
8d23b02003-09-30Martin Nilsson  o Debug.Wrapper
6f68f42004-04-21Martin Nilsson  A simple litte wrapper that can be placed around another object to get printouts about what is happening to it. Only a few LFUNs are currently supported. > object x=Debug.Wrapper(Crypto.MD5()); Debug.Wrapper is proxying ___Nettle.MD5_State() > x->name(); ___Nettle.MD5_State()->name (1) Result: "md5" > !x; !___Nettle.MD5_State() (2) Result: 0
559bd42004-05-05Leif Stensson o Error The root of the Pike exception hiearchy. Even though it is work in progress, it is already usable. > mixed err = catch( 1/0 ); > err; (1) Result: Error.Math("Division by zero.\n") > object_program(err)==Error.Math; (2) Result: 1 o EXIF The EXIF module is now much more robust than before, and can handle some of the erroneous EXIF tags some cameras procduce. Extended support for Nikon cameras. o Filesystem.Traversion The Filesystem.Traversion iterator is a handy way to descend into a directory structure (depth first) and perform actions on all or some of the files. Example: foreach(Filesystem.Traversion("."); string dir; string file) if(file[-1]=='~' || file=="core") rm(dir+file); o Float Here constants and functions that deal specifically with the float data type is stored. Currently, it only contains various constants that describe the precision and limitations of the float type with which Pike was compiled. o Function The Function module has been extended with the fixpoint combinator "Y", useful when writing recursive lambdas, a curry function, to partially evaluate a function call, and a callback caller function that protects the caller from exceptions in the callback function. o Geography The Geography.Position object can now also convert to and from the Swedish RT38 (Rikets Triangulering 1938) position format.
6f68f42004-04-21Martin Nilsson 
582dd62004-04-25Martin Nilsson o GLUE The GL Universal Environment is a GL toolkit that makes implementing GL applications in Pike really simple. GLUE has
559bd42004-05-05Leif Stensson  several orthogonal components like object oriented encapsulation of GL, drawing primitives, texture handling and text generation. The most fundamental part is however an abstract interface to a GL area driver, like GTK or SDL.
582dd62004-04-25Martin Nilsson  int main() { GLUE.init(); draw_frame(); return -1; } void draw_frame() { call_out(draw_frame, 0.02); // 1/(50 fps) do_gl_code(); GLUE.swap_buffers(); }
6f68f42004-04-21Martin Nilsson 
559bd42004-05-05Leif Stensson o Image.NEO Support for one of the major image formats on Atari ST/STE, including decoding of color cycling. The C bitmap and palette handler can be used to implement other atari image formats.
dfaa782004-05-02Martin Nilsson 
8d23b02003-09-30Martin Nilsson o Int
aa1f342004-05-05Johan Sundström  The Int module contains a few functions and constants that deal
dfaa782004-05-02Martin Nilsson  specifically with the integer data type. Currently it contains
559bd42004-05-05Leif Stensson  parity and byte swapping functions, and constants for the system
dfaa782004-05-02Martin Nilsson  maxint and minint.
8d23b02003-09-30Martin Nilsson o Pike.Security
aa1f342004-05-05Johan Sundström  Functions and classes that deal with the Pike security system
dfaa782004-05-02Martin Nilsson  (requires Pike to be compiled with --with-security to be present) are stored in this module. Beware that the Pike security system is still very experimental.
cbfba52004-05-01Leif Stensson 
820ec72004-02-03Martin Nilsson o Process.Process
559bd42004-05-05Leif Stensson  The Process.Process class is extended to handle a time-out callback and a read callback, to make it easier to manage processes in an asynchronous way.
dfaa782004-05-02Martin Nilsson 
deeeee2004-04-20Martin Nilsson o Protocols.Bittorrent
addcdd2004-05-05Martin Nilsson  This is a Pike implementation of the client side of the popular
559bd42004-05-05Leif Stensson  Bittorrent protocol. Both creating torrent files and seeding as well as downloading and verifying files are supported. There are
addcdd2004-05-05Martin Nilsson  also several functions to retreive auxillary information such as
559bd42004-05-05Leif Stensson  identifying the other peer clients. o Protocols.HTTP.Session Handles an HTTP connection as a session, with cookies, redirects, HTTP keep-alive, etc.
b15a162004-05-01Martin Nilsson 
3f15bc2004-05-01Martin Nilsson o Protocols.LMTP/Protocols.SMTP
aa1f342004-05-05Johan Sundström  Protocols.LMTP implements a server for the Local Mail Transfer
3f15bc2004-05-01Martin Nilsson  Protocol, LMTP, as specified in RFC2033. This module has been well tested against Postfix clients. Protocols.LMTP is based on a new server implementation in Protocols.SMTP.
b15a162004-05-01Martin Nilsson  o Protocols.OBEX An implementation of the IrDA(R) Object Exchange Protocol. OBEX is a protocol for sending and receiving binary objects to mobile devices using transports such as IR and Bluetooth.
3546102004-04-30Leif Stensson 
559bd42004-05-05Leif Stensson o Regexp.PCRE added to give libpcre support. Are you a closet perler? For those who missed the richer flora of regexp syntax that Perl supports, the Perl Compatible Regular Expression module is the answer. If you compile libpcre with UTF-8 support you will also get transparent wide string support. Several convenience functions are also added to the Regexp module to enable easier access to regular expressions. o SSL Large parts of the SSL module have been rewritten, either as part of the rewrite of the Crypto module or in an attempt to fix various issues regarding blocking/nonblocking files, threads, etc. o Standards.IDNA This module implements various algorithms specified by the Internationalizing Domain Names in Applications (IDNA) memo by the
6839e72004-05-05Johan Sundström  Internet Engineering Task Force (IETF), RFC 3490. Your most likely
b5d5662004-05-05Martin Nilsson  application of this will be the encoding and decoding of punycode:
6839e72004-05-05Johan Sundström 
27ecdc2004-05-05Martin Nilsson  Standards.IDNA.zone_to_unicode("www.xn--rksmrgs-5wao1o.org");
6839e72004-05-05Johan Sundström 
559bd42004-05-05Leif Stensson  o Thread Thread.Fifo and Thread.Queue have been extended with try_* varieties of all functions that can block, and with functions that make them both implement the same interface. Both also have fallbacks for running in nonthreaded mode.
b15a162004-05-01Martin Nilsson o Web.RDF/RDFS/OWL/RSS
3546102004-04-30Leif Stensson  Pike now has support for the W3C semantic web formats OWL, RDF and RDFS, which are used for expressing structure and metadata information. There is also some support for the syndication format RSS (which happens to be a simple application of RDF). This sample program reads an OWL file, parses the dataset contained in it, and then lists the data classes in that dataset: int main(int argc, array argv) { object owlset = Web.OWL(); string input = Stdio.read_file(argv[1]); owlset->parse_owl(input); write("Classes:\n"); foreach(owlset->find_statements(0, owlset->rdf_type,
559bd42004-05-05Leif Stensson  owlset->owl_Class); array statement)
3546102004-04-30Leif Stensson  write("- %O\n", statement[0]);
addcdd2004-05-05Martin Nilsson 
559bd42004-05-05Leif Stensson  return 0; }
8416432004-05-01Martin Nilsson 
0f11b82004-05-02Martin Nilsson 
cd683a2001-07-27Johan Sundström Optimizations: --------------
559bd42004-05-05Leif Stensson o Instantiation and destruction of pike classes is now significantly
addcdd2004-05-05Martin Nilsson  faster.
770a0b2003-07-23Henrik Grubbström (Grubba) 
60a3942003-04-28Martin Stjernholm o Handling of bignums has been optimized, especially conversion to/from normal integers.
38a6742002-12-31Per Hedbor 
6f68f42004-04-21Martin Nilsson o String case conversion is now five times faster than before on average.
412eb12004-04-20Martin Nilsson 
6bf19a2002-09-15Peter Bortas  Compatibility changes: ----------------------
35a88b2004-05-05Leif Stensson o Incompatible changes have been made in ADT.Heap, Array.diff3_old,
addcdd2004-05-05Martin Nilsson  Crypto, Locale.Charset, Protocols.SMTP, SSL, Sql.sql, Standards.ASN1, Standards.PKCS, Stdio.File, Thread.Mutex and rusage(). Please refer to the 7.4 namespace in the compatibility section of the documentation for a complete description of these changes. Using #pike 7.4 or starting Pike with -V7.4 activates the compatibility layer, which should make it possible to run old code with newer pikes.
e2a7382002-11-24Peter Bortas Compatibility changes without backward compatibility: -----------------------------------------------------
deeeee2004-04-20Martin Nilsson o Module ABI changed The pike_frame struct has a new member, which makes modules compiled
559bd42004-05-05Leif Stensson  with Pike 7.4, and earlier versions of Pike, incompatible with Pike 7.6.
deeeee2004-04-20Martin Nilsson 
fc7f8d2002-11-24Martin Stjernholm 
bf7e8e2002-09-26Martin Nilsson C level/development changes: ----------------------------
deeeee2004-04-20Martin Nilsson o The security.h include file is renamed to pike_security.h
c3371f2004-05-03Martin Nilsson 
559bd42004-05-05Leif Stensson o The testsuite has three new, handy macros: cond_resolv, test_program_eq and test_program_equal, all defined in mktestsuite. A
c3371f2004-05-03Martin Nilsson  testsuite test that produces a warning, unless it is a test_warning test, will now be considered an error. The test program can now run testsuites in forked processes. By default every testsuite file will now be run in a forked process. If a directory named extra_tests exists on the top level of the Pike source directory, that directory will also be recursed for testsuite.in files. o The cmod API has been extended in many details, making it easier to work with. Variable declarations may now use the object(programname) syntax. Void in parameters may be 0. Varargs and optional arguments are now typechecked properly. It is possible to INHERIT a program into a PIKECLASS. It is possible to set attributes on a PIKEVAR. A program may be flagged as a prototype, which will make the function bodies to be ignored. It is also possible to set program flags, such as PROGRAM_DESTRUCT_IMMEDIATE. See bin/precompile.pike for documentation. o The make file has a few new targets that should be self explanatory: gdb_hilfe, valgrind_hilfe and valgrind_verify. o The header file module_magic.h is deprecated. Use the PIKE_MODULE_INIT and PIKE_MODULE_EXIT macros in your modules instead. o The backend has a new interface to handle references from backend objects to callbacks in files.