Skip to content
a statically-typed programming language with powerful syntax
Branch: develop
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmake Upload packages to s3 Dec 26, 2017
docs Fix typo Dec 3, 2017
examples Merge pull request #1 from Cj-bc/master Jan 28, 2018
extsrc Use submodule for external sources Jan 20, 2018
include Copy rettable correctly Jan 25, 2018
lib Add empty source to build with cmake 3.11~ Jun 2, 2018
src Fix naming Jan 22, 2018
test Refactoring of internals Dec 27, 2017
utils Disable caching of scopion-h2ir Jan 22, 2018
.clang-format Add a few options to .clang-format Aug 15, 2017
.gitignore Update .gitignore Dec 26, 2017
.gitmodules Use submodule for external sources Jan 20, 2018
.travis.yml Merge branch 'feature/ci' into develop Dec 29, 2017
COPYING Add README and COPYING, also support packaging with CPack Aug 23, 2017
Dockerfile Fix Dockerfile Jan 28, 2018 Fix: scopion is not a functional programming language Jul 31, 2018 Print warning when is run in source directory Oct 25, 2017


Travis Docker Automated buil Docker Build Statu license GitHub release C++ Standard

a statically-typed programming language with powerful objective syntax

Try now:

(argc, argv){
  io = @import#c:stdio.h; // Import C header directly!

  v1#mut = v2 = [
    real: 10,
    add: (val, self){
      newv = self;
      newv.real = self.real + val;
      |> newv;
    +: (rhs, self){ // Operator overload
      |> self.:add(rhs.real);

  v1.=add(1); // Object-oriented call
  io.printf("v1.real => %d\n", v1.real);

  io.printf("(v1+v2).real => %d\n", (v1+v2).real);
v1.real => 11
(v1+v2).real => 21

This project is heavily under development.

scopion has a serious problem around typesystem and currently impractical very much. This will be fixed in v0.0.4

Why scopion?

  • Intuitive
    • Removal of 'global'
    • Just right fusion of Functional and Object-oriented programming
    • Referentially transparent function
    • Powerful objective syntax
  • Concise
    • No reserved words
    • Powerful type suggestion
  • Fast
    • Statically typed compiler
    • Optimization and native code generation by LLVM
  • C-friendly
    • Directly use of C function

All features are listed in docs/

Getting started


  • llvm, clang (v5.0.0~)
  • libgc
  • ctags

Supported Platforms

  • macOS
  • GNU/Linux

Only 64bit system is currently supported.


If you are in Ubuntu 17.04~, Debian stretch~, or macOS Sierra~, just paste this at a terminal prompt:

curl -fsSL | bash

Binary downloads

Docker Image

docker pull coorde/scopion
docker run -it coorde/scopion /bin/bash


Now you can compile your scopion source

scopc prog.scc -o prog


usage: scopc [options] ... filename ...

      -h, --help                        Print this help
      -t[type], --type=[type]           Specify the type of output
                                        One of: asm, ast, ir, obj
      -o[path], --output=[path]         Specify the output path
                                        Default: ./a.out
      -a[triple], --arch=[triple]       Specify the target triple
                                        Default: native
      -O[level], --optimize=[level]     Set optimization level (0-3)
                                        Default: 3
      -V, --version                     Print version
      filename                          File to compile

Build from source

if there is no suitable prebuilt binary for your environment, you can build scopion from source.


  • (Installation prerequirements)
  • Boost (v1.62~)
  • cmake (v3.7~)
git clone
cd scopion
git submodule update --init --recursive
mkdir build && cd $_
make # build
sudo make install # install


This program is licensed by GPL v3. See COPYING.

You can’t perform that action at this time.