Giter Site home page Giter Site logo

nickel's Introduction

The Nickel Target Language

Nickel is an experimental programming language intended to be used as a compile target for high-performance functional languages. Its main features are:

  • Complete type and memory safety verified at compile-time. Nickel programs cannot trigger undefined behavior except by linking against unsafe external libraries.
  • Robust functional purity guarantees. Nickel functions are deterministic and capture all output via return values.
  • Predictable performance and precise control over memory management. Nickel can support languages without a garbage collector or even a heap allocator.
  • Efficient in-place mutation of data structures, while ensuring functional purity via linear types.
  • An expressive type system which includes first-class support for arbitrary-rank universal quantification, existential quantification, and generalized algebraic data types.

Nickel is currently in an extremely early stage of development. At the moment, it consists mainly of a preliminary design and a prototype compiler under construction. Eventually, the Nickel toolchain will include:

  • A Nickel compiler targeting LLVM and WebAssembly
  • A standalone Nickel type checker
  • Utilities for converting between multiple equivalent representations of Nickel programs, including:
    • A human readable, human writable plain text format resembling a high level functional programming language
    • A JSON representation which can be easily generated or parsed from any language.
    • A compact binary format suitable for storing and distributing Nickel code.
  • An optional standard library providing type and memory safe wrappers around platform functionality like memory management and IO.
  • A graphical debugger for exploring the runtime behavior of Nickel programs. Because Nickel is purely functional, this debugger can easily step backwards as well as forwards.

Questions and contributions are welcome! Please contact William Brandon to learn more.

Gitter chat

nickel's People

Contributors

exists-forall avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  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.