pike.git
/
CHANGES
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/CHANGES:1:
+
(to browse bug crunch tickets noted at the end of these notes, either
+
visit http://community.roxen.com/crunch/ - or append the ticket id to
+
"http://bugs.roxen.com/" for a address directly to the ticket itself)
-
+
+
Changes since 2001-04-06 / Pike 7.2.30 (released separately):
+
----------------------------------------------------------------------
+
+
o Modifier ranges added.
+
+
Makes it easier to provide a set of modifiers to several symbols.
+
Example:
+
+
static
+
{
+
int i;
+
Tools.PVImage image;
+
}
+
+
is synonymous to:
+
+
static int i;
+
static Tools.PVImage image;
+
+
Improvement and bug tickets closed: 968, 1420, 1468, 1469, 1505, 1546,
+
1593, 1645, 1648, 1670, 1679,
+
1711, 1714, 1728, 1735, 1739,
+
1743, 1757, 1770, 1777, 1793,
+
1825, 1831, 1839, 1843
+
+
Changes since before then; Pike 7.0
+
----------------------------------------------------------------------
+
+
o #pike
+
+
Pike files can now be identified with which version of pike they
+
where written for with the preprocessor directive #pike. The Pike
+
interpreter can then use the apropriate compatibility features.
+
+
Note that this can also be used for older versions of Pike; a
+
Pike 7.0 or 0.6 script won't take offence just because you add a
+
#pike line in the beginning of it but it will give 7.2 or later
+
versions of pike a fair chance of running it witout complaining
+
about incompatible changes to pike that were introduced later. By
+
running the pike with a -V 7.0 (or 0.6 in the example given), you
+
explicitly tell the compiler to assume compatibility mode of the
+
given version, except where overridden by other #pike directives.
+
+
o --features
+
+
The pike binary can be started with the flag --features which will
+
make it return a list of all "features" available. The subjective
+
definition of a feature is something that depends on an external
+
library, special features in the OS/hardware or extra compile
+
options.
+
+
o --info
+
+
The --info flag shows, in addition to the feature list, some
+
version and environment information about the pike binary. An
+
example:
+
+
Software......Pike
+
Version.......Pike v7.2 release 30
+
WWW...........http://pike.idonex.se/
+
Main author...Fredrik Hübinette
+
+
pike binary.../export/d1/nilsson/pike/7.2.30/bin/pike
+
master.pike.../export/d1/nilsson/pike/7.2.30/lib/master.pike
+
Module path.../export/d1/nilsson/pike/7.2.30/lib/modules
+
Include path../export/d1/nilsson/pike/7.2.30/lib/include
+
Program path..
+
+
Features......dynamic_modules
+
threads
+
out-of-band_data
+
Crypto
+
GL
+
GTK
+
Gdbm
+
Gmp
+
Gz
+
Image.JPEG
+
Image.GIF
+
Image.TIFF
+
Image.TTF
+
Image.PNG
+
Java
+
Mird
+
Mysql
+
+
o All LFUNs may now be static.
+
+
Callbacks used for overloading may now be declared as static.
+
+
o Improved error diagnostics.
+
+
The Pike compiler will now provide better error messages,
+
i.e. more specific than "parse error" in many more cases than
+
before.
+
+
o Improved optimization of recursive functions.
+
+
Tail recursion optimization is now applied in more cases.
+
+
o Improved optimizer.
+
+
The global optimizer now has a tree optimizer that performs parse
+
tree transformations such as strength reduction optimization.
+
+
o Improved support for 64bit platforms.
+
+
The entire pike source has been audited and successfully compiled
+
on 64 bit architectures.
+
+
o Improved support for LFUNs in various efuns.
+
+
Overloading is now taken into account in more places than before.
+
+
o Improved type resolving.
+
+
Pike can better derive the proper type of complex expressions.
+
+
o Labeled break and continue.
+
+
Loops can now be labeled and referenced to from break and
+
continue. Example:
+
+
int a, b;
+
foo:
+
for (int i = 1; i <= 4; i++) {
+
a = i;
+
switch (1) {
+
case 1:
+
if (i >= 3) break foo;
+
if (i >= 2) continue foo;
+
}
+
b = i;
+
}
+
return ({a, b}); // Returns ({3, 1})
+
+
o Local variables at the same nesting depth may no longer overlap.
+
+
This is a return to the behavior of Pike 0.6. (We promise not to
+
change it again...) This may cause some compatibility problems
+
with Pike 7.0 code. (See the #pike feature above)
+
+
o More well-defined destruct order in the GC.
+
+
Yep. Actually most of the GC has been rewritten from scratch.
+
+
o New platforms supported.
+
+
MacOS X (Darwin 1.2), Linux 2.4 IA64, MS Windows 2000,
+
MS Windows XP, MS Windows XP 64bit.
+
+
o Optimized compiler.
+
+
The Pike compiler is now 50% faster than before.
+
+
o Optimized the search algorithms some more.
+
+
search() et al are now faster than before.
+
+
o Several headerfiles renamed to improve portability.
+
+
o Simulate is gone
+
+
If you actually need Simulate, use #pike 7.0 and it will appear.
+
+
o SQL sprintf style arguments
+
+
It is now possible to make sprintf style SQL queries with
+
automatic, database specific quoting. Example:
+
+
db->query("SELECT * FROM things WHERE id > %d AND name LIKE %s",
+
lowest, pattern);
+
+
o Support for Unix system calls.
+
+
Support for the Unix system calls setpgrp(), getsid() and
+
setsid(), setrlimit(), getrlimit() (all in the system module, see
+
below), support for setsid in Process.create_process().
+
+
o Support for cross-compilation.
+
+
o Support for implicit create().
+
+
The following two class definitions are equivalent:
+
+
class Foo {
+
+
int a;
+
string b;
+
static void create(int _a, string _b) {
+
a = _a;
+
b = _b;
+
}
+
}
+
+
class Foo(int a, string b) {
+
}
+
+
o Support for local constants.
+
+
Constants can now be defined inside functions.
+
+
o Support for the local::id syntax.
+
+
Makes it possible to resolve symbols in the local scope.
+
Example:
+
+
class A
+
{
+
int foo() { return 1; }
+
int bar() { return foo(); }
+
int baz() { return local::foo(); }
+
}
+
+
class B
+
{
+
inherit A;
+
+
int foo() { return 2; }
+
}
+
+
B()->bar() will return 2 while B()->baz() returns 1.
+
+
o type_of() and _type_of() now return the type type.
+
+
Example:
+
+
constant boolean = typeof(0)|typeof(1);
+
boolean flag = 1;
+
+
int main( int argc, array(string) argv )
+
{
+
flag = (argc>1)?(int)argv[1]:flag;
+
write( "Type of flag is %O\n", typeof(flag) );
+
write( "Value of flag is %O\n", flag );
+
return 0;
+
}
+
+
o typedef syntex added.
+
+
Example:
+
+
typedef int(0..1) boolean;
+
boolean flag = 1;
+
+
int main( int argc, array(string) argv )
+
{
+
flag = (argc>1)?(int)argv[1]:flag;
+
write( "Type of flag is %O\n", typeof(flag) );
+
write( "Value of flag is %O\n", flag );
+
return 0;
+
}
+
+
o enum syntax added.
+
+
Example:
+
+
enum boolean { false, true }
+
boolean flag = true;
+
+
+
New modules
+
-----------
+
+
o ADT.Stack
+
+
Previously known as Stack.
+
+
o Cache
+
+
Plugin-based generic caching system, supporting chain-deletion of
+
records. Currently supported storage areas are RAM, GDBM, Yabu or
+
MySQL databases, removal policies are explicit remove,
+
time-constrained, size-constrained, combined.
+
+
o Calendar
+
+
The new Calendar module. There is a big FAQ in its directory
+
describing many of its capabilities.
+
+
o Calendar_I
+
+
The old Calendar module. Available as Calendar when #pike 7.0 is
+
used.
+
+
o Crypto.aes / Crypto.rijndael
+
+
Rijndael is a block cipher, designed by Joan Daemen and Vincent
+
Rijmen, which was the winning candidate algorithm for the AES
+
(http://csrc.nist.gov/encryption/aes/). The cipher has a variable
+
block length and key length.
+
+
o Crypto.md2
+
+
The MD2 Message-Digest Algorithm, as defined in RFC 1319
+
(http://community.roxen.com/developers/idocs/rfc/rfc1319.html).
+
+
o Geography
+
+
Capable of converting between symbolic names for the countries to
+
the actual country name. It can convert between differnet kinds of
+
position systems such as longitude/latitude, UTM and Georef. The
+
conversion can be done on any type of ellipsoid. 18 of the most
+
common earth approximations are included.
+
+
o Image.FreeType
+
+
Support for FreeType 2.0.
+
+
o Math.Angle
+
+
For easy use of angles in computations. It can handle degrees,
+
radians and gons and conversion between them. You can reference a
+
degree angle with degrees, minutes and seconds. Includes methods
+
for normalization, trigonometrical calculations etc.
+
+
o Mird
+
+
Glue module to libmird, a free simple database with transactions,
+
see http://www.mirar.org/mird/
+
+
o PDF
+
+
This is a glue module to pdflib,a "half-free" PDF generating library.
+
+
o Parser.XML.DOM
+
+
An implementation of DOM Level 1. See http://www.w3.org/DOM/.
+
+
o Parser.XML.Tree
+
+
An easy to use, lightweight module to traverse and manipulate XML
+
trees.
+
+
o Protocols.HTTP
+
+
The API functions in Protocols.HTTP now take their URLs either as
+
strings or Standards.URI objects. You also no longer need to set
+
the authorization header on your own, if your URL contains
+
user:password information, e.g. http://user:password@some.host.com/.
+
+
o Protocols.IRC
+
+
A client implementation of the IRC (Internet Relay Chat) protocol.
+
+
o Protocols.SNMP
+
+
Implements SNMP v1, according to RFC 1157:
+
http://community.roxen.com/developers/idocs/rfc/rfc1157.html
+
+
o Standards.ISO639_2
+
+
A module providing mapping from ISO-639-2 language codes to
+
language names and vice versa.
+
+
o Standards.URI
+
+
Abstract class for URI:s (or URL:s) that both handles indexing
+
out/altering the various individual components of a URI and
+
correct resolving/reresolving of a URI with respect to another
+
base URI, all according with RFC 2396:
+
http://community.roxen.com/developers/idocs/rfc/rfc2396.html
+
+
Protocols.HTTP now also accepts Standards.URI objects as input to
+
all methods that previously used to accept only URL strings.
+
+
o Stdio.Stat
+
+
file_stat() now returns Stdio.Stat objects instead of
+
arrays. These objects emulate the behaviour of the previously used
+
arrays, but also provide an easier to use interface. (See the
+
#pike feature above)
+
+
o Tools.AutoDoc
+
+
Extracts the new inline documentation format. We will post more
+
information on this when this system has matured enough to build
+
working pike reference manuals. Some information is available in
+
files .autodoc_inlining and .autodoc_syntax in the top directory.
+
+
o system
+
+
A module housing various operating system calls made available to
+
pike that previously used to be provided as efuns (hardlink,
+
symlink, resolvepath, umask, chmod, chown, chroot stc.). Be
+
prepared to see these efuns disappear to compat mode only in the
+
future. They will, however, of course be available in the system
+
module.
+
+
o Added array Regexp match.
+
+
Example:
+
+
Regexp("[0-9]+")->match( ({ "hello", "12", "foo17" }) );
+
+
Returns ({ "12", "foo17" })
Newline at end of file added.