Skip to content

caffeine-suite/caffeine-mc

Repository files navigation

logo

Caffeinated Language Evolution Build Status

With CaffeineMC, any language can change arbitrarily without breaking existing code. You can select, configure and extend any to-JavaScript compiler, with arbitrary code, on a per-project or per-file basis.

Go to the Wiki for documentation and more.

Related: CaffeineScript Wiki

Install

npm install caffeine-mc

Next: Get Started

Compatibility

CaffeineMC can work with any to-JavaScript compiler. It works with plain JavaScript, CoffeeScript and CaffeineScript out of the box. An example below shows how easy it is to adapt to other compilers or transpilers like Babel.

What is a Meta-Compiler?

It is a compiler for your compiler. CaffeineMC can 'compile' (create) a brand new compiler, on a file-by-file basis. Most the time, though, it is used to select and configure a compiler. For example, see the custom.caf below.

Why CaffeineMC?

Reason 1: Accelerated Language Evolution

When you can change the compiler programmatically on a per-file basis, languages can evolve arbitrarily without worrying about breaking existing code. This frees languages to evolve rapidly without constraints.

Reason 2: CaffeineMC + CaffeineScript

CaffeineMC really starts to shine when you have a language which is designed to be extensible. CaffeineScript is a modular programming language designed to take maximum advantage of CaffeineMC's per-project and per-file configurability. (modular-CaffeineScript is coming soon)

Reason 3: Custom Source-code 'Views'

Source-code is a "view" into a program's actual semantics. Just like word-processors or spread sheets let you configure your view on a per-file basis, you should be able to change your code's view, its 'language,' on a per-file basis without affecting other files.

Reason 4: Accelerated New Language Development

Focus on writing your new language instead of building all the boiler-plate tools needed to make it useful. CaffeineMC's caf command-line tool, interactive shell, NodeJs-loader and Webpack-loader work for all Caffeine-MC enabled languages. Just create a Caffeine-MC compatible compiler and you get all the standard compiler machinery for free.