Giter Club home page Giter Club logo

cretonne's Introduction

Cretonne Code Generator

Cretonne is a low-level retargetable code generator. It translates a target-independent intermediate language into executable machine code.

This is a work in progress that is not yet functional.

Documentation Status

Build Status

Cretonne is designed to be a code generator for WebAssembly with these design goals:

No undefined behavior

Cretonne does not have a nasal demons clause, and it won't generate code with unexpected behavior if invariants are broken.

Portable semantics

As far as possible, Cretonne's input language has well-defined semantics that are the same on all target architectures. The semantics are usually the same as WebAssembly's.

Fast sandbox verification

Cretonne's input language has a safe subset for sandboxed code. No advanced analysis is required to verify memory safety as long as only the safe instructions are used. The safe instruction set is expressive enough to implement WebAssembly.

Scalable performance

Cretonne can be configured to generate code as quickly as possible, or it can generate very good code at the cost of slower compile times.

Predictable performance

When optimizing, Cretonne focuses on adapting the target-independent IL to the quirks of the target architecture. There are no advanced optimizations that sometimes work, sometimes fail.

Building Cretonne

Cretonne is using the Cargo package manager format. First, ensure you have installed a current stable rust (stable, beta, and nightly should all work, but only stable and beta are tested consistently). Then, change the working directory to your clone of cretonne and run:

cargo build

This will create a target/debug directory where you can find the generated binary.

To build the optimized binary for release:

cargo build --release

You can then run tests with:

./test-all.sh

Building the documentation

To build the Cretonne documentation, you need the Sphinx documentation generator:

$ pip install sphinx sphinx-autobuild sphinx_rtd_theme
$ cd cretonne/docs
$ make html
$ open _build/html/index.html

We don't support Sphinx versions before 1.4 since the format of index tuples has changed.

cretonne's People

Contributors

angusholder avatar anholt avatar bnjbvr avatar codri avatar cyndis avatar d1m0 avatar dcci avatar denismerigoux avatar dinfuehr avatar joelgallant avatar kichjang avatar ranma42 avatar repnop avatar stoklund avatar sunfishcode avatar swgillespie avatar usize avatar zummenix avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.