forked from gobo-eiffel/gobo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
History.txt
1342 lines (1084 loc) · 54 KB
/
History.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
Version 3.10 - ?
geant:
* Extended the attributes 'if' and 'unless' to accept the values
"true" and "false". This can be useful when automatically generating
geant build files. See bug#2657770.
* Use ISE Eiffel's ec instead of ecb, so output is compatible with
estudio; else estudio will complain about a corrupted project.
gec:
* Added option --gelint to force the whole content of classes to be
checked (even features not reachable from the root creation procedure).
* Fixed bug in the generated C code for call agents whose feature was
FUNCTION.item or ROUTINE.call and whose closed argument was a manifest
tuple. See bug#2997112.
* Fixed implementation of class IDENTIFIED_ROUTINES. Object addresses
were casted to INTEGER_32, which causes loss of information when
compiled on a 64-bit computer. See bug#2999209.
* Fixed type system bug when processing constant attributes in
inspect instructions. See bug#3238111.
* Fixed bug when an inspect instruction had no else-branch. No exception
was raised.
* Fixed bug when running 'gec --gelint ...'. Validity errors were
reported twice.
* Qualified anchored types are now accepted by default.
gelex:
* Made the generated scanners compilable in void-safe mode with ISE 7.3.
gelint:
* Fixed bug where it was reporting an internal error instead of a VTCT error
when the type of a local variable was a generic class type whose base class
did not exist.
* Report a VIPR-3 error for inline agent of the once and external forms.
This is not in ECMA 367-2, but a restriction in ISE.
* Qualified anchored types are now accepted by default.
getest:
* Set exit code to 4 when at least one of the test cases has been aborted.
* Split the feature `build_suite' in smaller routines in the generated test
harness so that the back-end C compiler (in particular MSVC under Windows)
can compile the generated C code for this routine in a reasonable amount
of time.
* Added command-line options to the generated test harness to monitor which
of the registered test cases should be executed or ignored.
* Improved command-line processing of the generated test harness.
gexace:
* Added option "syntax" to support the corresponding option in ECF.
* Added documentation explaining how to add a new option in Xace.
* Add support to set compilation directory to different directory
than current directory. Define GOBO_BUILD_PREFIX and ise compiler
will now compile to that directory. This allows you to compile to
a fast SSD or memdisk.
Not yet supported for the Gobo compiler.
* Dropped support for the EIFGEN directory.
geyacc:
* When specifying Eiffel types in the %token and %type clauses, in addition
to what was accepted so far, it is now possible to use 'like Current',
labeled tuples (e.g. 'TUPLE [i, j: INTEGER; s: STRING]') and type marks
such as 'expanded', 'reference', 'separate', 'attached', 'detachable',
'!' and '?'. See bug#2618271.
* When declaring '%token <EIFFEL_TYPE> ...', the generated parser
expects to find token values in the variable `last_<eiffel_type>_value',
where all non-alphanumeric characters in the type name EIFFEL_TYPE
are replaced by underscores. It is now possible to customize the
name of this variable to `last_<alias_name>_value' by declaring
'%token <EIFFEL_TYPE as alias_name> ...'. See bug#2621302.
* Added support for qualified anchored types in %type and %token declarations
in .y files.
* Eiffel classes need to be regenerated with geyacc from .y files because
of a breaking change to make the internal stacks void-safe compliant.
Otherwise this will result in a compilation error.
* Removed command-line option '--old_typing'.
* In order to be void-safe compliant, the generated token class has been
made deferred (last_value attributes may be attached).
* Made the generated parsers compilable in void-safe mode with ISE 7.3.
* Added option --rescue-on-abort to generate a rescue clause in action routines
to catch abort exceptions. Useful when compiling in void-safe mode.
Gobo Eiffel Argument Library:
* Made it compilable in void-safe mode with ISE 13.11.
Gobo Eiffel Kernel Library:
* Added features `same_*_pathnames' to class KI_FILE_SYSTEM.
* Features `test' in class KL_EQUALITY_TESTER and `equal_objects' in
class KL_ANY_ROUTINES now use the new ECMA construct '~' instead
of the combination `same_type' and then `is_equal'.
* Added feature `is_true' to class KL_AGENT_ROUTINES.
* Fixed bug in feature `read_to_string' of file classes where the
hash code was not reset properly.
* Made it compilable in void-safe mode with ISE 7.3.
* KL_FILE.copy_file: now uses 8192 blocks, instead of 512.
Gobo Eiffel Lexical Library:
* Fixed bug in LX_DFA_REGULAR_EXPRESSION where `compile ("foo\$")' was
setting `has_dollar' to True even though the dollar sign was escaped.
* Added features `pattern' and `is_case_insensitive' in class LX_PATTERN_MATCHER.
* Made it compilable in void-safe mode with ISE 7.3.
Gobo Eiffel Math Library:
* Made it compilable in void-safe mode with ISE 7.3.
Gobo Eiffel Parse Library:
* Made it compilable in void-safe mode with ISE 7.3.
Gobo Eiffel Pattern Library:
* Made it compilable in void-safe mode with ISE 7.3.
Gobo Eiffel Regexp Library:
* The pattern being matched and the case-sensitiveness are now available
using queries `pattern' and `is_case_insensitive'.
* Made it compilable in void-safe mode with ISE 7.3.
Gobo Eiffel String Library:
* Fixed bug in the string formatter where the flags '+' and space where
not taken into account. See bug#2768748.
* Made it compilable in void-safe mode with ISE 7.3.
Gobo Eiffel Structure Library:
* Fixed assertion violation in feature `compress' from DS_SPARSE_CONTAINER.
See bug#2831433.
* Relaxed precondition of `put' and `put_last' in classes DS_SET and
DS_SPARSE_TABLE (i.e. the ancestors of DS_HASH_SET and DS_HASH_TABLE) to
be "not is_full or else has (k)" instead of just "not is_full".
* Added features `do_until' and `do_if_until' to DS_CONTAINER and its
descendants.
* Added feature `has_void' to DS_CELL and DS_PAIR.
* Fixed bug in features `force_last_new' and `put_last_new' of DS_HASH_TABLE.
* Fixed bug in DS_HASH_TABLE when the calls to `key_equality_tester' in
`search_position' trigger the invariant which internally calls `search_position'.
But this routine was not written to be re-entrant.
* Added iteration routines to the descendants of DS_TABLE so that the key can be
passed first and then the item to the agents.
* Made it compilable in void-safe mode with ISE 7.3.
Gobo Eiffel Time Library:
* Added class DT_STOPWATCH in cluster 'stopwatch'.
* Made it compilable in void-safe mode with ISE 7.3.
Gobo Eiffel Tools Library:
* Added support for keyword 'note' as a replacement of 'indexing'.
See bug#2499770.
* Fixed bug where object-test local was not recognized as such when
appearing as target of an agent declaration.
* Fixed bug where the type of an agent was not correctly determined
when the result type of the corresponding function contained a formal
generic parameter. It ended up being 'FUNCTION [ANY, TUPLE, BOOLEAN]'
instead of 'PREDICATE [ANY, TUPLE]'. See bug#2667604.
* Only pre-ECMA formats were supported for integer manifest constants.
Now all formats (decimal, hexadecimal, octal and binary) are supported
to be compliant with ECMA and ISE. See bug#2682414.
* Support the new syntax, using keywords, for attached and detachable
types (e.g. 'attached FOO' or 'detachable BAR') and for object-tests
(e.g. 'attached {T} exp as x' with '{T}' and 'x' optional). See
bug#2682694.
* Added the notion of ignored classes. We can programmatically decide
to ignore the class from a cluster and take it into account later on
after some processing.
* Added support for attribute initialization body.
* Added support for renaming clause in libraries when parsing ECF files.
* Fixed pretty-printer when processing indexing clauses in features.
An extra empty line was inserted.
* Added support for check instructions with a then-branch.
* Added support for once keys in once routines.
* Improved the way the type of a manifest array is determined in the
case where the types of all items conform to one of them. In that
case the manifest array will be an array of that type.
* The scope of object-test locals can cover the following assertions
in the same postcondition or invariant clause because it's as if
they were separated by "and then" operators. It was already
implemented that way in preconditions.
* Support the ECMA syntax for typed manifest strings and typed character
constants.
* Accept class text files which start with the byte order mark (BOM).
(See http://en.wikipedia.org/wiki/Byte_order_mark.)
* Started checking void-safety validity rules.
* Relaxed the validity rule to prevent cycles in qualified anchored types
so that it can accept code appearing in ISE's libraries.
* Added support for across instructions/expressions.
* Added support for 'alias "()"'.
* Added support for "$(ECF_CONFIG_PATH)" in ECF files.
Gobo Eiffel Utility Library:
* Made it compilable in void-safe mode with ISE 7.3.
Gobo Eiffel XML Library:
* Added option to let the XML pretty printer use empty element tags
<tag/> instead of <tag><tag/>.
Miscellaneous:
* Removed classes and features that had been marked as obsolete
in 2004 or before.
* Removed warnings when compiling with ISE 6.6.
Version 3.9 - 20 November 2008
geant:
* Removed support for SmartEiffel task <se>.
gec:
* Fixed some C compilation warnings when using gcc as back-end C compiler.
See bug#1961462.
* Added support for object equality ('~' and '/~'). Equality expressions
('=' and '/=') now use the semantics of object equality when the operands
are dynamically of expanded types.
* Added experimental support for Qualified Anchored Types (types of the
form 'like a.b' or 'like {A}.b).
gelint:
* Fixed bug where no validity error was reported when a creation procedure
of a creation instruction did not exist in the base class of the creation
type.
getest:
* Added an indexing clause "generator" to the generated classes.
See feature request bug#1961466.
* Provided programmatic access to test results.
* Removed support for config file 'getest.se' and option --se.
gexace:
* Made sure that several options 'override_cluster' can be specified
in Xace files.
* Fixed bug when generating ECF files from Xace files: the override
clusters were not marked as such.
* Removed support for SmartEiffel config files.
Gobo Eiffel Kernel Library:
* Added `make_from_string_general' and `make_from_substring_general'
in class UC_STRING.
Gobo Eiffel Structure Library:
* Added set and table classes using binary search tree, AVL tree,
red-black tree and left-leaning red-black tree algorithms.
* Added features `there_exists_with_key' and `for_all_with_key' to class
DS_TABLE.
Gobo Eiffel Tools Library:
* Added minimal support for ECF files.
* Improved Eiffel pretty-printer.
Miscellaneous:
* Removed the emulations of EiffelBase and EiffelTime in library/other.
They had not been maintained for years, and it became a pain to use
them after the move from Ace files to ECF files in EiffelStudio.
Version 3.8 - 11 May 2008
geant:
* Changed the evaluation of attributes 'if' and 'unless' so that an
empty right/left side of the equals sign is treated as an empty string
which makes comparisons easier. Also leading/trailing white space for
the equals sign is not removed anymore to leave control to the script
developer. Note that this might cause a problem to scripts which made
use of the old behavior. These scripts need to be adapted.
* Task 'geant' has a new attribute called 'exit_code_variable'. It can be
used to capture (or ignore) the execution result of a '<geant>' call
and works exactly as in the 'exec' task.
* Introduced notion of locals, and globals. You can now declare
'<local name="varname"/>'.
* Added support for '<group>' element.
* Fixed various issue with '<replace>' task.
gec:
* Generate prototypes for external routines when no header file
has been specified.
* Changed the generated C code for Agent objects so that `twin'
and `deep_twin' work correctly.
* Improved CAT-call error reporting, in particular in case of
Tuple label assigners.
* Relaxed the CAT-call rule when calling Agents to be compliant with ISE.
ISE Eiffel does not type-check the tuple operand of Agent calls even at
execution time. It only checks whether the tuple has enough items and
these items are of the expected types, regardless of the type of the
tuple itself. For example it is OK to pass a "TUPLE [ANY]" to an Agent
which expects a "TUPLE [STRING]" provided that the dynamic type of the
item of this tuple conforms to type STRING.
* Made sure that no-more-memory exceptions are raised when needed.
* Made sure that expanded items are initialized when creating objects
of type SPECIAL.
* Fixed bug (read/write to non-allocated memory) in implementation of
`deep_twin' when traversing objects of type SPECIAL.
* Fixed bug when both the expanded and reference versions of a non-generic
type were used in the system. The generated C code considered that they
were either both expanded or both reference.
* Fixed bug in recursive once-functions. The second call was returning
the default value of the result type instead of the value of 'Result'
as it was when the recursive call occurred, as specified in ECMA Eiffel.
* The Xace option 'garbage_collector' is now taken into account by gec
when set to "boehm". This Xace option can be overridden by the
command-line option --gc when specified.
* When gec compiles an application with the Boehm GC, it now generates
code that will let the GC trigger the feature `dispose' when objects
are reclaimed.
* Take better advantage of the Boehm GC, using 'GC_malloc_atomic' when
possible.
* The implememtation of the rescue mechanism in C uses 'setjmp' and
'longjmp'. The use of these two C functions requires that any local
variable modified between the call to 'setjmp' and the call to 'longjmp'
to be declared as 'volatile', otherwise its value may be lost after
calling 'longjmp' if the C optimizer decided to implement it with
'register'. For more details, see:
http://www.programmersheaven.com/articles/pathak/article1.htm
http://www.freetype.org/david/reliable-c.html#annex-A
http://msdn2.microsoft.com/en-us/library/xe7acxfb(VS.80).aspx
The generated C code has been adapted accordingly.
gelint:
* Fixed bug in the flat Degree 3 mode where the precursor features
corresponding to precursor expressions or instructions were not checked.
* Fixed bug when the type in a manifest type is based on an unknown class.
Instead of reporting a VTCT error, gelint/gec were reporting another
subsequent error, as shown in bug#1875262.
* Made sure that no VAPE error is reported when a feature is exported
to a class that has a syntax error or for which the ancestors could
not be computed.
* Added support for the notion of libraries as specified in ECF.
This introduced some breaking changes if you are using the code of
gelint in your own applications. For example what was known as
ET_UNIVERSE is now called ET_SYSTEM and ET_UNIVERSE is now an
ancestor of this class (and of the new class ET_LIBRARY).
* Added type-marks '!' and '?' (part of void-safety mechanism) in the
parser. But do not check validity rules yet.
* Implemented Object-Test as specified in ECMA 367-2.
* Do not accept the obsolete syntax for Agents using '~'. ECMA Eiffel
uses the operator for object equality, and this new construct is
now implemented in ISE 6.2.
getest:
* Added features `assert_doubles_equal_with_tolerance' and
`assert_doubles_equal_with_strict_tolerance' to TS_ASSERTION_ROUTINES.
* getest now expects test case classes to declare `make_default' inherited
from TS_TEST_CASE as creation procedure. That way there is no need to
generate intermediary classes (e.g. classes of the form XTEST_...
inheriting from TEST_...) anymore, and hence it is easier to call test
cases outside of the test framework.
* Removed the command-line option --ve and replaced it by --ge.
* Print the exception trace if available when an exception occurred
while running a test case.
* Make sure that the garbage collector is in the same state as before
running each test case.
gexace:
* The option '--system=ise' now generates ECF directly instead of going
through Ace which is then converted to ECF by EiffelStudio. This
allow Xace to support options that have been introduced in ECF. In
order to generate Ace files for ISE, use the new command-line option
'--format=ace'.
* The option '--system=ge' now generates an Xace file instead of an
Ace file. This makes it possible for example for 'gec' to determine
whether the Boehm GC should be used through the Xace option
'garbage_collector'. Otherwise, with Ace files, this information has
to be passed to 'gec' through the command-line option '--gc=boehm'.
In order to generate Ace files for 'gec', use the new command-line
option '--format=ace'.
* These ECF options have been added to Xace: supplier_precondition,
automatic_backup, check_generic_creation_constraint, ecf_library,
enforce_unique_class_names, external_runtime, force_32bits,
full_class_checking, msil_classes_per_module, msil_culture,
msil_key_file_name, msil_use_optimized_precompile, namespace,
old_verbatim_strings. See $GOBO/doc/gexace/options.txt for more
details.
* The default value of these Xace options has been changed to follow
the default value in ECF: inlining, inlining_size,
use_cluster_name_as_namespace, use_full_cluster_name_as_namespace.
See $GOBO/doc/gexace/options.txt for more details.
* Fixed bug#1875809 where libraries were duplicated in the generated
output file when appearing twice in the same Xace input file.
geyacc:
* Fixed bug when resuming a parsing that was suspended (with `suspend').
The last action before the call to `suspend' was executed twice.
Gobo Eiffel Kernel Library:
* Added iterator features (`do_all', `do_if', `for_all', `there_exists')
in class KL_DIRECTORY.
* Added feature `prune_all_trailing' to KL_STRING_ROUTINES.
* Improved class KL_EXCEPTIONS to make it clearer what is available
for all Eiffel compilers and what is not.
* Added KL_MEMORY and friends to provide a compiler independent way
to access garbage collection facilities.
* Upgraded Unicode support to version 5.1.0.
Gobo Eiffel Regexp Library:
* Fixed bug#1917556 where feature `split' in RX_PCRE_REGULAR_EXPRESSION
was not behaving correctly when the regexp could match empty strings.
Gobo Eiffel String Library:
* Added full Unicode case-mapping routines.
* Upgraded Unicode support to version 5.1.0.
* Added support for formatting dates and times according
using the picture strings from the XSLT functions
format-date(), format-time() and format-date-time().
Gobo Eiffel Structure Library:
* Moved features `do_all', `do_if', `there_exists' and `for_all'
up to class DS_CONTAINER.
* Added features `do_all_with_key' and `do_if_with_key' to class
DS_TABLE.
* Added feature `has_void' to class DS_SEARCHABLE.
Gobo Eiffel XML Library:
* Re-implemented XPath fn:collection() for file URIs (incompatibly,
but as the previous implementation was not documented, it
almost certainly is not used). Wrote documentation.
* Added additional XSLT system-properties, and the ability to
register additional system properties. Documented this.
* Added facility to pass XPath values as global XSLT parameter values.
Version 3.7 - 5 November 2007
gec:
* Can generate console and Windows applications.
* Implemented once manifest strings.
* Report CAT-call errors and call-on-void-target errors at run-time.
* Support the Ace/Xace/ECF 'trace' option.
* The Boehm GC can be plugged using the --gc command-line option.
* Improved the back-end C compiler config file.
* Improved interoperability with ISE's compiler.
* Support 'external "C++"' routines.
* Implemented feature `deep_twin'.
* Added support for lcc-win32 and MinGW as back-end C compilers.
gelint:
* Fixed bug when determining the type of a call to a Tuple label
when appearing in a generic class.
* Added support for some incrementality when used within the same session.
Gobo Eiffel Argument Library:
* Added the possibility to specify a maximum number of options.
* Added the possibility to make option arguments optional for options
that only have a long form.
* The contracts now certify that the setup of arguments are
unambiguous.
Gobo Eiffel Kernel Library:
* Removed possible CAT-call when using KL_EQUALITY_TESTER. It does not
use `is_equal' directly, but a protected version of it which is preceded
by a call to `same_type'.
Gobo Eiffel XML Library:
* Made the XSLT serializer a reusable component for any XML programs.
* Added an example of using the XSLT serializer.
* Added documentation on XML serializers, including the reusable
XSLT serializer.
Version 3.6 - 14 June 2007
gec:
* Implemented inline agents.
Gobo Eiffel String Library:
* Fixed a bug in string formatter where format("$11.9f",941.65899999999817)
would return 942.589999910 instead of 941.659000000. Regression tests
have been added, and this fix also pointed out a bug in one of the
test cases.
Gobo Eiffel Structure Library:
* Added iterator features (`do_all', `do_all_with_index', `do_if',
`do_if_with_index', `there_exists') to relevant classes.
* Fixed bug in invariant of DS_MULTIARRAYED_SPARSE_SET and
DS_MULTIARRAYED_SPARSE_TABLE when `capacity' is zero.
Miscellaneous:
* Now uses the MIT License, which is an OSI Approved License and
a GPL-Compatible Free Software License.
* Bugs can now be reported on SourceForge bug tracker.
* Does not support Visual Eifel compiler anymore. Indeed Visual Eiffel
does not support Agents, Tuples, INTEGER_64 among other things. The
Gobo project tried not to use these constructs so far, but this is
becoming too constraining.
Version 3.5 - 23 January 2007
geant:
* Fixed bugs which prevented that possible arguments of a target
to be taken into account during evaluation of ${somevar} references.
This was especially the case for the attributes 'if' and 'unless'.
* Task <geant> now by default spawns a new geant process if
attribute 'file' has been specified. It also has a new attribute
called 'fork' to control whether a new process should be spawned
or not.
* Added attribute 'force' to task <xslt>. Use this attribute to
generate output that already exists and is newer than the input.
* Added task <input> to get input values.
* Added task <replace> to replace tokens or patterns in a file.
gec:
* First version of the Gobo Eiffel Compiler (gec) that is able to
compile everything in the Gobo package. However gec is not a
full-fledged Eiffel compiler yet. See the documentation for more
details.
getest:
* Added command-line option --default_test to specify whether the
feature `default_test' should be included in the generated test
cases.
gexmlsplit:
* Has been removed. Use gexslt instead.
Gobo Eiffel Argument Library:
* New command-line argument parsing library.
Gobo Eiffel Kernel Library:
* KL_WINDOWS_FILE_SYSTEM now accepts both \ and / as directory
separator. This is the default. It can still accept only \
as directory separator if you use the `make_backslash_only'
creation procedure.
* Change semantics of KI_FILE_SYSTEM.absolute_parent_pathname when
the argument is both a root directory (i.e. has no parent) and an
absolute pathname. In that case return the argument itself instead
of `absolute_root_directory' as before.
* Fixed bug in KL_(UNIX|WINDOWS)_FILE_SYSTEM.absolute_parent_pathname.
When the result was a root directory it was erroneously returning
`absolute_root_directory'. So if you were in 'C:\gobo' and asked for
the `absolute_parent_pathname' of 'D:\foo' you were getting 'C:\'
instead of the expected 'D:\'.
* Fixed bug in KL_WINDOWS_FILE_SYSTEM.canonical_pathname which for the
input '\\gobo\foo\..' was returning the invalid pathname '\\gobo\'
instead of '\\gobo\foo'. Likewise for 'c:\..', we were getting
'c:\..' instead of 'c:\'.
* Added `sharename' to KI_PATHNAME, so that UNC pathnames can be
split into '\\hostname\sharename'.
* Added classes for determining the class of Unicode
characters. Also updated code for conversion to lower and
upper case, and added code for conversion to title case.
These are generated from the Unicode Character Database.
Currently Unicode version 5.0.0 is supported.
* New features have been added to a new ancestor of ISE's STRING
class in order to support the classes STRING_32 and STRING_8
which have been introduced at ECMA. As a consequence, the
following features had to be renamed in class UC_STRING:
put_code -> put_item_code
append_code -> append_item_code
has_code -> has_item_code
index_of_code -> index_of_item_code
The new names are not great, but they match the feature `item_code'.
Gobo Eiffel Math/Decimal Library:
* Added creation procedure `make' to MA_DECIMAL_TEXT_PARSER and
MA_DECIMAL_BCD_PARSER.
* Renamed MA_DECIMAL_CONSTANTS as MA_DECIMAL_CONTEXT_CONSTANTS and
MA_DECIMAL_MATH as MA_DECIMAL_CONSTANTS.
* Added class MA_SHARED_DECIMAL_CONSTANTS.
* Moved `Maximum_integer_as_decimal' and `Minimum_integer_as_decimal'
from MA_DECIMAL_CONTEXT_CONSTANTS to MA_DECIMAL_CONSTANTS and
renamed them as `maximum_integer' and `minimum_integer'.
* Moved `default_context' from MA_DECIMAL_CONTEXT to MA_SHARED_DECIMAL_CONTEXT.
* Added a comment in MA_SHARED_DECIMAL_CONTEXT.set_shared_decimal_context
emphasizing the fact that it is best practice to call this routine
once and for all at the beginning of the application to avoid unexpected
behaviors.
Gobo Eiffel Parse Library:
* Added feature `suspend' (and its associated feature `is_suspended')
to YY_PARSER and its descendant YY_PARSER_SKELETON to be able to
suspend the current parsing. The next call to `parse' will resume
parsing in the state where the parser was when it was suspended.
Note that a call to `abort' or `accept' will force `parse' to parse
from scratch.
* Changed implementation of feature `syntax_error' in YY_PARSER_SKELETON
so that it returns false when nothing has been parsed yet.
Gobo Eiffel String Library:
* Added classes for normalizing Unicode strings.
* Removed useless precondition of feature `make_with_separators'
in ST_SPLITTER.
Gobo Eiffel Time Library:
* Added classes to parse and format XML Schema date, time and
date-time datatypes.
Gobo Eiffel XML Library:
* XSLT and XPointer are now sufficiently stable and mature to be
considered supported. XPath is supported for its use with
XSLT and XPointer as host languages, but a general interface
for host languages is not yet supported.
Version 3.4 - 10 July 2005
geant:
* Task <echo> supports writing message to a file.
* Targets support argument handling. Tasks <geant> and <precursor>
have been modified so that they are able to pass these arguments.
* Targets support 'obsolete' mechanism.
* Tasks <exit>, <ise>, <se>, <ve> support capturing the return code
of the called process.
* Task <available> supports checking for availablity of directories.
* If you use xsltproc and pass string parameters to it, you have to
surround those parameters with single quotes now.
* Task <ve> supports VE 5.0 with the attribute 'xace' to specify
Xace files. Attribute 'esd' is still supported when using VE 4.1.
* Added built-in variable 'verbose' which is set (to 'true') when
geant is run in verbose mode.
* Added attributes 'verbose', 'abort', 'generation', 'compilation'
and 'execution' to task <getest>.
gexace:
* Removed support for 'hact'.
* Added support for VE 5.0: 've' now generates Xace files for VE 5.0.
In order to generate ESD for VE 4.1 use 've41' instead.
gelex:
* Added command-line option '--pragma=[no]line' in order for
the code generated for the semantic actions to contain or
not indication about the line number where it originally
appeared in the input description file.
* Fixed bug in '%option line' with the -z option when two rules
were sharing the same semantic actions (with | separator).
* When not appearing in a character class, an unescaped [ character
is now considered to be the open character of a character class
and reports an error if there is no matching ] character. It used
to be considered as a non-special character when there was no
matching ] character.
geyacc:
* Following the changes made in version 3.2, YY_PARSER_SKELETON is
not a synonym of YY_OLD_PARSER_SKELETON anymore and can now be
used as a replacement of YY_NEW_PARSER_SKELETON. Also the default
command-line option is now '--new_typing'.
* Added command-line option '--pragma=[no]line' in order for
the code generated for the semantic actions to contain or
not indication about the line number where it originally
appeared in the input description file.
* Added command-line option '--doc=(html|xml)' to generate
documentation about the grammar in HTML or XML format.
getest:
* Added command-line options '--verbose' and '-v' to run
getest in verbose mode.
* In verbose mode getest prints the number of test cases
that have been generated.
Gobo Eiffel XML Library:
* XM_DOCUMENT.process_to_events makes the tree an event source.
* New XM_XMLNS_GENERATOR filter injects xmlns declarations
in event stream. It can be combined with a print filter.
* XM_FORMATTER is now a wrapper for the above and so
produces XML compliant output.
* XM_INDENT_PRETTY_PRINT_FILTER and XM_WHITESPACE_NORMALIZER
added to allow pretty indented output.
* XM_NAMESPACE_RESOLVER has new option to forward
xmlns attribute events (forward_xmlns).
* XM_DTD_CALLBACKS: `on_doctype' called first; `on_dtd_end',
`on_dtd_comment', `on_dtd_processing_instruction' added.
* New XM_XMLID_VALIDATOR validates xml:id attributes.
* Parser defaults to new STRING-only latin-1 mode.
* Parser correctly outputs PUBLIC identifier in DOCTYPE.
* Parser leaves XML resolver in correct state.
* XM_PARSER.positions contains full info to locate errors
in external entities.
* Eiffel parser accepts UTF8 files that start with a BOM.
* Expat parser accepts genuine UC_STRINGs as input.
Gobo Eiffel Kernel Library:
* Fixed bug in KL_PATHNAME.set_canonical.
* Added bit operation features to KL_INTEGER_ROUTINES.
* Added features `power', `div' and `mod' to KL_INTEGER_ROUTINES.
* Added feature `log2' to KL_DOUBLE_ROUTINES.
* Added feature `truncated_to_integer' to KL_DOUBLE_ROUTINES because
this routine is not supported anymore in SE 2.2b1.
* Added class KL_CLONABLE. This class should be used whenever
the corresponding objects need to be cloned. This is the
consequence of `clone' not being supported anymore in SE 2.2b1.
If you need to clone strings or arrays, use `cloned_string'
by inheriting from KL_IMPORTED_STRING_ROUTINES and `cloned_array'
by inheriting from KL_IMPORTED_ARRAY_ROUTINES. To a clone a
SPECIAL object, just call `twin' on it (does not work with
ISE 5.4, but works with ISE 5.5).
* KL_PLATFORM.Double_bits is not supported with SE 2.1 and 2.2b1
anymore. This is a consequence of DOUBLE being deprecated in
SmartEiffel and hence not supporting the required features.
* UC_STRING.infix "@" does not work as expected with SE 2.1. It
works well with the SE 2.2b and SE 1.0 though. This is the
consequence of the fact that STRING.infix "@" as been marked
as frozen in SE 2.2b1.
Gobo Eiffel Math/Decimal Library:
* New library, incorporated from the SAFE project (http://safe.sf.net).
* Contains MA_DECIMAL, which provides Decimal floating-point arithmetic,
with unrounded and integer arithmetic as a subset
(IEEE 754R + IEEE 854 + ANSI X3.274 + ECMA 334).
Gobo Eiffel String Library:
* New library.
* Contains the Formatter Library (note that unlike the imported
library, the array-based formatter requires DS_CELL items for
basic types, rather than accepting the _REF types).
* ST_SPLITTER: parse a string to and from lists of tokens.
Gobo Eiffel Time Library:
* Support clocks with precision to the millisecond. However
note that with SmartEiffel under Windows the millisecond part
may be stuck to zero.
* Better support for days of the week.
* Added support of week number of dates.
Gobo Eiffel Utility Library:
* UT_URI path is parsed into components: `path_items'.
* UT_HOST_PORT: new class for TCP hostname and port number.
Version 3.3 - 2 November 2003
geant:
* Fixed bug in task <gepp> occurring when a nested <fileset>
element defined in the new format was specified.
Gobo Eiffel XML Library:
* XM_EIFFEL_PARSER.disable_namespaces allows multiple
colons in names (strict XML compliance).
Gobo Eiffel Kernel Library:
* Removed usage of 'like argument' (will be removed from the
Eiffel language because it was a disguised way of providing
overloading in Eiffel) in features `substring', `to_lower',
`to_upper', `as_lower' and `as_upper' in KL_STRING_ROUTINES.
Version 3.2 - 29 June 2003
geant:
* Element <fileset> uses a new format. The old format is
still working but an obsolete-message will be shown when applied.
* Added optional attribute 'export' which takes a comma separated
list of project names to which the given target is exported.
* Added new command-line option -t (--targets) to list targets
and their descriptions.
* Added new task <available>.
* Added subelement <directoryset> to task <delete>.
* Added attributes 'class' and 'feature' to task <getest>.
* The task <hact> now takes advantage of Halstenbach incremental
compiler.
* Added attributes 'old_typing' and 'new_typing' to task <geyacc>.
geyacc:
* Made the semantic values more type-safe. Now the parser
skeleton class is not generic anymore, and there is one
different stack generated per declared type in the %type
or %token clauses. Geyacc also generates the corresponding
attributes `last_<type>_value' instead of `last_value'
to be used to set the semantic values of tokens.
Transition path: If you still want to use the old typing
mechanism (now made obsolete), use geyacc with the command-
line option --old_typing or with geant's attribute 'old_typing'
in task <geyacc>. It is also recommended that you replace
class YY_PARSER_SKELETON by YY_OLD_PARSER_SKELETON in your
code. Alternatively you can now switch to the new typing
mechanism using geyacc's --new_typing command-line option
or attribute 'new_typing' in task <geyacc> in geant. In
that case you will have to use the non-generic class
YY_NEW_PARSER_SKELETON instead of YY_PARSER_SKELETON and
replace the calls to `last_value' by the corresponding
`last_<type>_value' in your code. In the next release
YY_PARSER_SKELETON will stop to be a synonym of
YY_OLD_PARSER_SKELETON and will be used as a replacement
of YY_NEW_PARSER_SKELETON. In the release after, the old
typing mechanism will not be supported anymore, classes
YY_OLD_PARSER_SKELETON and YY_NEW_PARSER_SKELETON will be
removed, and you will have to use YY_PARSER_SKELETON along
with the `last_<type>_value' attributes in your code.
getest:
* Added command-line options --class and --feature to pass
the regexps for tested class names and feature names as
argument instead of through the 'class' and 'feature'
fields of the config file (needed by Guy Fokou).
* Better formatting of the message when `assert_equal' or
`assert_not_equal' fail (suggested by Berend de Boer).
Gobo Eiffel Lexical Library:
* Renamed `convert' as `convert_to_equivalence' in class
LX_SYMBOL_CLASS because 'convert' is a keyword in ETL3.
Gobo Eiffel Tools Library:
* Big chunks have been redesigned. Still under development.
Gobo Eiffel XML Library:
* Eiffel parser now accepts 'iso-8859-1' encoding.
* Tree formatter now produces valid XML.
* Tree node parent not void (when not the root node) implemented
where missing and creation procedures updated accordingly. Also
for the root element, so that `root_node' returns the real
root (XM_DOCUMENT). XM_NODE.level consequently offset by 1.
* XM_COMPOSITE now a read-only list. Modification routines
are in XM_ELEMENT and XM_DOCUMENT (typing is used to allow
only the correct node types to be added).
* XM_COMPOSITE descendants' modification routines remove
a node from its previous parent if any. They also have
`make_last' creation routines that add the node to the
composite. `make_last' is faster than `make', `force_last'.
* XM_NODE.parent_element added, root_node now XM_DOCUMENT.
* XM_NAMESPACE stricter contracts and uri invariant,
`is_default' replaced by `not has_prefix', removed rather
than obsoleted due to SmartEiffel's ANY using the name.
* XM_DOCUMENT.set_root_element now exported to ANY.
* XM_NAMESPACE_RESOLVER now issues empty strings (the default
namespace) rather than the parent element's namespace for
on_attribute events in the case of unprefixed attributes.
(XML Names says unprefixed attributes have no namespace.)
* XM_ELEMENT.*attribute_by_name only look for unprefixed
attributes, for the same reason as above.
* Added _by_qualified_name routines to tree nodes.
* XM_FORMATTER.last_string replaced by .last_output stream.
* XM_NODE_TYPER.attribute obsoleted and renamed to `xml_attribute'
to avoid future keyword collision.
Miscellaneous:
* Now uses the Eiffel Forum License version 2, which is an OSI
Approved License and a GPL-Compatible, Free Software License.
* Does not support Halstenbach compiler anymore. Indeed Halstenbach
does not seem to maintain/release their Eiffel compiler on their
Web site anymore and a poll among the Gobo users has shown that
it was not worth the effort to continue supporting this out-of-date
compiler in Gobo.
Version 3.1 - 18 December 2002
gelex:
* Feature YY_BUFFER.content is now of type KI_CHARACTER_BUFFER
instead of KL_CHARACTER_BUFFER (Berend de Boer).
geant:
* The task <ise> now takes advantage of ISE Eiffel incremental
compiler.
getest:
* Fixed bug: only the first cluster listed in the config file
was taken into account (reported by Guy Fokou).
Gobo Eiffel Kernel Library:
* Moved feature `close' up to KI_INPUT_STREAM and
KI_OUTPUT_STREAM and added feature `is_closable'
(suggested by Franck Arnaud).
* Made sure that `hash_code' in UC_STRING returns the same value
when `same_string' returns true.
Gobo Eiffel Lexical Library:
* LX_NFA: Renamed `infix "|{n,}|"' as `infix "|{*}|" and `infix "|{n}|"'
as `infix "|{}|"' because the former free operator is not valid in ETL3
anymore (and SE 1.0b6 already supports the new syntax). All the free
operators of this class have been made obsolete.
Gobo Eiffel Time Library:
* DT_DATE: Renamed `infix "&d"' as `infix "&@" because the former
free operator is not valid in ETL3 anymore (and SE 1.0b6 already
supports the new syntax).
* DT_TIME: Renamed `infix "&t"' as `infix "&|" because the former
free operator is not valid in ETL3 anymore (and SE 1.0b6 already
supports the new syntax).
Gobo Eiffel XML Library:
* Tree: `namespace' in named nodes is now an object, which
contains URI and prefix. It may be shared.
* Tree: `*_by_name' routines check the namespace is the same.
* Tree: `is_first' and `is_last' in XM_COMPOSITE for
checking position within parent.
* Tree: added `elements' to XM_COMPOSITE.
Version 3.0 - 1 September 2002
gelex:
* Added feature `wipe_out' to YY_BUFFER and YY_FILE_BUFFER,
which is useful in order to avoid invariant violation when
reusing the same input buffer for subsequent scanning.
(suggested by Emmanuel Stapf)
* Options specified on the command-line now override those
specified in the %option directives of the input file
(reported by Sven Ehrke).
geyacc:
* Added command-line options '-k' and '--tokens-file': name
of the file where the tokens class will be written
(reported by Sven Ehrke).
* Do not generate unused local variables anymore.
* Do not generate unused $N type conversion routines, nor
conversion routines for the generic parameters of these
types. This caused Eiffel compilation errors when the
generic parameter was a formal generic parameter
(reported by Zoran Simic).
* Fixed bug in default rule when the declared type is a basic
expanded type. For example when the declared type in the
%type section was INTEGER, the default rule was trying to
set $$ to Void instead of 0 (reported by Emmanuel Stapf).
getest:
* Added command-line options: -g for testcase generation
only, -c for testcase compilation only, and -e for
testcase execution only (suggested by Glenn Maughan).
* Added assertion routines to compare file contents and
filenames.
* Added command-line option --compile to pass the
Eiffel compilation command-line as argument instead of
through the 'compile' field of the config file.
* Added command-line options -D and --define to define
variables which will be passed to the command running
the test cases.
* The 'testgen' directory is now created by 'getest' if
it does not exist yet.
* Do not try to run the test anymore when the command
specified for the Eiffel compilation exists with a
status code other than zero.
gepp: