KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Kontrakt usługi `.klink`: kompilacja i schemat
Kontrakt `klink "1.0"` z usługą, wersją SemVer, metodami (parametry, wynik, termin, uprawnienie) i typami KretS. `kret link compile` daje postać kanoniczną JSON i skrót SHA-256, `kret link schema` — JSON Schema żądań i wyników (pochodna kontraktu, nie drugie źródło prawdy). Kontrakt **nie daje prawa do komunikacji**.
Witryna nie wykonuje kodu ani nie prowadzi walidacji SDK. Wyniki poniżej pochodzą z eksportu określonej wersji i przestają opisywać kod po jego zmianie.
Kanoniczne pliki projektu
klink "1.0"
// Wersjonowany kontrakt usługi notatek.
service notes.api {
version "1.2.0"
method add {
description "Dodaje notatkę i zwraca wszystkie notatki."
param text String
returns "List<String>"
permission kretlink.publish
timeout 5s
}
method count {
description "Liczba notatek."
returns Int64
}
method find {
description "Pierwsza notatka z prefiksem albo null."
param prefix String
returns "String?"
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
klink "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.// Wersjonowany kontrakt usługi notatek.Komentarz autora; nie jest wykonywany.service notes.api {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.version "1.2.0"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.Pusta linia oddziela fragmenty źródła.method add {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.description "Dodaje notatkę i zwraca wszystkie notatki."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.param text StringOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.returns "List<String>"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.permission kretlink.publishOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.timeout 5sOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.method count {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.description "Liczba notatek."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.returns Int64Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.method find {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.description "Pierwsza notatka z prefiksem albo null."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.param prefix StringOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.returns "String?"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.
Wynik i typowy błąd
Kod 0 w obu krokach; schemat wymienia usługę `notes.api` i jej metody.
Rekord jako typ parametru — rekordy w kontraktach 1.0 są NOT_SUPPORTED. Dozwolone: `Bool Int64 Float64 String Bytes Unit List<T> Map<String,T> T?`.
Wymagania wersji i procedura lokalna
- sdk
- 1.0.0-rc.3+kret.local.3
- sdkInfoReports
- 1.0.0-rc.3
- core
- 1.0.0-test.6.11-draft.1
- os
- Windows 11 x64
- dotnet
- .NET 10 runtime
Polecenia poniżej są instrukcją do samodzielnego wykonania z właściwym lokalnym SDK. DATA/OUT muszą wskazywać nowe katalogi testowe. Nie ma przycisku uruchamiania na serwerze.
- compile
kret link compile Bridge/notes.klink -o {OUT}/notes.jsonKatalog: project · Oczekiwany kod wyjścia: 0 - schema
kret link schema Bridge/notes.klinkKatalog: project · Oczekiwany kod wyjścia: 0
Wyniki zapisane w pakiecie źródłowym
To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.
# EXPECTED_OUTPUT — KRETLINK-B01-ContractCompileSchema
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:33Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.
### 1. compile (exit 0, PASS)
> kret link compile Bridge/notes.klink -o {OUT}/notes.json
[stderr]
OK: notes.api 1.2.0, metod: 3, sha256: c16099f474fad0fda0c82f44cefd7fb5e4c4db89f72f1218c3cdab3708ab517e
### 2. schema (exit 0, PASS)
> kret link schema Bridge/notes.klink
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "notes.api 1.2.0",
"$defs": {
"add.request": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"prefixItems": [
{
"type": "string",
"maxLength": 16384
}
],
"items": false
},
"add.result": {
"type": "array",
"maxItems": 100000,
"items": {
"type": "string",
"maxLength": 16384
}
},
"count.request": {
"type": "array",
"minItems": 0,
"maxItems": 0,
"prefixItems": [],
"items": false
},
"count.result": {
"type": "integer"
},
"find.request": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"prefixItems": [
{
"type": "string",
"maxLength": 16384
}
],
"items": false
},
"find.result": {
"anyOf": [
{
"type": "string",
"maxLength": 16384
},
{
"type": "null"
}
]
}
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
# EXPECTED_OUTPUT — KRETLINK-B01-ContractCompileSchemaOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:33Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.### 1. compile (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret link compile Bridge/notes.klink -o {OUT}/notes.jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.[stderr]Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.OK: notes.api 1.2.0, metod: 3, sha256: c16099f474fad0fda0c82f44cefd7fb5e4c4db89f72f1218c3cdab3708ab517eOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.### 2. schema (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret link schema Bridge/notes.klinkOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."$schema": "https://json-schema.org/draft/2020-12/schema",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."title": "notes.api 1.2.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."$defs": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."add.request": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "array",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."minItems": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."maxItems": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."prefixItems": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."type": "string",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."maxLength": 16384Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."items": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."add.result": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "array",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."maxItems": 100000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."items": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "string",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."maxLength": 16384Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."count.request": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "array",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."minItems": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."maxItems": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."prefixItems": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."items": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."count.result": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "integer"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."find.request": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "array",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."minItems": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."maxItems": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."prefixItems": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."type": "string",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."maxLength": 16384Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."items": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."find.result": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."anyOf": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."type": "string",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."maxLength": 16384Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."type": "null"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.]Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.Pusta linia oddziela fragmenty źródła.
Diagnostyka i raporty testów
null
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
nullOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Pochodzenie i integralność
KRET_LANGUAGE_KRETLINK.zip:KretLink/Examples/BASIC_ContractCompileSchema/example.json
02_PLAYGROUND/EXAMPLES/KRETLINK-B01-ContractCompileSchema.json
SHA-256 3BAB3936720EE4E3EDBECF08F994B5C0F6B9B3CD9D80C22733DDDA8413EF88E1Materiał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-B01-ContractCompileSchema — Kontrakt usługi `.klink`: kompilacja i schemat
KRETLINK-B01-ContractCompileSchema — Kontrakt usługi .klink: kompilacja i schemat
🇬🇧 English version below.
| Pole | Wartość |
|---|---|
| Technologia | KretLink |
| Poziom | BASIC |
| Klasyfikacja | VALIDATION_ONLY — Tylko walidacja (bez wykonania) |
| Playground | PUBLIC_STATIC — publicznie: tylko podgląd kodu i gotowe wyniki |
| SDK | 1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany) |
| Wynik testu | TEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt |
Co pokazuje
Kontrakt klink "1.0" z usługą, wersją SemVer, metodami (parametry, wynik, termin, uprawnienie) i typami KretS. kret link compile daje postać kanoniczną JSON i skrót SHA-256, kret link schema — JSON Schema żądań i wyników (pochodna kontraktu, nie drugie źródło prawdy). Kontrakt nie daje prawa do komunikacji.
Pliki
| Plik |
|---|
Bridge/notes.klink |
Jak uruchomić
Katalog roboczy: katalog tego przykładu. kret oznacza <SDK>\Compiler\kret.exe, kretui-host — <SDK>\UiHost\kretui-host.exe. {DATA} / {OUT} to nowe, puste katalogi poza projektem. Wymagania: REQUIREMENTS.md.
kret link compile Bridge/notes.klink -o {OUT}/notes.json— postać kanoniczna JSONkret link schema Bridge/notes.klink— JSON Schema
Oczekiwany wynik
Kod 0 w obu krokach; schemat wymienia usługę notes.api i jej metody.
Najczęstszy błąd
Rekord jako typ parametru — rekordy w kontraktach 1.0 są NOT_SUPPORTED. Dozwolone: Bool Int64 Float64 String Bytes Unit List<T> Map<String,T> T?.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →