pike.git / CHANGES

version» Context lines:

pike.git/CHANGES:163:    | string x = "";    | foreach( v[1..], string elm )    | x += reverse(elm)+",";    | write("Testing: %s\n", reverse( x ));    | #];       The three different start/end markers might be useful if you write    code in code in code, since there is no way to quote the start/end    markers.    + o Added a shorthand syntax for integer rages: xbit, where x is a +  number between 1 and 31. This can be used as an example to indicate +  that a string is 8 bits wide only: string(8bit) +  +  This is equivalent to the range (0..255) but can be easier to parse. +  +  Similarily int(1bit) is an alias for 'bool', and int(12bit) is +  the same as int(0..4095). +  + o The random(), random_string() and random_seed() might be more random +  +  On computers with a hardware pseudo random generator random() can +  return significantly more random numbers, however, this means that +  random_seed is a no-op on those machines. +  +  A side-effect of this is that random_string is now actually +  significantly faster on at least x86 cpu:s with rdrnd. +  +  Note: If you want cryptographically random data please use +  Crypto.Random.random_string unless you know for sure the random data +  returned by the RDRND instruction is random enough. +  +    New preprocessor features   -------------------------      o Support for the ", ##__VA_ARGS__" cpp feature.       This makes the ‘##’ token paste operator have a special meaning    when placed between a comma and a variable argument. If you write       | #define err(format, ...) f(debug)werror("ERROR: "+format, ##__VA_ARGS__)   
pike.git/CHANGES:286:       PIKE_T_INT is now type #0, which makes certain things significantly    faster.       As an example, clearing of object variables is now done    automatically when the object is created since all object memory is    set to 0.       The same thing happens when clearing values on the stack.    + o Svalue type/subtype setting changed +  +  This halves the number of instructions used to push a value on the +  stack in most cases. +  +  The speedup is not large, but noticeable. +  + o And on a related note, we now lie to the compiler about the +  const:ness of the Pike_interpreter_pointer variable. +  +  This significantly simplifies the code generated by the C-compiler +  for stack manipulation functions, the stack pointer is now only +  loaded once per code block, instead of once per stack operation. +  +  This saves a lot of code when using the stack multiple times in a +  function, and should be safe enough, albeit somewhat unconventional. +  +  If nothing else the binary size shrunk by about 5%. +    o string(x..y) (constant) types       The strings now keep track of the min/max values in addition to two    new flags: all-uppercase and all-lowercase.       | > typeof("foo");    | (1) Result: string(102..111)       This is used to optimize certain operations,    lower_case, upper_case, search and string_has_null for now.
pike.git/CHANGES:322:    again, most real code is nothing like that benchmark.       + Several new opcodes added    As an example an observation was that most branch_if_zero is    followed by an is_eq, is_lt or is_gt or similar. Those opcodes    always return 1 or 0. So, two new opcodes, quick_branch_if_zero    and quick_branch_if_non_zero were added that map directly to three    x86-64 opcodes, there is no need to check the types, do a real    pop_stack etc.    +  + Demacroified some code, resulting in smaller code-size +  +  This makes things faster, it is often better to branch to a small +  block of code than to have it inlined in a lot of different +  locations on modern architectures. +    o Faster hash-function for strings       + Also siphash24 was added and is used in case the string hash table    becomes inefficient    -  +    Deprecated features and modules   -------------------------------      o Tools.PEM and Tools.X409 deprecated       Use the corresponding modules in Standards.      o The built in sandbox is now deprecated       Unless somebody wants to take ownership of the feature and keep it
pike.git/CHANGES:518:   ----------------------------      o Bz2.File added       It implements a Stdio.File like API, including support for the same    iterator API that Stdio.File has, allowing for convenient line    iterations over BZ2 compressed files.       | foreach( Bz2.File("log.bz2")->line_iterator(); int n; string line )    + o Both sscanf and sprintf can now handle binary floats in little endian format +  +  %-8F would be a 64 bit IEEE float binary value in little endian order. +    o Image.JPEG       + decode now supports basic CMYK/YCCK support       + exif_decode is a new function that will rotate the image    according to exif information    -  + o Image.BMP now supports some more BMP:s. +  +  + Added support for vertical mirroring (images starting at the +  bottom left) +  +  + Added support for 32-bit (non-alpha) BMP:s. +    o String.Buffer       String.Buffer can now add the storage from a different String.Buffer    object with the add() method.       It is possible to add sprintf-formatted data to a String.Buffer    object by calling the sprintf() method. This function works just as    the normal sprintf(), but writes to the buffer instead.       The new method addat() allows for writing into the buffer at any    position.    -  + o String.range(str) +  +  This returns the minimum and maximum character value in the string. +  +  The precision is only 8 bits, so for wide strings only character +  blocks are known. +  + o string_filter_non_unicode(str) +  +  This function replaces all non-unicode characters in a pike string +  with 0xffea. +    o SDL.Music added to SDL.       Allows the playback of audio/music files.    Requires the SDL_mixed library.      o System.TM       Low-level wrapper for struct tm.       This can be used to do (very) simple calendar operations. It is,    as it stands, not 100% correct unless the local time is set to    GMT, and does mirror functionality already available in gmtime()    and localtime() and friends, but in a (perhaps) easier to use API.      o decode_value now throws the error object Error.DecodeError.       Useful to catch format errors in the decode string.    -  + o decode_value can no longer decode programs using the 'old style' +  program encoding. +  +  Since the format has been deprecated since feb 2003, and those +  programs could not be decoded anyway due to other issues it is not +  much of a loss. +    o Process.daemon       The daemon() function is for programs wishing to detach themselves    from the controlling terminal and run in the background as system    daemons.      o Debug.pp_object_usage()       Pretty-print debug information, useful to get debug information    about object counts and memory usage in pike applications.
pike.git/CHANGES:653:    socket or a pipe.       + Changed internally to remove one level of indirection.    The Stdio.File object no longer has a _Stdio.Fd_ref in _fd. They    are instead directly inheriting _Stdio.FD.       _fd is still available for compatibility, but internally it is gone.       + Fixed grantpt() on Solaris failing with EPERM.    - o Unicode databases updated to 6.3.0 from 5.1.0 + o Unicode databases updated to 7.0.0 from 5.1.0       This is the latest released Unicode database from unicode.org.      o The Search search engine module has seen several fixes       + Added support for padded blobs. This improves performance when    incrementally growing blobs. This feature is only enabled if    Search.Process.Compactor says this is OK, see the documentation    for more information.   
pike.git/CHANGES:856:    - Ignore errors in close when destroying the object      o dtrace support (on MacOSX)       Pike now supports dtrace events on function enter and leaving (and    when stack frames are notionally popped, for functions doing    tailrecursion).      o sizeof() now supports ADT.struct.    + o Standards.JSON.encode can now get the initial indentation level +  specified.    -  +  This is rather useful for recursive calls encode in pretty print +  mode (common for objects with encode_json methods). +  + o Added Pike.identify_cycle(x) +  +  Checks to see if x contains any circular structures. +  +  This can be useful while optimizing to identify reference cycles in +  Pike data structures, so that the need for garbage collection can be +  reduced. +  + o Most math functions (log, pow, exp sin, cos etc) can now take +  integers as arguments in addition to a floating point number. +  +  The result will still be a float, the argument will be converted. +    Crypto and SSL   --------------    -  + o Several identifiers have changed name +  SSL.sslfile -> SSL.File +  SSL.sslport -> SSL.Port +  ... <add more, nilsson. :))> +  + o SSL.File: Changed client/server selection API. +  +  Client and server operation is now selected by calling either +  connect() (client-side) or accept() (server-side) after creating +  the SSL.sslfile object. +  +  Blocking handshaking mode is selected by calling set_blocking() +  before either of the above. +    o SNI client extension support for SSL (Server Name Indicator)      o Standards.PEM       + Added some support for encrypted PEM files      o Nettle refactored       CBC cipher mode is now twice as fast.   
pike.git/CHANGES:988:    DSA SHA-1    DSA SHA-2-224    DSA SHA-2-256       Note that the API has changed compared with Tools.X509 and there is    now a single make_selfsigned_certificate() method for both RSA and    DSA, though it takes the same arguments. In addition a hash function    and serial number can be supplied. The hash function defaults to    SHA-2-256.    + o Multiple threads can now call the Backend `() function (the function +  that waits for events).    -  +  The first thread will be the controlling thread, and all callbacks +  will be called in it, the other threads will wake when the +  controlling thread is done. +  +  + Incompatible C-level API changes + -------------------------------- +  + o New svalue layout +  +  The most obvious change is that the macros TYPEOF() and SUBTYPEOF() +  are now actually needed to directly access the type and subtype of +  an svalue, the svalues no have 'type' and 'subtype' members. +  +  There are also a few additional macros used to set both the type and +  subtype of an svalue at the same time: +  +  SVAL_SET_TYPE_SUBTYPE(sval,type,subtype) and +  SVAL_SET_TYPE_DC(sval,type) +  +  (these are only neede if you do not use the usual push_* macros) +  +  They are useful because they (usually) compiles to significantly +  more compact code, especially if the type and subtype are +  compiletime constants. The _DC variant will either leave the subtype +  unchanged or set it to 0, useful when you do not care about the +  actual subtype (which is, really, most of the time). +  + o get_storage() returns void* +  +  There is no need for casts in non-C++ code. +  +    Building and installing   -----------------------      o -fvisibility=hidden is now the default       This means that PMOD_EXPORT is now actually needed on systems like    Linux and MacOSX. It also means that the binary is slightly smaller    and faster.      o clang compilation fixes (bignum overflow checks, misc)
pike.git/CHANGES:1013:       Pike no longer comes with copies of some libraries, and the support    for that in the makefile has been removed.      o Several OS/2 and windows compilation fixes         Lots of bug fixes   -----------------    -  +    o Fixed symbol resolution with deep inherits and mixins      o Fixed PNG 4bpl indexed mode with alpha      o The _sprintf LFUN now works with %F    -  + o foreach( arr[-two()..], string x), where two() returns 2 will no +  longer iterate over the first element in the array three times or +  crash. +  + o Fixed a typo from 2001-05-05 that caused a lot of countries to +  recide on the continent ',Europa' instead of "Europa" in +  Geography.Countries. +  +  Obviously the continent is not that often checked. +  + o Fixed interresting bug in the constant number parsing for octal +  numbers in escapes. +  +  For whatever reason 8:s were accepted for every location except the +  first in octal numbers, so 078 was considered an alias for 0100. +  +  This could cause issues at times, and will result in string parsing +  being somewhat different: +  +  | Pike v7.8 release 700 running Hilfe v3.5 (Incremental Pike Frontend) +  | > "\078"; +  | (1) Result: "@" +  | Pike v8.0 release 3 running Hilfe v3.5 (Incremental Pike Frontend) +  | > "\078"; +  | (1) Result: "\a8" +    o A lot more, see the (more or less) full changelog for more info:       http://pike-librarian.lysator.liu.se/index.xml?m=pike.git&start=forever&branch=7.9&template=logonly.inc