-
Notifications
You must be signed in to change notification settings - Fork 13
/
NEWS
2715 lines (1938 loc) · 97.4 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
------------------------------------------------------------------------------
__ __ __ __ _ __ __ __ __ __ _ _ _ _
|__ | |__| /_\ | |__ | _ | | / \/ |
__| | | \ / \ | |__ |__| |__| / _/\_ |
------------------------------------------------------------------------------
STRATEGO : Strategies for Program Transformation
XT : A Bundle of Transformation Tools
------------------------------------------------------------------------------
News about Stratego releases
------------------------------------------------------------------------------
See news-archive/ directory for news about releases after 0.9.3
------------------------------------------------------------------------------
StrategoXT 0.9.3 -- released September 1, 2003
This release is dedicated to refactoring and improving the Stratego
compiler.
The name of the Stratego compiler was changed to strc. In this release
sc is still available as a redirection to strc, but will no longer be
available in the next release. The Stratego interpreter has been
renamed to stri. These changes where necessary because of name
clashes with other programs on some platforms. Packages based on
autoxt do not need to make any changes; the renaming is reflected in
Makefile.xt.
Large parts of the Stratego Standard Library have been adapted to make
use of the xDoc comment convention such that better documentation can
be generated. Documentation for the SSL generated with xDoc will be
distributed separately such that improvements in xDoc can be reflected
in the generated documentation. An online version of the documentation
is available via the stratego website.
The syntax of primitive calls has been extended to allow passing
strategies to primitives. Thus, in the call prim("foo", s1, s2 | t1,
t2), primitive foo is called with strategy arguments s1 and s2 and
term arguments t1 and t2. Similarly, terms can be passed to strategy
operators using the same syntax. Thus, bar(s1, s2 | t1, t2) passes
strategies s1 and s2 and terms t1 and t2 to strategy bar. Note the
difference between foobar(!t), which passes a strategy that will build
t, and foobar(|t), which will pass term t. The first can be considered
as call be name, the second as call by value. The distinction becomes
clear when considering side-effects; foobar(new), will generate a new
unique string on each invocation of its argument strategy, while
foobar(|<new>), will copy the same unique string to each use of its
term argument.
Related to this extension is a change in the calling convention of
generated C code. The current term is now the last argument of
generated C functions, rather than the first. This has no effect on
most Stratego programs, except for strategies with higher-order
arguments which explicitly declare the type of those arguments.
Definitions of the form
foo(f : a * (b -> c) -> d) = ... f(s) ...
should be changed into
foo(f : (b -> c) * a -> d) = ... f(s) ...
Thus, the argument corresponding to the current term becomes the last
argument of f. Currently the compiler automatically detects and
repairs this in the internal representation, and emits a warning
indicating the definitions that are effected; no programs should break
because of the change. It is advised, however, to make the change in
the source.
The Stratego Compiler has been refactored to make use of the official
signature from stratego-front. The Stratego Optimizer has been
extended with a bunch of new optimizations, and now includes the
following optimizations:
* Stratego simplifier
* Build match fusion
* Innermost fusion
* Pattern match compilation
* Worker wrapper splitting
* Strategy inlining
* Dead definition elimination
* Constant and copy propagation
* Bound unbound variable analysis
* Dead variable elimination
* Avoid run time checks on variables
* Lift definitions to top level
Although, a few preliminary tests suggest that the optimizations
reduce code size and increase performance, more thorough benchmarking
is needed to establish the precise effects of the optimizations. Also
further tuning, particularly of the inliner is needed to get better
results. Application of all optimizations may slow down
compilation. Therefore, strc provides several optimization levels. No
optimizations are performed at -O 0 increasing to all optimizations at
-O 6. If compile time is more important than run-time of the generated
code, then -O 1 is the prefferred setting. -O 2 corresponds to the
optimization level of 0.9.2. By default all optimizations are turned
on.
DOWNLOAD AND INSTALLATION
The release page contains the source distributions, binary RPMs, and
detailed instructions on how to install the distributions:
* http://www.stratego-language.org/Stratego/StrategoRelease093
BUGS / KNOWN PROBLEMS
All the bugs and known problems for StrategXT distributions have
been solved in this release.
For a more detailed overview of problems and missing features please
visit:
* ReleasePlan: http://www.stratego-language.org/Stratego/ReleasePlan
* Todo: http://www.stratego-language.org/Stratego/ToDo
Please report any problems with installation or bugs in the
implementation to the stratego-bugs@cs.uu.nl mailing list. Please
check the archive of the list to see if a report about the problem
was already submitted.
CONTRIBUTIONS
* Beta tests carried out by:
Martin Bravenboer, Rob Vermaaas, Arthur van Dam
* Major developments were carried out by:
Eelco Visser, Martin Bravenboer, Rob Vermaas
-----------------------------------------------------------------------
StrategoXT 0.9.2 -- released 2003-07-04
This is a logistics release. The main purpose of the work done for
this release is to create more and better distributions.
The buildfarm at the UU now creates all the distributions: source
tarballs, source rpms and binary rpms. This will make it much more
easy for the maintainers of StrategoXT to create new releases.
Hopefully this will lead to more frequent releases, which is a good
thing.
From now on we will support binary RPMs in every release. Currently
the buildfarm only builds RPMs for SuSE 8.2 and Redhat 8.0, but the
buildfarm will be extended with other versions of Redhat and SuSE in
the near future.
We've finally solved some distribution problems that have been around
for quite some time. StrategoXT and the SDF2 bundle now support a
separate 'make' and 'make install' by a separation of build time,
install time and runtime dependencies. The separate make/make install
was more or less required for creating RPMs, but for user installation
it is very useful as well. Thanks to a suggestion submitted by
Valentin David, StrategoXT and the SDF2 bundle can now be configured
without a prefix, which defaults to the autoconf default (usually
/usr/local).
Rob Vermaas refactored the dot-tools package to the standard structure
of a package for a concrete syntax (syn, sig, pp). The graph-tools
packages now uses the dot-tools package instead of its own (copied)
signatures for the dot language.
Rob Vermaas has also compiled the complete StrategoXT distribution on
Cygwin. He encountered some small problems, which he has all been able
to solve. Unfortunately the performance showed to be disappointing.
However, StrategoXT should now support Cygwin, but the support is not
verified in the buildfarm. From one of the next releases we will start
providing binary distributions for Microsoft Windows users.
DOWNLOAD AND INSTALLATION
The release page contains the source distributions, binary RPMs, and
detailed instructions on how to install the distributions:
* http://www.stratego-language.org/Stratego/StrategoRelease092
SUMMARY OF CHANGES
* StrategoXT (Martin Bravenboer)
- configuration without prefix is now possible.
- several packages are now first installed locally
to allow a separate make/make install:
- xtc: for install time
- srts: for build time
- autoxt for bootstrap time
* asfix-tools (Martin Bravenboer)
- asource is no longer installed. It used to be a symbolic
link to asfix-yield.
* aterm-tools (Merijn de Jonge)
- fixed treeviz: Tool was compiled with incorrect main
strategy.
* dot-tools (Rob Vermaas)
- changed structure of package to the common structure
of -tools/-front packages.
* graph-tools (Rob Vermaas)
- now using dot-tools
* sc (Merijn de Jonge)
- stratego-warnings: stratego analysis tool
Currently it checks for usage of obsolete strategies and for
missing build operators in calls to the "debug" strategy.
- sc: -W|--warning can be used to apply the stratego-warnings tool.
* ssl (Martin Bravenboer)
- --about and --version are now
standard switches in parse-options.
- posix-signal.str: prefixed signal overlays with
SIG. Reported by Karina.
* stratego-tools (Merijn de Jonge)
- conc-modules has been fixed to deal with .str and .rtree files,
and now uses parse-stratego rather than parse-mod.
BUGS / KNOWN PROBLEMS
All the bugs and known problems for StrategXT distributions have
been solved in this release.
For a more detailed overview of problems and missing features please
visit:
* ReleasePlan: http://www.stratego-language.org/Stratego/ReleasePlan
* Todo: http://www.stratego-language.org/Stratego/ToDo
Please report any problems with installation or bugs in the
implementation to the stratego-bugs@cs.uu.nl mailing list. Please
check the archive of the list to see if a report about the problem
was already submitted.
CONTRIBUTIONS
* Bug reports and suggestions for improvements where submitted by:
Jozer Kruger, Valentin David.
* The major developments were carried out by:
Martin Bravenboer, Rob Vermaas, Armijn Hemel, Merijn de Jonge.
------------------------------------------------------------------------------
StrategoXT 0.9.1 -- released June 04, 2003
This is a bugfix and cleanup release. Many packages were thoroughly
refactored, mainly by Martin Bravenboer. StrategoXT is now being
tested on a daily basis [4] in the buildfarm of the st-lab at Utrecht
University.
Also we spent some time on improving the Stratego website. A fresh
look (less Wiki, more content), an improved structure and improved
content should make the Stratego website more accessible, especially
to new users. Eelco Visser has created a detailed tutorial on how to
set up a Stratego package [1]. During the month May the Stratego
website had the largest number of edits ever!
Eelco Dolstra has been experimenting with StrategoXT on Mac OS X
[2]. With a patched GCC there seem to be no major problems left,
except for performance. Performance is unacceptable since the current
choice point implementation does not behave very well on the Mac
architecture. Something to think about for future releases.
Martin Bravenboer has worked on porting StrategoXT to Microsoft
Windows with Cygwin [3]. For this platform there also does not seem to
be any serious problems. For now there is a binary distribution of
some tools of sdf2 + implode-asfix, in the near future we hope to
offer full binary distributions of the sdf2 bundle and StrategoXT for
Microsoft Windows.
[1] http://www.stratego-language.org/Stratego/HowToSetUpAStrategoPackage
[2] http://www.stratego-language.org/Stratego/MacOSXSupport
[3] http://www.stratego-language.org/Stratego/MicrosoftWindowsSupport
[4] http://www.stratego-language.org/Stratego/DailyBuild
DOWNLOAD AND INSTALLATION
The download page contains the source distribution:
* http://www.stratego-language.org/Stratego/StrategoRelease091
The installation instructions page can be consulted for detailed
information on how to install StrategoXT and its dependencies:
* http://www.stratego-language.org/Stratego/InstallationInstructions
SUMMARY OF CHANGES
* StrategoXT
- StrategoXT repository moved from CVS to Subversion
- StrategoXT is again part of a daily build system
* aterm-tools (Martin Bravenboer)
- pp-aterm: new tool to ugly-print an ATerm more pretty. Useful for
debugging.
* boxenv (Martin Bravenboer)
- install-time dependency on LaTeX removed
* sdf-front (Martin Bravenboer)
- new package the standard -front package structure: syntax definition,
pretty printing and signatures for SDF 2.1
* c-tools (Stefaan Himpe)
- various improvements to the C syntax definitions reported by Stefaan
Himpe.
* gpp (Merijn de Jonge)
- tohtml tool has returned
- many fixes to asfix2abox, abox2latex, abox2text
- abox-ext moved from SSL to GPP. Consider to use StrategoBox.
* graph-tools (Merijn de Jonge)
- Sync'ed dot grammar/signature with dot-tools package
- graphxml2dot now produces AST based on dot grammar with grammar
identifier 'dot-1'.
* srts (Martin Bravenboer)
- many new POSIX IO and process primitives. The better IO facilities will
be completed and documented in 0.9.3
- cgi and connect (socket) primitives removed. cgi is part of
stratego-net, connect should be improved.
* ssl (Martin Bravenboer, Rob Vermaas)
- list-sort.str: quick sort by Rob Vermaas
- many new IO and process related strategies: read-text-file,
read-text-from-stream, fprint, fputc, dirname, access, fgetc,
write-to-stream in baf/taf/text, fopen, strlen, strcat, stdin-stream,
stdout-stream, open-stream, fileno, P_tmpdir and temp-dir, mkstemp, kill
- fork-and-wait: show warning if child process terminated because of a
signal (useful for segmentation faults)
- moved the collect strategies to a new module "collect".
- debug-depth for debugging with big ATerms.
- abox.str and abox-ext.str moved to GPP.
- ugly-print.str: moved to aterm-tools
- connect modules (client-test, communication, connect-test, connect,
server-test) removed.
- unit test modules are no longer installed
* stratego-front (Eelco Visser, Martin Bravenboer, Rob Vermaas)
- characters can also be used as congruences (of course).
- unescaped newlines in String literals are now allowed
- improved pretty-printing of Stratego (reported by Rob Vermaas as a
result of his work on StrategoDoc)
* stratego-util
- package re-added to distribution. Contains a Stratego mode for emacs
BUGS / KNOWN PROBLEMS
* The build of the StrategoXT package invokes 'make install' since the
installation of the libraries in srts are needed for the build of the
rest of the package. This makes building of debian packages
problematic. This problem will be addressed in future releases.
* When bootstrapping the package from Subversion it is necessary to install the
autoxt package before calling the main 'bootstrap' script since that
calls the autoxt tool.
CONTRIBUTIONS
* Bug reports and suggestions for improvements where submitted by:
Rob Vermaas, Jonne van Wijngaarden, Jozer Kruger, Armijn Hemel,
Stefaan Himpe
* The major developments were carried out by
Eelco Visser, Martin Bravenboer, Eelco Dolstra, Merijn de Jonge
------------------------------------------------------------------------------
StrategoXT 0.9 -- released January 26, 2003
This release completely integrates concrete object syntax into
Stratego. The extension of Stratego with concrete syntax implies a
dependence of the compiler on several of the XT packages. Therefore,
the new StrategoXT distribution integrates Stratego and XT. The parser
for modules is now only based on SDF/SGLR; the LEX/YACC grammar has
been retired. The XTC transformation tool composition framework
provides a setting for easily creating transformation systems composed
from transformation components. The AutoXT package provides support
for autoconf/make packages using the StrategoXT toolset. This has
greatly simplified the configuration of the StrategoXT
packages. Several new tools and libraries have been added, and
existing packages have been refactored to use AutoXT and XTC. The
distribution is available in binary form. Currently only in the form
of RedHat 8.0 RPMs.
DOWNLOAD AND INSTALLATION
The download page contains the source distribution and instructions
for installation
* http://www.stratego-language.org/Stratego/StrategoRelease09
SUMMARY OF CHANGES
* StrategoXT
- XT CVS repository moved from CWI to UU
- Merged XT and Stratego repositories
- Single distribution for StrategoXT
- Separate packages will also be available
* AutoXT
- Autoconf/make support for XT packages
- Building the distribution uses only the C compiler
* SRTS
- Complete run-time system for Stratego programs, including
library primitives. After C generation, this package is
all that is needed to compile a Stratego program.
* XTC
- Transformation tool composition
- Sdf-import -- XTC registration of sdf tools
* GPP
- Refactoring of the package using XTC
- A boxes supported by abox2text
* STRATEGO-TOOLS
- Format checker generation
* STRATEGO-FRONT
- Support for ToBuild and FromApp to implement ASP style quotation
* C-TOOLS
- Support for C generation (and transformation)
- Refactoring of the cgen package which is now obsolete
* DOT-TOOLS
- Support for generation of dot files
* SC
- Bug in dynamic rules with overlapping left-hand sides fixed
- LEX/YACC grammar retired; the compiler now depends on SDF
- Stricter bound variables checking
* SSL
- Parenthesize is a generic strategy for placing parentheses
based on priority information. flatten-list completely flattens a list.
- For-each-pair(s) produces the list of pairs <s>(x,y) for each pair
of x from xs and y from ys.
- Execution of external processes (call) now defined in terms of primitives
fork, wait and such
* STRATEGO-TOOLS
- Format checker generation
* SDF-TOOLS
- Parse-unit is a tool for unit testing SDF definitions.
* SDF-IMPORT
- The sdf-import package registers the SDF tools sdf2table and
sglr in an XTC repository to make them available for XTC programs.
* RPM
- construction of binary distributions with rpm
* Many bug fixes and refactorings
BUGS / KNOWN PROBLEMS
* The build of the StrategoXT package invokes 'make install' since the
installation of the libraries in srts are needed for the build of the
rest of the package. This makes building of debian packages
problematic. This problem will be addressed in future releases.
* When bootstrapping the package from CVS it is necessary to install the
autoxt package before calling the main 'bootstrap' script since that
calls the autoxt tool.
DETAILS
Details about the changes since 0.8.1 can be found in the descriptions
of the 0.9beta releases in the NEWS file in the distribution. Further
documentation can be found on the website.
CONTRIBUTIONS
* The StrategoXT-0.9 release involved a major refactoring of the
stratego and XT packages and the introduction of several new
packages. In particular, the introduction of XTC and AutoXT provide
a significant improvement of the composition of tools and the
configuration of packages. The production of the final release
involved 10 beta releases.
* Bug reports and suggestions for improvements where submitted by:
Karina Olmos, Martin Bravenboer, Jonne van Wijngaarden, Lennart
Swart, Alan van Dam, Jozef Kruger, Armijn Hemel, Eelco Dolstra,
Julien LEMOINE, ChoJin, Akim Demaille
* The major developments were carried out by
Eelco Visser, Martin Bravenboer
------------------------------------------------------------------------------
Version 0.9beta10 - released January 12, 2003
DOWNLOAD AND INSTALLATION
The download page contains the source distribution and instructions
for installation
* http://www.stratego-language.org/Stratego/StrategoRelease09
CHANGES with respect to 0.9beta9
* SSL : parenthesize is a generic strategy for placing parentheses
based on priority information. flatten-list completely flattens a list.
* SRTS : intall header files for SSL primitives in
PREFIX/include/srts instead of PREFIX/include/ssl to avoid conflicts
with OpenSSL
* XTC : 'xtc call prog' to call program prog relative to XTC repository,
and 'xtc get file' to find location of file in XTC repository.
* SC : started using concrete C syntax in s2c
* AUTOXT/Makefile.xt : Register repository declared with XTC_IMPORT in
a makefile
* Use CFLAGS="-D__NO_CTYPE" in RPM build to allow portability to
suse (hopefully)
DOCUMENTATION
* Reference Card
See http://www.stratego-language.org/Stratego/ReferenceCard for a
data-flow diagram explaining the relation between many of the StrategoXT
tools
------------------------------------------------------------------------------
Version 0.9beta9 - released January 5, 2003
DOWNLOAD AND INSTALLATION
The download page contains the source distribution and instructions
for installation
* http://www.stratego-language.org/Stratego/StrategoRelease09
SUMMARY OF CHANGES with respect to 0.9beta8
* box-tools: a refactoring of gpp using xtc and improved Box support
* stratego-tools: format checker generation
* ssl: for-each-pair
* sc: bugfixes
* xtc: recursive imports
* binary distribution with RPM (StrategoXT.spec)
DETAILS
* BOX-TOOLS (formerly GPP)
Martin Bravenboer refactored the GPP package to use XTC
and improved the functionality
* All tools are implemented in Stratego, shell-scripts
are replaced by XTC tools.
* important changes that might cause problems with
existing software:
- verbose options are now all the standard Stratego
options: --verbose int and -S. The -v argument has
another meaning: the version of the tool will
be shown.
- Makefile to pretty print terms or parse pretty print
tables is gone. You should use the new tools.
- tohtml is not yet available as part of box-tools
* gen-css-boxstyle: generate css for abox2html.
Uses standard -o argument to specify target.
abox2html -c just forwards to gen-css-boxstyle and
also listens to the -o argument.
* abox2text listens to width argument
* abox2text supports HV boxes
* abox2text now supports the HV and A/R boxes. The current
implementation does not support R cells that will occupy
more than one line and must be aligned center or right.
Left alignment should work. Single line cells works for
all alginments.
* new tools: pp-box, parse-box, parse-pp-table, pp-pp-table.
* ast2abox accepts .pp.af pretty print tables as arguments.
If you pass a .pp argument the tool will look for an
existing .af version of this table and use this one if the
.pp version is not newer. In all other cases the .pp table
will be parsed to _temporary_ file.
* grammars and pretty print tables of box and pp-tables are
separated.
* abox-format doesn't complain about AOPTIONS.
* STRATEGO-TOOLS
format checker generation
* SSL
- for-each-pair(s) produces the list of pairs <s>(x,y) for each pair
of x from xs and y from ys.
* SC
- bugfix in compilation of dynamic rules
- sc: compilation without -o argument does the right thing again
- pack-stratego: module searching faithful to path
* RPM
RPMs can be built using the 'make rpm' target. This requires
the installation of rpms for aterm, sdf2, srts and xtc prior to
building the rpm. RPMs for srts and xtc can be produced using
the rpm targets in the srts/ and xtc/ directories.
In order to install the StrategoXT rpm the srts and xtc rpms
should be erased first.
------------------------------------------------------------------------------
Version 0.9beta8 - released January 2, 2003
DOWNLOAD AND INSTALLATION
The download page contains the source distribution and instructions
for installation
* http://www.stratego-language.org/Stratego/StrategoRelease09
SUMMARY OF CHANGES with respect to 0.9beta7
* Bugfix: dynamic rules with overlapping left-hand sides
* XTC -- polishing
* More tools based on XTC -- parse-stratego, sc, pack-stratego
* C-Tools -- support for C generation (and transformation)
* AutoXT -- support for recursive
* Bug fixes and refactorings
DETAILS
* Dynamic rules with overlapping left-hand sides
The desugaring of dynamic rules has been changed to repair the
problems arising when two dynamic rules with the same name have
different left-hand sides, but the same number of context variables
in the left-hand side. The key that is used for a dynamic rule is
now the entire left-hand side, modulo non-context variables. The
new implementation will also make it easier to define (or even
generate) operations for saving, restoring, and intersecting sets
of dynamic rules, as used in data-flow optimizations.
* XTC
The XTC support library is further polished. The xtc-iowrap(s) strategy
is the XTC variant of the traditional iowrap. It takes care of option
parsing, setting up the input file, and writing to the output file. The
s strategy is typically a chain of xtc transformations. But it can also
be used as replacement for iowrap, by wrapping xtc-io-transform(..) around
a term transformation.
* C-Tools
The c-tools package is a refactoring of the cgen package for C code
generation (by Martin Bravenboer). The package will replace cgen
in future releases; it is not yet used within StrategoXT.
* Using XTC
The implementation of many composite tools is greatly simplified by
using XTC. Configuration files are now obsolete, at least the import
mechanism for configuration files. Any resources a component needs
should be obtained through an XTC repository.
* SDF Tools
Parse-unit is a tool for unit testing SDF definitions. Contribution
by Martin Bravenboer.
* SSL / exec
- fork-and-wait fails if the child returns with a non-zero exit
status.
- call definined in terms of fork and execvp in Stratego; previous
implementation was complex C implementation.
- call(init-child) is like call, but applies init-child in the
child process before the execvp
- redirect-stdout-to-file and redirect-stdin-from-file do as their
name suggest. They can be used with call(...) to redirect input
and/or output of the child process. Using this files can be copied
using the cat program as follows:
cat :
(filein, fileout) -> fileout
where <call(<redirect-stdin-from-file> filein;
<redirect-stdout-to-file> fileout)> ("cat", [])
Typical use of all this is to coerce programs that only read or
write using stdio into using file io.
* AutoXT
Added support for recursive bootclean target to Makefile.xt. To use
it Makefile.xt should be included in every Makefile.am in the
directory structure. The subdirectories that should be bootcleaned
should be declared in BOOTCLEAN_SUBDIRS variable. Leaf directories
that don't use Makefile.xt should declare the target bootclean.
* Bug fixes and refactorings
While fixing bugs and adding functionality, the compiler components
are gradually refactored to use more modern Stratego techniques.
------------------------------------------------------------------------------
Version 0.9beta7 - released December 13, 2002
DOWNLOAD AND INSTALLATION
The download page contains the source distribution and instructions
for installation
* http://www.stratego-language.org/Stratego/StrategoRelease09
SUMMARY OF CHANGES
* AutoXT -- autoconf/make support for XT packages
* XTC -- Transformation tool composition
* Sdf-import -- XTC registration of sdf tools
* Dot-tools -- syntax of the dot language
* LEX/YACC grammar retired
* All StrategoXT packages use autoxt
* Building the distribution uses only the C compiler
DETAILS
* AutoXT
The autoxt package provides autoconf and automake support for packages
constructed with the XT toolset. The package provides the autoxt tool
which should be run as part of the autoconf/make bootstrapping process,
prior to running autoconf. A typical bootstrap script looks like:
------------------------------------------------ bootstrap
#! /bin/sh
autoxt
aclocal -I .
autoconf
automake -a
------------------------------------------------
Autoxt installs a set of m4 macros autoxt.m4 with support for
package configuration switches. By just including the macro call
USE_XT_PACKAGES a configure.in file can be parameterized with
switches for all the StrategoXT packages:
------------------------------------------------ configure.in
AC_INIT(syn/Dot.sdf)
AM_INIT_AUTOMAKE(dot-tools,0.9beta7)
USE_XT_PACKAGES
AC_PROG_CC
AC_PROG_INSTALL
AC_OUTPUT(Makefile syn/Makefile)
------------------------------------------------
Furthermore, autoxt installs Makefile.xt, a collection of automake
rules for compiling Stratego programs and applying other XT tools,
such as signature generation. Using this makefile, a makefile
reduces to a declaration of programs to be compiled. The makefile
automatically takes care of distributing the generated C code. The
specification will only be compiled when it is newer than the C
code. This means that packages using autoxt can be built using only
the Stratego Run-Time System (srts).
------------------------------------------------ Makefile.am
include $(top_srcdir)/Makefile.xt
include $(wildcard *.dep)
bin_PROGRAMS = xtc
pkgdata_DATA = xtc-lib.rtree xtc-rep.rtree \
xtc-proc.rtree xtc-register.rtree
SCFLAGS = --main $* $(XTCFLAGS)
EXTRA_DIST = $(pkgdata_DATA) $(wildcard *.str) \
$(wildcard *.meta)
CLEANFILES = $(wildcard *.dep)
BOOTCLEANFILES = xtc.c
xtc.o : xtc-conf.h
------------------------------------------------
* XTC -- Transformation Tool Composition
StrategoXT encourages a development model in which stand-alone
components are developed for separate aspects of program
transformation, instead of implementing integrated monolithic
transformation systems. A typical component reads a program
represented by means of an ATerm, transforms it, and writes out a
transformed ATerm. The advantage of this approach is that the
components can be reused in different transformation systems. The
composition mechanisms used to date include makefiles, shell
scripts, and Stratego programs. The problem with the approach is
keeping track of all available components and their installation
locations. As a consequence of making components available in small
packages (to increase reusability), compositions need to be
parameterized with a large number of installation paths. The XTC
component model and API supports the easy composition of XT
components using a repository to keep track of available components.
XTC implements the XT component model and provides support for creating
compositions of XT components. The xtc tool is used to register components
in an XTC repository. For example the command:
> xtc -r /usr/share/StrategoXT/XTC register -t sglr -l /bin -V 3.8
registers version 3.8 of sglr which is installed in /bin in the XTC
repository located in /usr/share/StrategoXT. The generic Makefile.xt
provided by AutoXT automatically registers all installed tools with the
package repository.
XTC repositories can be used to find the installation location of a tool
without needing to know all the installation paths. For example, the
following query can be used to find out where sglr is installed:
> xtc -r /usr/share/StrategoXT/XTC query -t sglr
sglr (3.8) : /bin/sglr
An existing repository can be inherited by importing it
> xtc -r /home/user/share/tiger/XTC import /usr/share/StrategoXT/XTC
In addition to the command-line tool for registration and querying of
repositories, XTC also provides a Stratego API for approaching XTC
repositories. All that is required to use this API is (1) importing
the xtc-lib module and (2) including an xtc-conf.h header file in
the generated C code. The details are supported by Makefile.xt.
To use XTC add the following to your Makefile.am:
------------------------------------------------
bin_PROGRAMS = term-to-dot
SCFLAGS = --main $* $(XTCFLAGS)
term-to-dot.o : xtc-conf.h
------------------------------------------------
The depedency of term-to-dot.o on xtc-conf.h is needed to ensure
that it is generated. The xtc-conf.h header file contains the name
of the XTC repository used by the package.
The XTC API supports easy calling of external Stratego components
and mixing them with internally defined transformations. Here is an
example:
------------------------------------------------
module term-to-dot
imports xtc-lib lib term-to-adot
strategies
term-to-dot =
parse-options(term-to-adot-options <+ io-options)
; xtc-temp-files(
(!FILE(<get-config> "-i") <+ !stdin)
; read-from
; to-adot
; write-to
; xtc-transform(!"ast2abox", !["-p", <xtc-find> "Dot-pretty.pp"])
; xtc-transform(!"abox2text")
; rename-to(<get-config> "-o"))
; <exit> 0
------------------------------------------------
Note that no code is needed to load the repository. Whenever a query is
done (e.g., by xtc-transform to find "ast2abox"), and no repository is
loaded the XTC repository is loaded.
AutoXT provides support for XTC by means of a package switch --with-repository
that can be used to indicate the repository in which to register tools.
The default is $prefix/share/$PACKAGE/XTC, i.e., the XTC file in the package
data directory. In the StrategoXT distribution the sub-packages inherit the
repository location from the super-package, i.e., all StrategoXT tools are
registered in $prefix/share/StrategoXT/XTC.
Makefile.xt implements an automake install hook to install all programs,
scripts, and data. Thus it is not necessary to include make rules for
this purpose. The Makefile example above is sufficient to register
tools and data.
* SDF-import
The sdf-import package registers the SDF tools sdf2table and sglr in
an XTC repository to make them available for XTC programs.
* Dot-tools
This package provides a refactored syntax definition of the Dot language,
generated signature, pretty-printer, and Stratego embedding.
* LEX/YACC Grammar Retired
Since SDF is starting to be used structurally in the Stratego
compiler, the LEX/YACC definition is no longer part of the distribution. It
is a pain to maintain and to keep the two definitions in synch.
------------------------------------------------------------------------------
Version 0.9beta2
SUMMARY OF CHANGES
* StrategoXT
* XT CVS repository from CWI to UU
* Autotools
CHANGES
* XT CVS repository from CWI to UU
Only Merijn, Joost, and I had access to the CVS repository at
CWI. This was fine at first, but really hampered development in the
last year or so. Now developers can get an account at the CVS server
at UU to contribute directly to the source tree instead of via
patches, which requires a lot of work from our side.
* Autotools
Akim Demaille pointed out that the use of autoconf and automake in
Stratego and XT is antiquated, and badly needs to be updated to more
modern versions of these tools. I had already encountered this
problem when trying to build on a FreeBSD machine. The first fix is
to renovate the current scripts and makefiles such that they will
pass through newer versions of the autotools.
This turned out not to be such a problem. The issues were:
Automake enforces consistent usage of = and +=
The AC_OUTPUT_SUBDIRS macro used in the Autobundle macro
AB_CONFIG_PKG is no longer used. I found a simple fix for this
problem using google. The fix defines the old style macro in terms
of the new one, if it was not defined yet:
ifdef([AC_OUTPUT_SUBDIRS],[],
[AC_DEFUN([AC_OUTPUT_SUBDIRS],[subdirs=$1; _AC_OUTPUT_SUBDIRS])])
(I noticed only later that Akim is one of the authors of the new
autotools, and was pushing his own work;-)
The 0.9beta1 release is generated using autoconf 2.53 and automake 1.5
* StrategoXT
The development of most Stratego applications involves tools from XT
for parsing, imploding, pretty-printing, generating signatures, and
so on. The introduction of concrete syntax in Stratego made this
link even more important. The slow development this year made it
very hard to get a distribution of XT out with good support for
concrete syntax. Since several of the XT tools are used in the
compilation of .cr modules (implode-asfix in particular), and some
others in the build of stratego-front, bootstrapping the compiler
now involves these XT packages. In order to get a quick development
and release cycle for Stratego, the XT packages should evolve at the
same pace. (Recently some changes where needed to implode-asfix to
support list variables used in list matching.)
To make this easier I have merged the CVS repositories of Stratego
and XT into a single new repository StrategoXT, which will also
be the name of the distribution. There are a few changes with
respect to the old XT bundle:
- The repository itself has a main level package structure
(inherited from Stratego). This makes it possible to build
StrategoXT directly from the repository without having to go through
autobundle. The sub-packages should still be distributed separately,
and be subject to bundling in other packages, but development of
StrategoXT should be smooth.
- External packages (aterm, sdf, cpl-stratego) have been factored
out since they are, well, external, and relatively stable with
respect to StrategoXT development. In this way we can develop
StrategoXT against a stable baseline of aterm and sdf2, and
every now and then upgrade to newer versions.
- A separate bundle for sdf2-1.5 is available from the stratego site
- The grammar base has been factored out of the bundle since
development and distribution of grammars should not be directed
by tool distribution. Grammars evolve much faster
- Application packages such as autobundle have been factored out,
since they are, well, applications. I propose to create a new
repository xtapp (better name?) in which such packages live
as modules. (There exists already a repository sp [stratego
projects] with projects such as tiger.)