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— thecompile/inspectcommand-line tool (java -jar juno-<version>.jar compile --main <class> --classpath <cp>).JunoCompiler— the stable, embeddable API (used directly byjuno-maven-plugin) wrapping the same pipeline behind a singlecompilecall.CompilationPipeline— the compiler's stages, named and callable independently: classfiles -> link -> lower -> optimize -> generate.JunoCompilerruns 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 runtimeStringslot 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.
-
ClassDescriptionDeterministic structural measurements of one Juno compilation.What the compiler found while producing a
CompilationResult.What to compile: a closed-world classpath plus the entry point's fully qualified class name.Generated Cortex-M4 assembly, its C++ runtime shim, entry symbol, and compilation report.A user-facing error produced while linking or compiling Java bytecode.The capacities of the generated runtime: how much RAM the arena and the task stacks take.Runtime constants shared by analysis and the current UNO R4 backend.