pike.git
/
CHANGES
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/CHANGES:1:
Changes since Pike 7.6: ----------------------------------------------------------------------
-
o
Added
ABI
selection
.
+
This
is
a
high level list of changes between Pike 7
.
6 and Pike 7.8.
+
General bug fixes, build fixes and optimizations are not mentioned
+
here. For a complete list of changes, please consult the CVS changelog
+
either directly or through Code Librarian.
-
It's now possible to select whether to compile in 32bit or 64bit
-
mode at configure time by using the --with-abi option.
+
-
+
New / improved language functionality
+
-------------------------------------
+
o New syntax to index from the end in range operations. A "<" can be added before an index in the [..] operator to count from the end instead. This is convenient to e.g. chop off the last element in an array: a[..<1].
-
o Improved support for embedding.
-
-
Several declarations and definitions (most notably the debug and
-
runtime flags) have moved from main.h to pike_embed.h, in an attempt
-
to add support for embedding.
-
-
o Major compiler API cleanups.
-
-
The Pike compiler is now executing in a pike function context
-
(rather than in an efun context), and it is possible to customize
-
some of its behaviour via inherit (rather than via handler objects).
-
As a consequence the compiler is now much closer to being thread-safe.
-
+
o New `[..] operator function. Range operations have been separated from the `[] operator function and are now handled by the new `[..] which provides greater control for how the range bounds are specified. For compatibility, if there is no `[..] then `[] is still called for range operations. FIXME: Describe relation with Pike.INDEX_FROM_BEG/END & OPEN_BOUND. o Generalized this and this_program.
pike.git/CHANGES:83:
Pike now understands the common way to escape unicode chars, using \uxxxx and \Uxxxxxxxx escapes. These escapes works both in string and character literals and in the preprocessor. The latter means that unicode escapes can be used in identifiers, which is useful if they contain characters that can't be represented raw in the source code charset. o New (stricter) type checker for function calls.
-
The type checker for function calls is now based on the concept
-
of currification. This should provide for error messages that
-
are more easily understood. It also is much better att typechecking
-
function calls utilizing the splice (@) operator.
-
The mechanisms used by the typechecker are also made available as
-
Pike.get_first_arg_type(), Pike.low_check_call() and Pike.get_return_type().
+
The type checker for function calls is now based on the concept
of
+
currification. This should provide for error messages that are more
+
easily understood. It also is much better att typechecking
function
+
calls utilizing the splice (@) operator. The mechanisms used by the
+
typechecker are also made available as Pike.get_first_arg_type(),
+
Pike.low_check_call() and Pike.get_return_type().
o Added generic attributes for types. Provides a method to hook into the type checker, so that it is possible to make custom type checking. o Stricter typing of strings. The string type may now have an (optional) value range. Example: string(0..255) bytes;
-
o Stdio
-
-
- Stdio.cp can now work recursively in a directory tree. It will
-
also keep the permissions of files it copies.
-
-
- Added Stdio.recursive_mv which works on every OS and also when the
-
destination isn't on the same filesystem as the source.
-
-
- Added more symbolc default termcap/terminfo bindings to
-
Stdio.Readline.
-
-
- Improved support for Terminfo on NetBSD.
-
-
- read_file(), read_bytes(), write_file() and append_file() will may
-
now throw exceptions on uncommon errors such as when write_file is
-
unable to write all its data.
-
-
- Stdio.File->openat() opens a file relative to an open directory.
-
+
o Support for having multiple different active backend implementations. FIXME: example?
-
...
-
The global variable next_timeout is no more. It has been replaced by
-
a backend-specific variable. Added backend_lower_timeout() for accessing
-
the new variable. This fixes issues GTK, GTK2 and sendfile had with the
-
new backend implementation.
+
-
NOTE!
-
NOTE! C-API incompatibility!
-
NOTE!
-
NOTE! Changed the argument for backend callbacks!
-
NOTE!
-
NOTE! The argument is now a struct Backend_struct * when called
-
NOTE! at entry (was NULL).
-
NOTE! The argument is now NULL when called at exit (was 1).
-
NOTE!
-
-
o bin/precompile.pike
-
-
Voidable pointer types are no longer promoted to mixed.
-
+
o cpp The preprocessor now supports macro expansion in the #include and #string directives.
-
o PIKE_PORTABLE_BYTECODE
-
-
--with-portable-bytecode is now the default. Pike programs that have
-
been dumped on one architecture now can be decoded on another.
-
+
o Destruct reason passed to lfun::destroy. lfun::destroy now receives an integer flag that tells why the object is being destructed, e.g. if it was an explicit call to destroy(), running out of references, or reaped by the garbage collector. These integers are defined in the new Object module as DESCTRUCT_EXPLICIT, DESTRUCT_NO_REFS, DESTRUCT_GC and DESTRUCT_CLEANUP.
-
o Support for class symbols with storage in parent scope.
-
Also added support for aliased symbols.
-
+
o Improved support for mixin. The Pike compiler now supports mixin for symbols that have been declared static. o Implicit and explicit create(). The compiler now supports defining classes with both an implicit and an explicit create().
pike.git/CHANGES:189:
o Warnings for unused local variables. The compiler now checks that all local variables are used. o Unicode Case information and the Unicode module are updated to Unicode 5.1.0.
-
o protected
+
o
The keyword
protected
The modifier protected is now an alias for the modifier static. NOTE: In next release static will be deprecated.
-
o Pike_fp->context
-
-
Pike_fp->context is now a pointer to the current struct inherit
-
rather than a copy of it. This allows for easier access to
-
inherited symbols in C-code.
-
-
NOTE!
-
NOTE! C-API incompatibility!
-
NOTE!
-
-
o Inherit level argument added to several object handling functions.
-
-
In order to implement subtyping of objects, an extra argument
-
"inherit_level" has been added to many object indexing related
-
functions.
-
-
NOTE!
-
NOTE! C-API incompatibility!
-
NOTE!
-
-
Extensions and New Functions
-
+
o __attribute__ and __deprecated__ It's now possible to set custom attributes on types. This is currently used to improve the argument checking for sprintf() and related functions, and for marking symbols as deprecated. eg: __deprecated__ mixed obsolete_function(); __deprecated__(mixed) obsolete_return_value(); mixed fun(__deprecated__(mixed) obsolete_arg);
pike.git/CHANGES:251:
Warnings for use of deprecated symbols can be turned off for a segment of code with #pragma no_deprecation_warnings and turned on again with #pragma deprecation_warnings
+
+
Extensions and New Functions
+
----------------------------
+
o limit() The new toplevel function limit(a, x, b) is a convenience function that works like min(max(a,x),b). o sprintf() and sscanf() The format string for sprintf() and sscanf() et al is now syntax checked at compile-time, and the arguments after it are matched against it.
pike.git/CHANGES:732:
- Added support for UUID version 5; name based with SHA hash, which can be generated from the make_version5 function. - An UUID object can now be used as namespace in the second argument to make_version3 as well as the new make_version5. o Standards.XML.Wix FIXME
+
o Stdio
+
+
- Stdio.cp can now work recursively in a directory tree. It will
+
also keep the permissions of files it copies.
+
+
- Added Stdio.recursive_mv which works on every OS and also when the
+
destination isn't on the same filesystem as the source.
+
+
- Added more symbolc default termcap/terminfo bindings to
+
Stdio.Readline.
+
+
- Improved support for Terminfo on NetBSD.
+
+
- read_file(), read_bytes(), write_file() and append_file() will may
+
now throw exceptions on uncommon errors such as when write_file is
+
unable to write all its data.
+
+
- Stdio.File->openat() opens a file relative to an open directory.
+
o String - The function int2size has been rewritten to fixpoint as well as using the more common abbreviation of "B" for byte. - String.secure marks a string as "secure" which currently only means that the memory is cleared before it is freed. o System
pike.git/CHANGES:805:
Added support for POSIX style timers using clock_gettime(3). Notably this fixes nice high resolution thread local cpu time and monotonic real time on reasonably modern Linux systems. There are new constants CPU_TIME_* and REAL_TIME_* in the System module to allow pike code to query various properties of the CPU and real time clocks in use.
-
New
Modules
+
New
modules / classes / methods added
+
-------------------------------------
o Fuse FUSE (Filesystem in USErspace) provides a simple interface for userspace programs to export a virtual filesystem to the Linux kernel (and some other OS:es). FUSE also aims to provide a secure method for non privileged users to create and mount their own filesystem implementations. This module implements the needed interfaces to make it possible to
pike.git/CHANGES:865:
A more simplistic interface is also available for smaller hacks and programs. void main(int argc, array(string) argv) { mapping opts = Arg.parse(argv); argv = opts[Arg.REST]; }
-
o Fuse
-
-
FIXME
-
+
o GTK2 FIXME o Kerberos FIXME o Protocols.DNS_SD
pike.git/CHANGES:930:
task; to remove XML tags from a string. o Web.CGI Provides a CGI interface on the callee side. Retrieves information from environment variables and populates the variables in the Request object. Deprecations
+
------------
o The keyword nomask has been deprecated. It was functionally equivivalent with the keyword final. o Stdio.File->set_peek_file_before_read_callback() is deprecated.
-
+
Incompatible changes
-
+
--------------------
These incompatible changes can be solved by adding #pike 7.6 to your source file or starting Pike with -V7.6. o Array.transpose_old This function has been removed. o _Charset
pike.git/CHANGES:1006:
The functions read_file(), read_bytes(), write_file() and append_file() now always throw errors on error conditions, to allow easier use as errno doesn't have to be checked. read_file() and read_bytes() still return 0 if the file does not exist. o The modules Mird, Perl and Ssleay have been removed.
+
C level module API
+
------------------
+
+
o Improved support for embedding.
+
+
Several declarations and definitions (most notably the debug and
+
runtime flags) have moved from main.h to pike_embed.h, in an attempt
+
to add support for embedding.
+
+
o Major compiler API cleanups.
+
+
The Pike compiler is now executing in a pike function context
+
(rather than in an efun context), and it is possible to customize
+
some of its behaviour via inherit (rather than via handler objects).
+
As a consequence the compiler is now much closer to being thread-safe.
+
+
o The global variable next_timeout is no more. It has been replaced by
+
a backend-specific variable. Added backend_lower_timeout() for accessing
+
the new variable. This fixes issues GTK, GTK2 and sendfile had with the
+
new backend implementation.
+
+
NOTE!
+
NOTE! C-API incompatibility!
+
NOTE!
+
NOTE! Changed the argument for backend callbacks!
+
NOTE!
+
NOTE! The argument is now a struct Backend_struct * when called
+
NOTE! at entry (was NULL).
+
NOTE! The argument is now NULL when called at exit (was 1).
+
NOTE!
+
+
o Pike_fp->context
+
+
Pike_fp->context is now a pointer to the current struct inherit
+
rather than a copy of it. This allows for easier access to
+
inherited symbols in C-code.
+
+
NOTE!
+
NOTE! C-API incompatibility!
+
NOTE!
+
+
o Inherit level argument added to several object handling functions.
+
+
In order to implement subtyping of objects, an extra argument
+
"inherit_level" has been added to many object indexing related
+
functions.
+
+
NOTE!
+
NOTE! C-API incompatibility!
+
NOTE!
+
+
o bin/precompile.pike
+
+
Voidable pointer types are no longer promoted to mixed.
+
+
o Support for class symbols with storage in parent scope.
+
Also added support for aliased symbols.
+
+
+
Building and installin
+
----------------------
+
+
o Added ABI selection.
+
+
It's now possible to select whether to compile in 32bit or 64bit
+
mode at configure time by using the --with-abi option.
+
+
o PIKE_PORTABLE_BYTECODE
+
+
--with-portable-bytecode is now the default. Pike programs that have
+
been dumped on one architecture now can be decoded on another.
+
+
New simplified method to write external C/C++ modules
-
+
-----------------------------------------------------
It's now suggested that you do not use the fairly complex 'pike internal' style of external modules (configure.in with AC_MODULE_INIT etc). It's also no longer required that you have a configure script to use pike -x module. Instead simply locate the includefiles using 'pike -x cflags', and convert .cmod to .c files using 'pike -x precompile'.
pike.git/CHANGES:1112:
env argument to main() c-api: Added %c and %C to get_all_args to get char * with/without NULL. (%c is an alias for %s but %C is new.) extern variables. 7.4::blaha
-
now supports micin for static symbols.
-
+
Inherit::this and Inherit::this_program now works.