Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Błędy kontraktu i stream

INTERMEDIATE30 min
Postęp nauki 0 / 3
Zaloguj się na konto użytkownika, aby zachować postęp.

Czego się nauczysz

  • Prześledź źródła i wyjaśnij opisany kontrakt.
  • W ContractErrorsAndStreams wskaż oczekiwany błąd kontraktu i osobne ograniczenie Core.
Wymagania wstępne
  • Ukończ Podstawy i wcześniejszy poziom tej ścieżki.

Wyjaśnienie krok po kroku

Porównuj wersje, typy i nazwy metod na obu końcach kontraktu. Eksport usług, stream w Core i produkcyjne kretlink.* pozostają zablokowane. Nie traktuj pozytywnej walidacji SDK jako testu zdalnego połączenia.

Praca z kodem źródłowym

Błędy kontraktu i strumienie (EXPERIMENTAL)

Nieznany typ parametru jest błędem kompilacji kontraktu. Metoda `stream` kompiluje się z ostrzeżeniem `KCS-LNK-0121`: transport strumieni jest eksperymentalny (D-KCS-13) i nie należy do kontraktu 1.0.

klink "1.0"
service demo.bad {
    version "1.0.0"
    method add {
        param a NoSuchType
        returns Int64
    }
}

Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. klink "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. service demo.bad {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. version "1.0.0"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  4. method add {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. param a NoSuchTypeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. returns Int64Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  8. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  9. Pusta linia oddziela fragmenty źródła.

Oczekiwany wynik: Pierwszy krok: kod 1; drugi: kod 0 z ostrzeżeniem `KCS-LNK-0121`.

Typowy błąd: Traktowanie skompilowanego kontraktu jako zgody na eksport usługi pluginu — eksport usług pluginów i produkcyjne uprawnienia `kretlink.*` są zablokowane (A17, FB-06).

Instrukcja, wersje i zapisane wyniki →

Materiały źródłowe do tego tematu

Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.

KretLink — API / CLI
API / polecenieOpis
kret link compile <kontrakt.klink> [-o plik.json]postać kanoniczna
kret link schema <kontrakt.klink>JSON Schema żądań i wyników
kret link call / stream --pipe … --contract … --method … [--secret-env ZMIENNA]klient RPC (sekret z env)
Otwórz cały rozdział ze źródłem →
KretLink — specyfikacja (zakres kontraktu 1.0)
Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: klink-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.

Źródła normatywne (kopie w Sources/, kolejność pierwszeństwa: decyzje właściciela → zamrożony kontrakt → kod SDK → testy):

  • LANGUAGE_FREEZE_1_0/08_KRETLINK_SPECIFICATION.md
  • SDK 05_Integration/KretLink/README.md
ElementStan w KretLink
Struktura plikuklink "1.0", service nazwa { version "SemVer"; method …; stream … }.
TypyBool Int64 Float64 String Bytes Unit (tylko wynik), List<T>, Map<String,T>, T? (złożone w cudzysłowie).
Komentarze//.
Logikabrak — tylko kontrakt.
  • eksport usług pluginów (zablokowany)
  • RPC między komputerami (NOT_SUPPORTED)
  • rekordy w kontraktach (NOT_SUPPORTED)
  • Linux/macOS (tożsamość procesu niedostępna — NOT_SUPPORTED)
  • klink-1.0 + kretlink-rpc/1 1.0; rekordy, multi-host, strumienie od klienta — NOT_SUPPORTED.
  • kretlink-local/1 przyjmuje ramki do 1 MiB, broker czyta 512 KiB — znana niespójność (zgłoszona w SDK).

Pełna referencja konstrukcji: SYNTAX_REFERENCE.md.

Otwórz cały rozdział ze źródłem →
KretLink — samouczek INTERMEDIATE
Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: klink-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.

Cel: moduły, łączenie funkcji, dane, konfiguracja, komunikacja, obsługa błędów, interfejsy SDK.

Narzędzia: kret = <SDK>\Compiler\kret.exe (SDK 1.0.0-rc.3+kret.local.3), kretui-host = <SDK>\UiHost\kretui-host.exe. {DATA}/{OUT} = nowe, puste katalogi.

Projekt: ../../Examples/INTERMEDIATE_ContractErrorsAndStreams/ · klasyfikacja VALIDATION_ONLY · Playground LOCAL_VALIDATE

Kroki (katalog roboczy: katalog przykładu):

  1. kret link compile bad-type.klink — oczekiwany błąd — w wyniku: KCS-LNK
  2. kret link compile stream.klink — w wyniku: KCS-LNK-0121

Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.

Otwórz cały rozdział ze źródłem →

Ćwiczenie i sprawdzenie wiedzy

W ContractErrorsAndStreams wskaż oczekiwany błąd kontraktu i osobne ograniczenie Core.

Szkic nie jest wysyłany na serwer i znika po opuszczeniu lekcji. Przed wyjściem możesz go skopiować.
Podpowiedzi
  • KretLink to wersjonowane kontrakty usług (`.klink`) i dwa protokoły: łącze broker↔plugin `kretlink-local/1` (stdin/stdout) oraz RPC `kretlink-rpc/1` na potokach nazwanych (tożsamość procesu, wzajemny HMAC, terminy). Kontrakt można walidować, ale **nie daje on prawa do komunikacji**. Eksport usług pluginów, `stream` w Core i produkcyjne uprawnienia `kretlink.*` są zablokowane (A17, FB-06).
  • Odczytaj ograniczenia i oczekiwane błędy z dostarczonego samouczka; check i run są oddzielnymi krokami.
Omówienie rozwiązania

Odpowiedź oprzyj na pokazanym kodzie i rozdziale źródłowym. Porównuj wersje, typy i nazwy metod na obu końcach kontraktu. Eksport usług, stream w Core i produkcyjne kretlink.* pozostają zablokowane. Nie traktuj pozytywnej walidacji SDK jako testu zdalnego połączenia.

Które podsumowanie jest zgodne z lekcją?

To quiz o opisanym kontrakcie. Nie kompiluje kodu, nie potwierdza wykonania programu i nie przyznaje nagród.

Podsumowanie i następny krok

Porównuj wersje, typy i nazwy metod na obu końcach kontraktu. Eksport usług, stream w Core i produkcyjne kretlink.* pozostają zablokowane. Nie traktuj pozytywnej walidacji SDK jako testu zdalnego połączenia.

Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →

Wybierz, co możemy zapamiętać w tej przeglądarce. Możesz zmienić decyzję w każdej chwili.

Polityka prywatności