-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathCHANGES
1148 lines (902 loc) · 45.1 KB
/
CHANGES
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
Camlp5 Version 8.03.01:
--------------------
* [01 Oct 2024] update for Ocaml 5.3.0
* also merged minimal support for Windows (thank you @tobil4sk !)
Camlp5 Version 8.03.00:
--------------------
* [25 Apr 2024] update for Ocaml 5.2.0
Only really salient change (other than supporting new ocaml syntax)
is that the former Camlp5 revised-syntax "raw-identifier" syntax is
now removed in favor of the new Ocaml 5.2.0 raw-identifier syntax.
This should affect almost literally nobody, but just in case, the
old syntax was (e.g.) "\begin" and the new 5.2.0 syntax is "\#begin".
I highly doubt that anybody used the old syntax, since it was
undocumented and only available in revised mode, but hey, just in
case, letting you know I removed it.
BUT BUT BUT NOTE WELL this has impact on packages that use camlp5
internals, b/c some of the internal interfaces have changed. Specifically:
(1) if you use "camlp5 pa_r.cmo .... pr_o.cmo" to invoke the preprocessor
rather than
"not-ocamlfind preprocess -syntax camlp5r -package camlp5.pa_r,....,camlp5.pr_o"
you will need to add "o_keywords.cmo" before "pr_o.cmo" (this is
required by the need to print keywords for each syntax as escaped
raw identifiers. Since each syntax has a slightly different set of
keywords, the printer needs to be parameterized by the
keyword-table.
NOTE WELL that you are supplying the same "-syntax" and "-package"
args that you would if you were using
"ocamlfind ocamlc ....."
Basically, you take that second line and remove the ocamlc-specific
args (like -linkpkg, -linkall, -for-pkg, -c, etc).
(2) Similarly, if you use the Camlp5 lexer in your package, there is
a new field, "kwds", which is initialized to the keyword hashtable,
viz.
let kwd_table = Hashtbl.create 301 in
let glex =
{Plexing.tok_func = func ctx kwd_table glexr;
tok_using = using_token ctx kwd_table;
tok_removing = removing_token kwd_table;
tok_match = tok_match; tok_text = text; tok_comm = None ; kwds = kwd_table }
note the "kwds = kwd_table".
Camlp5 Version 8.02.01:
--------------------
* [04 Sep 2023] switch test code from pcre to pcre2
* [01 Sep 2023] switch from pcre to ocaml-re, add readthedocs config-file
Camlp5 Version 8.02.00:
--------------------
* [22 Jul 2023] update for OCaml 5.1.0
Camlp5 Version 8.00.06:
--------------------
* [31 Mar 2023] bugfixes, most notably improvements in quasi-quotation support
* switch to camlp5-buildscripts (away from Perl scripts)
* change install procedure for grammars so that installing more than
one grammar will cause an error
* minor parsing errors in official OCaml grammar (pa_o)
* continue factoring apart q_ast.ml and q_ast_base.ml so only the latter is needed for
quotations over other AST types.
Camlp5 Version 8.00.05:
--------------------
* [07 Feb 2023] switch from perl buildscripts to camlp5-buildscripts
Camlp5 Version 8.00.04:
--------------------
* [02 Dec 2022] (exceedingly modest) updates to support OCaml 5.0.0~beta2:
basically just changes to Makefile and opam
Camlp5 Version 8.00.03:
--------------------
* [28 Jan 2022] updates to support OCaml 4.14.0~alpha1
Camlp5 Version 8.00.02:
--------------------
* [03 Aug 2021] updates to support OCaml 4.13.0
Camlp5 Version 8.00.01:
--------------------
* [17 Jan 2021] No big changes, only bugfixes and minor ocaml 4.12.0 changes that should not break any code.
Camlp5 Version 8.00:
--------------------
* [26 Dec 2020] several changes
* support ocaml 4.12 syntax: injective type-parameters and prefix-ops containing hash.
* debug-printing via pa_ppx -- requiring 'pa_ppx.base' will load
'pa_ppx.deriving_plugins.show'-based pretty-printers for Camlp5's AST types.
Camlp5 Version 8.00-alpha07:
--------------------
* [18 Oct 2020] BIG change: the type of expressions (MLast.expr) is
switched to using longidents instead of the old "ExAcc"/"ExUid"
stuff. This is a vast improvement in correctness as well as
allowing better support for things like "M.N.( ... expr ...)"
The old quotation syntax <:expr< $e1$ . $e2$ >> is discontinued.
Instead you should use:
<:expr< $longid:li$ >>:
for a module-path or constructor
<:expr< $longid:li$ . ( $e$ ) >>:
for a local-open
<:expr< $e$ . $longid:li$ . $lid:id$ >>:
for a qualified field-name, e.g. x.Location.txt
<:expr< $e$ . $lid:id$ >>:
for a simple field-name, e.g. x.txt
Camlp5 Version 8.00-alpha06:
--------------------
* [01 Oct 2020] multiple small changes
* export "pa_macro_gram.cmo" as the findlib package "camlp5.macro_gram": this provides IFDEF support in grammars.
* in Q_ast, add "stri" as a valid antiquotation for str_item. And add tests.
* factored out base of Q_ast, so we can use it in PPX derivers that
generate quotations for other types than Camlp5's AST
Camlp5 Version 8.00-alpha05:
--------------------
* [24 Sep 2020] add support for 4.11.0 quoted-extension, viz {%foo|argle|} and
{foo bar|argle|bar}
* [19 Sep 2020] multiple small changes
* export more names from Reloc
* in Q_MLast, allow Qast.Node to take a dotted name, e.g. Qast.Node
"A.B.C" and convert it into an access-expression, so we can use
quotations over types not in MLast.
Camlp5 Version 8.00-alpha04:
--------------------
* [01 Sep 2020] Add support for Ocaml 4.11.1.
Support "#-types" with extended longidents (module-applications). Test support for same.
Camlp5 Version 8.00-alpha03:
--------------------
* [22 Aug 2020] Add support for Ocaml 4.10.1.
Camlp5 Version 8.00-alpha02:
--------------------
* [18 Aug 2020] fixed original-syntax pretty-printing bug in class-decl params.
* [16 Aug 2020] added "-version" to succinctly print out camlp5 version
(like "ocamlc --version").
Added "constructor" quotation to q_MLast and q_ast, we can
pattern-match with quotations, on constructor-declarations.
* [15 Aug 2020] fixed "-verbose" bug in mkcamlp5 (and updated doc)
* [13 Aug 2020] rehabilitated q_ast parsing kit and verified that it
works just as q_MLast does (for revised syntax). Still haven't done
so original syntax (and it won't, since original syntax has
ambiguities when introducing antiquotations everywhere).
Also rehabbed the "test" tests, but not all of them work
(e.g. "quot_o").
Changed revised syntax (only revised -- original syntax remains the
same) of GADT declarations to allow them to be pattern-matched with
quotations. Example: instead of
type t = A : t1 -> t2 -> t
use
type t = A of t1 and t2 : t
This allows quotations like
type t = [ A of $list:args$ : $t$ ] ;
* [05 Aug 2020] Fixed top/rprint so that in revised syntax toplevel
mode, exceptions get printed out correctly.
TODO: Devise a unit-test for this, and go thru and verify that it
works for all "outcometree" types.
* [01 Aug 2020] Added purely-internal "ppxprint" (PPX-derived printers
for AST types) so we can use it to debug. It's disabled by default,
so no external users should need to worry about it.
To enable, build camlp5 with "BOOTSTRAPPED=1" as an extra toplevel
make argument.
TODO: add this to the "configure" script.
* [30 Jul 2020] fixed parser lookahead-too-far bug in revised syntax.
Input {|(F.f 1);|} was causing lookahead to the token after the
semicolon.
* [25 Jul 2020] add "extfold" to META. Move much documentation from
README.md to Sphinx/RST docs. Add example of extending Ocaml syntax
to tutorial.
* [24 Jul 2020] update META to allow use of all syntax-extension kits
with original syntax. Some of these will be breaking; we'll undo
them as we find that they break (assuming nothing can be done to fix
the breakage).
Camlp5 Version 8.00-alpha01:
--------------------
* [07 Jul 2020] Massive number of changes to support PPX
extension/attribute syntax, PPX rewriters, and syntax changes thru
Ocaml 4.10.0. Also support for Ocaml 4.11.0, but not for syntax
changes therein (that'll come in the next release).
It is fair to say that this release has lots of incompatibilities
with the previous stream, hence the bump in major version number.
Many camlp5 users will find that things continue to work; others
will find that they do not, I'm happy to help them upgrade their
code. I'll maintain the 7.xx stream of code as long as I can (in
the face of Ocaml changes), but new function will appear here as
part of 8.xx. I'll try to list big changes below:
* New set of packages in META file, so you should be able to use
camlp5 almost exclusively via ocamlfind (not having to resort to
the camlp5{,r,o} commands).
* New documentation in Sphinx/RST format (thanks to Kakadu@ !) and
this is the documentation that will be updated, going forward.
I'll keep the old docs around for the next few releases until the
new docs are fully-updated and cleaned-up, but eventually they'll
get deleted.
* Support for all the syntax up to 4.10.0, including all PPX
attributes and extensions, parsed, represented in parsetree,
pretty-printed, passed properly to Ocaml compiler. Of course, all
the syntax is supported in "original" syntax; with few exceptions,
all of it is also supported in "revised" syntax.
* Most of the places where Ocaml introduced module-prefixes
(e.g. "M.N.(A e1 e2)") are now supported. The glaring exception
is in *expressions*, and this will be fixed in a coming release.
This means that instead of pattern-matching on (for instance)
patterns to take apart a module-prefix, you pattern-match to
extract a "longid" and that longid itself can be pattern-matched
to reveal the module-identifiers.
* Camlp5 version 7.11 added support for "blank module-binders" in
all syntax locatinos where module-names can be introduced (to
follow Ocaml's introduction of same), and also "empty" functor
arguments and argument-types", viz:
in struct-items:
module _ = struct ... end
module F = functor () -> struct ... end
module F = functor (_ : sig ... end) -> struct ... end
and many other locations (look in the Ocaml documentation for
those locations).
in signature-items:
module _ : sig ... end
This necessarily means that in places where there was a string
(module-id binder), you'll now have a string option; in places
where there was a "string * ctyp" (bound module-type) you'll have
"(string option * ctyp) option".
* This new version preserves compatibility with Ocaml versions >=
4.00.0, though new function (e.g. PPX syntax, is ONLY tested with
ocaml version 4.10.0 and above).
More precise: all pre-existing camlp5 function (module bugfixes
and API changes) should work with all ocaml versions; new function
only works with ocaml >= 4.10.0.
* A breaking change to the Grammar API of lib/grammar.mli. This can
only affect code that constructs grammar-rules programmatically,
rather than by using the "pa_extend.cmo" syntax. So literally no
code in camlp5 is affected. The only example I know of that is
affected is the "elpi" package.
Previously, a grammar-rule consisted in a tuple of a list of
symbols, and an "action" (code). Now, it is a thruple of: a list
of symbols, a hashcode (of the AST of the action), and the action.
This change is necessary to allow left-factorization to work
properly for, e.g. rules like
[ [ OPT [ "foo" ] ; x = INT ] | [ OPT [ "foo" ] ; x = STRING ] ]
because implicitly, the OPT symbol involves an action that returns
"()".
* a breaking change to the Plexing API of lib/plexing.mli. This can
only affect code that defines its own lexer (for example, defining
a new language wholly in camlp5). Please consult the definition
of the type "Plexing.Location' for details. The only downstream
package affected (that I know of) is "elpi".
Camlp5 Version 7.12:
--------------------
* [29 Apr 20] Added a new "topfind.camlp5" script that can be "#use"-ed
just like "topfind"; it defines #camlp5o and #camlp5r commands (like
topfind's #camlp4o and $camlp4r commands)
* [29 Apr 20] upgrade to minimal support for Ocaml 4.11.0
(specifically 4.11.0+dev2-2020-04-22). This does not provide
support for any new stuff in 4.11.0; indeed, stuff may break. This
is just minimal "build and bootstrap" support.
Camlp5 Version 7.11:
--------------------
* [26 Mar 20] forgot to add that this supports ocaml version 4.10.0.
added findlib packages for "camlp5.pr_o", "camlp5.pr_r" and "camlp5.pr_dump",
which load the appropriate archives into the toploop and preprocessor.
Added a "topfind.camlp5" file that can be "#use"ed instead of "topfind",
and will provide the commands "#camlp5o" and "#camlp5r".
* [29 Oct 19] Added compatibility with ocaml version 4.08.2.
* [29 Oct 19] Added compatibility with ocaml version 4.09.1.
* [03 Feb 20] Added compatibility with ocaml version 4.10+beta2.
* This release supports blank module-names in binders as well as
generative functors.
Camlp5 Version 7.10:
--------------------
* [24 Aug 19] Fixed problem of compatibility with ocaml versions less
than 4.08, lost after camlp5 version 7.08, making compilation of
camlp5 impossible. Due to dynamic loading.
Camlp5 Version 7.09:
--------------------
Camlp5 Version 7.08:
--------------------
* [02 Aug 19] Updated for (incoming) ocaml version 4.10.0.
* [02 Aug 19] Updated for ocaml version 4.09.0.
* [27 Jun 19] Updated for ocaml version 4.08.1.
* [27 Jun 19] Updated for ocaml version 4.08.0 (by github user madroach).
* [27 Jun 19] Added raw string syntax (by Check Murthy).
* [21 Dec 18] Fixed bug: in printer pr_o.cmo, comment did not get passed
through after "let in".
Camlp5 Version 7.07:
--------------------
* [10 Oct 18] Changed '/bin/rm' into 'rm' in Makefiles. Can be changed by
user by 'make RM=...'.
* [08 Oct 18] Updated for ocaml version 4.07.2.
* [19 Sep 18] Updated for ocaml upcomming version 4.08.0.
* [18 Sep 18] Fixed bug: using camlp5 in ocaml toplevel, the errors locations
in files (with #use) where not displayed.
* [30 Aug 18] Updated for ocaml version 4.07.1 and upcomming version 4.08.0.
Camlp5 Version 7.06:
--------------------
* [17 Jul 18] Support nonrec type declaration (Kakadu).
* [27 Jun 18] Updated for ocaml upcomming version 4.08.0.
* [19 Jun 18] Add support for OCaml 4.07.0
* [19 Jun 18] Fix OPAM file [in particular avoid the filesystem deletion bug]
* [06 Apr 18] Safe API for grammar extension (Pierre-Marie Pedrot).
Camlp5 Version 7.05:
--------------------
* [22 Feb 18] Fixed compilation failure when compiled with ocaml
versions 3.08.0 to 4.02.4 due to the time when the constructor
Pconst_integer was created (at ocaml version 4.03.0 actually).
* [22 Feb 18] Added compatibility with (old) ocaml version 4.03.3.
* [20 Feb 18] Changed "make install" and "make uninstall" so that they
do nothing if "configure" had failed.
Camlp5 Version 7.04:
--------------------
* [19 Feb 18] Updated for ocaml version 4.06.1 and 4.06.2.
* [02 Jan 18] Fixed missing treatment of native, 32 and 64 integers.
Camlp5 Version 7.03:
--------------------
* [20 Oct 17] Updated (again) for ocaml version 4.06.0.
Camlp5 Version 7.02:
--------------------
* [07 Oct 17] Updated for ocaml version 4.06.0.
* [22 Jul 17] Now "a.[i] := b" generates a call to Bytes.set instead
of String.set, as from ocaml version 4.02.0.
* [18 Jul 17] Updated for ocaml future version 4.05.1.
* [13 Jul 17] Compilation from OCaml version 4.00.0 now using parsetree
distributed with OCaml (-I +compiler-libs), no more the one copied from
OCaml sources (on ocaml_stuff directory). Set at "configure" time. (Not
fully implemented: the magic numbers are still read in ocaml_stuff
directory.) Is going to simplify Camlp5 update when new version of
OCaml is released.
* [11 Jul 17] Fixed problem of associativity in backtracking grammars,
preventing Coq to compile with CAMLP5PARAM=f or b.
Camlp5 Version 7.01:
--------------------
* [26 Jun 17] Fixed bug in associativity of entry levels in extensible
grammars; was introduced by an old experiment, resulting a failure
in Coq test-suite/success/rewrite_strat.v.
* [26 Jun 17] Fixed bug: compilation failed while using OCaml versions
between 3.05 and 4.01.1, and jocaml versions.
Camlp5 Version 7.00:
--------------------
* [26 Jun 17] Release number is 7.00 instead of 6.18 because of big
improvements on extensible grammars which can use now limited and
full backtracking algorithms on demand.
* [16 Jun 17] Entry.parse_token has been renamed Entry.parse_token_stream.
* [04 Jun 17] Added limited backtracking (functional streams) to extensible
grammars. Can be set with "Grammar.parse_algorithm Functional" or by
setting the environment variable CAMLP5PARAM=f.
* [01 Jun 17] Backtrack parsing seems to work well now. Camlp5 and Coq can
be compiled using it by setting CAMLP5PARAM=b.
* [31 May 17] Fixed bug: Entry.parse_token did not accept backtrack parsing.
* [31 May 17] Fixed ocaml parsing for case of record {foo () with ...}.
* [31 May 17] Fixed bug backtrack parsing for function Entry.of_parser.
* [28 Apr 17] Updated for ocaml 4.04.2 which was missing.
* [07 Apr 17] Updated for ocaml trunk 4.06.0
* [19 Feb 17] Fixed bug: locations of all identifiers were missing
resulting of error messages giving "<none>" as source file name
and no line and column number in the source.
* [04 Jan 17] Updated for ocaml trunk 4.05.0
* [09 Dec 16] Fixed bug: was not compatible with ocaml compiled with
option -safe-string.
* [09 Dec 16] Fixed bug: make uninstall did not take DESTDIR into account.
* [07 Dec 16] Fixed bug virtual methods in signatures generated syntax
tree of virtual val. Bug notified by Kakadu.
Ex: "class foo : object method virtual bar : bool end"
* [07 Dec 16] Fixed bug not separated idents were not allowed in
'let open' constructs. Bug notified by Kakadu.
Ex: "let open Mod1.Mod2.Mod3 in ..."
* [06 Dec 16] Fixed bug dumping module definitions with constraints.
Bug notified by Kakadu.
Ex:
module type Item = sig type t end
module type Sig = sig type t module Node : Item end
module Make (S : Sig) : Sig with module Node = S.Node and type t = S.t
* [06 Dec 16] Fixed bug extra option word during pr_dump for optional args.
Bug notified by Kakadu.
Ex: "class t : ?name:string -> object end"
* [05 Dec 16] Fixed bug dumping of open object types. Bug notified by Kakadu.
Ex: "type t = <f:int; .. >"
* [05 Dec 16] Fixed bug dump parsetree without throughing away module type
annotation. Bug notified by Kakadu.
Ex: "module rec A : sig end = struct end"
Camlp5 Version 6.17:
--------------------
* [09 Sep 16] Added pretty print of type [< ... ] when ended with "> `ident".
* [24 Jul 16] Added compatibility with ocaml 4.04.0 and 4.04.1.
* [24 Jul 16] Added compatibility with ocaml 4.03.1.
Camlp5 Version 6.16:
--------------------
* [28 Apr 16] Fixed problems of compatibility with previous versions of
ocaml.
Camlp5 Version 6.15:
--------------------
* [23 Jan 16] Fixed bug on optional types (ocaml 4.02).
* [15 Jan 16] Fixed bug on methods wrongly interpreted as vals.
* [05 Jan 16] Updated for ocaml trunk 4.03.0
(git version be2a7e2f830911b331657b8cfa462f5219dfec5b)
* [26 Nov 15] Updated again for ocaml trunk current version (4.03.0).
* [23 Sep 15] Updated for ocaml trunk current version (4.03.0).
Camlp5 Version 6.14:
--------------------
* [30 Jul 15] Updated for ocaml version 4.02.3 and 4.02.4
Camlp5 Version 6.13:
--------------------
* [20 Apr 15] Accept 'fun/try' case list like the change of 22nd Apr 13
on 'match' in revised syntax, allowing them to write "|" .. "end" or
"[" .. "]", both being accepted.
* [12 May 15] Updated for ocaml version 4.02.2
Camlp5 Version 6.12:
--------------------
* [17 Apr 14] Updated for ocaml trunk (4.02.0) svn rev 14621.
* [14 Apr 14] Updated for ocaml version 4.01.1.
* [19 Dec 13] Dummy line numbers are now 1 instead of -1 to prevent
errors that sometimes happen later at assembling phase.
* [19 Dec 13] Fixed problem in top/Makefile when OCLIBDIR contains spaces.
* [06 Sep 13] Added flag Grammar.utf8_print to print grammars entries
(with Grammar.Entry.print) displaying strings in utf-8 (default: True).
Usefull e.g. for Coq in command 'Print Grammar constr' when using utf8.
* [27 Aug 13] Fixed bug in normal syntax: "let f { x } = ...", "{ x }"
and "let open ..." were refused.
Camlp5 Version 6.11:
--------------------
* [22 Jul 13] Updated for ocaml version 4.01.0
* [02 Jul 13] Added 'MLast.loc_of_with_constr'.
* [02 Jul 13] Fixed bug toplevel with revised syntax; "= 'a" was missing
in output in that example:
# module type A = sig module type S = 'a; end;
module type A = sig module type S; end
* [02 Jul 13] Now accept lowercase ident for module types, like ocaml does.
Accepted also in revised syntax.
Camlp5 Version 6.10:
--------------------
* [19 Jun 13] Updated for ocaml version 4.01.0
* [14 Jun 13] (experimental) Now, in revised syntax, a "." followed by
a newline is interpreted as a ";", allowing to end phrases with ".".
Drawback: will syntax error when writing a record/module access in two
lines ending the first one with "." like:
foo.
bar
Camlp5 Version 6.09:
--------------------
* [22 Apr 13] Accept now "match with | | ... end" in revised syntax, with
a required "|" in the first case, as alternative syntax for match.
* [19 Apr 13] Added function 'Pcaml.value greek_ascii_equiv' giving
an ascii equivalent to a greek (utf8) letter representing a type
parameter. E.g. 'a' for 'α', 'b' for 'β', and so on.
* [19 Mar 13] Fixed bug no locations built in some cases of constructors.
* [15 Mar 13] Updated for ocaml version 4.00.2.
* [13 Mar 13] Fixed bug: in toplevel, the highlighting of errors did not
work.
* [13 Mar 13] Added option '-dquot' to specify the default quotation name.
and the ability to use "#option" directive with two parameters. Therefore,
we can use either (e.g.):
-dquot "expr"
in the command line of camlp5 or
#option "-dquot" "expr"
inside a file.
Camlp5 Version 6.08:
--------------------
* [06 Mar 13] Now 'make' displays a message how to compile, instead
of doing 'make out'. Old behaviour of 'make' must be now 'make out'.
* [28 Feb 13] Now accept identifiers starting with a greek letter as
variable names.
* [28 Jan 13] Fixed bug: DEFINE FOO=32 while using pa_macro.cmo did not work
due to a bad order in grammar insertion.
* [08 Oct 12] Fixed bug: parsing greek letters as type variable in
constructor declaration did not work when building Camlp5.
Camlp5 Version 6.07:
--------------------
* [12 Sep 12] Added compatibility with OCaml 4.00.1.
* [06 Jun 12] Fixed bug: open record patterns {a=b;c=d;_} did not work.
Camlp5 Version 6.06:
--------------------
* [01 Jun 12] Added compatibility with OCaml 4.00.0 and (incoming) 4.01.0.
* [18 Mar 12] Fixed bug in pr_o: [(let module M = ... in x); y] was
displayed without parentheses.
* [14 Mar 12] Added compatibility with OCaml 3.12.2.
* [02 Mar 12] Added compatibility with JoCaml 3.12.0 and 3.12.1.
* [02 Mar 12] Completed with all JoCaml statements in ocaml syntax.
Todo: pretty print.
Camlp5 Version 6.05:
--------------------
* [02 Mar 12] Added compatibility with JoCaml trunk.
* [02 Mar 12] Added option -oname in configure to change ocaml
command name. The bytecode compiler, native compiler and bytecode
runtime are respectively <oname>c, <oname>opt and <oname>run.
The default is 'ocaml', implying that the executables are ocamlc,
ocamlopt and ocamlrun. Setting it to 'jocaml', fo example, use
jocamlc, jocamlopt and jocamlrun.
Camlp5 Version 6.04:
--------------------
* [01 Mar 12] Added option -name in configure to change command name
useful to have transitional and strict versions installed with
different names. Default: camlp5.
* [01 Mar 12] The default mode at configuration time is now 'strict'.
Camlp5 Version 6.03:
--------------------
* [09 Jan 12] Updated compatibility with OCaml trunk version (3.13.0).
Camlp5 Version 6.02.3:
----------------------
* [20 Oct 11] Updated compatibility with OCaml current version 3.13.0.
* [20 Sep 11] Added missing syntax "_" in ending patt records (rev: "_ = _").
* [20 Sep 11] Fixed bug pattern -1L was refused in normal syntax.
* [21 May 11] Fixed bug impacting files using q_ast.cmo extension (bad ast).
* [03 May 11] Fixed bug: lexeme errors in revised syntax + utf8.
* [24 Mar 11] Fixed bug: M.(a+b) was refused in normal syntax.
* [16 Mar 11] Fixed bug: incorrect compilation of label patterns of the
form ~a:b (or ~{a = b} in revised syntax) in class declarations.
* [16 Mar 11] Fixed bug: error while printing label patterns ~a:b with
pr_o.cmo (error message "labels not pretty printed (in patt)").
Camlp5 Version 6.02.2:
----------------------
* [15 Mar 11] Fixed bug: bad AST generated for class identifier prefixed
by a module.
* [15 Mar 11] Fixed differences of locations between OCaml and camlp5o (e.g.
in .annot files)
* [17 Feb 11] Pretty module now considers strings as utf8 encoded (impacts
computation of strings lengths).
* [04 Feb 11] Revised syntax: completed syntax multi labels, ~{x=y; z=t}
(equivalent to ~{x=y} ~{z=t}) in patterns (in 6.02.1 was implemented
only in expressions).
* [28 Jan 11] Added installed module 'Reloc': relocations and equalities
over syntax trees.
* [26 Jan 11] Fixed bug in camlp5o.opt: did not accept '$' as token.
* [18 Jan 11] Fixed bug: private flags in type manifest were not correctly
treated.
* [06 Dec 10] Fixed bug in pr_o.cmo: label expressions were not correctly
pretty printed: f ~a gave f a.
Camlp5 Version 6.02.1:
----------------------
* [05 Dec 10] In module Grammar.Entry.print, added extra parameter ppf
to print in other formatter than (the default) stdout.
* [21 Nov 10] Revised syntax: added syntax multi labels, ~{x=y; z=t}
equivalent to ~{x=y} ~{z=t}
* [16 Nov 10] Updated compatibility with OCaml version 3.13.0-gadt.
Camlp5 Version 6.02.0:
----------------------
* [16 Nov 10] Fixed bug in pa_o.ml: !foo.(bar) was interpreted as !(foo.(bar))
instead of (!foo).(bar). Fixed compilation bug in pa_o.ml in transitional
mode.
* [16 Nov 10] Added parsing and printing utf8 greek letters and arrow in
revised syntax.
Camlp5 Version 6.02:
--------------------
* [12 Nov 10] Added compatibility with OCaml GADT version.
* [12 Nov 10] pa_macro: added ability to use ELSIFDEF in match cases (the
ending ELSE part being still optional).
* [08 Nov 10] Fixed bugs 1/ in pa_o: !Foo.bar was interpreted as (!Foo).bar
instead of !(Foo.bar) 2/ in top/camlp5_top.cma: the file ast2pt.cmo was
missing.
Camlp5 Version 6.01:
--------------------
* [03 Nov 10] Added in revised syntax for labels ~{lab x = y} as shortcut
for ~{lab = fun x -> y}.
* [30 Oct 10] Fixed bug in 'configure': option -libdir did not work.
Camlp5 Version 6.00:
--------------------
* [28 Oct 10] Updated compatibility with OCaml trunk version (3.13.0).
* [01 Oct 10] Make compilation with "make -j" (parallel make) work.
* [29 Sep 10] Fixed bug when using constructors named 'True' and 'False'.
* [24 Sep 10] Fixed many bugs of parsing comments (typically about quotes).
* [23 Sep 10] Fixed bug in pretty printing comments containing '"'.
* [22 Sep 10] Fixed bug bad result of unary minus functions.
* [22 Sep 10] Fixed bug in printing parameters of types of 'with constraint'.
* [22 Sep 10] Fixed bug in revised syntax for class_types. Now application.
does not need parenthesis any more (like for other entries of that kind).
* [19 Sep 10] In grammars, added list with separator with optional ending
separator (LIST0 .. SEP OPT_SEP and LIST1 .. SEP OPT_SEP).
* [19 Sep 10] Completed missing statements in particular in objects,
classes, and first class modules.
* [08 Sep 10] Added option '-flag O' of pr_r.cmo and pr_o.cmo which
add location comments in the output.
* [08 Sep 10] Added new chapters in the documentation:
- Directives
- Redefining OCaml syntax
* [08 Sep 10] Fixed option '-flag E' (equilibrate cases) of pr_r.cmo and
pr_o.cmo which did not work.
* [06 Sep 10] Changed revised syntax of 'inherit something [params]'
into 'inherit [params] something' (like in normal syntax).
* [06 Sep 10] Added missing statements:
- 'module type of' as module type,
- '(module ... : ...)' as expression,
- '(val ...)' ('value' in revised syntax) as module expression.
* [02 Sep 10] Added directive "#option" (in files, not in toplevel).
* [02 Sep 10] pa_macro.cmo: phrases inside IFDEF statements now are
implementation or interface items, which means:
- ability to use directives which are, therefore, conditional.
- in revised syntax must end with semicolon (incompatibility with
previous versions of Camlp5 where these semicolons are syntax
errors).
- in revised syntax, ability to put several phrases without having
to use "declare .. end".
* [30 Aug 10] pa_macro.cmo: added ability to use ELSIFDEF and ELSIFNDEF
in expressions, structure items and signature items.
* [27 Aug 10] Fixed bug in pa_macro.cmo A AND B computed B AND B.
* [26 Aug 10] Fixed wrong behaviour: char '"' was printed '\"'.
* [25 Aug 10] Added option -no-opt in configure, not to use .opt versions
of OCaml compilers.
* [20 Aug 10] Added compatibility for OCaml version 3.11.3.
* [18 Aug 10] Added function "get" in library module "Ploc", and a
statement "lprintf" similar to "pprintf" added by the syntax
extension kit "pa_pprintf.cmo".
Camlp5 Version 5.15:
--------------------
* [09 Aug 10] Updated compatibility for OCaml current version 3.12.1.
* [09 Aug 10] Upgraded compatibility for OCaml released version 3.12.0.
* [29 Jul 10] Added ability to write AST quotations with a colon before
the '<' (e.g. "<:expr:< foo >>") which, in pattern position, generates
a binding of the variable "loc" at the top node:
1/ normal usage (still working):
"fun [ <:expr< x >> -> 0 ]"
which is equivalent to:
"fun [ MLast.ExLid _ (Ploc.VaVal "x") -> 0 ]
2/ new usage:
"fun [ <:expr:< x >> -> 0 ]"
which is equivalent to:
"fun [ MLast.ExLid loc (Ploc.VaVal "x") -> 0 ]
* [21 Jun 10] Added compatibility for OCaml trunk version 3.13.0.
* [29 Apr 10] Fixed bug in pr_depend.cmo: a.B.c did not add module B.
Camlp5 Version 5.14:
--------------------
* [28 Apr 10] Updated compatibility for OCaml current version 3.12.0.
* [31 Mar 10] Fixed bug in pr_o.cmo: error message when using "#use"
Camlp5 Version 5.13:
--------------------
* [02 Nov 09] Added compatibility with OCaml 3.11.2.
* [02 Nov 09] Updated compatibility with OCaml 3.12.0.
* [30 Jul 09] Added 'lazy' patterns (added in OCaml version 3.11).
* [09 Jun 09] Fixed bug in pr_r.cmo: did not always break after "in" (in
"let..in" statements) even with -flag l.
* [08 Jun 09] Fixed bug in pr_r.cmo: missing case "#use" for structure and
signature items.
Camlp5 Version 5.12:
--------------------
* [23 May 09] Added compatibility with OCaml 3.11.1.
* [31 Dec 08] In macros (pa_macro.cmo):
- added ability to use IFDEF and IFNDEF for record labels declarations.
Camlp5 Version 5.11:
--------------------
* [19 Dec 08] Added compatibility with OCaml 3.12.0.
Camlp5 Version 5.10:
--------------------
* [16 Oct 08] Added compatibility with OCaml 3.11.0.
* [01 Aug 08] Added flag "Plexer.utf8_lexing" to specify that the lexers
built by "Plexer.gmake ()" must consider the input as utf-8 encoded.
Camlp5 Version 5.09:
--------------------
* [05 Jun 08] Changed all '#!/bin/bash" in shells scripts into '#!/bin/sh'
and changed all $(...) into `...` because there are compatibilities
problems according to Unix versions.
* [31 Mar 08] Fixed bug: "let f ~_x () = ()" generated syntax error.
* [31 Mar 08] Fixed bug: "x $ y" generated syntax error (normal syntax).
* [02 Jan 08] Added compatibility with OCaml 3.10.3.
Camlp5 Version 5.08:
--------------------
* [08 Feb 08] Fixed bug in normal syntax: a.{x,y} (access to big array) was
interpreted as a.{(x,y)}.
* [22 Jan 08] Added missing cases in printers pr_o and pr_r which displayed
the message "unable to print ...".
* [02 Jan 08] Added compatibility with OCaml 3.09.4 and 3.10.2.
* [21 Jan 08] Fixed bug under windows: the file META could not be build
if the library path name contained colons.
* [13 Jan 08] Added missing man page for camlp5sch (link to the same man
page as camlp5).
* [05 Jan 08] Added "pr_extprint.cmo", printer rebuilding EXTEND_PRINTER
statements in their original syntax.
* [05 Jan 08] Fixed bug in EXTEND_PRINTER statement: the match cases with
"when" did not work.
Camlp5 Version 5.07:
--------------------
* [02 Jan 08] Added "pprintf" statement to use the Camlp5 pretty print
system more easily and shortly.
* [27 Dec 07] Added function [Grammar.Entry.parse_all] returning the
list of all solutions when using the parsing algorithm [Backtracking].
Camlp5 Version 5.06:
--------------------
* [19 Dec 07] Upgraded to add compatibilitly with OCaml version 3.10.1.
Camlp5 Version 5.05:
--------------------
* [17 Dec 07] Added function [Pcaml.quotation_location] returning the
location of the quotation in the source in the context of a quotation
expander.
* [04 Dec 07] Added generation of file META for ocamlfind in directory
etc (built but not installed).
* [28 Nov 07] Upgraded to reflect changes done in parse tree in current
OCaml (version 3.11+dev6).
* [27 Nov 07] Fixed bug in installation. Some files where installed in
the bin directory instead of lib directory.
* [27 Nov 07] Fixed bug in parsing comments: comments containing '\' where
incorrectly parsed.
Camlp5 Version 5.04:
--------------------
* [24 Nov 07] Fixed bug in install under MSVC Windows: object and library
files were not installed (using wrong extensions).
* [24 Nov 07] Fixed bug under Windows: line numbers in error messages were
wrong (twice the normal value).
* [24 Nov 07] Added ability to change the parsing algorithm of extensible
grammars, with the function "Grammar.set_algorithm" whose parameter can
be "predictive" or "backtracking".
* [22 Nov 07] Added backtracking parsers. Functions defined in the module
Fstream (already containing functional streams and parsers). Syntax
added in pa_fstream.cmo (already containing syntax for functinal streams
and parsers). The new syntax uses "bparser" instead of "fparser" and
a backtracking parser returns, together with its result and its
remaining stream, the continuation to compute the next solution.
Camlp5 Version 5.03:
--------------------
* [20 Nov 07] Added commands mkcamlp5 and mkcamlp5.opt to build camlp5
executables with predefined loaded modules. Added installation of ocpp
with name ocpp5, instead of just ocpp.
* [19 Nov 07] Added more installed cmx and cmxa files to allow building
native code linking of all combinations of Camlp5.
* [14 Nov 07] Fixed bug in pr_o.cmo: failed with printing "{a.(i) with ...}".
* [14 Nov 07] Fixed bug under Windows for the printers (pr_o.cmo, pr_r.cmo
and pr_scheme.cmo): extra return character '\r' was added at end of
lines.
* [09 Nov 07] Fixed bug in camlp5o.opt in strict mode: did not parse
correctly, in particular type expression (the version "camlp5o" without
".opt" however worked).
* [29 Oct 07] Added [Pcaml.inter_phrases], a way to set, by program,
the value of the "-sep" option of the printers kits.
* [28 Oct 07] Fixed bug in pa_fstream.cmo (functional parsers): the
keyword after "match with" was "parser" instead of "fparser" and
its code was wrong.
* [27 Oct 07] Added a default lexing buffer (in module [Plexing]) for
pa_lexer.cmo: then, the programmer does not need to write it any
more.
Camlp5 Version 5.02:
--------------------
* [14 Oct 07] Changed 'pa_lex.cmo' into 'pa_lexer.cmo' with a different
syntax (see the documentation).
* [14 Oct 07] In the EXTEND statement, added "LIKE s" as possible
level position to specify a level containing a rule containing "s"
in its keywords or tokens.
* [11 Oct 07] Rewritten parsers and printers in Scheme syntax. Deleted
old module Spretty.
Camlp5 Version 5.01:
--------------------
* [06 Oct 07] Fixed bug in grammars: there was a parsing confusion with
entries with qualified names with same final identifier, resulting
bad results. Example: (qualified names "Prim.ident" and "Constr.ident"
have the same final identifier "ident").
EXTEND
Prim.ident: [ [ ... ] ];
Constr.ident: [ [ ... ] ];
END;
* [05 Oct 07] In Scheme syntax (pa_scheme.cmo), added "type*" (symmetric
to "define*") and "exceptionrebind".
* [04 Oct 07] Added flag C in pr_r.cmo and pr_o.cmo to add comments inside
phrases (default = True).
* [01 Oct 07] Added flag E in pr_r.cmo and pr_o.cmo to ask to equilibrate
cases in 'match', 'if', 'parse', 'EXTEND' statements, i.e if one case does
not fit on the line, all cases must be cut (default = False).
* [01 Oct 07] Added module "Diff" in the library (general comparison of
two arrays). Implemented with the same algorithm as the Unix 'diff'
command.
* [01 Oct 07] Fixed bug in pa_o.cmo (normal syntax) introduced in version
5.00. The example: "function Atom atext as cur :: tl' -> 0" did not
parse, printing the error "incorrect alias pattern".
Camlp5 Version 5.00:
--------------------
* In Camlp5 compiled distributions, there are now two modes. If one wants
to compile Camlp5, the 'configure' script can select the mode:
The two modes are:
- transitional mode: the syntax tree is compatible with the previous
version; users don't have to change their programs, but in the
syntax tree quotations introduced by the new parsing kit
'q_ast.cmo', the antiquotations are not available.
- strict mode: the syntax tree is not compatible with the previous
version. The user programs may compile without change, but may
not. It depends on the fact that these programs use the syntax
tree with their constructors forms instead of their quotation
forms. There is a new feature: the syntax tree quotations in user
syntax, introduced by the new parsing kit 'q_ast.cmo".
* [25 Sep 07] Fixed bug: if parsing error at end of file, the error
message printed a bad line number.
* [17 Sep 07] Added [Ploc.call_with], a pervasive function.
* [15 Sep 07] Added 'q_ast.cmo': this is the syntax tree quotations in
the current syntax, including the possible user syntax extensions.
The antiquotations work only in 'strict' mode, not in 'transitional'
mode.
* [15 Sep 07] In module Pcaml, added grammar entries 'ipatt', 'match_case',
'constructor_declaration', 'with_constr', 'poly_variant'.
* [09 Sep 07] In macros (pa_macro.cmo):
- changed parameters syntax: now in curried form instead of parentheses,
- added ability to define macro type expressions in signatures, e.g.:
DEFINE V t = t -> t
- added ability to use IFDEF and IFNDEF for constructors declarations and
matchs cases.
* [08 Sep 07] Fixed bug in normal syntax (pa_o.cmo):
class foo : ?foo:unit -> bar
type foo = ?bar: unit -> unit;;
were accepted but not with space(s) after the colon:
class foo : ?foo: unit -> bar
type foo = ?bar : unit -> unit;;
* [06 Sep 07] Fixed problem of bad errors locations in Lisp and Scheme
syntaxes.
* [01 Sep 07] Renamed modules Stdpp into Ploc and Token into Plexing.
Changed the names of some of their definitions. Backward compatibility
assumed.