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.