PAKCS: Release Notes
Release notes for PAKCS Version 1.6.1 (September 30, 2005)
Changes to version 1.5.0:
- Possibility to suppress front-end parsing and Prolog loading messages
added (see .pakcsrc).
- Format of FlatCurry and .fcy files slightly changed w.r.t. datatype
CombType. This change requires the deletion and recompilation
of all .fcy files!
- Separate compilation introduced.
- New concept to connect primitive operations to Curry2Prolog
(see curry2prolog/external.pl).
- Curry2Prolog, library FlatCurry, and corresponding tools extended
to support recursive let's.
- PAKCS command ":eval" eliminated since the same functionality
is contained in the new browser tool.
- New browser tool added (see PAKCS command ":browse").
- New library GUI for programming graphical user interfaces added.
- Libary HTML: Passing of logical variables to event handlers supported.
Image buttons, redirections, and headed tables added.
Event handler expressions are not passed in web pages but stored
on the server side via a server process (see library HtmlServer).
- Primitive prelude.seq does no longer suspend on free variables.
- New primitives prelude.ensureNotFree and prelude.ensureSpine
for suspension on free variables added.
- Defaults for "eval" annotation changed to "flex".
- Library Ports improved: new operations waitAndConnectPort and
connectPortWait added which supports waiting until an external
port has been registered. Furthermore, there are new operations
newObject, newNamedObject, and runNamedServer to create a new port and
run a server object on it. It is recommended to use these operations
instead of openPort/openNamedPort since the latter are more
primitive and might not be supported in the future.
- New improved mode for (X)Emacs added that supports also the use
of PAKCS in an Emacs buffer (see tools/emacs/README).
- Parameters for "makecurrycgi" changed in order to simplify its use
for small web scripts.
- Tool currytest improved so that it can be also used with a GUI.
- New tool "dataToXml" to generate conversion functions
between data types and XML representations.
- New tool "addtypes" for adding type signatures to source programs.
- Library "Tk" improved so that event handlers can also be
reconfigured.
- Libraries CategorizedHtmlList, Dequeue, Dynamic added.
- Libraries TermDB and Term removed (the functionality of Term is
available in ReadShowTerm, and TermDB is no longer supported by
Sicstus-Prolog).
- Module lib/meta/CurryStringClassifier added and all libraries
for meta-programming moved to lib/meta
- prelude: (?) added.
- Module lib/Combinatorial: (!) and allSubsets omitted.
- Module lib/HTML extended.
- Support for generating standalone executables
with Sicstus-Prolog added.
This requires the definition of the Sicstus-Prolog application builder
as variable SPLD in
pakcs/bin/.pakcs_variables
and the setting
of the option "standalone" in .paksrc.
- New FlatCurry representation introduced. The corresponding intermediate
representation files are now suffixed with ".fcy" (instead of ".flc).
- FlatTools.writeFLC and FlatCurryTools.writeFLC are
omitted. Use Flat2Fcy.writeFCY instead and change file suffix into ".fcy".
- Warnings for non-adjacent function rules are provided.
- Handling of external functions in the compiler improved.
- Configuration file pakcsrc added. In order to use it, one can
copy it as ".paksrc" into the home directory and change
some values according to the local preferences.
- Module system is now fully supported.
- New module lib/IO with functions for reading and writing files.
- New module lib/Sort with functions for sorting and string comparisons.
- Module lib/Tk:
Resizing improved by using grid structures,
configuration options TkFill* added and composition options TkExpand*
removed since they are no longer necessary.
- Modules lib/SetRBT and lib/TableRBT:
Interface has changed: the ordering predicate must be supplied
only for the empty set and table and not for all insert operations.
(The old versions are still available as SetRBT0 and TableRBT0
but will be deleted in the future).
- New tools "importgraph" and "importcalls" added which are accessible
via the new PAKCS command ":analyze".
- prelude.readFile does no longer support reading of URLs
(use URL.getContentsOfUrl)
- Library "Term" renamed to "ReadShowTerm" and extended.
- New printer for FlatCurry interface files added.
- Module lib/FlatCurry(Tools) with an improved representation of
FlatCurry programs added.
- Command "runcurry" omitted since it is no longer necessary because
the saved state
is always patched (by bin/.makesavedstate) with necessary
environment information.
- New modules FlatCurry/FlatCurryTools with improved representation
of FlatCurry programs added.
- Representation of characters in compiled Prolog files changed
so that all old programs must be recompiled.
- Implementation of sharing improved so that some memory leaks
in tail recursive programs are eliminated.
- Functions AbsCurry.readCurryFile and Flat.readFlatCurryFile
changed so that the suffix (".acy" or ".flc") must be contained
in the filename for these functions.
- Front-end extended to deal with qualified identifers.
As a consequence, function composition "." must be surrounded by blanks
(which is conform with the language specification but was not necessary
up to now).
- -compact option added for producing more compact code.
Release notes for PAKCS Version 1.5.0 (May 25, 2003)
Changes to version 1.4.5:
- In rules with multiple guards all guards must be of type "Bool".
- Case expressions are now supported.
- Let bindings of variables supported in top-level of curry2prolog.
- Library Flat supports reading of FlatCurry programs with and
without implicit parsing.
- Translation of literate into standard programs integrated into
the parser (this speeds up the entire parsing process).
- Handling of external port communication changed:
- constructors are prefixed by their module name
- external ports can be also send as data
- syntax of sent messages changed to standard Curry syntax
- unsafePerformIO and trace moved from prelude into library Unsafe
Release notes for PAKCS Version 1.4.5 (November 7, 2002)
Changes to version 1.4.1:
- Long command formats (e.g., ":load" instead of ":l") added.
- Parser bugfix: parser can now read files ending with local
declarations.
- Options "-l" and "-c" added to pakcs/curry2prolog
- Compiler issues a warning in case of non-trivial overlapping rules,
i.e., rules that have different patterns in overlapping cases,
like in
f 0 = 0
f x = 1
- Debug mode moved from command (":d") to an option (":set +debug")
and debug commands changed into options.
- Header information included in generated Prolog files so that the
system can check the compiler options and can automatically
recompile and reload programs when options (printfail/debug) are
changed.
- Option ":set printfail" included in PAKCS. This option adds special
code during compilation so that failures during the reduction of
expressions are shown.
- Change in frontend: internal names have now the form
"<module_name>.<local_name>" instead of
"<module_name>_<local_name>".
The previous name caused problems when the module name contained
underscores.
- Modules HTML and HTML_Parser: all tags and attribute names are
now in lowercase letters.
- curry2prolog backend changed so that characters are no longer
equivalent to integers but are represented as a distinguished
data type at run time (i.e., characters are represented as
one-letter atoms in Prolog).
This change requires the recompilation of all compiled Curry programs!
Release notes for PAKCS Version 1.4.1 (September 17, 2002)
Changes to version 1.4:
- Defaults for flex/rigid functions changed according to new Curry report
(i.e., functions of type IO are rigid, all other flexible).
- Names of functions in modules CLPR and CLPFD changed to make
them more conform.
- Commands in interactive environment changed
(command ":set..." introduced).
- Restrictions on free variables in initial goals introduced
(must be start with an uppercase letter; this default can be relaxed
by the command ":set -free").
- Command "pakcs" is equivalent to "curry2prolog" and
no longer starts implicitly the server
Release notes for PAKCS Version 1.4 (May 23, 2002)
This version contains the following changes (apart from the usual
bug fixes) in comparison to the previous
version 1.3:
- Module system added (not yet fully implemented; see the manual
for a description of the current restrictions).
As a consequence of this addition, import declarations are
no longer written as "
--import Mod
" but
are now written in the standard syntax as "import Mod
".
- CurryTest tool added (see manual for a description).
- System modules "Combinatorial", "Integer", and "Random" added
(thanks to Sergio Antoy).
- CurryDoc documentation tool added (see manual for a description).
- Internal implementation of ports changed so that all port
communication is now done over one Unix socket which can be specified
by the environment variable PAKCS_SOCKET. This is useful for
distributed Curry programs running behind a firewall based on
simple socket number filtering.
- System module "DaVinci" added. This module supports the
visualization of graphs by the
daVinci graph drawing tool.
- System modules "SetRBT" and "TableRBT" added. These modules
contains efficient implementation of sets and tables (finite maps)
by red-black trees. SetRBT also contains a efficient generic
sort function "sortRBT" based on red-black trees.
- System module "TermDB" for storing data terms in an
external persistent database added.
- System module "Directory" for accessing the directory structure added.
- Prelude extended with some useful functions (catchFail, unsafePerformIO,
trace,...).
- XML support for FlatCurry programs added, i.e., Flat.readFlatCurry
and curry2prolog can now read programs in XML format
(see here
for a more detailed description of this format)
so that curry2prolog could also be used as a back end for
other functional logic languages that can be translated into
the FlatCurry format.
In addition, the pakcs/curry2prolog environment offers a new
command ":xml" for translating Curry programs into this XML format.
- Interface generator added:
The pakcs/curry2prolog environment offers a new command ":if"
for showing the interface of a Curry module, i.e., the data types
and the types of all top-level functions defined in this module.
Since this command can be also applied to system libraries,
it is useful for getting a quick overview of the functionality
offered by a library.
- Partial evaluator integrated:
The pakcs/curry2prolog environment offers a new command ":peval"
for the partial evaluation of Curry programs (compare manual).
- Structure of FlatCurry programs modified (system module Flat).
- Reading of programs with Flat.readFlatCurry and curry2prolog
modified so that it is now possible to read .flc files where
there is no corresponding source file.
- Structure of .flc changed so that they are compatible with the
definition of FlatCurry. Due to this change, it is necessary
to recompile all existing Curry programs (i.e., by "cleancurry"
and compiling again).
Release notes for PAKCS Version 1.3 (December 15, 2000)
This version contains the following changes (apart from the usual
bug fixes) in comparison to the previous
version 1.2:
- The definition of ports (datatype Port and its
associated operations for distributed programming)
has been moved from the prelude into the new system module
Ports.lcurry. Thus, all applications using ports
must now have the import declaration "--import Ports".
- The functionality of ports has been extended: ports can now be named
by arbitrary symbolic names (instead of socket numbers as in the previous
version). The name resolution is done by a specific
Curry port name server (which is actually implemented in Curry).
- The Curry2Prolog compiler is based on a new intermediate
language (*.flc files instead of *.flat files) which is closer
to the definition of FlatCurry in the corresponding system module.
The precise syntax of the new intermediate language is described
in the PAKCS manual.
- The system library (a short description of all modules can be
found here) has been extended with new modules
for parsing HTML documents and tools for supporting meta-programming
based on FlatCurry.
Back to Homepage of PAKCS
Michael Hanus