Skip to content

Instrumentation framework for Node.js compliant to ECMAScript 2020 based on GraalVM.

License

Notifications You must be signed in to change notification settings

Haiyang-Sun/nodeprof.js

Repository files navigation

NodeProf: An efficient instrumentation and profiling framework for Graal.js.

The tool is open source. Please feel free to report issues or contribute directly.

GraalJS version

The latest supported GraalVM JavaScript version is 23.0.1.

Getting Started

Get the mx build tool:

git clone https://github.com/graalvm/mx.git

Use mx to download a JDK for building GraalVM and set the JAVA_HOME environment variable accordingly:

mx fetch-jdk --java-distribution labsjdk-ce-17
export JAVA_HOME=PATH_TO_THE_DOWNLOADED_JDK

Get dependent projects and build:

mkdir workspace-nodeprof
cd workspace-nodeprof
git clone https://github.com/Haiyang-Sun/nodeprof.js.git
cd nodeprof.js
mx sforceimports
mx build

Run tests:

mx test-all

Detailed explanation can be found in the Tutorial;

Goals

The goals of NodeProf are:

  • Use AST-level instrumentation which can benefit from the partial evaluation of the Graal compiler and have a much lower overhead compared to source-code instrumentation framework such as Jalangi
  • Compatible to analysis written in Jalangi detail.
  • Comprehensive coverage for NPM modules and Node.js libraries.
  • Compliant to the latest ECMAScript specification (thanks to Graal.js)

Publication

ACM / Research Gate

Licence

NodeProf is available under the following license:

Acknowledgement

Thanks to Daniele Bonetta, Alexander Jordan, and Christian Humer from Oracle Labs for the help during the implementation.

Contributors