pike.git
/
CHANGES
version
»
Context lines:
10
20
40
80
file
none
3
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