See the installation instructions if you are not familiar with the standard installation procedure of tarballs or RPMs.
Source tar.gz
Source RPM
Redhat Linux RPM
Redhat 8.0:
Redhat 9.0:
SuSE Linux RPM
SuSE 8.2:
StrategoXT is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
Important: StrategoXT 0.9.5 requires more recent versions of the SDF implementation in PGEN (2.0) and SGLR. The sdf2-bundle 2.0.1 provides all required SDF packages and is available from the release page of StrategoXT 0.9.5.
Packages that require StrategoXT usually apply the USE_XT_PACKAGES
macro of autoxt
to add --with-x
configuration flags to the
configure script. This macro now also provides a --with-strategoxt
flag, which is the preferred alternative to the --with-stratego-xt
flag. The additional flag corresponds to the package name of
StrategoXT, which is strategoxt
.
We have finally adopted an issue tracking system for StrategoXT and related projects. Arthur van Dam suggested to use JIRA, which is free (not Free) for open-source projects. Fortunately he has taken care of evaluating and installing it as well. We have just started to use the system, but it looks very promising. The user-interface is very attractive compared to Bugzilla and JIRA provides many useful overviews for developers, without having to struggle with a generic query interface.
Our JIRA installation is public and everyone can submit issues. Please report issues directly to the JIRA issue tracking system from now on. New issues reported in JIRA will be sent to the stratego-bugs mailing list for notification. However, the issue in JIRA is the preferred place too for comments. Of course you are welcome to discuss issues at the stratego-dev mailing list first.
(Arthur van Dam)
Documentation for users of StrategoXT has improved in several areas.
Rob Vermaas, who is now a scientific programmer at our institute, is working on updating the completely out-of-date README files in the distribution. Many sub-packages have already been updated, but some work remains to be done at this point.
(Rob Vermaas)
Feedback by new users inspired us to revive the Tools web and start working on a comprehensive reference for the tools in StrategoXT. The reference is still far from complete, but it is a start. Tool documentation in the tool reference should provide an introduction, explanation of the command-line arguments and usage examples. The tool reference is a Wiki, so you are all welcome to improve and extend the available documentation. The tools of GPP are already documented pretty thorough.
(Martin Bravenboer and Merijn de Jonge)
We have started to develop a central website for all information related to SDF at the program-transformation Wiki. In this case as well we were inspired by new users having problems to find documentation and pointers to relevant information. The new website is available at
(Martin Bravenboer)
The name of a module declared in a file did not really matter in the past. This was rather frustrating in the development of xDoc. From StrategoXT 0.9.5 the compiler outputs a warning message if the declared module name does not correspond with the name of the file.
StrategoXT 0.9.5 fixes several bugs and shortcomings in the
user-interface of the Stratego compiler and tools of stratego-front
such as parse-stratego
and pp-stratego
. From this release
pp-stratego
for example accepts an -I
flag, which can be used to
provide a search path for parse tables used for concrete object
syntax.
(Rob Vermaas)
In StrategoXT 0.9.4 compiling programs that use term arguments resulted in loads of warnings from the C compiler. These warnings are caused by the type declarations of the term argument, which are not declared correctly in the C code produced by the Stratego compiler. This problem has been fixed in this release. The declared types of the argument are now correct for term arguments.
(Martin Bravenboer)
The Stratego Standard Library (SSL) in 0.9.5 features a new hashtable
implementation. Hashtables used to be handled by name in the Stratego
runtime, SSL, and custom Stratego code. It is now possible to pass
hashtables around directly, not by a name. This feature is comparable
to the Stratego Stream
representation of native streams. Hashtables
that are created in this way will not affect other parts of the
program, unless the hashtable is passed to the code. The old table
mechanism is of course still available and is still useful to
implicitly pass information around. The new hashtable strategies
include: new-hashtable(|initial_size, max_load)
,
hashtable-put(|key, value)
, hashtable-get(|key)
. We are
considering to lift hashtables from the API to the language level by
providing syntax for constructing and accessing hashtables. The old
hashtable strategies (table-get
, table-put
etc.) will be expressed
in terms of the new strategies in the next release.
(Martin Bravenboer)
A common mistake in the SUnit unit-testing framework is forgetting a
!
before an input or output term. SUnit now provides a variant of
the unit-testing strategies that accept term arguments for the
description, input, and expected output of a test e.g.
apply-test(foo | "foo test", input, output)
(Rob Vermaas)
The SSL module term-io
in the SSL features new strategies for writing
ATerms to strings (write-to-string
) and vice versa
(read-from-string
). These strategies have been added to accept ATerm
values as command-line arguments, but they should be useful in
general.
(Martin Bravenboer)
The SSL module list-set provides a general subset checker (set-eq
,
subset
, subseteq
). All these strategies are parameterizable with a
user-defined compare/eq strategy.
(Arthur van Dam)
The pp-table-diff utility from now on fails if the output should not
be used as a patch (--patch
), but the existing pp-table is not
complete. This is useful for signaling incompleteness of the
pretty-print table during a build, especially in the buildfarm.
More information:
The pretty-print table generator ppgen
has been extended to handle a
wider range of SDF constructs.
(Merijn de Jonge)
SDF related tools in StrategoXT 0.9.4 are using a rather old version of SDF, namely 2.1. There are not a lot of differences between this SDF version and the most recent one used in PGEN 2.0, but since SDF will undergo more heavy changes in the near future, it is important to be up-to-date. We are working on updating our SDF tools to support the most recent version of SDF as found in PGEN 2.0. As a first step in this direction the sdf-front package now includes both versions of SDF. In the next release we will no longer distribute an SDF syntax definition, but directly work on the definition provided in the SDF distribution.
Unfortunately some tools are still using the old syntax definition.
For example pack-sdf
uses the new one, but sdf-to-sig
still uses the old one. This situation will be solved in the next
release, where SDF 2.1 will not be used anymore, except for its
syntax, signatures and pretty-printer.
ParseUnit, a tool for unit-testing syntax definitions, has been extended with a concise, concrete syntax for testsuites. The new testsuite syntax also allows partial specification of expected outcomes by using wildcards. The concrete syntax for ParseUnit testsuites does not require escaping of special characters in the test input. This makes the inputs much more readable, because special characters are in practice not special in parse testsuites.
More information:
(Martin Bravenboer)
Syntax definitions of concrete object syntax embeddings require
renamings of the sorts of the imported syntax definitions. Defining
these renaming modules by hand is annoying and error-prone. The
sdf-tools package of StrategoXT now features gen-renamed-sdf-module
a tool that automates this task. It takes an SDF syntax definition and
produces an SDF module that renames the sorts in some user-definable
way, by prefixing it with the language name for example.
More information:
(Martin Bravenboer)
The release page contains the source distributions, binary RPMs, and detailed instructions on how to install the distributions:
Not all bugs and known problems for StrategoXT have been solved in this release, otherwise this would release 1.0 ;). See our issue tracking systems for reports about (open) bugs:
For an overview of features planned for future releases:
Please report any problems with installation or bugs in the implementation to our issue tracking system. Please check the existing issues to see if a report about the problem was already submitted.
Developments, beta tests, and bug fixes were carried out by