Przejdź do treści

Architektura budowania

Zakres weryfikacji

Treść zachowana z obecnego źródła. Publikacja dokumentacji nie oznacza ponownego potwierdzenia wszystkich komend, przykładów i deklaracji możliwości.

Budowanie jest sekwencją jawnych transformacji. Każda warstwa dodaje informacje i może zakończyć pracę kontrolowaną diagnostyką.

Etap 1: od źródła do zatwierdzonego modelu

flowchart LR
    SRC["Źródło .jnx"] --> PARSER["Parser"]
    PARSER --> AST["Struktura programu"]
    AST --> SEM["Analiza semantyczna"]
    SEM --> IR["Model pośredni"]
    IR --> TOP["Topologia logiczna"]
    TOP --> SNAP["Zapis analizy"]

Zatwierdzony zapis analizy jest wejściem do wyboru środowisk i generowania.

Etap 2: od wyboru środowiska do opublikowanego wyniku

flowchart LR
    SNAP["Zatwierdzona analiza"] --> TARGETS{"Środowiska zgodne<br/>ze źródłem?"}
    TARGETS -->|"nie"| STOP["B0003"]
    TARGETS -->|"tak"| GEN{"Generatory"}
    GEN --> CPP["C++"]
    GEN --> GO["Go"]
    GEN --> TS["TypeScript"]
    CPP --> MAN["Manifest artefaktów"]
    GO --> MAN
    TS --> MAN
    MAN --> RECEIPT["Stan ostatniego poprawnego budowania"]

Dlaczego zapis analizy powstaje przed generowaniem

Mentor i Studio mogą analizować poprawny model niezależnie od tego, czy lokalny zestaw narzędzi C++, Go albo TypeScript jest dostępny. Generowanie nie zmienia znaczenia programu ustalonego przez wcześniejsze etapy.

Publikacja wyniku

Stan ostatniego poprawnego budowania jest aktualizowany dopiero po spełnieniu kontraktu artefaktów. Gdy źródło zmieni się po analizie, wynik powinien zostać odrzucony zamiast połączyć dane z dwóch różnych wersji projektu.

Manifest wyniku zachowuje osobno środowiska żądane, zastosowane i rzeczywiście zbudowane. Dzięki temu Studio oraz kolejne etapy nie muszą zgadywać, czy brak pliku jest zamierzony, czy oznacza niekompletny build.

Własność plików

flowchart LR
    SOURCE["src/ i manifest<br/>autor"] --> BUILD["junexis build"]
    USER["user/<środowisko><br/>autor"] --> BUILD
    BUILD --> OUT["out/<środowisko><br/>generowane"]
    BUILD --> STATE[".junexis/state<br/>zarządzane przez narzędzia"]

Nie edytuj out/. Konfigurację, która ma przetrwać kolejne budowanie, umieszczaj w manifeście, źródle albo odpowiednim katalogu user/.

Dokładne pola i wersje formatów opisują kontrakty wyniku budowania. Zobacz też manifest projektu, CLI i diagnostykę.