MELT, a GCC Compiler Plugin Framework, Reaches 1.0
karijes writes with news that the Middle End Lisp Translator extension for GCC has hit 1.0: "MELT is a high-level domain specific language for extending, customizing and exploring the GNU Compiler Collection. It targets advanced GCC users, giving them ability to hook on almost any GCC stage during compilation or interpretation phases. This release brings a lot of new things."
New features include defmacro and changes to the antiquote operator.
In other News, MetaMELT's v0.3 was released this last weekend.
"MetaMELT a meta-level tool for the customization of MELT's dynamic pattern matching paradigm, allowing the refinement of the GCC's internal data management during the pre-hooking phase."
Among me and my hardcore developer friends GCC is effectively dead in the water. LLVM has eaten its lunch due simply to the fact that LLVM respects developer rights by giving them the FREEDOM to do anything they want with the code. Unless and until GCC dumps the socialistic GPL license idiocy, it will stay dead to everyone that matters.
Not too long ago, I was looking into various game engines and one feature I saw was the ability to modify semi-constant values during runtime to facilitate rapid development. For example, being able to modify the position of a barrel in a scene to just the right location and then make those changes permanent.
I wondered why this couldn't be implemented as a standalone library to allow any type of program to do this kind of thing. I envisioned a compiler plugin that would read constant values from some files and, with a compiler flag turned on, allow you to edit the values in said files and instantly see the results. With the compiler flag turned off, the values read from the files would be baked into the executable as static constants, eliminating any run speed downside.
It seems that this meta-plugin might make such a system a lot easier to implement. Does anyone know of anything similar to what I'm describing?
The best thing about UDP jokes is I don't care if you get them or not
PattyMELT 0.1, a fine, greasy affair consisting of a hamburger patty, slice of cheddar and sautéed onions on rye, was released at 12:43 PM at Joe's Diner on Route 7 to Bob Jenkins, a local plumber. This was Bob's 483'rd iteration on the project.
Asked what he thought the requirements might be to get the project up to a 0.2 version, he replied: "mmmrphWha?mnomnom'".
Asked again where he thought PattyMELT could use some tidying to improve its utility, he said "(gulp) Are you one of them pencil-necks from over at the college? Buzz off, before I lay a pipe wrench alongside your little pansy face. Can't a man eat?"
The problem is, in part, Lisp's syntax. Most people don't want to read code written in lisp, because (+ (* 3 4) 5) is a big pain. You might look into http://readable.sourceforge.net/ - it extends Lisp s-expressions with additional abbreviations, making it much easier to read.
- David A. Wheeler (see my Secure Programming HOWTO)
And tell me what piece of software have you written, AC?
MELT reached 1.0 or was pronounced 1.0 ?
As I recall, Stallman has specifically stated that GCC is not extensible this way out of the box, because he didn't want the dirty proprietary plugins piggybacking on top of the GPL'd frontend & backend. He said it's why the entire protocol between front-end and back-end is deliberately not standardized. It's also why the license specifically excludes the intermediate output from the usual "output is not covered by GPL" exemption:
"Target Code" refers to output from any compiler for a real or virtual
target processor architecture, in executable form or suitable for
input to an assembler, loader, linker and/or execution
phase. Notwithstanding that, Target Code does not include data in any
format that is used as a compiler intermediate representation, or used
for producing a compiler intermediate representation.
The "Compilation Process" transforms code entirely represented in
non-intermediate languages designed for human-written code, and/or in
Java Virtual Machine byte code, into Target Code. Thus, for example,
use of source code generators and preprocessors need not be considered
part of the Compilation Process, since the Compilation Process can be
understood as starting with the output of the generators or
preprocessors.
A Compilation Process is "Eligible" if it is done using GCC, alone or
with other GPL-compatible software, or if it is done without using any
work based on GCC. For example, using non-GPL-compatible Software to
optimize any GCC intermediate representations would not qualify as an
Eligible Compilation Process.
You have permission to propagate a work of Target Code formed by
combining the Runtime Library with Independent Modules, even if such
propagation would otherwise violate the terms of GPLv3, provided that
all Target Code was generated by Eligible Compilation Processes. You
may then convey such a combination under terms of your choice,
consistent with the licensing of the Independent Modules.
I wrote Linux. And Javascript. Now suck my dick you little wannabe.