Package io.github.jabrena.juno


@NullMarked package io.github.jabrena.juno
Juno's top-level compiler entry points: the CLI, the embeddable compiler API, and the small value types that connect them.
  • Main — the compile/inspect command-line tool (java -jar juno-<version>.jar compile --main <class> --classpath <cp>).
  • JunoCompiler — the stable, embeddable API (used directly by juno-maven-plugin) wrapping the same pipeline behind a single compile call.
  • CompilationPipeline — the compiler's stages, named and callable independently: classfiles -> link -> lower -> optimize -> generate. JunoCompiler runs them in sequence; this class exists so later tooling can hook into one stage's output without re-deriving it.
  • CompilationRequest / CompilationResult / CompilationReport — the input (closed-world classpath, entry-point class, GC logging flag), output (generated assembly, C++ runtime shim, entry symbol), and diagnostic summary (reachable methods, IR block count, intrinsics used, runtime-risk findings) of one compilation.
  • CompileException — the user-facing error type raised while linking or compiling, carrying a diagnostic message rather than an internal stack trace.
  • RuntimeLimits — fixed constants shared between static analysis and the generated firmware (the 8 KiB arena capacity, the runtime String slot size), kept in one place so both sides of that contract stay in sync.

The actual compiler stages live in sibling packages this package composes: classfile/bytecode (parsing), linker (closed-world reachability), lowering/ir (bytecode to Juno's own IR), optimize (IR-level passes), analysis (runtime-risk estimation), and backend (Cortex-M4 assembly and C++ runtime shim generation). api, annotations, board, and intrinsic define the Java-facing hardware API and the compiler's model of what it can target.