This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
[Ann] MELT plugin 0.9 rc2 for GCC 4.6
- From: Basile Starynkevitch <basile at starynkevitch dot net>
- To: Basile Starynkevitch <basile at starynkevitch dot net>
- Cc: gcc at gcc dot gnu dot org, gcc-melt at googlegroups dot com
- Date: Tue, 13 Sep 2011 21:48:21 +0200
- Subject: [Ann] MELT plugin 0.9 rc2 for GCC 4.6
- References: <20110912115333.GA17789@ours.starynkevitch.net>
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} ***