Go to file
joeduffy e0843d6ba0 Add support for loading locations
This adds support for LoadLocationExpression, which will be key to
getting virtually everything else working, including class and module
member accesses, local variable gets/sets, function calls, and more.

In particular, an extra level of indirection is added to the globals,
locals, and properties maps.  This new thing is called a *Reference,
and it is simply a mutable slot that contains an *Object.  Instead
of storing and retrieving objects directly, this extra level of
indirection enables us to create *Object instances that themselves
simply refer to other objects (for subsequent loads and stores).

For now, we do not permit overwriting of method properties.  This
is a future work item (see marapongo/mu#56).
2017-01-25 17:11:36 -08:00
cmd Move compiler options to pkg/compiler/core 2017-01-23 08:10:49 -08:00
docs Start a MuJS design document 2017-01-17 11:42:49 -08:00
examples Add a example web crawler Mu blueprint 2017-01-12 14:59:18 -08:00
lib Rearrange the library code 2017-01-20 10:30:43 -08:00
pkg Add support for loading locations 2017-01-25 17:11:36 -08:00
tools/mujs Begin doing evaluation 2017-01-25 10:13:06 -08:00
.gitignore Move all cloud switching to mu/x MuPackage 2017-01-20 09:46:59 -08:00
.gitmodules Add Docker Compose and Kubernetes conversions as submodules 2016-11-01 10:30:39 -07:00
glide.lock Switch back to the official YAML repo 2016-12-09 11:59:05 -08:00
glide.yaml Switch back to the official YAML repo 2016-12-09 11:59:05 -08:00
main.go Move glogging into Mu command startup/teardown 2016-11-19 16:42:27 -08:00
Makefile Test packages when making the project 2016-11-15 19:25:06 -08:00
README.md Add a README pointer to the overview doc 2017-01-01 15:19:22 -08:00

Mu

Mu is a framework and toolset for creating reusable stacks of services.

If you are learning about Mu for the first time, please see the overview document.

Building and Testing

To build Mu, first clone it into a standard Go workspace:

$ mkdir -p $GOPATH/src/github.com/marapongo
$ git clone git@github.com:marapongo/mu $GOPATH/src/github.com/marapongo/mu

A good default value for GOPATH is ~/go.

Mu needs to know where to look for its runtime, library, etc. By default, it will look in /usr/local/mu, however you can override this with the MUPATH variable. Normally it's easiest just to create a symlink:

$ ln -s $GOPATH/src/github.com/marapongo/mu /usr/local/mu

There is one additional build-time dependency, golint, which can be installed using:

$ go get -u github.com/golang/lint/golint

And placed on your path by:

$ export PATH=$PATH:$GOPATH/bin

At this point you should be able to build and run tests from the root directory:

$ cd $GOPATH/src/github.com/marapongo/mu
$ make

This installs the mu binary into $GOPATH/bin, which may now be run provided make exited successfully.