What is MuJS?

MuJS is a lightweight implementation of the Javascript language in a library. Its primary purpose is to add scripting capability to other programs, but can also be used as an extensible scripting language.

MuJS is developed and maintained by Artifex Software. It was originally developed for use with the MuPDF viewer, but is designed to be useful as an independent component.

The primary meeting place for the MuJS community is the #mupdf IRC channel on freenode.

Report bugs at bugs.ghostscript.com.

Why choose MuJS?

Javascript

Javascript is one of the most popular programming languages in the world. It is a powerful extension language, used everywhere on the web — both as a way to add interactivity to web pages in the browser, and on the server side with platforms like node.js.

With MuJS you can bring this power to your application as well!

Standards compliant

MuJS implements ES5. There are no non-standard extensions, so you can remain confident that Javascript code that runs on MuJS will also run on any other standards compliant Javascript implementation.

Portable

MuJS is written in portable C and can be built by compiling a single C file using any standard C compiler. There is no need for configuration or fancy build systems. MuJS runs on all flavors of Unix and Windows, on mobile devices (such as Android and iOS), embedded microprocessors (such as the Beagle board and Raspberry Pi), etc.

Embeddable

MuJS is a simple language engine with a small footprint that you can easily embed into your application. The API is simple and well documented and allows strong integration with code written in other languages. You don't need to work with byzantine C++ templating mechanisms, or manually manage garbage collection roots. It is easy to extend MuJS with libraries written in other languages. It is also easy to extend programs written in other languages with MuJS.

Small

Adding MuJS to an application does not bloat it. The source contains around 10'000 lines of C. Under Linux, the compiled library takes 180kB if optimized for size, and 260kB if optimized for speed. Compare this with V8, SpiderMonkey or JavaScriptCore, which are all several hundred thousand lines of code, take several megabytes of space, and require the C++ runtime.

Reasonably fast and secure

It is a bytecode interpreter with a very fast mechanism to call-out to C. The default build is sandboxed with very restricted access to resources.

Free software (commercial licensing available)

MuJS is free open source software distributed under the ISC license.