KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Biblioteka offline i zależność
Czego się nauczysz
- Prześledź źródła i wyjaśnij opisany kontrakt.
- W OfflineLibrary połącz wymaganie, wpis lock i katalog Libs. Wyjaśnij, co wykrywa skrót zawartości.
Wymagania wstępne
- Ukończ Podstawy i wcześniejszy poziom tej ścieżki.
Wyjaśnienie krok po kroku
library.klib opisuje bibliotekę KretS, project.klibs wymagania projektu, a plik lock przypina rozstrzygnięte wersje i SHA-256. Zaczynaj od offline: żadna biblioteka nie deklaruje ani nie dziedziczy uprawnień pluginu.
Praca z kodem źródłowym
Biblioteka offline z plikiem blokady
Szablon SDK `library`: projekt wymaga `mathx` (zakres `>=1.2.0 <2.0.0`), która zależy od `textutil`. Źródłem jest katalog `vendor`, polityka `offline true` i wydawca `local`. `kret lib restore` rozstrzyga wersje i instaluje do `Libs/` (skróty SHA-256 w `project.klibs.lock`), `kret lib list` pokazuje stan. Kod biblioteki działa z uprawnieniami pluginu — biblioteka niczego nie deklaruje.
module Main
// Projekt wymaga biblioteki mathx; textutil przychodzi jako jej zależność i nie jest tu używana bezpośrednio.
fn Start() -> String {
let values = [4, 8, 15, 16, 23, 42]
let text = MathX.describe(values)
log.info(text)
return text
}
fn Shutdown() {
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.Pusta linia oddziela fragmenty źródła.// Projekt wymaga biblioteki mathx; textutil przychodzi jako jej zależność i nie jest tu używana bezpośrednio.Komentarz autora; nie jest wykonywany.fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.let values = [4, 8, 15, 16, 23, 42]Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.let text = MathX.describe(values)Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.log.info(text)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.return textZwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.
Oczekiwany wynik: `list` pokazuje `mathx 1.2.0` i `textutil`; `run` zwraca opis statystyk złożony przez bibliotekę.
Typowy błąd: Użycie w projekcie modułu zależności pośredniej (`TextUtil`) — projekt widzi tylko moduły bibliotek, których sam wymaga.
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.
KretLib — wprowadzenie
KretLib — wprowadzenie
Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: klib "1.0" · klibs "1.0". Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.Czym jest
KretLib zarządza bibliotekami KretS: manifest biblioteki (library.klib), wymagania projektu (project.klibs), rozstrzyganie wersji, plik blokady ze skrótami SHA-256, instalacja offline do Libs/ i opcjonalny rejestr HTTPS. Zamrożony zakres: biblioteki offline z blokadą i skrótami. Biblioteka nie deklaruje uprawnień.
Dla początkujących
Biblioteka to paczka modułów KretS, którą projekt dołącza. Wpisujesz, jakiej wersji potrzebujesz, kret lib restore dobiera wersje i kopiuje je do Libs/. Nic nie jest pobierane z sieci, jeśli tego nie włączysz.
Dla zaawansowanych programistów
Jedna wersja każdej biblioteki; najwyższa spełniająca wszystkie zakresy z cofaniem; konflikt/cykl/brak — osobne kody. Prerelease tylko gdy zakres sam go wskazuje (wariant bezpieczny do KCS-08). Plik blokady kanoniczny, czytany ściśle (D-KCS-08). Instalacja całościowa; kompilacja sprawdza zgodność Libs/ z blokadą. Widoczność: projekt widzi tylko biblioteki, których sam wymaga. Paczka .klibpkg = ZIP traktowany jako niezaufany. Brak podpisów bibliotek.
Jakie problemy rozwiązuje
Powtarzalne, offline’owe współdzielenie kodu KretS z kontrolą integralności.
Kiedy używać
- biblioteki i funkcje wspólne KretS
- praca offline z przypiętymi wersjami
Kiedy nie używać
- biblioteki z KretBridge/KretDB/UI (biblioteki zawierają tylko moduły KretS)
- równoległe wersje tej samej biblioteki (NOT_SUPPORTED)
- zakładanie autentyczności wydawcy (brak podpisów)
Współpraca z innymi technologiami
KretS (moduły bibliotek), KretM (moduły Libs/ w mapie — EXP-F01), KretPublish (biblioteki w paczce pluginu ze skrótem z blokady), Core (odtworzone Libs).
Obecny status
FROZEN_SUPPORTED_SUBSET — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0.
Dalej: ARCHITECTURE.md · SYNTAX_REFERENCE.md · ../Tutorials/BASIC/TUTORIAL_PL.md
KretLib — referencja składni
KretLib — referencja składni
Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: klib "1.0" · klibs "1.0". Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.Opisane są wyłącznie konstrukcje potwierdzone implementacją SDK (i, gdzie zaznaczono, testami tej rundy).
library.klib
Manifest biblioteki; export = moduły publiczne.
klib "1.0"
library mathx {
id "LOCAL-KLIB-MATHX222"
version "1.2.0"
publisher "local"
export MathX
require textutil ">=1.0.0 <2.0.0"
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
klib "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.library mathx {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.id "LOCAL-KLIB-MATHX222"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.version "1.2.0"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.publisher "local"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.export MathXOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.require textutil ">=1.0.0 <2.0.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | id rodziny KLIB, SemVer, wydawca, zakresy |
| Wynik | — |
| Wymagania | moduły w Script/*.krs |
| Ograniczenia | brak uprawnień |
| Możliwe błędy | KCS-KLB-* |
| Wprowadzono | 1.0 |
project.klibs
Wymagania projektu i polityka źródeł.
klibs "1.0"
policy {
offline true
publisher "local"
}
source "vendor"
require mathx ">=1.2.0 <2.0.0"
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
klibs "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.policy {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.offline trueOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.publisher "local"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.source "vendor"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.require mathx ">=1.2.0 <2.0.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
| Cecha | Wartość |
|---|---|
| Parametry / typy | offline, publisher, registry (tylko gdy offline false) |
| Wynik | — |
| Wymagania | — |
| Ograniczenia | bez policy — nic z sieci; wydawcy spoza listy pomijani |
| Możliwe błędy | KCS-KLB-0003/0004/0007/0009 |
| Wprowadzono | 1.0 |
KretLib — samouczek BASIC
KretLib — samouczek BASIC
Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: klib "1.0" · klibs "1.0". Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.Cel: pierwszy plik, podstawowa struktura, najprostszy działający przykład, najczęstszy błąd, sposób uruchomienia.
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.
1. Biblioteka offline z plikiem blokady (KRETLIB-B01-OfflineLibrary)
Projekt: ../../Examples/BASIC_OfflineLibrary/ · klasyfikacja RUNNABLE_LOCAL · Playground LOCAL_EXECUTE
Kroki (katalog roboczy: katalog przykładu):
kret lib restore .kret lib list .— w wyniku:mathxkret run . --policy host-policy.json --data {DATA}— w wyniku:"exitCode": 0
Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.
Ćwiczenie i sprawdzenie wiedzy
W OfflineLibrary połącz wymaganie, wpis lock i katalog Libs. Wyjaśnij, co wykrywa skrót zawartości.
Szkic nie jest wysyłany na serwer i znika po opuszczeniu lekcji. Przed wyjściem możesz go skopiować.Podpowiedzi
- KretLib zarządza bibliotekami KretS: manifest biblioteki (`library.klib`), wymagania projektu (`project.klibs`), rozstrzyganie wersji, plik blokady ze skrótami SHA-256, instalacja offline do `Libs/` i opcjonalny rejestr HTTPS. Zamrożony zakres: biblioteki offline z blokadą i skrótami. Biblioteka **nie deklaruje uprawnień**.
- 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. library.klib opisuje bibliotekę KretS, project.klibs wymagania projektu, a plik lock przypina rozstrzygnięte wersje i SHA-256. Zaczynaj od offline: żadna biblioteka nie deklaruje ani nie dziedziczy uprawnień pluginu.
Podsumowanie i następny krok
library.klib opisuje bibliotekę KretS, project.klibs wymagania projektu, a plik lock przypina rozstrzygnięte wersje i SHA-256. Zaczynaj od offline: żadna biblioteka nie deklaruje ani nie dziedziczy uprawnień pluginu.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →