(Beta) 0.2
From doc/changelog.txt:
API SIMPLIFICATION
- IntroType changes:
type->i_struct->count_members => type->count
type->i_struct->members => type->members
type->i_enum->count_members => type->count
type->i_enum->members => type->values
type->i_enum->is_flags => type->flags & INTRO_IS_FLAGS
type->i_enum->is_sequential => type->flags & INTRO_IS_SEQUENTIAL
type->array_size => type->count
intro_size(type) => type->size
<unavailable> => type->align
if (type->of) => if (intro_has_of(type))
('of' now shares storage with other fields)
- IntroFunction changes:
func->type->args->count => func.count_args
func->type->args->types => func.arg_types
func->type->of => func.return_type
- Removed IntroStruct, IntroEnum, and IntroTypePtrList
- Removed all usage of flexible array members in introlib
- New IntroContainer system provides a simple API for recursively working
on data while retaining context for how the data was accessed.
CITY IMPROVEMENTS
- support for unions (using the "when" attribute)
- much better handling of pointers
- city file data can now be discarded after load
- reduction in serialized data size
ATTRIBUTES
- Support for struct values including C99 style initialization
- New "expr" attribute type generates bytecode for expressions
that can access struct/union members.
- The "length" attriubte is now an expression. This is useful if the size
of data is dependent on multiple variables, for example
"I(length map_width * map_height)" could be used to define the size of
a tilemap buffer.
- New builtin attribute "when" for using an expression to dynamically
determine when a struct/union member is valid.
- The "string" attribute type has been removed. Use "value(char *)" instead.
NEW PARSER FEATURES
- '#prama intro' can be used to control what parts of a file should have
information generated
- push, pop
- enable [x], disable [x] where x is either omitted or one of the
following: functions, macros, all, includes, system
- Macro information generation (use pragma "enable macros")
- Vim syntax generation with --gen-vim-syntax
- Performance metrics report with option '-V'
IMPLEMENTATION CHANGES
- Struct member offsets are now known at parse time.
- Enables more features in the parser.
- NOTE: pack(x), __attribute__((aligned(x))), etc. are not yet implemented
- Generated headers are much more concise (no more offsetof's)
- Files are now tokenized all at once. Previously, the preprocessor and
parser would tokenize as needed. This simplifies the preprocessor and
parser.
OTHER
- intro_print() improvements
- Miscellaneous fixes and improvements