SchemeSpheres has been tested in GNU/Linux and OS X. You will need the following software installed:
Downloading the latest version and running the following commands should do:
cd gambit ./configure --enable-single-host --enable-c-opt make -j4 from-scratch make check sudo make install
Gambit recommends using GCC instead of LLVM for compiling its source. We need to install it with Homebrew:
brew install gcc48
Now we can compile Gambit explicitly using GCC:
cd gambit CC=/usr/local/bin/gcc-4.8 ./configure --enable-single-host --enable-c-opt make -j4 from-scratch make check sudo make install
Note: Even though Homebrew is a very convenient way of installing Gambit, unfortunately it changes the way Gambit's directories are organized. It also removes the ability to tune Gambit's configuration, so SchemeSpheres doesn't support this way of installing Gambit at the moment. We will use Homebrew just for GCC.
Note for Linux and OSX: If your system can't find Gambit after installing it, make sure to link the gsi and gsc binaries to /usr/bin. Another option is to have Gambit's bin directory (/usr/local/Gambit-C/bin by default) in your system's path (both for the user and root).
In the cloned or uncompressed folder, run:
./configure sudo ./bootstrap
Note for Gambit users: ./configure will create a .gambcini initialization file for you, and overwrite any previous one.
Now you can start using Spheres for loading code and dependencies in the Gambit REPL. Run gsi and type this in the REPL to see if it works.
(##spheres-load core: testing)
You should see:
-- including -- (core: testing-macros version: ()) -- loading -- (core: testing)
Which means that the module has been loaded, and its syntax macros are ready in the REPL. Now you can use the lightweight testing module directly in the REPL.
Spheres are installed using the sspheres program. These are the spheres in the latest release:
sudo sspheres install cairo codec crypto energy fabric fusion math opengl sdl2 strings
If you are going to install OpenGL and SDL2 spheres, you need to have these libraries along with their C headers installed. In OSX this can be achieved easily with Homebrew:
brew install sdl2 sdl2_image sdl2_mixer sdl2_net sdl2_ttf
In Linux, you need to use your distribution's package manager (emerge, pacman, apt-get...).
When coding interactively in the Gambit REPL, you have access to Spheres using the form:
(##spheres-load sphere: module)
This will take care of bringing and evaluating a module and its dependencies, for its immediate use in the REPL. Try running gsi and writing this code:
(##spheres-load fabric: algorithm/list) (fold + 0 '(1 2 3 4 5))
The result should be 15 which is the sum of the list of numbers from 1 to 5.
Alternatively, if you want to run a Scheme program without creating a managed project, you can run it from the command line like this:
gsi -e '(expander:include "test.scm")'
Creating a project gives you access to the full functionality in SchemeSpheres, allowing multiple source files and properly handling all dependencies. In this example, we will use the OpenGL 2d generator to create a project template that you can use to try out the OpenGL and SDL bindings.
sfusion new -g sdl-opengl my-new-program
Now you can compile and run it on the Host (Linux/OSX), and Android/iOS device. To see which tasks are available, run inside the root folder of the you just created:
cd my-new-program ssake
Important: For the Android backend to work, you need both Android SDK and NDK, plus the ANDROID_SDK_PATH and ANDROID_NDK_PATH environment variables set up pointing at these directories.
You can check for more generators with Sfusion:
The key to working with projects is the configuration of the sakefile.scm and config.scm files. Currently, the best source of information is found at:
Soon, there will be more tutorials and guides. Meanwhile, you can start from the program skeletons provided with Sfusion, and check the spheres for lots of functionality ready to use.
If you want to create a new Sphere, and nicely integrate with SchemeSpheres, the best way to start would be knowing more about how spheres work.
Please visit the Troubleshooting guide.