Przejdź do treści

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, ack i nack eksperymentalne sprawdzone sprawdzone sprawdzone sprawdzone częściowo eksperymentalne
stream i fan-out 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.cs
  • junexis-lang/compiler/JunexisLang.Compiler.CodeGen.Tests/CodeGeneratorGoCanonicalTests.cs
  • junexis-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.cs
  • junexis-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 istnieje tylko w Go i TypeScript.

Przykład: junexis-documentation/docs/examples/conformance/02-types.jnx

Dowody:

  • junexis-lang/compiler/JunexisLang.Compiler.CodeGen/TypeMappings.cs
  • junexis-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.cs
  • junexis-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.cs
  • junexis-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.cs
  • junexis-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.cs
  • junexis-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.cs
  • junexis-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.cs
  • junexis-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.cs
  • junexis-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.cs
  • junexis-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.g4
  • junexis-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.cs
  • junexis-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.cs
  • junexis-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.cs
  • junexis-lang/compiler/JunexisLang.Compiler.Core/Ast/AstNodes.cs