Presentamos Achronyme — un lenguaje para pruebas zero-knowledge. Lee el anuncio arrow_right_alt

Mapa de Crates

Dependencias y responsabilidades de los crates del workspace.

El workspace de Achronyme contiene 19 crates. Todos comparten la misma versión y edición de Rust. La organización por capas posterior a la limpieza (cerrada el 2026-04-24) los agrupa en cuatro niveles: hojas sin dependencias del workspace, crates de vocabulario, pila de IR/compilador, y orquestación de alto nivel.

Resumen de crates

CrateRutaPropósito
diagnosticscrates/diagnostics/Spans, errores, sugerencias, renderer estilo rustc (hoja sin dependencias)
memorycrates/memory/FieldElement<F> (BN254/BLS12-381/Goldilocks), trait FieldBackend, arenas de heap, GC
ach-macroscrates/ach-macros/Proc macros: #[ach_native], #[ach_module]
achronyme-parsercrates/achronyme-parser/Lexer, parser Pratt+descenso recursivo, tipos AST con propiedad
resolvecrates/resolve/Tabla de símbolos, registro de builtins, resolver unificado de dispatch (Movimiento 2)
lysis-typescrates/lysis-types/InstructionKind<F>, NodeId compartidos con la Lysis VM
constraintscrates/constraints/Variable, LinearCombination, sistemas R1CS + Plonkish, Poseidon, exportación binaria
ir-corecrates/ir-core/Hoja SSA: Instruction<F>, SsaVar, Visibility, IrType
ir-forgecrates/ir-forge/Plantillas ProveIR, compilador AST→ProveIR, walker del lift de Lysis
ircrates/ir/Pases de IR (DCE, CSE, const-fold, taint), module loader, inspector, orquestación de ProveIR
zkccrates/zkc/Compilador de constraints: backend R1CS, backend Plonkish, witness ops, andamiaje del oracle
akronccrates/akronc/Compilador de bytecode para la Akron VM (antes compiler)
akroncrates/akron/VM de bytecode de propósito general basada en registros (antes vm)
artikcrates/artik/VM SSA de cómputo de testigos (antes witness) — ver Artik
lysiscrates/lysis/Tercera VM, instanciador estructural de plantillas con hash-consing — en progreso
circomcrates/circom/Frontend de Circom 2.x: lexer, parser, análisis, lowering — ver Frontend de Circom
provingcrates/proving/Groth16 (arkworks), PlonK (halo2-KZG), generación de verificadores Solidity
achronyme-stdcrates/std/Biblioteca estándar vía el trait NativeModule
clicrates/cli/Interfaz de línea de comandos, orquestación de pruebas

Renombramientos de crates (post-limpieza)

La limpieza estructural del 2026-04-18 → 2026-04-24 renombró tres crates y dividió ir en tres:

Nombre antiguoNombre nuevoRazón
vmakronDistinguir de la VM de testigos y de la Lysis VM en progreso
witnessartikCoincidir con el magic de bytecode ARTK y la extensión .artik
compilerakroncDesambiguar del compilador de constraints zkc; “compilador de akron”
irir-core + ir + ir-forgeRomper ciclos de dependencias; exponer primitivas SSA como crate hoja

Los nombres antiguos aparecen en el historial de git previo al 2026-04-18 y en algunos comentarios legacy de rutas de archivo — todos mapean mecánicamente a los nuevos nombres.

Niveles de dependencias

Nivel 0 — Fundación (sin dependencias del workspace)

diagnostics, memory, ach-macros, lysis-types. Hojas puras. En conjunto definen el vocabulario universal del workspace: spans, errores, elementos de campo, formas de tokens de opcodes y proc macros.

Nivel 1 — Vocabulario

achronyme-parser (depende de diagnostics) — AST de superficie.

resolve (depende de achronyme-parser, diagnostics) — tabla de símbolos, registro de builtins, ModuleGraph. Aloja SymbolId, CallableKind, Availability. Después de Movimiento 2, todo el dispatch (llamada a método, Type::MEMBER, llamada nativa) pasa por resolve en lugar de búsquedas ad-hoc en tablas.

constraints (depende de memory) — LinearCombination, ConstraintSystem, PlonkishSystem, parámetros de Poseidon, escritores binarios .r1cs/.wtns en formato iden3.

ir-core (depende de memory, diagnostics) — Instruction<F> SSA, SsaVar, Visibility, IrType. Crate hoja para que ir e ir-forge puedan depender ambos sin formar un ciclo.

Nivel 2 — IR y compilación de circuitos

ir-forge (depende de ir-core, achronyme-parser, resolve, diagnostics, lysis-types, circom para hooks de lowering)

Tipos de datos de ProveIR (ProveIR, CircuitExpr, CircuitNode, CaptureDef), compilador AST→ProveIR (ProveIrCompiler), walker del lift de Lysis. La única capa donde sucede el razonamiento simbólico de circuitos en tiempo de compilación. Ver ProveIR.

ir (depende de ir-core, ir-forge, resolve)

Orquestación de IR: pases (const_fold, cse, dce, bool_prop, taint, bound_inference), evaluador, module loader, constructor del grafo del inspector. Aloja el trait CircomLibraryHandle.

zkc (depende de ir-core, constraints, memory)

El compilador de constraints. Backend R1CS (compile_to_r1cs), backend Plonkish, operaciones de testigos (WitnessOp), andamiaje del oracle para el gate de la Fase 3.C de Lysis.

circom (depende de achronyme-parser, diagnostics, ir-forge, resolve)

Frontend completo de Circom 2.x. Hace lift de cuerpos de funciones no inlinables a Artik vía lowering::artik_lift.

Nivel 3 — Bytecode + VMs

akronc (depende de achronyme-parser, resolve, diagnostics)

Compilador de bytecode para la Akron VM. Aloja el optimizador de bytecode (peephole, const-fold, eliminación de stores muertos).

akron (depende de memory, constraints, ir, ir-forge)

VM de propósito general basada en registros. 43 opcodes, GC tri-color de marcado y barrido, valores etiquetados (tagged values) de 64 bits. Carga archivos .achb vía akron::loader. Aloja la ejecución de prove {} en runtime vía el trait ProveHandler.

artik (depende de memory)

VM dedicada al cómputo de testigos. ~25 opcodes, registros estilo SSA, sin heap, sin GC. Carga blobs .artik embebidos en WitnessOp::ArtikCall.

lysis (depende de memory, artik, lysis-types)

Tercera VM — en progreso. Instanciador estructural de plantillas con interner de hash-consing. Ver Lysis VM. El walker vive en ir-forge::lysis_lift; el andamiaje del oracle en zkc::lysis_oracle.

Nivel 4 — Orquestación de alto nivel

proving (depende de constraints, memory)

Groth16 in-process (ark-groth16 + ark-bn254) y PlonK (halo2 KZG, fork de PSE). Genera verificadores Solidity para verificación on-chain de Groth16.

achronyme-std (depende de akron, memory, ach-macros)

Nativos de la biblioteca estándar vía el trait NativeModule. 16 nativos, registrados a través de proc macros #[ach_native].

cli (depende de akron, akronc, ir, ir-forge, zkc, circom, proving, resolve, achronyme-std)

Binario de cara al usuario. Despacha ach run, ach circuit, ach circom, ach prove, ach inspect, ach init. Aloja las implementaciones DefaultCircomWitnessHandler y ProveHandler inyectadas en Akron.

Grafo de dependencias

diagnostics ─── lysis-types ─── ach-macros        (Tier 0 leaves)
    │                                  │
    ├── achronyme-parser               │
    │       │                          │
    │       └── resolve                │
    │              │                   │
    ├── memory ────┼── constraints     │
    │              │       │           │
    │              ├── ir-core         │
    │              │       │           │
    │              ├── ir-forge ◀──────┴── (uses lysis-types)
    │              │       │
    │              ├── ir ─┘
    │              │
    │              ├── zkc
    │              │
    │              ├── circom
    │              │
    │              ├── akronc
    │              │
    │              ├── akron
    │              │       │
    │              ├── artik
    │              │       │
    │              └── lysis ◀───── (uses artik, lysis-types)

    ├── proving
    ├── achronyme-std
    └── cli ◀── (uses everything)

Puntos de entrada clave

TareaCrateFunción
Parsear fuente .achachronyme-parserparse_program(source)
Parsear fuente .circomcircomcircom::parser::parse_circom(source)
Compilar bytecodeakroncCompiler::compile(&program)
Compilar bloque proveir-forgeProveIrCompiler::compile_prove_block(...)
Compilar plantilla circomcircomcompile_to_prove_ir(source)
Instanciar ProveIRirProveIR::instantiate(captures, ...)
Lower de AST a IR (circuito)irIrLowering::lower_circuit(source, pub, wit)
Optimizar IRirpasses::optimize(&mut program)
Compilar a R1CSzkccompile_to_r1cs(program)
Compilar a PlonkishzkcPlonkishCompiler::compile_ir(program)
Generar testigozkccompile_to_r1cs_with_witness(program, inputs)
Ejecutar Akron VMakronVm::run(function)
Ejecutar Artikartikartik::execute_with_budget(program, ctx, budget)
Ejecutar Lysis (en progreso)lysislysis::execute(program, sink)
Hacer lift de función Circom a Artikcircomlowering::artik_lift::lift(...)
Hacer lift de ProveIR a Lysisir-forgelysis_lift::Walker::lift(...)
Generar prueba Groth16provingproving::groth16::prove(cs, witness, pk)
Generar prueba PlonKprovingproving::halo2_proof::prove(cs, witness, pk)
Verificador Solidityprovingproving::solidity::generate(...)
Ejecutar CLIclimain() → dispatch de comandos

Referencias cruzadas

Navigation