pike.git / CHANGES

version» Context lines:

pike.git/CHANGES:108:    a[*] + b[*]; // the result has as many elements as the shortest array       Multiplying all elements in a by a constant:       a[*] * 4711;       Make an array of what sprintf("%O", a[n]) returns for all elements in a:       sprintf("%O", a[*]);    - o Implicit lambda. + o Implicit lambda    A convenient way to embed code that needs pre- and/or post- -  initialization. +  initialization. If a statement starts with a function call +  followed directly by a brace block, then the block is transformed +  to a lambda function which is passed as the last argument to the +  function being called.    -  FIXME: Not stable. mast type here. +  The following example embeds OpenGL calls that modifies the matrix +  in an implicit lambda that will save the matrix before execution +  and restore it afterwards:    -  This example embeds OpenGL calls that modifies the matrix in an -  implicit lambda that will save the matrix before execution and -  restore it afterwards. -  +     void PushPop( function f )    { -  GL.glPushMatrix(); +  glPushMatrix();    mixed err = catch(f()); -  GL.glPopMatrix(); +  glPopMatrix(); +  if (err) throw(err);    }    -  +  void do_something() +  {    PushPop() {    glTranslate( ((1.0-0.08)-pcs)/2, 0.0, 0.0 ); -  drawstuff(); +  draw_stuff();    }; -  +  }    -  +  Note that although useful, this feature has important +  disadvantages and will probably be obsoleted by a better +  alternative in the future. The problem is that the inner brace +  block become a completely separate function instead of remaining a +  block. The difference (apart from being slower) is shown by this +  example:    - o Access to hidden variables in surrounding scopes. +  void do_something() +  { +  PushPop() { +  if (glError()) return; +  glTranslate( ((1.0-0.08)-pcs)/2, 0.0, 0.0 ); +  draw_stuff(); +  }; +  draw_more_stuff(); +  } +  +  Since the inner block is a separate function, the return statement +  doesn't exit do_something() as one might expect, causing +  draw_more_stuff() to be called even when there's a GL error. +  Another effect is that break and continue can't be associated with +  statements outside the implicit lambda block. +  +  Another method that overcomes these problems will likely be +  implemented. The problem is that it can give compatibility +  problems to change old code that uses implicit lambdas to that +  one, since e.g. return will work differently without giving any +  sort of error. +  + o Access to hidden variables in surrounding scopes    Include the names of the surrounding classes themselves in the lookup for    Foo::, to make it possible to adress hidden variables in the scopes of    surrounding classes, e.g:       class Foo {    int i;    void create (int i) {Foo::i = i;}    }      o global::
pike.git/CHANGES:167:      o The Local module    All Pike modules and classes found in the directory hierarchies    /usr/local/pike_modules, /opt/pike_modules, /opt/share/pike_modules,    /usr/local/share/pike_modules, $HOME/pike_modules, and    $PIKE_LOCAL_PATH (a :-separated list of directories) are available    with the prefix "Local.". Local.add_path() and Local.remove_path()    respectively adds and removes entries from the list of paths to    inspect when resolving Local.* symbols.    + o The program type can be specialized +  It's possible to specialize a program variable by adding a program +  identifier, much like an object variable can be specialized. E.g: +  +  program(Stdio.File) fd = Stdio.File; +    o enum reserved    An enum construct similar to that in C has been introduced.    For example:       enum AlphaMode    {    Squares,    Solid,    None,    AlphaOnly,
pike.git/CHANGES:195:    and _values() lfuns have been defined, to get the default    implementations. This is to complement the "magic" ::`->() and    ::`->=() functions that exist in earlier releases.      o UNDEFINED    To generate a 0 (zero) with a zero_type(var) == 1, you previously    had to use constructs like ([])[0]. This is now available as the    globally available symbol UNDEFINED.      o _m_delete -  There is now an LFUN mixed _m_delete(mixed index) to overload in -  your classes to imitate mappings. It gets invoked when m_delete -  is performed on your object. +  A class can now define a function mixed _m_delete(mixed index) to +  make the objects work like mappings with m_delete(). (This feature +  has been added to later 7.2 releases too.)    - o :: includes current class -  class X { -  int i; -  void create (int i) {X::i = i;} -  } + o sprintf("%O", foo) is more descriptive +  If foo is a program or an object then Pike will try to find the +  resolved name instead of returning just "program" or "object". +  However, if an object contains an _sprintf function it will still +  be called in this case.         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    > h[3];    (2) Result: 19    -  +    o ADT.Relation.Binary    Handles binary relations. Hilfe example:    > object r=ADT.Relation.Binary("test");    > r->add(1,2)->add(2,3)->add(3,5)->add(1,4)->add(4,5);    (1) Result: ADT.Relation.Binary("test")    > r->find_shortest_path(1,5);    (2) Result: ({ /* 3 elements */    1,    4,    5
pike.git/CHANGES:243:    > 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 Audio.Codec and Audio.Codec    Contains decoders and encoders for audio. Currently WAV and MP3.    Note: The API remains marked "unstable".      o Calendar.verify      o Crypto.MD4    Hash used for NT Lanmanager passwords.      o Crypto.crypt_md5
pike.git/CHANGES:316:   o Image.Dims    Can extract the dimensions of an image with a minimal amount of    data loading. Currently handles JPEG, GIF and PNG images. Hilfe    example:    > Image.Dims.get(Stdio.File("test.gif"));    (1) Result: ({ /* 2 elements */    1412,    1120    })    -  +    o Image.Fonts    High level API for font handling. Should be used instead of    accessing the Freetype, TTF and *FIXME* modules directly.      o Image.DWG    Decodes AutoCAD thumbnail images.      o Image.SVG    -  + o Shuffler +    o Gmp.mpq and Gmp.mpf    Multi precision fractions.      o String.SplitIterator      o Stdio.File.line_iterator      o String.Replace, String.SingleReplace    -  + 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).    -  +    Optimizations:   --------------      o Machine code used on some architectures.      o Computed goto      o Better module dumping      o Overall speed improvements.
pike.git/CHANGES:416:    inherit B;    }       class D {    inherit B;    inherit C;    }       Lookup of identifier "foo" in D():    -  D-+-B-+-foo Pike 7.3.23 --- Pike 7.3.32 +  D-+-B-+-foo (Pike 7.3.23 --- Pike 7.3.32)    | |    | +-A---foo    |    +-C---B-+-foo Pike 7.3.33 --- (present day)    |    +-A---foo --- Pike 7.3.22       Lookup of identifier "foo" in C():       C---B-+-foo Pike 7.3.23 --- (present day)
pike.git/CHANGES:501:    LR has been moved to Parser.LR and the API has been chnged.    FIXME: More about this?      o wmml documentation removed    Use the documentation in the refdoc directory instead.      o .build_lobotomize_crypto removed    Use the Makefile target lobotomize_crypto to lobotomize Pike.    Should preferably be executed in an unused tree straight from CVS.    +    C level/development changes:   ----------------------------      o Some global symbols have been renamed to avoid name clashes.    sp -> Pike_sp    fp -> Pike_fp    fatal -> Pike_fatal    empty_string -> empty_pike_string      o --with-internal-profiling      o Module symbols not available from other modules.         Bugs fixed:   -----------      o Reworked trampolines to cause less circular references. (solves 1937)    -  +    (To browse bug tickets, either visit   http://community.roxen.com/crunch/ - or append the ticket id to   "http://bugs.roxen.com/" for an address directly to the ticket   itself.)         Uncategorized:   --------------    - o --with-new-multisets - o PIKE_RUN_UNLOCKED +    o Works with Autoconf 2.50   o Saved 8 bytes per object for objects not using their parent scope   o constant objects (Gmp.Bignum, Math.Matrix, Image.Color)   o basetype()   o it is possible to change predefines without forking a new pike   o dynamic loading   o #pragma save_parent   o #pragma dont_save_parent (overrides constant __pragma_save_parent__)   o dont_dump_module - o modules can no longer call functions in other modules directly + o C modules can no longer call functions in other dynamic C modules directly   o it is possible to inherit pike programs from C programs.   o separate weak flags for indices and values in mappings      Math.inf   Math.nan   Gz._file   Image.Image()->blur   Image.Image()->grey_blur   Image.PVR: VQ compression/decompression added   MIME.Message: guess mode added
pike.git/CHANGES:567:   _Ffmpeg   Image.JPEG: transforms   Stdio.File->sync   Stdio.get_all_active_fd (from spider)   system.normalize_path   system.gettimeofday   system.get_netinfo_property (Max OS X)   system.usleep/nanosleep   system.Memory (a class to read/write from mmap'ed or allocated memory)   SDL - Shuffler +