Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Biblioteka offline i zależność

BASIC20 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 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.

  1. module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.
  2. Pusta linia oddziela fragmenty źródła.
  3. // Projekt wymaga biblioteki mathx; textutil przychodzi jako jej zależność i nie jest tu używana bezpośrednio.Komentarz autora; nie jest wykonywany.
  4. fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  5. let values = [4, 8, 15, 16, 23, 42]Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  6. let text = MathX.describe(values)Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  7. log.info(text)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. return textZwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  9. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  10. Pusta linia oddziela fragmenty źródła.
  11. fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  12. }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

Otwórz cały rozdział ze źródłem →
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.

  1. klib "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. library mathx {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. id "LOCAL-KLIB-MATHX222"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  4. version "1.2.0"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  5. publisher "local"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. export MathXOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. require textutil ">=1.0.0 <2.0.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typyid rodziny KLIB, SemVer, wydawca, zakresy
Wynik—
Wymaganiamoduły w Script/*.krs
Ograniczeniabrak uprawnień
Możliwe błędyKCS-KLB-*
Wprowadzono1.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.

  1. klibs "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. policy {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  3. offline trueOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. publisher "local"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  6. source "vendor"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. require mathx ">=1.2.0 <2.0.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
CechaWartość
Parametry / typyoffline, publisher, registry (tylko gdy offline false)
Wynik—
Wymagania—
Ograniczeniabez policy — nic z sieci; wydawcy spoza listy pomijani
Możliwe błędyKCS-KLB-0003/0004/0007/0009
Wprowadzono1.0
Otwórz cały rozdział ze źródłem →
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):

  1. kret lib restore .
  2. kret lib list . — w wyniku: mathx
  3. kret run . --policy host-policy.json --data {DATA} — w wyniku: "exitCode": 0

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

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

Ć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.

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

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 →

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

Polityka prywatności