4 (1) DONE - In bitmatch operator, use patterns not expressions.
6 (2) DONE - Allow matching against strings.
8 (3) DONE - Change the syntax so { ... } surrounds match patterns.
10 (4) Provide UInt32 and UInt64 types.
12 (5) Allow for specific offsets and alignment. Something like this:
15 another : 16 : offset(256); (* location would be 256 bits from start *)
21 another : 16 : align(32); (* implicit 16 bit gap before this *)
26 { start : 16 : assert (offset = 0); }
28 (Q: Are these evaluated at compile time or at run time or selectable?)
30 (8) Named but unbound patterns to avoid "Warning Y: unused variable".
33 Make the error locations fine-grained, particularly so they point to
34 individual fields, not the whole match.
36 (10) Cross-module, persistent, named patterns, see:
37 http://caml.inria.fr/pub/ml-archives/caml-list/2008/04/25992c9c9fa999fe1d35d961dd9917a2.en.html
39 (11) Runtime endiannness expressions. The suggested syntax is:
41 { field : len : endianness(expr) }
43 where expr would evaluate to something like `BigEndian or
46 There are several protocols around where endianness is only
47 determined at runtime, examples are libpcap and TIFF.
49 (12) DONE - More constant field lengths.
51 (13) Implement native endian functions.
53 (14) A proper test suite.