Hello, It is my pleasure to announce MELT plugin 0.9 release candidate 2.
MELT provides a Lispy domain specific language to ease the coding of GCC extensions, with high-level features (dynamic typing, reflection, object-oriented, functional/applicative, and pattern-matching) while dealing well with GCC internals. The MELT language is translated to C. The NEWS are the same as for 0.9rc1 announced yesterday. I believe that the bug reported by Alexandre Lissy on http://groups.google.com/group/gcc-melt/msg/2a23f12c6f0d7f02 has been corrected. > ####################################################################### > NEWS for 0.9 MELT plugin for gcc-4.6 > > September 2011: Release of MELT plugin 0.9 rc1 for gcc-4.6 > > New features: > > Documentation is generated > > The PLUGIN_PRE_GENERICIZE event is interfaced. > > The build machinery and the binary module loading has been > significantly updated. Modules shared objects are like > warmelt-macro.3461497d8ef7239dc1f2f132623e6dd5.quicklybuilt.so and > they contain the md5sum of the catenation of all C files. They > also come in various flavor: quicklybuilt (the generated C is > compiled with -O0 -DMELT_HAVE_DEBUG), optimized (the generated C > is compiled with -01 and without -DMELT_HAVE_DEBUG), debugnoline > (the generated C is compiled with -g and -DMELT_HAVE_DEBUG but no > #line directives). > > Conceptually, a module is loaded by loading its +meltdesc.c > file. That file (e.g. warmelt-macro+meltdesc.c corresponding to > warmelt-macro.melt) should never be moved or even edited. It is > parsed at module load time, and contains the various md5sum of > real generated C files. > > New option -fplugin-arg-melt-workdir= for the work directory, > where every .c or .so files are generated. > > The DISCR_BOX discriminant has been removed. Use containers instead. > > Containers, that is instances of class_container having one single field > :container_value, are supported by syntactic macros and sugar & function. > (container V) > =equivalent= (instance class_container :container_value V) > (content C) > =equivalent= (get_field :container_value C) > (set_content C V) > =equivalent= (put_fields C :container_value V) > You can write exclaim instead of content, and there is a new syntactic > sugar > !X > > is the same as (content X) - the exclamation mark should be > followed by spaces, letters, or left parenthesis to be parsed as > exclaim -that is as the content macro above. > > In patterns, ?(container ?v) means > ?(instance class_container :container_value ?v) > > Fields can be accessed by their name, so > (:F C) > is the same as (get_field :F C) > Hence (:container_value foo) is the same as !foo or > (get_field :container_value foo) > > Experimental syntactic sugar: inside an s-expr, a macro string > written ##{...}# is expanded as several components, not a single > list. > > Slow boxed arithmetic operations are available (e.g. +iv gets two > boxed integer and gives the boxed integer of their sum). > > Many bug fixes. > > The build system has been revamped. The generated .c files should be > available when running MELT. > > > Thanks to Pierre Vittet, Alexandre Lissy, Romain Geissler for > feedback, patches, suggestions. > > > #### As usual, bug reports, patches, comments are welcome. Cheers. -- Basile STARYNKEVITCH http://starynkevitch.net/Basile/ email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359 8, rue de la Faiencerie, 92340 Bourg La Reine, France *** opinions {are only mine, sont seulement les miennes} ***