The main difference is that the multitude of defect reports that were issued
against CCITT Rec. X.208 have been corrected in ITU-T Rec. X.680 - X.683|ISO/IEC
8824-1,2,3,4. With X.208, there were many ambiguities in the notation that made
it possible to write ASN.1 modules which, when implemented, resulted in
non-interoperability even though both peers were fully conformant to X.208 and
X.209. The most visible manifestations of these bug fixes are the replacement of
the macro notation and
ANY/
ANY DEFINED BY, a change in the
CHOICE value notation, and the mandatory presence of identifiers in the
definitions of
SET,
SEQUENCE and
CHOICE types.
The ability to smoothly extend types in future versions of a protocol has
been added by introducing the extension marker ("
..." notation) for
indicating where extensions are permitted to occur. Several new character string
types were also introduced for better support of international languages or
alphabets, including one new type
CHARACTER STRING that allows the
alphabet to be determined at runtime.
Compared to the 1997 edition, the 2015
edition of ASN.1 provides the following new features:
- an XML notation that can be used to define abstract values in an ASN.1
module;
- decimal notation (e.g., 1.5e3) for REAL values;
- a new RELATIVE-OID type for relative object identifiers;
- a new subtype constraint (CONTAINING/ENCODED BY) to
constrain the content of an octet string or a bit string;
- a subtype constraint by regular expressions (PATTERN) for character
string types;
- a semantic model which clearly defines the rules for type and values
compatibilities;
- multi-line comments à la C or Java (i.e., between /* and
*/);
- the new X.692 Recommendation which provides an Encoding Control Notation
(ECN) for the definition of proprietary encoding rules.