Crack

The Crack Programming Language

Crack aims to provide the ease of development of a scripting language with the performance of a compiled language. The "crack" program is a "script executor" that compiles source to machine code on the fly (it will cache the code to intermediate formats as appropriate).

The crack language itself derives concepts from C++, Java and Python, incorporating object-oriented programming, operator overloading and strong typing.

Crack is still evolving. For minor version changes there is currently no guarantee of compatibility between versions, this situation will change when we get to 1.0, at which point backwards compatibility will be guaranteed until the next major version change. In the meantime, tertiary version changes should be backwards compatible, and some features may be added to the executor to help users during a version upgrade.

Sample Code

This script builds a set of unique values from the argument list and prints its contents.

    # import what we need from the appropriate modules
    import crack.cont.hashmap HashMap;
    import crack.io cout;
    import crack.strutil StringArray;
    import crack.sys argv;

    ## Cheesey set implementation.
    class ArgSet : HashMap[String, bool] {
        oper init(StringArray args) {
            for (arg :in args)
                this[arg] = true;
        }

        void dump() {
            for (item :in this)
                cout `got $(item.key)\n`;
        }
    }

    # initialize the arg set from the actual args
    ArgSet a = {argv};

    # write the set
    a.dump();