Skip to content

Latest commit

 

History

History
51 lines (36 loc) · 1.47 KB

File metadata and controls

51 lines (36 loc) · 1.47 KB

Runtime Framework

About

The EISOP Runtime Framework is an experimental, work-in-progress framework for enforcing and supporting Java annotated type systems at runtime.

It utilizes Java agents to instrument bytecode at class load time. The current focus is gradual typing for pluggable type systems, especially those built with the Checker Framework.

Requirements

  • JDK 25 or newer.

Build

Build the agent, checker, and test artifacts:

./gradlew build

Build outputs are copied to build/dist/. The important artifacts are:

  • framework.jar: the Java agent and shared runtime framework.
  • checker.jar: the nullness runtime checker.
  • checker-qual.jar: Checker Framework qualifier annotations.
  • test-utils.jar: test helpers.

Running

Run with the agent:

java \
    -javaagent:build/dist/framework.jar \
    -Druntime.checker=io.github.eisop.runtimeframework.checker.nullness.NullnessRuntimeChecker \
    -Druntime.trustAnnotatedFor=true \
    -cp 'out:build/dist/*' \
    your.main.Class

Enable global instrumentation mode when unchecked code also needs to be instrumented:

java \
    -javaagent:build/dist/framework.jar \
    -Druntime.global=true \
    -Druntime.checker=io.github.eisop.runtimeframework.checker.nullness.NullnessRuntimeChecker \
    -Druntime.trustAnnotatedFor=true \
    -cp 'out:build/dist/*' \
    your.main.Class