BLACK (Big Linker, Assembler and Compiler Kit)
Introduction
We have slaughtered domesticated the dragon!
This ambitious project, released for free under LGPL, aims to provide a
compiling alternative by thinking outside the box. It has started after several
fights I had against GCC, probably the most
used compiler in the world. Creating a working
cross-compiler is a
stressful and quite hard task (depending on the target); besides of it, still
you get to use lots of disk space. There were several other reasons too, like when
I tried to make a game for the
65c816.
BLACK is a collection of programs sharing the same libraries, easing the
porting to new platforms or languages. The core of the system is that it is
not really a compiler in the sense that GCC is, but instead a chain of tools
(preprocessors, compilers, assemblers, linkers, transcompilers,
compiler-compilers,
stand-alone scanners or parsers, decompilers,
disassemblers,
analysers,
emergers
and synthesizers)
which simply converts one kind of file to another, in a standard UNIX-ish
way. So, e.g., one could run: cat source.c | cpp | cc | x86 | elf --linux | tee binary
The
advantages of this design is that, if you want to compile the program to another
platform, you just need to use another small program that shares the same libraries
with the others, without needing to leave your machine: cat source.c
| cpp | cc | x86 | pe32 --windows | tee binary.exe
Lots of helpful features can come from those specifications, like
self-compiling to any
of the suported output platforms, interacting with 3rd part programs, ease to
add any new language
or output machine, developing programs with multiple
programming languages without the need of troublesome bindings, working as a
binary converter,
having dynamic
languages running almost as fast as standard
C, batch-making
of multiplatform software, etc. For example, a Ruby program
could be successfully compiled to an Arduino
hexfile, or a PHP program to run on the
Java virtual machine.
The project is still in the not-so-early development stage, and thus this webpage is temporary.
Any doubts, please, email-me.