-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS.txt
2225 lines (1431 loc) · 57.4 KB
/
NEWS.txt
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
Bump 1.91.e, 2022-03-31 for tc-L
Bump 1.91.d, 2022-03-21 for tc-4
Bump 1.91.c, 2022-03-10 for tc-3
Bump 1.91.b, 2022-03-03 for tc-2
Bump 1.91.a, 2022-02-18 for tc-1
* General
- silent LLVM warning
- remove misc/pair
- Nolimips is mandatory to compile TC-7
- use pure functions in libcombine.cc
- symbol: always pass by copy
- ast: use misc::symbol as value type
* Builfarm
- add support for nix
- fix update-Changelog
- fix caches for docker
- remove distcheck on TC-0
- fix gawk regexp escape sequences for arm
* Parser
- rework precedences and nonassocs
- enable warnings
- move to stable bison
- clarify for students
* Dev
- rewritte stagize script in python
Bump 1.90.h, 2021-06-07
Bump 1.90.g, 2021-05-31
Bump 1.90.f, 2021-05-20
* Register allocator:
- Fix infinite loop
Bump 1.90.e, 2021-05-17
Bump 1.90.d, 2021-03-28
Bump 1.90.c, 2021-03-08
Bump 1.90.b, 2021-03-01
Bump 1.90.a, 2021-02-22
New in 1.90, 2021-02-12
* Parser
- Remove expect 2, the GLR is now determinist (so you can
also use LALR1)
- add driver to ensure sepration between paser and AST
- remove obsolete generated files
- do not track location files
* Object
- Rework overfun
- Rework task mechanim for overfun
- add combine task combine in order to properly compute
function calls, depending on whether we activated overloading.
- reword binding of `self'
* Monoburg
- Remove dependency on monoburg
- Use now tree variant style
- Remove get_kind
* AST
- rename Decs to Chunk for clarity
- generate ast node destructors with override instead of virtual
* Buildfarm
- pre-commit: add pre-commit hooks
* Languages
- C++
- add a *lot* of concepts
- pass by const reference
- singleton: implement generic crtp singletons
- more explicit constructor
- Python
- respect several PEP recommendations
* Bug fixes
- bounds-checking: fix expected output of bounds checking tests
containing a segfault
- Fix comparison of Void expressions resulted in 1
Bump 1.88, 2020-06-15 for tc-9
Bump 1.87, 2020-06-08 for tc-8
New in 1.86, 2020-05-25
* General Maintainance
- Use python3 rather than python2
- Inliner: bug fixes
New in 1.85, 2020-04-11
* General Maintainance
- object: (type-checker) fix binding spurious members
- enable static linking with LLVM
Bump 1.84, 2020-03-23 for tc-4
Bump 1.83, 2020-02-24 for tc-3
Bump 1.82, 2020-02-17 for tc-2
New in 1.81, 2020-02-09
* General Maintainance
- gitlab-ci: produce static binary
- reformat code
- move to C++20
Bump 1.80, 2019-06-24 for tc-9
Bump 1.79, 2019-06-03 for tc-8
Bump 1.78, 2019-05-27 for tc-7
New in 1.77, 2019-05-06
* General Maintainance
- gitlab-ci: split different phases
New in 1.76.1, 2019-04-29
* General Maintainance
- TypeBuilder has been removed (see https://reviews.llvm.org/D56573)
New in 1.76, 2019-04-19
* General Maintainance
- configure: fix compiler version check
New in 1.75, 2019-03-01
* General Maintainance
- gitlab-ci: build pdf for assignment
* IA31
- rewrite_program: ia32: handle simultaneous use and def
Bump 1.74, 2019-02-15 for tc-3
New in 1.73, 2019-02-09
* General Maintainance
- buildfarm: fix minors details
New in 1.72, 2019-02-03
* General Maintainance
- style:
- unordered_map is preferred when sorting is not required
- remove useless virtual destructors
- add static const qualifiers
- no virtual with override
- more nested namespaces
- prefer std::numeric to INT_MAX
- reserve vectors size when known beforehand
- fix memory leak in tc.cc
- Boost: cleanup legacy and replace by c++17 features
- parse:
- upgrade bison requirements
- remove deprecated elements
- regen parser
- gitlab-ci:
- require LLVM 7
- triggers for building assignments website.
* Object
- Handle corner case for binding
- fix dispatched method call and upcasted return type
- add meth_find method
New in 1.71, 2018-06-25
* Fix Maintenance
- fix broken make dist
- add gitlab-ci support
New in 1.70, 2018-05-31
* General Maintenance
New in 1.69, 2018-05-20
* General Maintenance
New in 1.68, 2018-05-14
* General Maintenance
- fix style
New in 1.67, 2018-04-16
* General Maintenance
New in 1.66, 2018-03-09
* General Maintenance
- remove useless misc::set
New in 1.65, 2018-02-12
* General Maintenance
New in 1.64, 2018-02-01
* General Maintenance
New in 1.63, 2018-01-25
* More C++17 features
- use structured bindings
- use std::variant instead of boost::variant
- use class template argument deduction
- use if(init; condition)
* General Maintenance
- swap callee-save and caller-save order
- add desugar implementation for ArrayExp during TC-O
- replace enums with enum classes
- ensure _main existence and correct prototype in the AST
- remove MetavarExp and Metavariable AST nodes
- use nested namespaces
- replace some raw pointers with unique_ptr or shared_ptr
- add alternative rewrite_program implementation
New in 1.62, 2017-06-26
* General Maintenance
- fix typos
New in 1.61, 2017-06-05
* General Maintenance
New in 1.60, 2017-05-19
* General Maintenance
- regenerate backends
- clean code
New in 1.59, 2017-05-12
* General Maintenance
- tests: remove duplicate tests
- fix typos
- fix function call conventions
- generalize registers to multiple targets
- clean code
New in 1.58, 2017-04-12
* General Maintenance
- style: put tree constructors in .cc
- fix typos
- cleanify code
New in 1.57, 2017-03-03
* General Maintenance
New in 1.56, 2017-02-13
* Fix documentation
New in 1.55, 2017-02-02
* General Maintenance
- Remove unnecessary/deprecated Fixmes
- Clean code
- use more c++11 features
New in 1.54, 2017-01-24
* Style and General maintenance
- Add maintainers
- Propagate use of pragma once
- Add missing override
- Remove comnination between override and virtual
- Use more STL algorithms
- Add useful warning
- Modernize tc-a
- Fix typos
- Propagate use of vector rather than lists
- Add more tests
- Add namespace indication at the end of scope
- Prefer nullptr to NULL
- Remove useless implementations thanks to =default
- Don't repeat the same access qualifier
- Tools to replace Fixmes by warnings
* Inline
- More verification about return type
* Object
- Clarify comments
- Fix use of self inside of functions
* LLVM
- Improve escape-collector
- Do not construct type when no record is set
- Don't include runtime in the distribution
- Use native types
- Remove useless return values
- More explanation about the translator
- Fix compatibility issues with 3.9
* Type
- Do not provide files to student before needed
- Simplify record-exp
- Improve type_set
- Move constructor and destructor in implementation files
* Binder
- Fix displays
- Adjust bindings for vardecs
- Update definition for self
* C++1z
- Add comments to suggest how to use new features
New in 1.53, 2016-06-24
* General maintenance
New in 1.52, 2016-06-06
* General maintenance
New in 1.51, 2016-05-30
* Remove useless typedef
New in 1.50, 2016-05-19
* General maintenance
- Simplify code
- Updates according to coding-style
- Remove useless hidden block
- Simplify type checker for classes
- Update llvm dependencies to please gcc
New in 1.49, 2016-05-03
* General maintenance of LLVM
New in 1.48, 2016-04-18
* General maintenance
- replace list by vector int type/class
- Ajust given code
- Remove nested annotations
New in 1.47, 2016-04-08:
* Add support for LLVM
- add llvm translate module
- replace the dump method with a visitor
- add a record_type to the Nil type
- add --llvm-runtime-display and --llvm-display
* General Maintenance
- arm: fix dependencies and use correct cross compiler
- llvm: require llvm-3.8
New in 1.46, 2016-03-07:
* General Maintenance
- Add missing FIXMEs
New in 1.45, 2016-02-18:
* General Maintenance
- Propagate changes for new version of Havm and Monoburg
- Remove useless FIXME
New in 1.44, 2016-02-05:
* General Maintenance
- Generalize use of pragma once
- Support for boost 1.58
- Use `unique_ptr` instead of `auto_ptr`
- Adjust compatibility with gcc 5
- Adjust compatibility with flex 2.6
- Fix typos
- Remove useless declarations
- Start to promote C++14
* Use type alias template in all the visitors
- End the work started at 1.39 before the new
release for students.
* Finalize integration with ARM
* Compatibility with overload and object
- Support for bindings
- Support for type checking
- Support for desugar and renamer
- Tests
New in 1.43, 2015-06-26:
* Fix error when computing object type inside ifexp
* Update comments to fit iplemntation
New in 1.42, 2015-06-05:
* Fix pruning of unused function declarations
* Add tests for bounds-checking
New in 1.41, 2015-05-27:
* Maintenance for arm backend
New in 1.40, 2015-05-25:
* No significant changes
New in 1.39, 2015-04-30:
* Start upgrading visitor
Use a type alias template to shorten type names. Nonetheless
since it may lead to conflicts with students codes, it's just
an introduction.
* Fix check routines
- Fix marks for studistcheck
- Fix distcheck
New in 1.38, 2015-03-19:
* Support Python 3
Fix compatibility with python 3.
* Update pretty printer
Print attributes bindings.
New in 1.37, 2015-02-26:
* More targets
- Clean ia32, mips target files
- Add arm backend files
- Initializer lits for cpu class
New in 1.36, 2015-02-12:
* More C++17 features
- More uses of Boost.FileSystem's path.
New in 1.35, 2015-02-04:
* More C++11/14 features
- type aliases with 'using';
- moving away from std::list to promote std::vector;
- misc::variant is now always variadic, implemented with variadic
templates instead of dark magic incantations with Boost.Preprocessor.
* Bounds Checking
The official name is 'bounds checking', not 'bound checking'. So
everything was renamed to include that plural.
* Simpler Build System
The build system was simplified to be both simpler and faster: we no
longer build local libraries for the modules, rather object files
are directly linked together into libtc.
* Safer and Faster Build System
We also have reduced the number of Makefiles to... one. This is by
far the best approach to development. Have a look at this:
<http://aegis.sourceforge.net/auug97.pdf>.
* Compilable Code with Gaps
The code delivered to students now compiles cleanly.
* More C++17 features
Some libraries, such as Boost.Optional, Boost.ProgramOptions, and
Boost.FileSystem, are expected to be adopted by the forthcoming C++
standard. As a consequence, we started to use them liberally,
instead of alternative implementations (e.g., argp is no longer used
at all for command line option processing).
New in 1.34, 2014-02-17:
* Even more C++ 2011 features
The Tiger compiler uses some more features from the C++ 2011
ISO/IEC standard:
- (standard) smart pointers (std::unique_ptr, std::shared_ptr);
- general-purpose initializer lists;
- lambda expressions;
- explicit overrides;
- template aliases;
- new function declarator syntax;
- delegating constructors;
- non-static data member initializers;
- inherited constructors.
These changes require at least g++ 4.8 or clang++ 3.3.
* Moved to using Bison 3
A special version of Bison 3 is required to build the parser.
* C++ scanner
The scanner has been turned into a C++ class, still generated by
Flex.
* ast::ObjectVisitor
A visitor performing default traversal of object nodes,
ast::ObjectVisitor, has been introduced.
* Allow `nil' as valid value for objects
Objects (class instances) can now be initialized to `nil' or
assigned `nil', like records.
* Repaired TCSH
TCSH was broken due to SWIG 2 not understanding C++ 2011 constructs.
These constructions have been hidden to SWIG so that TCSH can be
built again.
* Style
Many stylistics changes have been performed, mainly to match the
EPITA Coding Style.
New in 1.33, 2013-02-11:
* Maintenance release
More test cases, more documentation and tools to manage the test
suite, some bug fixes, some updates to catch up with recent versions
of tools, minor improvements, and various stylistic changes
(especially with respect to spacing).
* More C++ 2011 features
Explicit template instantiation declarations are introduced to
replace the ad hoc mechanism used so far, based on *.hcc files
that were included once.
New in 1.32, 2012-01-27:
* Text files renamed as *.txt.
This enables more features from tools (such as Mac OS X's Finder and
so forth).
* Fixed location handling in the scanner/parser.
The new scheme (make_SYMBOL) broke the transmission of the current
location from the parser to the scanner (via yylloc). We actually
had two "current" locations: the scanner's and the parser's. Only
the latter was properly initialized (with the current file name).
"Fortunately" the standard default constructor also made the
scanner's location work properly wrt lines and columns, but, of
course, had an empty file name.
The TigerParser featured a useless location_ member. We now use it
to exchange the current location betwenn the parser and the scanner.
To summarize:
- TigerParser::location_ is now the current (scanner and parser)
location;
- TigerParser::parse_ initializes this location with the right file
name;
- the parser no longer needs to initialize its $@;
- the scanner no longer uses a (static) variable loc, but
tp.location_, tp being the TigerParser, provided to it via %param.
* Better support for x86-64 architectures
* Improved support for clang
The clang C and C++ front ends to the LLVM infrastructure are better
supported. The only real limitation is now the Argp library, which
is not compatible with the C99 standard and must be compiled using a
C89 compiler (using option `-std=c89' or `-std=gnu89').
* C++ 2011 features
The Tiger compiler uses some new features from the latest C++
ISO/IEC standard, including:
- explicitly defaulted and deleted functions;
- consecutive right angle brackets allowed in templates;
- auto-typed variables;
- template metaprogramming traits provided by the standard library;
- the `nullptr' literal constant;
- range-based for-loops (``for (type val : container) ...'').
The current changes are compatible with g++ 4.6 and clang 3.0.
New in 1.31, 2011-01-30:
* Style changes for inheritance and constructors.
Instead of
class Foo
: public Bar,
public Baz
{
Foo()
: Bar(),
Baz()
{ }
};
write
class Foo
: public Bar
, public Baz
{
Foo()
: Bar()
, Baz()
{}
};
* Style change in #include.
When used with double-quotes, the included header is looked-up for
relatively to the including file. This is not how we use #include,
since we all qualify our included files. Hence, for consistency with
the semantics and for safety, convert to using <>.
New in 1.30, 2011-01-13:
* Moved to using Bison's api.tokens.prefix
Instead of:
%token TOK_STRING "string"
and using TOK_STRING in the grammar, we now use:
%define api.tokens.prefix "TOK_"
%token STRING "string"
and use STRING in the grammar, but still TOK_STRING elsewhere (i.e.,
the token enumeration generated in the header still defines
TOK_STRING, not STRING).
* Moved to using Bison's %param
Instead of:
%parse-param { ::parse::TigerParser& tp }
%lex-param { ::parse::TigerParser& tp }
we now use:
%param { ::parse::TigerParser& tp }
* Moved to using Bison's named references
Instead of:
"for" escaping ID ":=" exp "to" exp "do" exp
{
$$ = new ast::ForExp (@$,
new ast::VarDec (@3, $3, $2, 0, $5),
$7, $9);
}
we now use:
"for" escaping ID[var] ":=" exp[lo] "to" exp[hi] "do" exp[body]
{
$$ = new ast::ForExp (@$,
new ast::VarDec (@var, $var, $escaping, 0, $lo),
$hi, $body);
}
* Moved to using Bison's make_SYMBOL functions
By specifying "%define lex_symbol", we can change the scanner to use
a type-safe interface: instead of handling the tokens in three parts
(the return value is the type, the incoming arguments yylval and
yylloc for the semantic value and the location), return an object of
the type symbol_type with aggregates these three components)
.
Instead of:
{number} {
yylval->ival = strtol (yytext, 0, 0);
return parse::parser::token::INT;
}
we now use:
{number} return parse::parser::make_INT(strtol (yytext, 0, 0), loc);
It is now impossible to return a INT, and yet assign the wrong
semantic value. Using some macro, the scanner can be reduced to:
{number} return TOKEN_VAL(INT, strtol (yytext, 0, 0));
* Moved to using Bison's variant interface
Instead of:
%union {
int ival;
std::string* sval;
};
%token <str> STRING "string"
%token <ival> INT "integer"
we now use:
%token <std::string> STRING "string"
%token <int> INT "integer"
and use genuine objects, instead of pointers to objects. Change the
scanner accordingly.
* Moved to using Automake 1.11's silent-rules
By default, running "make" no longer displays the (longish)
compilation commands. Rather, it displays:
CXXLD transform/libtransform.la
CXX astclone/tasks.o
CXX overload/tasks.o
CXX desugar/tasks.o
CXX inlining/tasks.o
CXXLD tc
Errors and warnings are therefore much easier to see. If you need a
verbose run, use "make V=1". See "Silent rules" in the Automake
documentation for more.
* Avoid recursive Makefile.am's
Since "Recursive Makefiles are considered harmful" (they hide
dependencies, they hinder performances by preventing concurrent
compilation in nested directories, they force Make to read large
repetitive files instead of a larger but unique one), nested
Makefiles have been replaced by "local.mk" files. These are
included by the parent Makefile, which therefore yield to a single
Makefile in the end.
New in 1.29, 2010-01-15:
* Fix a bug in unique objects' pretty-printer
* More developer documentation on the distribution process
New in 1.28, 2010-01-11:
* Maintenance release
Bug fixes, updates to catch up with modern tools, minor
improvements, aesthetic changes.
The repository has also been converted to Git.
New in 1.27, 2009-02-27:
* Support for the Boehm-Demers-Weiser Garbage Collector on IA-32
On IA-32, option `--garbage-collection' generates code relying on
the Boehm-Demers-Weiser garbage collector for memory management
(see http://www.hpl.hp.com/personal/Hans_Boehm/gc/). Such code is
to be linked against the garbage collector's library
(gcc -lgc out.s).
New in 1.26, 2009-01-16:
* Tiger Interpreter in C++
In addition to the TCSH-based Tiger Interpreter in Python, an
interpreter written in C++ is available. It uses either HAVM, the
MIPS back end (and Nolimips) or the IA-32 back end (and GCC).
* The Bistromatig
The project features a large example of code written in Tiger, the
Bistromatig, an arbitrary-radix infinite-precision calculator.
New in 1.25, 2008-05-19:
* All escape sequences in literal strings are compatible with the GNU Assembler
New in 1.24, 2008-03-10:
* No significant change.
New in 1.23, 2008-02-25:
* misc::unique<T, C>, a generalization of misc::symbol
* Use a new set of Autoconf macros for the Boost libraries by Benoît Sigoure
* Merge more code with Gostai's code base w.r.t. code generators
New in 1.22, 2007-12-10:
* Concrete-syntax run-time program transformations
A new module, namely `transform', provides rewriting services to the
compiler. Rewrite rules are expressed using concrete syntax. Most
of the current services are directly exposed through the language,
using the `rule' keyword.
* Factor some code using BOOST_FOREACH and boost::lexical_cast
* Miscellaneous renaming, mostly in lib/misc/.
New in 1.21, 2007-07-04:
* Object desugaring
Object desugaring is working, though the implementation needs
some refactoring.
* TWEASTs embedded in TWEASTs
Allow a TWEAST to carry other TWEASTs as metavariables. Such a
structure is like a tree, which must be ``flattened'' before the
parsing. This feature is useful to build complex TWEASTs. For
instance, one can populate a TWEAST ``non linearly'' (reserving a
slot for a TWEAST that will be filled later).
New in 1.20, 2007-06-12:
* Some more (little) work on object desugaring, with no user-visible changes
New in 1.19, 2007-06-06:
* First step towards object desugaring
The option --object-desugar can translate some object constructs
into plain Tiger. Method calls and accesses to attributes are not
handled yet, though.
New in 1.18, 2007-05-15:
* No significant change.
New in 1.17, 2007-04-27:
* Improve the type-checking of types and class definitions.
object::TypeChecker now allows the use of every type defined in a
block of types from any location of this block (for instance, create
an object of a class defined later, in the same block). The
invariance of methods is checked.
New in 1.16, 2007-04-23:
* Object-aware type-checking.
The visitor object::TypeChecker allows the computation of types on
an AST with objects.
* Enforce STL coding style in lib/misc/.
* Emacs major mode for Leopard
The distribution comes with an Emacs major mode for the Leopard
language. The Tiger mode has been updated as well to highlight
Leopard's specific syntactic elements.
New in 1.15, 2007-04-06:
* Object-aware bindings.
The visitor object::Binder allows the computation of bindings on an
AST with objects.
New in 1.14, 2007-03-30:
* Two forms of class declarations.
Two forms of syntax for class declarations are allowed. The first
one, known as the ``canonical'' one, is similar to other type
declarations in Leopard (notably, array and records). The second
one, known as the ``alternative'' one (or ``Appel's'') was the
original syntax, described in Appel's ``Modern Compiler
Implementation'' books.
New in 1.13, 2007-03-29:
* No significant change.
New in 1.12, 2007-03-28:
* Introduce Leopard
From now on, the Tiger project is known as the Leopard project. This
reflects the changes made to the language, which is also now called
Leopard (see below).
* Add object-oriented syntactic constructions
The language is extended with simple object-related constructions
(class and method declarations, inheritance, object construction,
method calls). This extension of the Tiger language gives birth to
a new dialect, called Leopard.
* Visitor renaming
Visitors are renamed with ``actor'' names (e.g., Binder,
TypeChecker, etc.).
New in 1.11, 2007-03-23:
* Tiger Interpreter