pike.git / CHANGES

version» Context lines:

pike.git/CHANGES:1: - Changes since Pike 7.2: + Changes since Pike 7.2.30:   ----------------------------------------------------------------------      New/improved functionality:   ---------------------------      o New Hilfe    The interactive pike environment you get when running pike without    giving a program name, has been thoroughly rewritten. Most notably    it now supports more of the common pike constructs, and is more    extendable and configurable. Start it and type help for more info.      o AutoDoc    The major parts of Pike now have some sort of documentation on    class and function level thanks to the AutoDoc system which has    been deployed during the last year. Manual dumps are published on -  http://pike.ida.liu.se/docs/reference/. +  http://pike.ida.liu.se/docs/reference/. Note that the manuals and +  the manual system are still work in progress.      o pike -x    When starting pike with the -x parameter, the pike process will    run the named script in Tools.Standalone, giving the rest of the    arguments as command-line switches. This is a convenient way of    running rsif (replace string in file) and pv (the image viewer    you may be familiar with from Tools.PV).      o pike -e scope    When running command line one-liners with pike -e you can now
pike.git/CHANGES:77:   o Return value from catch blocks.    The return value from catch blocks that exit normally has been    changed from a normal zero (i.e. zero_type 0) to UNDEFINED (i.e.    zero_type 1).      o SSL    The Pike SSL implementation now supports TLS 1.0. Also the LDAP    protocol and the methods in HTTP.Query now support secure transport    over SSL/TLS.    + o Better predefine handling +  It is now possible to change the Pike predefines without forking a +  new Pike process. Use the master function add_predefine() and +  remove_predefine() to add and remove defines.    -  +    Language additions:   -------------------      o foreach(X; Y; Z)    The foreach statement has been extended to allow iterations over    mappings, multisets and any object that implements the iterator    interface (see below). To make it possible to use this    conveniently, a new syntax has been added to get both the index    and the value in each iteration:   
pike.git/CHANGES:126:       The built-in data types also have iterator classes with this    interface. They are found as Array.Iterator, Mapping.Iterator, etc    and can be used to iterate over these data types in some custom    fashion. This is especially useful for mappings and multisets,    which cannot be iterated over directly in any other way. For    example, to get some arbitrary index in a mapping m:       mixed any_index = Mapping.Iterator(m)->index();    +  Other available iterators includes the file line iterator, +  available from Stdio.File through the method line_iterator(), and +  the split iterator that iterates over the fragments of a splitted +  string, available as String.SplitIterator. +    o Automap    To perform per-element operations on arrays, there is now a convenience    syntax for map(), that can make code more readable in some situations.    Summing up two arrays element by element using automap looks like this:       a[*] + b[*]; // the result has as many elements as the shortest array.       Multiplying all elements in a by a constant:       a[*] * 4711;
pike.git/CHANGES:253:   o _m_delete    A class can now define a function mixed _m_delete(mixed index) to    make the objects work like mappings with respect to m_delete().    (This feature has been added to later 7.2 releases too.)      o Constant objects    An object can now be constant, allowing for better performance    and better dumping. Used for example with Gmp.Bignum, Math.Matrix    and Image.Color.    + o Increased weakness granularity +  Instead of just declaring a mapping as weak, to avoid its +  references to be counted during garbage collection, it is now +  possible to declare only the indices or values as weak. To this +  end set_weak_flag() now takes a second argument to define the kind +  of weakness its first argument should have; Pike.WEAK, +  Pike.WEAK_VALUES or Pike.WEAK_INDICES. No second argument implies +  Pike.WEAK, which is both Pike.WEAK_VALUES and Pike.WEAK_INDICES.    -  +    New modules / classes / methods added:   --------------------------------------      o ADT.History    ADT implementation of a "leaking stack". Hilfe example:    > object h=ADT.History(3);    > for(int i=17; i<22; i++) h->push(i);    Ok.    > h->get_first_entry_num();    (1) Result: 3
pike.git/CHANGES:290:    > r->add(5,1);    (4) Result: ADT.Relation.Binary("test")    > r->find_shortest_path(1,5);    (5) Result: ({ /* 4 elements */    1,    2,    3,    5    })    + o Array +  The array module has quite a few new and handy methods. +  common_prefix() finds the longest common prefix in an array of +  arrays. count() counts the number of occurences of an element in +  an array. greedy_diff() is a greedy version of the diff() +  algorithm. oid_sort_func() is an ordering function for +  sort_array() that sorts SNMP OID values correctly. arrayify() is a +  simple helper function that makes arrays out of non arrays. +  uniq2(), unlike uniq(), works as the UNIX uniq command. Finally +  sum() sums the elements in an array using +. +    o Audio.Codec and Audio.Format    Contain decoders/encoders and format parsers for audio using    Ffmpeg library. Currently WAV and MP3.    Note: The API remains marked "unstable".      o Crypto.md4    Hash used for NT Lanmanager passwords.      o Crypto.crypt_md5    Convenience function to produce crypted $1$ style crypted
pike.git/CHANGES:445:    while(things_to_do) {    mixed err;    if (err = catch{    while(things_to_do) {    Pike.DefaultBackend(3600.0);    } }) {    master()->handle_error(err);    }    }    + o Pike.Security +  If Pike has been compiled with security support, the security +  related stuff can now be found in this module. +    o Protocols.XMLRPC    Implements most features of the XML-RPC standard.      o Protocols.HTTP    All methods in Protocols.HTTP that take a header mapping can now    handle array values (signifying multiple headers of that type).      o SDL    Wrapper for a subset of Simple DirectMedia Layer    functionality. Useful for writing games, movie players and other
pike.git/CHANGES:513:    two files have identical content.       Finally the get_all_active_fd() function has been moved from    spider to Stdio in our strive to deprecate the spider module.      o Stdio.FakeFile    Wraps a string in an object that exports a Stdio.File interface.      o Stdio.File    This object has received a few additions; With the sync() method -  the file object can be synchronized with the disk. line_iterator() -  returns an iterator object that iterates over the lines in the -  file. It is now possible to open UNIX domain sockets with the -  connect_unix() method. Finally grantpt() can allocate a VTY on -  systems with /dev/ptmx support. +  the file object can be synchronized with the disk. It is now +  possible to open UNIX domain sockets with the connect_unix() +  method. Finally grantpt() can allocate a VTY on systems with +  /dev/ptmx support.       Minimal example:    fd = Stdio.File("/dev/ptmx", "rw" );    Stdio.File fd2 = Stdio.File( fd->grantpt(), "rw" );    Process.create_process( ({ "/bin/bash" }), ([    "stdin":fd2, "stdout":fd2, "stderr":fd2, "setsid":fd2,    ]) );      o Stdio.FILE.set_charset()    It is possible to set the charset of a FILE object to get
pike.git/CHANGES:546:    Examples:    String.int2char(42) => "*"    String.int2hex(42) => "2a"    String.int2roman(42) => "XLII"    String.int2size(4200) => "4.1 kb"       A soundex() method has also been added, which normalizes names according    to the soundex algorithm. The algorithm in itself is not very useful,    but some databases support it.    + o String.Buffer +  A buffer used for building strings very fast. +    o String.Elite    Contains methods that transfer ordinary readable text into    leet-speak. A fairly good argument could be laid out for putting this    in Crypto as a one way cipher...    - o String.Buffer -  A buffer used for building strings very fast. -  +    o String.HTML    Contains methods that help in generating HTML.      o System    The following methods have been added: normalize_path(), which works    on NT style paths. get_netinfo_property(), which queries a NetInfo    server on MacOS X. gettimeofday(), which uses the system gettimeofday -  to retrieve the time. +  to retrieve the time. nanosleep() and usleep(), which calls the +  system nanosleep and usleep functions.      o System.Time    Used to get the current time with sub-second precision.      o System.Timer    Measures the time between two calls.      o System.Memory    Handles read/write from mmap'ed or allocated memory.   
pike.git/CHANGES:783:    more. The reason is that any code that leaves it out will always    contain a race; it doesn't work to e.g. rely on the internal    interpreter lock in this case.      o Protocols.LDAP.client()    The return code from all methods has been changed to follow Pike's    logic better. 0 is now a failure. The old behavior is emulated in    a compatibility layer.      o Protocols.SNMP -  Support for SNMP v1 and v2c, including a simple SNMP agent with -  support for Get requests. +  Extended to support both SNMP v1 and v2c. A simple SNMP agent with +  support for Get requests has also been added.      o Protocols.X    Support for the X11 XTEST extension has been added.      o dirname()    Now correctly returns a directory instead of just stripping the    part after the nearest directory separator.      o default_yp_domain()    The EFUN default_yp_domain() is now only available as
pike.git/CHANGES:840:    alpha channel rather then mixed with the current layer alpha channel:       aD=aS       rather then the behavior before:       aD=(aL+(1-aL)*aS)       (which is the behavior of the 'normal' mode.)    -  Bug fixes in the above modes so that alpha r,g,b channels -  are handled properly (separately). +     -  Bug fixes in equal, not_equal, less, more, less_or_equal, and -  more_or_equal modes so that the alpha channel is handled as -  documented (which is, in fact, as above; aD=aS). -  -  Bug fix in divide and invdivide to actually do what the modes are -  supposed to do (rather then just black the layer). -  -  And while on it, adding some modes: -  -  'imultiply' - D=(1-L)*S -  'idivide' - D=S/(1-L) -  'invidivide' - D=L/(1-S) -  -  'value_mul' - multiplying the source layer value -  (as in h,s,v) with the current layer value to the destination -  layer ("true burn"). -  -  +    C level/development changes:   ----------------------------      o Some global symbols have been renamed to avoid name clashes. -  sp -> Pike_sp -  fp -> Pike_fp -  fatal -> Pike_fatal +  sp -> Pike_sp +  fp -> Pike_fp +  fatal -> Pike_fatal    empty_string -> empty_pike_string    - o Module symbols not available from other modules. -  FIXME: Expand on this. -  +    o C-module symbols not available from other modules.    To avoid clashes between modules the symbols of dynamically loaded -  modules are now no longer available to eachother. -  FIXME: How to do now? +  modules are now no longer available to each other. This relied on +  a predefined load order of dynamic modules to work, so any module +  that used this could have crashed unpredictably during start up.      o Pike valgrinded    Pike has been the subject to some Valgrind scrutiny. Some specific    Valgrind enhancements have been made to Pike to improve markup of    forbidden memory areas. While all Valgrind issues are not yet    resolved, partially due to Valgrind breakage, our confidence in    the quality of Pike has been reassured.      o Some gdb helpers.    If Pike is compiled with --with-rtldebug there's a function
pike.git/CHANGES:898:    command) to print all Pike thread backtraces. It doesn't do any    destructive changes of the memory structures (besides the stack)    and it tries to be tolerant wrt inconsistencies.       --with-rtldebug also makes a dummy function _gdb_breakpoint    available in Pike. It doesn't do anything and is intended to be    used by setting a gdb breakpoint on the C level counterpart    pike_gdb_breakpoint and then use _gdb_breakpoint at the    appropriate place in the Pike code to enter gdb at that point.    +    Bugs fixed:   -----------      To browse all bug tickets, visit http://pike.ida.liu.se/development/bugs/      o Reworked trampolines to cause less circular references. (solves 1937)      o It is now possible to inherit Pike programs from C programs.      o Now supports Autoconf 2.50 & Autoconf 2.52    -  + o Modules with the constant dont_dump_mode will not be dumped, as a +  workaround for modules that can not yet be dumped.    - Uncategorized misc changes: - --------------------------- +     - o it is possible to change predefines without forking a new pike -  add_predefine()/remove_predefine() +  Enjoy!    - o dont_dump_module *FIXME: grubba* -  - System.usleep()/nanosleep() -  FIXME: per? -  - master.pike - - Improved handling of module cross dependencies. -  - Multiset -  - Pike.Security - Pike.BacktraceFrame - Pike.WEAK_INDICES, WEAK_VALUES, WEAK -  - o String.SplitIterator -  FIXME: grubba -  - o String.Replace, String.SingleReplace -  FIXME -  - Array.common_prefix - Array.count - Array.greedy_diff - Array.oid_sort_func - Array.arrayify - Array.uniq2 - Array.sum -  +  The Pike Team