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ę.