Giter Club home page Giter Club logo

ubf-eep8's Introduction

#Universal Binary Format and EEP8#

Copyright (c) 2011-2012 by Joseph Wayne Norton

Authors: Joseph Wayne Norton ([email protected]).

This is UBF-EEP8, a framework for integrating UBF and EEP8. This repository depends on the UBF open source repository.

This repository is experimental in nature and not intended for production usage.

Quick Start Recipe

To download, build, and test the ubf_eep8 application in one shot, please follow this recipe:

$ mkdir working-directory-name
$ cd working-directory-name
$ git clone https://github.com/ubf/ubf-eep8.git ubf_eep8
$ cd ubf_eep8
$ make deps clean compile test

For an alternative recipe with other "features" albeit more complex, please read further.

Documentation

Where should I start?

This README is a good first step.

The UBF User's Guide is the best next step. Check out http://ubf.github.com/ubf/ubf-user-guide.en.html for further detailed information.

EEP8 samples and eunit tests can be found in the test/eunit directory.

What is UBF?

UBF is the "Universal Binary Format", designed and implemented by Joe Armstrong. UBF is a language for transporting and describing complex data structures across a network. It has three components:

  • UBF(a) is a "language neutral" data transport format, roughly equivalent to well-formed XML.

  • UBF(b) is a programming language for describing types in UBF(a) and protocols between clients and servers. This layer is typically called the "protocol contract". UBF(b) is roughly equivalent to Verified XML, XML-schemas, SOAP and WDSL.

  • UBF(c) is a meta-level protocol used between a UBF client and a UBF server.

See http://ubf.github.com/ubf for further details.

What is EEP8?

EEP8 is an extension to the Erlang language for declaring sets of Erlang terms to form a particular type, effectively forming a specific subtype of the set of all Erlang terms. Subsequently, these types can be used to specify types of record fields and argument and return values of functions. See http://www.erlang.org/eeps/eep-0008.html for full details.

To download

  1. Configure your e-mail and name for Git

    $ git config \--global user.email "[email protected]"
    $ git config \--global user.name "Your Name"
  2. Install Repo

    $ mkdir -p ~/bin
    $ wget -O - https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
    $ chmod a+x ~/bin/repo
  3. Create working directory

    $ mkdir working-directory-name
    $ cd working-directory-name
    $ repo init -u https://github.com/ubf/manifests.git -m ubf-eep8-default.xml
    Note Your "Git" identity is needed during the init step. Please enter the name and email of your GitHub account if you have one. Team members having read-write access are recommended to use "repo init -u [email protected]:ubf/manifests.git -m ubf-eep8-default-rw.xml".
    Tip If you want to checkout the latest development version, please append " -b dev" to the repo init command.
  4. Download Git repositories

    $ cd working-directory-name
    $ repo sync

For further information and help for related tools, please refer to the following links:

To build - basic recipe

  1. Get and install an erlang system http://www.erlang.org

  2. Build

    $ cd working-directory-name
    $ make compile
  3. Run the unit tests

    $ cd working-directory-name
    $ make eunit

To build - optional features

  1. Dialyzer Testing basic recipe

    1. Build Dialyzer's PLT (required once)

      $ cd working-directory-name
      $ make build-plt
      Tip Check Makefile and dialyzer's documentation for further information.
    2. Dialyze with specs

      $ cd working-directory-name
      $ make dialyze
      Caution If you manually run dialyzer with the "-r" option, execute "make clean compile" first to avoid finding duplicate beam files underneath rebar's .eunit directory. Check Makefile for further information.
    3. Dialyze without specs

      $ cd working-directory-name
      $ make dialyze-nospec

Credits

Many, many thanks to Joe Armstrong, UBF's designer and original implementer.

Thanks to Kostis Sagonas and Tobias Lindahl, EEP8's designers and implementers.

Gemini Mobile Technologies, Inc. has approved the release of this repository under an MIT license.

##Modules##

eep8_contract_parser

ubf-eep8's People

Contributors

norton avatar

Watchers

James Cloos 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.