OCaml Opa JavaScript Shell Emacs Lisp C Other
Pull request Compare This branch is 4 commits ahead, 3122 commits behind MLstate:master.
Permalink
Failed to load latest commit information.
appruntime [fix] iocp: reactivated file and UDP handling Mar 2, 2012
build
buildinfos
compilerlib [feature] compiler,options: --conf-opa-files, use opa files from the … Feb 27, 2012
copyright Initial open-source release Jun 21, 2011
database [fix] runtime, database: since we have serveral database backend bado… Feb 27, 2012
dependencies [cleanup] installation_helper: removed debug logs Feb 10, 2012
dissemination [fix] dissemination/spawn.sh: bash equal is = and not == Feb 9, 2012
doc
installer/Mac
jslang [fix] jsimp: Fixing "Object.prototype leaks into Opa land", Credit:Bu… Dec 6, 2011
libbase
libbsl [enhance] compiler, bsl: added --no-absolute-plugin needed for buildi… Jan 25, 2012
libirc
libnet
libqmlcompil [enhance] compiler, printer: Added a class of printer usefull for cyc… Feb 23, 2012
libruntime [fix] compilers: derived compiler should also handle syntax options. Feb 7, 2012
libsecurity [enhance] libsecurity: Simplified some code. Aug 23, 2011
libsession
libtools
libtrx
manpages [fix] manpages: when called from the main Makefile, do not assume 'in… Jan 6, 2012
ocamllang [cleanup] remove chars: TRX cache Jul 29, 2011
opa [fix] compiler, database: Import database engine even if no user file… Feb 27, 2012
opabsl
opacapi
opadoc [cleanup] permissions: fixed several *.opa *.png *.js *.java _tags files Feb 2, 2012
opalang
opalib [feature] compiler,options: --conf-opa-files, use opa files from the … Feb 27, 2012
oparuntime [enhance] httpServer: switched http server response to full cps Nov 14, 2011
opatop [enhance] opatop: Added typer warnings to opatop Feb 23, 2012
packages/experimental
passes
passlib [enhance] compiler: Added to PassHandler the switch handler Jan 24, 2012
plugins
pplib [enhance] help/manpages: global pass for improving help messages of O… Dec 20, 2011
protocols
qml2js [fix] compilers: derived compiler should also handle syntax options. Feb 7, 2012
qml2ocaml [feature] build: support for Windows Mingw64 compiler chain Mar 2, 2012
qmlcompilers [enhance] compiler: (big) Common path typing beetween several backend… Jan 24, 2012
qmlcps [feature] closure serialisation: adding closure instrumentation (comp… Oct 10, 2011
qmlflat
qmljsimp
qmlpasses
qmlslicer
stdlib
teerex
tools [fix] stdlib, server: take care of js renaming Feb 28, 2012
utils
.gitignore [cleanup] git: add _tracks to gitignore Jun 30, 2011
CHANGELOG
LICENSE Initial open-source release Jun 21, 2011
Makefile
README.md [doc] README: Converted README to Markdown Jan 27, 2012
_tags [clean] removed whirlpool related code Jun 21, 2011
appruntime.mllib
build_libs [feature] build: support for optional libraries, enabled libnattraver… Jun 24, 2011
build_rules.ml
build_tools [feature] opa-translator: build and install Dec 21, 2011
buildinfos.mllib Initial open-source release Jun 21, 2011
compilerlib.mllib Initial open-source release Jun 21, 2011
config.mli [feature] build: support for Windows Mingw64 compiler chain Mar 2, 2012
configure
database.mllibp
gitinit.sh Don't assume that bash is in /bin Sep 21, 2011
install_release.sh
jslang.mllib
libbase.mllib
libbsl.mllib [enhance] compiler, bsl: added --no-absolute-plugin needed for buildi… Jan 25, 2012
libirc.mllib
libnattraversal.mllib Initial open-source release Jun 21, 2011
libnet.mllib
libqmlcompil.mllib
libruntime.mllib Initial open-source release Jun 21, 2011
libsecurity.mllib
libsession.mllib
libtools.mllib [fix] user privilege drop: remove this broken feature Sep 19, 2011
libtrx.mllib Initial open-source release Jun 21, 2011
make_package.sh
ocamlbase.mltop
ocamllang.mllib
opa-compile-libs.itarget Initial open-source release Jun 21, 2011
opa-run-js-libs.itarget
opa-run-libs.itarget [fix] opa-run-libs.itarget: protocols.cmxa should not be here Feb 9, 2012
opabsl.itarget
opabsl_for_compiler.mllib
opabsl_for_interpreter.mllib Initial open-source release Jun 21, 2011
opabsl_for_server.mllib Initial open-source release Jun 21, 2011
opacapi.mllib Initial open-source release Jun 21, 2011
opalang.mllib
opalib.mllib Initial open-source release Jun 21, 2011
opapasses.mllib
oparuntime.mllib
opatoplib.mllib
passlib.mllib
platform_helper.sh [feature] build: support for Windows Mingw64 compiler chain Mar 2, 2012
plugins.itarget
pplib.mllib Initial open-source release Jun 21, 2011
protocols.mllib
qml2js.mllib
qml2ocaml.mllib Initial open-source release Jun 21, 2011
qmlcpsrewriter.mllib Initial open-source release Jun 21, 2011
qmlcpsserver.mllib Initial open-source release Jun 21, 2011
qmlflatcompiler.mllib
qmlflatserver.mllib
qmljsimp.mllib
qmlpasses.mllib
qmlslicer.mllib

README.md

OPA

Overview

Opa is a new generation of cloud development platform. It is a new programming language, a new web server, a new database and a new distributed execution engine, all of them tightly integrated to provide a great experience for cloud developers.

This repository contains all the sources of the OPA compiler and libraries.

Quick build instructions

$ ./configure
$ make
$ sudo make install

should get you there ./configure should report any missing dependencies and point you to the packages you may install to fix them (although those may depend on your distribution). make needs to be GNU make.

The main dependency of OPA is OCaml 3.12. In case your distribution doesn't provide a recent enough version, or if you miss some other dependencies, you can use the installation_helper.sh script, which automates the download and installation of our dependencies. Try

$ dependencies/installation_helper.sh --help

Directory layout

  • _build: compilation target directory
  • build: build scripts and auxiliary Makefiles
  • copyright: some copyright information used in our binary package, which includes external software (as obtained from the dependency installation helper).
  • dependencies: contains the dependency installation helper
  • dissemination: contains helper programs to run on the cloud (transitional)
  • installer: auxiliary files used to build binary packages
  • plugins: additional OPA library modules (work in progress)
  • stdlib: the OPA standard library
  • tools: contains external checking tools; see Credits below
  • utils: some auxiliary, independent tools like bash completion, syntax highlighting for popular editors, etc.

The other directories contain the source of the OPA libraries, compiler, and tools.

Files at the root of the repository:

  • *.mllib: ocamlbuild target declaration for building an ocaml lib
  • *.itarget: ocamlbuild target declaration for building a set of targets
  • install_release.sh: builds a full OPA runtime in order to make a binary package
  • platform_helper.sh: some helpers to guarantee script compatibility, mostly between Linux and MacOS
  • make_package.sh: builds various kinds of binary packages from the file hierarchy created by install_release.sh

The build system

The build system is based on OCamlbuild; the included build/Makefile.bld dynamically builds an ocamlbuild plugin and generates targets based on files build_libs, build_tools and build_rules.ml.

See build/Makefile.bld and build_rules.ml for more information. All generated files are put in _build, following the same hierarchy as the source directory.

License & Credits

OPA is Copyright 2011, MLstate; it is distributed under the terms of the GNU Affero General Public License, version 3. See file LICENSE for details.

The repository opalang is currently versioning 2 external tools in tools/ used only during the build process of Opa :

  • The Closure Compiler (see tools/jschecker/README for copyright information)
  • JsDoc Toolkit (see tools/jsdoc-toolkit/README.txt for copyright information)

The Closure Compiler is used as a checker for the Javascript part of the sources of Opa, and JsDoc Toolkit is used for generating html documentation pages from this Javascript code.

The use of these tools is transitional, and will soon be made optional.

Part of the jslang library, has been closely inspired by ocamljs/jslib:

  • ocamljs/jslib, © 2007-2009 2007-9 Skydeck, Inc, distributed under LGPL v2

Files jslang/jsAst.ml and jslang/jsPrint.ml are extended versions of the modules found in ocamljs, specialized for OPA specific needs. We would like to thank the authors of the ocamljs/jslib.

Contact

All bug reports, feedback, comments, contributions or remarks are welcome, either on our website: http://opalang.org

or by email, to: support@opalang.org