Macierz języka i wykonania
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.
Poziom: średniozaawansowany i ekspert. Początkujący może korzystać z macierzy, gdy chce sprawdzić granicę konstrukcji użytej w kursie.
Macierz pokazuje osobno przyjęcie składni, analizę znaczenia, generowanie kodu, wykonanie oraz obsługę narzędziową. Dzięki temu „parser przyjmuje” nie jest mylone z „program działa jednakowo w każdym środowisku”.
flowchart LR
SOURCE["Program .jnx"] --> PARSER["Parser"]
PARSER --> SEMANTICS["Semantyka i IR"]
SEMANTICS --> CPP["C++"]
SEMANTICS --> GO["Go"]
SEMANTICS --> TS["TypeScript"]
CPP --> RUNTIME["Wykonanie"]
GO --> RUNTIME
TS --> RUNTIME
PARSER --> TOOLS["Studio, LSP i CLI"]
SEMANTICS --> TOOLS
Znaczenie stanów
| Stan | Znaczenie |
|---|---|
| sprawdzone | Istnieje wskazany test lub scenariusz dla opisanego zakresu. |
| częściowo | Działa reprezentatywny zakres, lecz nie wszystkie warianty. |
| eksperymentalne | Konstrukcja istnieje, ale jej kontrakt może się jeszcze zmienić. |
| opaque | Treść jest zachowywana, ale nie otrzymuje pełnej semantyki wykonawczej. |
| niepotwierdzone | Brakuje dowodu pozwalającego obiecać obsługę tej warstwy. |
| nie dotyczy | Konstrukcja świadomie nie należy do danej warstwy lub środowiska. |
Pokrycie według warstwy
| Konstrukcja | Parser | Semantyka | C++ | Go | TypeScript | Runtime | Narzędzia |
|---|---|---|---|---|---|---|---|
| struct, enum i typy danych | sprawdzone | sprawdzone | sprawdzone | sprawdzone | sprawdzone | sprawdzone | sprawdzone |
| fn, wyrażenia i przepływ sterowania | sprawdzone | sprawdzone | sprawdzone | sprawdzone | sprawdzone | częściowo | sprawdzone |
| tablice, Map, typy parametryzowane i unie | sprawdzone | częściowo | częściowo | częściowo | częściowo | nie dotyczy | częściowo |
| funkcje środowiska i konwersje | sprawdzone | sprawdzone | częściowo | częściowo | częściowo | częściowo | sprawdzone |
| task, state, config i lifecycle | sprawdzone | sprawdzone | sprawdzone | sprawdzone | sprawdzone | sprawdzone | sprawdzone |
| chan |
sprawdzone | sprawdzone | sprawdzone | sprawdzone | sprawdzone | sprawdzone | sprawdzone |
| queue |
eksperymentalne | sprawdzone | sprawdzone | sprawdzone | sprawdzone | częściowo | eksperymentalne |
| stream |
sprawdzone | sprawdzone | sprawdzone | sprawdzone | sprawdzone | sprawdzone | sprawdzone |
| pipeline, parallel i analiza topologii | sprawdzone | sprawdzone | częściowo | częściowo | częściowo | częściowo | sprawdzone |
| device i native | sprawdzone | sprawdzone | częściowo | nie dotyczy | nie dotyczy | częściowo | sprawdzone |
| extern i kod należący do użytkownika | sprawdzone | sprawdzone | częściowo | częściowo | niepotwierdzone | częściowo | sprawdzone |
| import i organizacja modułów | sprawdzone | częściowo | niepotwierdzone | niepotwierdzone | niepotwierdzone | nie dotyczy | częściowo |
| protocol rest i endpointy Go | opaque | częściowo | niepotwierdzone | sprawdzone | niepotwierdzone | częściowo | częściowo |
| respond | sprawdzone | sprawdzone | niepotwierdzone | niepotwierdzone | niepotwierdzone | niepotwierdzone | sprawdzone |
| narrative, deployment, supervisor i circuit_breaker | opaque | częściowo | niepotwierdzone | niepotwierdzone | niepotwierdzone | niepotwierdzone | częściowo |
Stan dowodów sprawdzono: 2026-08-12.
Granice i dowody
struct, enum i typy danych
Granica: Dowód obejmuje typy użyte w korpusie konformacyjnym; nazwy typów o stałej szerokości nadal zależą od środowiska docelowego.
Przykład: junexis-documentation/docs/examples/conformance/02-types.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/CodeGeneratorCppCanonicalTests.csjunexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/CodeGeneratorGoCanonicalTests.csjunexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/CodeGeneratorTypeScriptCanonicalTests.cs
fn, wyrażenia i przepływ sterowania
Granica: Sprawdzone są reprezentatywne if, for i match; pełne pokrycie każdej kombinacji wyrażeń pozostaje otwarte.
Przykład: junexis-documentation/docs/examples/conformance/08-functions-control-flow.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/GeneratedRuntimeConformanceTests.csjunexis-lang/compiler/JunexisLang.Compiler.Tests/Semantics/SemanticAnalyzerTests.cs
tablice, Map, typy parametryzowane i unie
Granica: Tablice mają mapowania w trzech generatorach; unia nie ma mapowania Go, Map nie ma kompletnego mapowania, a specjalne List
Przykład: junexis-documentation/docs/examples/conformance/02-types.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.CodeGen/TypeMappings.csjunexis-lang/compiler/JunexisLang.Compiler.IR/IRDocument.cs
funkcje środowiska i konwersje
Granica: Rejestr rozróżnia implementacje według środowiska; część nazw jest wspólna, część zależna od generatora, a polskie operacje storage pozostają propozycjami bez implementacji.
Przykład: junexis-documentation/docs/examples/conformance/08-functions-control-flow.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.Core/Runtime/RuntimePrimitiveRegistry.csjunexis-lang/compiler/JunexisLang.Compiler.Tests/Runtime/RuntimePrimitiveRegistryTests.cs
task, state, config i lifecycle
Granica: Test potwierdza reprezentatywny lifecycle, trwałość state i logiczny tick; nie gwarantuje dokładności zegara ściennego.
Przykład: junexis-documentation/docs/examples/conformance/05-task-lifecycle.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/GeneratedLifecycleStateTimeConformanceTests.csjunexis-lang/compiler/JunexisLang.Compiler.Tests/IR/TaskLifecycleRuntimeContractTests.cs
chan
Granica: Kanał nie ustanawia samodzielnie trwałości ani exactly-once.
Przykład: junexis-documentation/docs/examples/conformance/04-communication.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/CodeGeneratorBridgeChanTests.csjunexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/GeneratedRuntimeConformanceTests.cs
queue, ack i nack
Granica: Lowering i identyfikator wiadomości są testowane; stabilna składnia oraz polityka retry, DLQ i trwałego storage nie są domknięte.
Przykład: junexis-documentation/docs/examples/conformance/04-communication.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/GeneratedQueueSemanticConformanceTests.csjunexis-lang/compiler/JunexisLang.Compiler.Core/Runtime/RuntimePrimitiveRegistry.cs
stream i fan-out
Granica: Testowany jest broadcast bez odtwarzania historii; okna, retencja i replay nie należą do tego kontraktu.
Przykład: junexis-documentation/docs/examples/conformance/04-communication.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/CodeGeneratorBridgeStreamTests.csjunexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/GeneratedStreamSemanticConformanceTests.cs
pipeline, parallel i analiza topologii
Granica: Graf, fan-out i relacje są analizowane; pipeline nie zapewnia automatycznie wdrożenia, trwałości ani recovery.
Przykład: junexis-documentation/docs/examples/conformance/06-topology.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.Tests/Topology/TopologyAnalyzeTests.csjunexis-lang/compiler/JunexisLang.Compiler.Tests/Topology/TopologyBuildTests.cs
device i native
Granica: C++ i profil urządzenia wymagają właściwego toolchainu oraz testu na docelowym sprzęcie.
Przykład: junexis-documentation/docs/examples/conformance/07-device-native.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/CodeGeneratorCppHeaderBasicTests.csjunexis-runtime/runtime-embedded
extern i kod należący do użytkownika
Granica: Scaffold i kontrakty chronią własność plików; ABI, zależności i recovery kodu użytkownika pozostają jego odpowiedzialnością.
Przykład: junexis-documentation/docs/examples/conformance/extern-project/src/main.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/CodeGeneratorExternContractTests.csjunexis-lang/compiler/JunexisLang.Compiler.CLI.Tests/ExternScaffoldCommandTests.cs
import i organizacja modułów
Granica: Trzy postacie importu trafiają do IR; pełny resolver projektów wieloplikowych nie ma jeszcze kompletnego dowodu.
Przykład: junexis-documentation/docs/examples/conformance/09-imports.jnx
Dowody:
junexis-lang/grammar/JunexisLang.g4junexis-documentation/docs/language/01-moduly.md
protocol rest i endpointy Go
Granica: Ciało protokołu jest opaque, po czym lowerer rozpoznaje ograniczony podzbiór wiązań REST. Generator Go emituje endpointy; nie jest to ogólny system protokołów dla wszystkich środowisk docelowych.
Przykład: junexis-documentation/docs/examples/conformance/10-operational-blocks.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.Topology/DistributedTopologyLowerer.csjunexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/GoProtocolCodeGenTests.cs
respond
Granica: Instrukcja trafia do AST i IR, lecz nie ma kompletnej emisji wykonawczej w generatorach. Nie należy jej przedstawiać jako gotowego mechanizmu request-response.
Przykład: junexis-documentation/docs/examples/conformance/04-communication.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.Core/Ast/AstNodes.csjunexis-lang/compiler/JunexisLang.Compiler.IR/IRDocument.cs
narrative, deployment, supervisor i circuit_breaker
Granica: Parser zachowuje ciało, a analiza wydobywa wybrane relacje; treść nie staje się automatycznie wykonywalną polityką.
Przykład: junexis-documentation/docs/examples/conformance/10-operational-blocks.jnx
Dowody:
junexis-lang/compiler/JunexisLang.Compiler.CLI/Output/AnalysisSnapshotContracts.csjunexis-lang/compiler/JunexisLang.Compiler.Core/Ast/AstNodes.cs