Visual and textual functional programming language with a focus on productivity, collaboration and development ergonomics.
Luna is a developer’s whiteboard on steroids. Design, prototype, develop and refactor any application simply by connecting visual elements together. Collaborate with co-workers, interactively fine tune parameters, inspect the results and visually profile the performance in real-time.
Visit luna-lang.org to learn more!
The easiest way of installing Luna Studio is by using the graphical Luna Installer, which can be downloaded using the following links:
- Mac OS: http://packages.luna-lang.org/darwin/lunaInstaller.zip
- Linux: http://packages.luna-lang.org/linux/lunaInstaller.zip
- Windows: http://packages.luna-lang.org/windows/lunaInstaller.zip
All you need to do is download and extract the zip and run the application. It will then guide you through the installation process.
Using Luna Studio
For a tutorial, documentation, explanation of the ideas behind Luna please visit http://docs.luna-lang.org. It is available in a form of a book, to provide a gentle and fairly complete introduction to the application as well as the new visual-textual paradigm.
Hacking on Luna Studio
Luna's build system is nice and simple, allowing you to bootstrap the compiler as long as you have an installation of
The Haskell Stack and the
Haskell parser generator
You can install the latter just by running
stack install happy, which should
build the tool for your system and put it in your
stack binary folder.
While Luna Studio supports Windows as a target operating system, it is not currently possible to develop the Luna Studio frontend on Windows. This is due to the current lack of support by GHCJS for Windows at the current time.
Otherwise, you should be able to develop Luna Studio on reasonably new Linuxes and MacOS. Luna Studio was mostly tested on Ubuntu >= 14.04, Fedora >= 23, MacOS >= 10.11 (El Capitan) and Windows 10, although it should run fine on all Linux distros like Mint, Debian or Arch. Please report any issues here on GitHub or shoot an email to email@example.com.
Bootstrapping for Development
To develop Luna Studio, the installation process is quite involved. First of all, you will need the Luna Manager, which can be obtained from the linked repository.
The prerequisites for building Luna Studio are the following (with Ubuntu
apt-get package names in parentheses for convenience):
- gcc, g++, make (build-essential)
- libffi (libffi-dev)
- libgmp (libgmp-dev)
- zlib (zlib1g-dev)
- ZeroMQ >= 4 (which, interestingly, is libzmq3-dev on Ubuntu)
- libpng (libpng-dev)
- SetupTools for Python (python-setuptools)
- libssl (libssl-dev)
- libtinfo (libtinfo-dev)
- PIP for Python (python-pip)
Once you are sure that you have the prerequisites installed, you can proceed to
the environment setup. Assuming that you already have the
on your system and available on your
$PATH, the command is the following:
luna-manager develop luna-studio
This will install Luna Studio, along with some dependencies (e.g. the Haskell
$HOME/luna-develop/apps/luna-studio. If you wish to install to
a different location, please supply an additional
--path argument to the
develop command. From now on, we will refer to this location as
develop command finishes executing, you are ready to start developing
Luna Studio. To rebuild the whole application use:
You can choose to rebuild only the frontend or backend part by passing an
additional flag (
To run the application in developer mode, use:
Below are a couple of common errors and their resolution steps:
- If during the development process you encounter errors related to missing files (caused by accidental removal of a dependency, for example) you can try to execute the following:
luna-manager develop luna-studio --path $LUNA_STUDIO_REPO --download-dependencies
- [Linux] The application image requires FUSE to run. While most Linux distributions have it pre-installed, it is sometimes missing. If your distro happens to lack FUSE, you can either install it, or use the following command to mount the app image manually:
sudo mount -o loop Some.AppImage /mnt /mnt/AppRun
Contributing to Luna Studio
If you are interested in contributing to the development of Luna, please read
Please be aware that, as the commercial backing for Luna, New Byte Order Sp. z o. o. reserves the right under the CLA to use contributions made to this repository as part of commercially available Luna products.
If these terms are unacceptable to you, please do not contribute to the repository.
The Contributor License Agreement
As part of your first contribution to this repository, you need to accept the Contributor License Agreement. You will automatically be asked to sign the CLA when you make your first pull request.
Any work intentionally submitted for inclusion in Luna shall be licensed under this CLA.