6bf19a | 2002-09-15 | Peter Bortas | | Changes since Pike 7.2:
----------------------------------------------------------------------
|
cd683a | 2001-07-27 | Johan Sundström | |
|
bf7e8e | 2002-09-26 | Martin Nilsson | | New/improved functionality:
---------------------------
|
cd683a | 2001-07-27 | Johan Sundström | |
|
6bf19a | 2002-09-15 | Peter Bortas | | o New Hilfe
|
d4ce82 | 2002-09-26 | Johan Sundström | | 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.
|
cd683a | 2001-07-27 | Johan Sundström | |
|
6bf19a | 2002-09-15 | Peter Bortas | | o pike -x
|
d4ce82 | 2002-09-26 | Johan Sundström | | 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).
|
cd683a | 2001-07-27 | Johan Sundström | |
|
6bf19a | 2002-09-15 | Peter Bortas | | o unbug
|
d72917 | 2002-07-14 | Honza Petrous | |
|
bf7e8e | 2002-09-26 | Martin Nilsson | | o Unicode 3.2.0
All charts has been updated to Unicode 3.2.0. This applies both to
the Unicode module as well as Pike-global functionality such as
upper_case/lower_case. unicode_to_string() also has support for
surrogate and byteorder make handling.
|
d72917 | 2002-07-14 | Honza Petrous | |
|
bf7e8e | 2002-09-26 | Martin Nilsson | | o Extended random()
random() now works on float, array, multiset and mapping (and
int/object).
o delay()/sleep()
sleep() no longer busywaits.
|
d4ce82 | 2002-09-26 | Johan Sundström | | o search(string, int) / has_value(string, int)
Both of these methods now handle both looking for strings and
integers; search("hi, ho!", ',') or has_value("Nope.", ' '), for
instance.
|
bf7e8e | 2002-09-26 | Martin Nilsson | |
Language additions:
-------------------
|
6bf19a | 2002-09-15 | Peter Bortas | |
|
638b8d | 2002-09-22 | Martin Stjernholm | | 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:
foreach (something; index-expr; value-expr) ...
This iterates over something, assigning in turn each index to
index-expr and each value to value-expr. The index and value
expressions can be declarations or lvalues, and they can also be
left out if the index and/or value part isn't interesting.
Note that it depends on the data type whether the iteration order
is well defined or not; arrays and multisets are iterated over
starting with the first element while mappings are visited in some
arbitrary order (each element is still visited only once, though).
o Iterators
As noted above, an iterator interface has been added that is now
used in various places to iterate over different data structures.
Not only the built-in data types are supported, but actually any
object that fulfills the interface for iterators:
When iterating over an object o, o->_get_iterator() is called to
get an iterator object. It should at least have two functions
index() and value() to get the index and value at the current
position, a function `+=(int steps) to advance the current
position the specified number of steps, and a `!() that returns
zero if the position hasn't reached the end of the data set.
Also, if the object o lacks a _get_iterator function, it's assumed
to be an iterator itself. This makes it possible to pass an
iterator explicitly to e.g. the foreach statement.
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();
|
6bf19a | 2002-09-15 | Peter Bortas | | o Automap
o Implicit lambda.
|
638b8d | 2002-09-22 | Martin Stjernholm | | 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:
|
6bf19a | 2002-09-15 | Peter Bortas | |
|
638b8d | 2002-09-22 | Martin Stjernholm | | class Foo {
int i;
void create (int i) {Foo::i = i;}
}
|
6bf19a | 2002-09-15 | Peter Bortas | |
|
638b8d | 2002-09-22 | Martin Stjernholm | | o global::
Added new keyword global to be able to access identifiers on the
top level of the compilation unit using global::foo.
|
3dbeca | 2002-09-16 | Johan Sundström | |
o global.
All top level modules (and other identifiers in that scope) can now
|
638b8d | 2002-09-22 | Martin Stjernholm | | be accessed with a "global." prefix. This is useful in cases where
|
3dbeca | 2002-09-16 | Johan Sundström | | local identifiers overshadow the top level, for instance in the Image
module, where the Image.Image class would occasionally block your view.
|
6bf19a | 2002-09-15 | Peter Bortas | |
o this
Added a magic identifier "this" that can be used instead of
this_object(). Like this_program, it only exists when there's no
|
638b8d | 2002-09-22 | Martin Stjernholm | | other identifier with that name. The primary reason for adding
this magic identifier is to make it possible to address the object
of a surrounding class with Foo::this.
|
6bf19a | 2002-09-15 | Peter Bortas | |
|
638b8d | 2002-09-22 | Martin Stjernholm | | o The Local module
|
6bf19a | 2002-09-15 | Peter Bortas | |
o enum reserved
o enum and typedef have implicit local binding
|
638b8d | 2002-09-22 | Martin Stjernholm | | o ::_indices(), ::_values().
There are now two "magic" functions ::_indices() and ::_values()
that can be used by an object to list all identifiers and their
values in itself. They are primarily intended when the _indices()
and _values() lfuns have been defined, to get the default
implementations. This is to complement the "magic" ::`->() and
::`->=() functions that exist in earlier releases.
|
6bf19a | 2002-09-15 | Peter Bortas | |
|
bf7e8e | 2002-09-26 | Martin Nilsson | | o UNDEFINED
|
6bf19a | 2002-09-15 | Peter Bortas | |
|
bf7e8e | 2002-09-26 | Martin Nilsson | | o _m_delete
|
6bf19a | 2002-09-15 | Peter Bortas | |
|
cd683a | 2001-07-27 | Johan Sundström | |
New modules / classes / methods added:
--------------------------------------
|
6bf19a | 2002-09-15 | Peter Bortas | | o ADT.History
|
2b873c | 2002-09-24 | Henrik Grubbström (Grubba) | | Leaking stack.
|
6bf19a | 2002-09-15 | Peter Bortas | |
o ADT.Relation.Binary
Handles binary relations.
|
3dbeca | 2002-09-16 | Johan Sundström | |
|
6bf19a | 2002-09-15 | Peter Bortas | | o Audio.Codec and Audio.Codec
Contains decoders and encoders for audio. Currently WAV and MP3.
|
02c81c | 2002-09-17 | Honza Petrous | | Note: The API remains marked "unstable".
|
6bf19a | 2002-09-15 | Peter Bortas | |
o Calendar.verify
o Debug.Tracer
|
02c81c | 2002-09-17 | Honza Petrous | | o Dvb.dvb
|
bf7e8e | 2002-09-26 | Martin Nilsson | | Digital sattelite handler (Linux only).
|
02c81c | 2002-09-17 | Honza Petrous | |
|
6bf19a | 2002-09-15 | Peter Bortas | | o Locale.Language
|
cd683a | 2001-07-27 | Johan Sundström | |
|
6bf19a | 2002-09-15 | Peter Bortas | | o Parser.Python
|
bf7e8e | 2002-09-26 | Martin Nilsson | | Splits Python source code into text tokens.
|
6bf19a | 2002-09-15 | Peter Bortas | |
o Parser.RCS
|
3dbeca | 2002-09-16 | Johan Sundström | | Extracts data from RCS or CVS repositories.
|
6bf19a | 2002-09-15 | Peter Bortas | |
o XML.NSTree
o HTTP.Server
|
c5bc25 | 2002-09-16 | Johan Sundström | | o Protocols.X.KeySyms
|
6bf19a | 2002-09-15 | Peter Bortas | |
o Standards.CIFF
o Standards.FIPS10_4
o Standards.ID3
|
705f93 | 2002-09-23 | Honza Petrous | | ID3 tags decoder/encoder. Supports versions: 1.0, 1.1,
|
d4ce82 | 2002-09-26 | Johan Sundström | | 2.2-2.4. Frequently used in MP3 files for encapsulating metadata.
|
6bf19a | 2002-09-15 | Peter Bortas | |
o Standards.RDF
|
bf7e8e | 2002-09-26 | Martin Nilsson | | o System.Time
o System.Timer
|
6bf19a | 2002-09-15 | Peter Bortas | | o Stdio.FakeFile
o Stdio.GZipFile
o Tools.PV
Convenience tool that sets up a canvas with GTK, presents a
picture on it and delivers a number of image inspection and
|
3dbeca | 2002-09-16 | Johan Sundström | | manipulation options.
|
6bf19a | 2002-09-15 | Peter Bortas | |
Also accessable via "pike -x pv"
|
3dbeca | 2002-09-16 | Johan Sundström | |
|
6bf19a | 2002-09-15 | Peter Bortas | | o Image.Dims
|
bf7e8e | 2002-09-26 | Martin Nilsson | | Can extract the dimensions of an image with a minimal amount of
data loading. Currently handles JPEG, GIF and PNG images.
|
6bf19a | 2002-09-15 | Peter Bortas | |
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
|
d4ce82 | 2002-09-26 | Johan Sundström | | Decodes AutoCAD thumbnail images.
|
6bf19a | 2002-09-15 | Peter Bortas | |
o Gmp.mpq and Gmp.mpf
Multi precision fractions.
|
3dbeca | 2002-09-16 | Johan Sundström | |
|
d10730 | 2002-09-22 | Martin Stjernholm | | o String.SplitIterator
o Stdio.File.line_iterator
o String.Replace, String.SingleReplace
|
638b8d | 2002-09-22 | Martin Stjernholm | |
|
cd683a | 2001-07-27 | Johan Sundström | | Optimizations:
--------------
|
d10730 | 2002-09-22 | Martin Stjernholm | | o Machine code used on some architectures.
o Overall speed improvements.
|
bf7e8e | 2002-09-26 | Martin Nilsson | | Function calls
sprintf
arrays
replace
o Deferred backtraces.
|
d10730 | 2002-09-22 | Martin Stjernholm | |
|
6bf19a | 2002-09-15 | Peter Bortas | | o Improvement and bug tickets closed: 1499
Compatibility changes:
----------------------
|
638b8d | 2002-09-22 | Martin Stjernholm | | The following changes are known to break compatibility. The old
behaviour is emulated in the compatibility layer that is activated by
adding the preprocessor directive "#pike 7.2" to your program or by
giving the argument "-V7.2" to the pike executable.
o "global" has become a reserved keyword.
o Changed lookup rule for ::.
Previously the identifier in front of :: was only looked up among
the preceding inherits. Now the lookup additionally includes the
names of the surrounding classes. The inherits inside a class
still take precedence over the name of the class, though.
o Using local:: on variables is an error.
Previously the construct local::foo could be used to access the
identifier "foo" in the class scope if it had been overridden by
an argument or function variable. That is however only a
side-effect of the real use for local::, namely to bind the
identifier statically at that point only, to avoid getting an
overridden version. In the case of variables this leads to
questionable semantics, which is the reason it's been made an
error in this version. Pike 7.2 didn't implement it correctly;
there local:: on variables had only the effect to access the class
scope. Now a proper way to access hidden identifiers has been
added, so all such uses of local:: should be replaced with
this_program::.
|
6bf19a | 2002-09-15 | Peter Bortas | |
|
1d89c5 | 2002-09-24 | Johan Sundström | | o Identifier lookup
The search algorithm for finding identifiers from inherited classes
has been changed to look for the most recent definition in the most
recent inherit. In Pike 7.2 and prior, it looked up the last
definition regardless of inherit depth, unless there was a
definition in the current program. (This actually changed more than
once during 7.3 - between 7.3.23 and 7.3.32, it looked up the most
recent definition with the least inherit depth.) This example shows
what the lookup strategies would find:
class A {
int foo() {}
}
class B {
int foo() {}
inherit A;
}
class C {
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
| |
| +-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)
|
+-A---foo --- Pike 7.3.22
Lookup of identifier "foo" in B():
B-+-foo All versions of Pike
|
+-A---foo
|
6bf19a | 2002-09-15 | Peter Bortas | | o Protocols.LDAP.client
The return code from all methods was changed to follow Pike's
logic better. 0 is now a failure. The old behaviour is emulated in
|
705f93 | 2002-09-23 | Honza Petrous | | compatibility layer.
|
6bf19a | 2002-09-15 | Peter Bortas | |
o dirname
Now correctly returns a directory instead of just stripping the
part after nearest directory seprator.
o LR
LR has been moved to Parser.LR and the API has been chnged.
FIXME: More about this?
|
bf7e8e | 2002-09-26 | Martin Nilsson | | 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 unused tree right from CVS.
C level/development changes:
----------------------------
o Some global defines has 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.
|
6bf19a | 2002-09-15 | Peter Bortas | |
Bugs fixed:
-----------
o Reworked trampolines to cause less circular references. (solves 1937)
|
638b8d | 2002-09-22 | Martin Stjernholm | | (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.)
|
bf7e8e | 2002-09-26 | Martin Nilsson | |
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)
|