Sandboxes

Each DAG node runs in complete isolation from everything, even other nodes of the same DAG. This way we can achieve high levels of security and support node implementations in more than one languages. We consider Node.js and Javascript as the default implementation language of a node. The SDK natively supports Node.js and JavaScript implementations during development. For nodes written in all the other supported languages, including nodes which run on different versions of Node.js the SDK will need to run in a containerised mode with the help of Docker.

If you take a look at the example below, the field javascript defines the language this node uses. The sandbox field gives you the optional ability to pin your implementation to a specific version of the language, if you need to.

"implementation": {
  "javascript": "server/node1.js",
  "sandbox": "quay.io/redsift/sandbox-javascript:v6.2.2"
}

The format for the qualified name is:

quay.io/redsift/sandbox-:

In the table that follows, you can see the complete list of languages that we support, the default versions, a link to all the versions we support for each of them and the dependency management tool we will use to install your dependencies during loading.

Language

Default version

Version tags

Dependency

javascript

v6.2.2

link

npm, package.json file

python

v2.7.10

link

pip, requirements.txt file

julia

v0.4.6

link

pkg

java

v1.8.0

link

maven, pom.xml file

scala

v2.11.8

link

sbt, build.sbt file

clojure

v1.8.0

link

leiningen, project.clj file

swift

v3.1.1

link

spm

go

v1.9

link

📘

Tags

When you follow the link to our container repository you will notice two flavours of tags. Tags with just the major version defined and tags that include the minor & patch number too. The former allow you to follow the updates for that major version automatically, whereas the latter locks your implementation to a specific version.