Skip to content

Commit 002fd21

Browse files
mjambonclaude
andauthored
Fix support matrix (#467)
* Add feature support matrix to documentation Adds internal/src/main.ml, a small OCaml program that encodes which ATD features each backend supports (Yes/Planned/No) and generates an RST page. Run `make` in internal/ to regenerate doc/support-matrix.rst. The matrix is included in the ATD Project page in the Sphinx docs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * support-matrix: replace 'shared' with 'binary_serialization' 'shared' was specific to Biniou/OCaml and is no longer supported. Replace it with 'binary_serialization' (Biniou format), supported only by atdgen. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix support matrix data * s/Dart/D/ * Remove duplicate files --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 371ad51 commit 002fd21

File tree

4 files changed

+30
-28
lines changed

4 files changed

+30
-28
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ all-supported-ocaml-versions:
120120

121121
.PHONY: doc
122122
doc:
123+
make -C internal support-matrix
123124
cd doc && sphinx-build . _build
124125

125126
# Run documentation server.

atd.opam

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ depends: [
9696
"menhir" {>= "20180523" & != "20211230"}
9797
"easy-format"
9898
"alcotest" {with-test}
99+
"testo" {>= "0.3.0" & with-test}
99100
"odoc" {with-doc}
100101
"re" {>= "1.9.0"}
101102
"yojson" {>= "1.6.0"}

doc/support-matrix.rst

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.. Generated by internal/src/main.ml. Do not edit directly.
1+
.. Generated by internal/support_matrix.ml. Do not edit directly.
22
Run 'make' in internal/ to regenerate.
33
44
Feature Support Matrix
@@ -11,42 +11,42 @@ Basic types
1111

1212
unit, bool, int, float, string
1313

14-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
14+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
1515

1616
Abstract type
1717
~~~~~~~~~~~~~
1818

1919
Any JSON value (abstract keyword)
2020

21-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
21+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
2222

2323
List / array
2424
~~~~~~~~~~~~
2525

2626
The list type constructor
2727

28-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
28+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
2929

3030
Option type
3131
~~~~~~~~~~~
3232

3333
ATD-style "None" / ["Some", x] encoding
3434

35-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
35+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
3636

3737
Nullable
3838
~~~~~~~~
3939

4040
JSON null <-> None, other value <-> Some x
4141

42-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
42+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
4343

4444
Wrap type
4545
~~~~~~~~~
4646

4747
Custom type wrappers ('a wrap)
4848

49-
**Supported:** atdml (OCaml), atdgen (OCaml), atdts (TypeScript), atdd (Dart), atdcpp (C++)
49+
**Supported:** atdml (OCaml), atdgen (OCaml), atdts (TypeScript), atdd (D), atdcpp (C++)
5050

5151
**Not yet:** atdpy (Python), atdj (Java), atds (Scala)
5252

@@ -55,49 +55,49 @@ Records
5555

5656
Record types with named fields
5757

58-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
58+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
5959

6060
Sum types
6161
~~~~~~~~~
6262

6363
Tagged unions / variants
6464

65-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
65+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
6666

6767
Tuples
6868
~~~~~~
6969

7070
Fixed-arity product types
7171

72-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
72+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
7373

7474
Parametric types
7575
~~~~~~~~~~~~~~~~
7676

7777
Generic / parameterized type definitions
7878

79-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
79+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
8080

8181
Type aliases
8282
~~~~~~~~~~~~
8383

8484
Simple aliases (type t = int list)
8585

86-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
86+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
8787

8888
Optional fields
8989
~~~~~~~~~~~~~~~
9090

9191
?field — absent JSON key <-> None
9292

93-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
93+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
9494

9595
Default-value fields
9696
~~~~~~~~~~~~~~~~~~~~
9797

9898
~field — absent JSON key uses a default
9999

100-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
100+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
101101

102102
Doc comments
103103
~~~~~~~~~~~~
@@ -106,21 +106,21 @@ Doc comments
106106

107107
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala)
108108

109-
**Not yet:** atdd (Dart), atdcpp (C++)
109+
**Not yet:** atdd (D), atdcpp (C++)
110110

111111
JSON field names
112112
~~~~~~~~~~~~~~~~
113113

114114
<json name="..."> on record fields
115115

116-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
116+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
117117

118118
JSON variant names
119119
~~~~~~~~~~~~~~~~~~
120120

121121
<json name="..."> on sum type constructors
122122

123-
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
123+
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
124124

125125
Assoc as JSON object
126126
~~~~~~~~~~~~~~~~~~~~
@@ -129,7 +129,7 @@ Assoc as JSON object
129129

130130
**Supported:** atdml (OCaml), atdgen (OCaml), atdpy (Python), atdts (TypeScript)
131131

132-
**Not yet:** atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
132+
**Not yet:** atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
133133

134134
JSON adapter
135135
~~~~~~~~~~~~
@@ -138,7 +138,7 @@ Custom pre/post-processing hooks
138138

139139
**Supported:** atdml (OCaml), atdgen (OCaml)
140140

141-
**Not yet:** atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
141+
**Not yet:** atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
142142

143143
Cross-file imports
144144
~~~~~~~~~~~~~~~~~~
@@ -147,7 +147,7 @@ from module import type1, type2
147147

148148
**Supported:** atdml (OCaml), atdpy (Python), atdts (TypeScript)
149149

150-
**Not yet:** atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
150+
**Not yet:** atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
151151

152152
**Not supported:** atdgen (OCaml)
153153

@@ -158,7 +158,7 @@ Biniou format: faster than JSON, field/constructor names encoded as low-collisio
158158

159159
**Supported:** atdgen (OCaml)
160160

161-
**Not supported:** atdml (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
161+
**Not supported:** atdml (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
162162

163163
Open enumerations
164164
~~~~~~~~~~~~~~~~~
@@ -167,7 +167,5 @@ Unknown variants round-tripped as-is
167167

168168
**Supported:** atdgen (OCaml)
169169

170-
**Not yet:** atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (Dart), atdcpp (C++)
171-
172-
**Not supported:** atdml (OCaml)
170+
**Not yet:** atdml (OCaml), atdpy (Python), atdts (TypeScript), atdj (Java), atds (Scala), atdd (D), atdcpp (C++)
173171

internal/Makefile

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@ DUNE := dune
2424
ROOT := ..
2525
OUT := $(ROOT)/doc/support-matrix.rst
2626

27-
.PHONY: all build
27+
.PHONY: all build support-matrix
2828

29-
all: build
30-
cd $(ROOT) && $(DUNE) exec internal/src/support_matrix.exe > doc/support-matrix.rst
29+
all: support-matrix
30+
31+
support-matrix: build
32+
cd $(ROOT) && $(DUNE) exec internal/support_matrix.exe > doc/support-matrix.rst
3133

3234
build:
33-
cd $(ROOT) && $(DUNE) build internal/src/support_matrix.exe
35+
cd $(ROOT) && $(DUNE) build internal/support_matrix.exe

0 commit comments

Comments
 (0)