This page contains information about streams, the canonical implementation of the Nebula backend. Streams is written in portable Common Lisp, and is primarily run on Steel Bank Common Lisp (SBCL).
To load streams from sources, the minimum required software are SBCL and Git for Linux and Windows systems, and additionally Homebrew for macOS systems.
First, install SBCL and friends:
On Ubuntu systems, run:
sudo apt-get install -y sbcl git curl
On Fedora systems, run:
sudo yum install -y sbcl git curl
On Arch Linux, run:
sudo pacman -S sbcl git curl
Next, install Quicklisp:
curl -O https://beta.quicklisp.org/quicklisp.lisp
sbcl --load quicklisp.lisp --eval '(quicklisp-quickstart:install)' --eval '(let ((ql-util::*do-not-prompt* t)) (ql:add-to-init-file) (ql:quickload :cl-launch) (sb-ext:quit))'
Finally, fetch the dependencies and the sources of streams, itself:
mkdir -p ~/common-lisp
cd ~/common-lisp
git clone https://gitlab.common-lisp.net/asdf/asdf.git
git clone https://github.com/ebzzry/marie
git clone https://github.com/themimixcompany/streams
First, install Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Next, install SBCL and friends:
brew install sbcl git
Next, install Quicklisp:
curl -O https://beta.quicklisp.org/quicklisp.lisp
sbcl --load quicklisp.lisp --eval '(quicklisp-quickstart:install)' --eval '(let ((ql-util::*do-not-prompt* t)) (ql:add-to-init-file) (ql:quickload :cl-launch) (sb-ext:quit))'
Finally, fetch the dependencies and the sources of streams, itself:
mkdir -p ~/common-lisp
cd ~/common-lisp
git clone https://gitlab.common-lisp.net/asdf/asdf.git
git clone https://github.com/ebzzry/marie
git clone https://github.com/themimixcompany/streams
On Windows 7 and up, download and install SBCL from http://sbcl.org/platform-table.html.
To verify that you have successfully install SBCL, run the following command in the Command Prompt:
sbcl --version
Next, install Quicklisp. First, download Quicklisp from https://beta.quicklisp.org/quicklisp.lisp. Then, move
quicklisp.lisp
from wherever it was downloaded, e.g., the Downloads folder, to %HOMEPATH%
. In the Command Prompt go to %HOMEDIR%
:
%HOMEDRIVE%
cd %HOMEDIR%
Then load quicklisp.lisp
with the installation functions:
sbcl --load quicklisp.lisp --eval '(quicklisp-quickstart:install)' --eval '(let ((ql-util::*do-not-prompt* t)) (ql:add-to-init-file) (ql:quickload :cl-launch) (sb-ext:quit))'
Next, download and install Git. To verify that you have successfully installed Git, run the following command in the Command Prompt:
git --version
Finally, fetch the dependencies and the sources of streams, itself:
cd %HOMEDIR%/quicklisp/local-projects
git clone https://gitlab.common-lisp.net/asdf/asdf.git
git clone https://github.com/ebzzry/marie
git clone https://github.com/themimixcompany/streams
However, if you prefer to store the sources in another folder, e.g., D:\lisp
, you may create directory symbolic links instead with mklink, to make the folder %HOMEDIR%/quicklisp/local-projects
point to D:\lisp
. To do so, open an Administrator Command Prompt window, then run:
deltree %HOMEDIR%/quicklisp/local-projects
d:
md lisp
cd lisp
git clone https://gitlab.common-lisp.net/asdf/asdf.git
git clone https://github.com/ebzzry/marie
git clone https://github.com/themimixcompany/streams
%HOMEDRIVE%
cd %HOMEDIR%/quicklisp
mklink /d local-projects d:\lisp
To run the server from the command line, run:
sbcl --eval '(ql:quickload :streams)' --eval '(streams:serve)'
Alternatively, run SBCL then evaluate the forms individually:
sbcl
* (ql:quickload :streams)
* (streams:serve)
In the event that Quicklisp does not load automatically, run:
sbcl
* (let ((file (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)))) (when (probe-file file) (load file)))
* (ql:quickload :streams)
* (streams:serve)
Pressing C-c (Ctrl+c) will terminate the server.
To build the standalone executable, run:
sbcl --eval '(ql:quickload :streams)' --eval '(streams:build)'
Alternatively, run SBCL then evaluate the forms individually:
sbcl
* (ql:quickload :streams)
* (streams:build)
In the event that Quicklisp does not load automatically, run:
sbcl
* (let ((file (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)))) (when (probe-file file) (load file)))
* (ql:quickload :streams)
* (streams:build)
This creates the appropriate streams platform executable in the current directory.