KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
KretScript
KretS (oficjalnie KretScript, generacja 2.0) to statycznie typowany język logiki pluginów. Kompiluje się do bytecode KBC 2 i działa w maszynie z weryfikatorem w osobnym procesie pluginu. Operacje hosta (dziennik, KretDB, konfiguracja, AI, mosty) są dostępne tylko przez brokera i tylko przy uprawnieniu z KretL.
Stan języka nie nadaje uprawnień KCS ani prawa działania w Core Production.
- Format / wersja
- 2.0
- Kontrakt
- krets-2.0
- Rozszerzenia
- .krs
Przejdź do trzech poziomów nauki
Dokumentacja i referencja
32 rozdziałów
Architecture diagramLANGUAGEKretS — API / CLILANGUAGEKretS — architektura / architectureLANGUAGEKretS — zgodność i wersje / compatibility and versionsLANGUAGEKretS — kody diagnostyczne / diagnostic codesLANGUAGEKretS — wprowadzenieINTRODUCTIONKretS — specyfikacja (zakres kontraktu 1.0)LANGUAGEKretS — runtimeLANGUAGEKretS — bezpieczeństwo / securityLANGUAGEKretS — referencja składniLANGUAGEKretS — rozwiązywanie problemów / troubleshootingLANGUAGEKRETS-A02-AsyncStreamsEvents — Zadania, strumienie i zdarzenia [2.0]EXAMPLEREQUIREMENTS — KRETS-A02-AsyncStreamsEventsEXAMPLEKRETS-A01-ClassesInterfacesGenerics — Klasy, interfejsy, dziedziczenie, generyki [2.0]EXAMPLEREQUIREMENTS — KRETS-A01-ClassesInterfacesGenericsEXAMPLEKRETS-A03-TestsAndDiagnostics — Testy `kret test` i diagnostyka (EXPERIMENTAL)EXAMPLEREQUIREMENTS — KRETS-A03-TestsAndDiagnosticsEXAMPLEKRETS-B02-CommonTypeErrors — Najczęstsze błędy typówEXAMPLEREQUIREMENTS — KRETS-B02-CommonTypeErrorsEXAMPLEKRETS-B01-HelloWorld — Pierwszy program KretSEXAMPLEREQUIREMENTS — KRETS-B01-HelloWorldEXAMPLEKRETS-I01-DataProcessing — Przetwarzanie danych: rekordy, listy, mapy, błędyEXAMPLEREQUIREMENTS — KRETS-I01-DataProcessingEXAMPLEKRETS-I02-Modules — Moduły i łączenie funkcjiEXAMPLEREQUIREMENTS — KRETS-I02-ModulesEXAMPLEPrzykłady tej technologii
Zadania, strumienie i zdarzenia [2.0]
`async fn` i `await` (zadania współbieżne, nie równoległe), `Stream<Int>` z buforem i `for await`, `timeout` obsłużony w `try`/`catch`, deklaracja `event`, handler `on`, `emit` oraz `subscribe … with`.
RUNNABLE_LOCALKretS · ADVANCEDKlasy, interfejsy, dziedziczenie, generyki [2.0]
Interfejs, klasa z konstruktorem `init`, dziedziczenie z `super(...)` i `override`, klasa generyczna `Pair<A, B>`, funkcja generyczna z ograniczeniem `T: Shape`, polimorfizm przez interfejs. Kod bazuje na oficjalnym przykładzie SDK `ObjectOriented`.
RUNNABLE_LOCALKretS · ADVANCEDTesty `kret test` i diagnostyka (EXPERIMENTAL)
Moduły testowe w `Tests/` (funkcje `test…` bez parametrów i bez wyniku). Porażka = `throw`, pominięcie = `throw "SKIP: …"`. `kret test --list` tylko kompiluje i wypisuje plan, `kret test --json` wykonuje każdy moduł w świeżym, izolowanym procesie pluginu. `kret test` ma status EXPERIMENTAL (`kret-test/1`).
RUNNABLE_LOCALKretS · BASICNajczęstsze błędy typów
KretS nie ma konwersji niejawnych. `1 + 2.0` daje `KCS-KRS-0320`, `let x = null` bez typu daje `KCS-KRS-0307`. Folder `fixed/` pokazuje poprawki: jawne `toFloat(1)` i typ `String?`.
VALIDATION_ONLYKretS · BASICPierwszy program KretS
Moduł `Main`, funkcja `Start` zwracająca `String`, zmienna `let`, łączenie tekstów i wpis w dzienniku (`log.info`, wymaga `logs.own.write`).
RUNNABLE_LOCALKretS · INTERMEDIATEPrzetwarzanie danych: rekordy, listy, mapy, błędy
Parsowanie wierszy tekstu do rekordów (`record`), filtrowanie i sumowanie w pętli `for`, grupowanie w `Map<String, Int>`, typy nullable (`parseInt` → `Int64?`, `Map.get` → `V?`) z `orElse`, obsługa błędu `try`/`catch` i `throw`, stała `const`.
RUNNABLE_LOCALKretS · INTERMEDIATEModuły i łączenie funkcji
Jeden plik = jeden moduł. `Main` wywołuje funkcje modułów `Stats` i `Text` przez `Moduł.funkcja`. Rekordy są wspólne dla całego pluginu.
RUNNABLE_LOCAL