Hacker Lang to natywny język skryptowy HackerOS — interpretowany, kompilowany do bytecode i ELF, z własną składnią operatorową, managerem pakietów bit i bezpośrednim dostępem do API HackerOS.
|
Warning
|
Hacker Lang działa wyłącznie na HackerOS. Binarka |
> komenda # zwykła
^> komenda # sudo
-> komenda # izolacja namespace
^-> komenda # sudo + izolacja
>> komenda @var # z interpolacją zmiennych
^>> komenda @var # interpolacja + sudo
->> komenda @var # interpolacja + izolacja
*> komenda # przez hsh -c (HackerOS shell)
& komenda # w tle (non-blocking), PID → @_bg_pid% nazwa = wartosc # gen 1 — bez typu
% nazwa: int = 42 # gen 2 — int
% nazwa: float = 3.14 # gen 2 — float
% nazwa: str = tekst # gen 2 — string
% nazwa: bool = true # gen 2 — bool
@nazwa # odwołanie do zmiennej$( 2 + 2 ) -> @wynik # oblicz i zapisz do zmiennej
$( @a * @b + 10 ) -> @res # z interpolacją zmiennych
% x: int = $( 100 / 4 ) # jako wartość zmiennej> hostname |> @host # wynik komendy → zmienna
> uname -r |> @kernel
^> id -u |> @uid # sudo pipe@ item in wartosc1 wartosc2 wartosc3 # for-in
~> element: @item
done
@ cmd in @lista_komend # for-in ze zmiennej
::which @cmd
done
?~ @licznik < 10 # while
$( @licznik + 1 ) -> @licznik
done? switch @zmienna
| linux
::green Linux!
| windows
::yellow Windows!
| *
~> nieznany: @zmienna
done:** kanal # zadeklaruj kanał
:* nazwa def # goroutine z nazwą (gen 2)
> jakies_zadanie
*-- kanal
done
:* # goroutine anonimowa (gen 1)
> inne_zadanie
done
*-- kanal # odbierz z kanału|| hacker update
|| hpkg install nmap
|| lpm list
|| hsh -c "ls /tmp"
|| H# --version
|| hco status
|| hedit plik.txt
|| hnm scan
|| Blue-Environment start
|| hackeros-steam launchDostępne narzędzia: H# hco hacker hsh hpkg Blue-Environment
hnm hpm hedit ngt eiq getit hdev anvil a hbuild
lpm chker isolator hackeros-steam ulb gameframe hup hackeros-builder
;; komentarz liniowy
/// komentarz dokumentacyjny (widoczny w hl search)
// komentarz blokowy
moze byc wieloliniowy
konczy sie \\// curl # deklaracja zależności (auto-install)
// nmap
# <main/net> # biblioteka standardowa (.hl)
# <main/colors>
# <main/progress-bar>
# <main/json>
# <main/hk-parser> # parser .hk (HackerOS Config)
# <main/hacker> # parser .hacker v1/v2/v3
# <bit/hashlib> # biblioteka bit (.so)
# <github/user/repo> # GitHubBiblioteki main/ to pliki .hl w /usr/lib/HackerOS/Hacker-Lang/main-libs/.
|
Note
|
Stara składnia jest kompatybilna: |
::upper tekst # → TEKST
::lower tekst # → tekst
::len tekst # → długość
::trim tekst # → bez białych znaków
::rev tekst # → tskset
::replace @t s d # zamień s→d
::contains @t sub # exit 0/1
::split @t : # podziel
::abs -42 # wartość bezwzgl.
::ceil 3.2 # → 4
::floor 3.9 # → 3
::round 3.5 # → 4
::max 10 20 # → 20
::min 10 20 # → 10
::rand # 0-99
::env HOME # zmienna środow.
::date # RRRR-MM-DD
::time # GG:MM:SS
::pid # PID procesu
::which curl # ścieżka narzędzia
::exists /etc/file # exit 0/1
::isdir /tmp # exit 0/1
::isfile /etc/hosts # exit 0/1
::basename /a/b.c # → b.c
::dirname /a/b.c # → /a
::read plik.txt # wyświetl zawartość
::set n wartosc # ustaw zmienną
::get n # pobierz zmienną
::type n # typ zmiennej
::unset n # usuń zmienną
::nl # pusta linia
::hr 40 # ────────────
::bold tekst # pogrubiony
::red tekst # czerwony
::green tekst # zielony
::yellow tekst # żółty
::cyan tekst # cyjanowyhl plik.hl # uruchom skrypt
hl run plik.hl # jawna forma
hl run plik.bc # uruchom bytecode
hl compile plik.hl # .hl → plik.bc (bytecode)
hl compile plik.bc # .bc → binarka ELF
hl compile --shared plik.bc # .bc → .so (biblioteka bit)
hl check plik.hl # sprawdź składnię + linter
hl check --meta plik.hl # + gen i shebang
hl ast plik.hl # AST jako JSON
hl repl # REPL interaktywny
hl shell # HL jako powłoka systemowa
hl exec nazwa # uruchom skrypt systemowy
hl search fraza # szukaj skryptów systemowych
hl search all # wylistuj wszystkie
hl gen-info plik.hl # gen + shebang + węzły AST
hl docs # dokumentacja TUI
hl clean # wyczyść cache
hl version # informacje o wersji
hl -c "~> Hej!" # kod inlinehl compile skrypt.hl # Etap 1: .hl → skrypt.bc (bytecode JSON + shebang)
./skrypt.bc # uruchom .bc bezpośrednio (ma shebang)
hl run skrypt.bc # lub przez hl run
hl compile skrypt.bc # Etap 2: .bc → binarka ELF x86_64
./skrypt # uruchom binkarkę|
Tip
|
Pliki |
bit # auto-detect: run.hl / build.hl / source-code/
bit install hashlib # zainstaluj pakiet
bit remove hashlib # usuń pakiet
bit list # lista dostępnych pakietów
bit update # zaktualizuj listę pakietów
bit info hashlib # informacje o pakiecie
bit help # pomocWariant 1 — run (interpretowany):
run.hl ← główny skrypt uruchomieniowy
main.hl ← kod źródłowy
.cache/ ← izolowane środowisko (auto, usuwane po zakończeniu)
Wariant 2 — build (kompilowany):
build.hl ← konfiguracja budowania
main.hl ← kod źródłowy
.cache/
Wariant 3 — source-code/ (rust-like):
source-code/ ← katalog z kodem źródłowym
build.hl ← konfiguracja budowania
.cache/using <gen 2>
;; Docelowy format wyjściowy
% BIT_BUILD_TARGET = bc # bc | elf | so
;; Główny plik wejściowy
% BIT_BUILD_INPUT = main.hl
;; Opcjonalna nazwa wyjściowa
% BIT_BUILD_OUTPUT = moj_programFormat repo-list.json:
{
"hashlib": {
"type": "git",
"family": "github",
"url": "HackerOS-Linux-System/hashlib-bit.git",
"description": "Kryptografia: sha256, md5, blake3"
},
"obsidian": {
"type": "git",
"family": "github",
"url": "Bytes-Repository/obsidian-lib.git",
"description": "GUI dialogi dla HL"
}
}Typy pakietów: git (github/gitlab), tar (archiwum), link (binarka)
| Gen | Status | Opis |
|---|---|---|
gen 1 |
aktywny |
Podstawowa składnia, |
gen 2 (domyślny) |
aktywny |
Typowane zmienne ( |
gen 3 |
zarezerwowany |
Domknięcia (planowane) |
Deklaracja genu (opcjonalna — domyślnie gen 2):
#!/usr/bin/env hl
using <gen 2>#!/usr/bin/env hl
using <gen 2>
# <main/sys>
# <main/colors>
> uname -r |> @kernel
> nproc |> @cores
$( @cores * 2 ) -> @threads
~> @COLOR_BOLD System Info: @COLOR_RESET
~> Kernel: @kernel
~> Cores: @cores
~> Threads: @threadsusing <gen 2>
% tools = "curl git nmap python3"
@ tool in @tools
::which @tool
? ok
::green ✓ @tool
done
? err
::red ✗ @tool
done
doneusing <gen 2>
> uname -s |> @os
? switch @os
| Linux
::green Linux wykryty
| Darwin
::cyan macOS wykryty
| *
~> Nieznany OS: @os
doneusing <gen 2>
:** wyniki
:* scanner def
> nmap -sn 192.168.1.0/24
*-- wyniki
done
:* pinger def
> ping -c 3 8.8.8.8
*-- wyniki
done
*-- wynikiHL może działać jako powłoka systemowa:
hl shell # uruchom powłokę
hl shell -c "~> test" # jednorazowa komendaPlik konfiguracyjny ~/.hlrc:
using <gen 2>
=> EDITOR = nvim
=> PATH [
| /usr/local/bin
| /usr/bin
| /usr/lib/HackerOS
]
: ll def
> ls -la
doneBuiltiny powłoki: cd, vars, funcs, help, clear, exit
HL posiada wbudowany linter w stylu Rust — z numerami linii i sugestiami:
error: `echo` jest zabronione w blokach komend HL
--> skrypt.hl:5:1
5 │ > echo hello
^^^^^^^^^^^
help: zamień na: `~> hello`
warning: `> sudo cmd` — użyj operatora `^>`
--> skrypt.hl:8:1
help: zamień na: `^> cmd`Automatycznie wykrywa: echo w >, sudo zamiast ^>, % PATH zamiast ⇒,
brakujące deklaracje // dla narzędzi sieciowych.
| Rozszerzenie | Opis |
|---|---|
|
Kod źródłowy Hacker Lang |
|
Bytecode HL (JSON AST + shebang, wykonywalny) |
|
Konfiguracja powłoki ( |
|
Format konfiguracyjny HackerOS (parsowany przez |
|
Format metadanych HackerOS v1/v2/v3 (parsowany przez |
Hacker Lang jest częścią projektu HackerOS.
-
Autorzy: HackerOS Team <hackeros068@gmail.com>
-
Repozytorium: https://github.com/HackerOS-Linux-System/Hacker-Lang
-
HackerOS: https://github.com/HackerOS-Linux-System