Plask is a multimedia programming environment.
Objective-C++ JavaScript C C++ Other
Latest commit 8add16d Nov 26, 2015 @deanm Merge branch 'v3'
Failed to load latest commit information.
English.lproj Initial commit. Nov 18, 2010
docs docs: Pick up exports.SkCanvas.create style constructors. Aug 28, 2015
examples Small cleanup to getFontMetrics. Mar 6, 2013
plask.xcodeproj Update to deps to v005 for Skia updates. Jul 18, 2015
tests Fractional parts: fract(), fract2(), fract3() May 26, 2015
.gitignore Add ignores for xCode4 user data and deps/ Apr 21, 2011
LICENSE Add a LICENSE file. Jun 17, 2011
Plask.icns Mediocre Plask icon. Mar 25, 2011
README Fix xcode build command for xcode 4. Oct 3, 2011 Update to deps to v005 for Skia updates. Jul 18, 2015
libev.patch Add the patch required for libev integration. Mar 15, 2011 Allow overriding app activation on startup via environment. Jul 13, 2015
node-libuv.diff Entirely rewrite our Cocoa/node event loop integration. Dec 21, 2012
node-load.diff Entirely rewrite our Cocoa/node event loop integration. Dec 21, 2012
plask-Info.plist Mediocre Plask icon. Mar 25, 2011
plask.js Add some docs for the SkCanvas create methods. Aug 28, 2015
plaskAppDelegate.h Initial commit. Nov 18, 2010 Restructure menu initialize. Dec 21, 2012
plask_Prefix.pch Initial commit. Nov 18, 2010
plask_bindings.h Initial commit of "Plask 3.0" Jul 30, 2014 Update docs for new Skia PDF API changes. Aug 28, 2015 Update Jul 31, 2015
v8_utils.h More default parameters for SkCanvas#drawCanvas. Jun 11, 2015
webgl_constants.h Add WebGL 2.0 WebGLTransformFeedback wrappers. Aug 8, 2015


Plask is a programming environment for multimedia and computational design.

- Getting Plask

For the common user, it is best to use the binary distribution provided at  If you're interested in building and running from source, the
following section should help you get started.

- Building and running from source

Plask integrates together quite a few pieces of technology, which unfortunately
makes the build process more complicated.  It is possible to do a boostrapped
build, where you only build the Plask source file, but use prebuilt object
files for Plask's dependencies.  Run the script to download and
extract a copy of these prebuilt dependencies.  When fetching new source
changes to Plask, you will have to be aware if there have been any changes to
the prebuilt dependencies, and if so, to run again.

For example, to build from a completely new checkout would look something like:

  $ sh
  $ xcodebuild -project plask.xcodeproj -configuration Release -target Plask

This should produce  For some technical and design reasons,
is effectively a commandline application inside a bundle.  For example, running on the command line will start a Node-style REPL
loop, an interactive JavaScript shell of sorts.

Pass a filename on the command line to run that JavaScript file.

NOTE: To ease development, the built has a symlink to plask.js in
the source.  This allows you to edit plask.js in the source repository without
having to rebuild the project.

A separate project, PlaskLauncher, creates the UI application for launching
Plask by dragging/dropping or File->Open.

- Creating standalone applications

When is launched, it will look for a file named main.js inside of
the bundle (in Contents/Resources).  This allows you to easily create
standalone applications by copying and putting your JavaScript source
inside of the bundle.

NOTE: When running "bundled", the current working directory will likely be
different from running Plask on the command line.  Generally this means if you
open files you should open a path relative to __dirname, which is Node's global
variable for the directory that your JavaScript file is in.

- Credits

Released under the BSD license.  Full details in the included LICENSE file.

(c) 2010, Dean McNamee <>

This software contains code and ideas from the fantastic:

Nicolas Garcia Belmonte
Thatcher Ulrich
Ryan Alexander
Marcin Ignac

Built with the fantastic:

V8 JavaScript Engine
Skia rasterization library
Cocoa and OpenGL