Jezyk programowania ogolnego przeznaczenia. Zwykla fun kompiluje sie
do prawdziwego Rusta (statyczne typy, bezpieczenstwo pamieci,
zero-cost abstractions). direct [ … ] to ucieczka do czystego
Pythona, wykonywanego przez wbudowany interpreter (PyO3) - dla tego
niewielkiego fragmentu kodu, ktory nigdy nie bedzie wymagal wydajnosci.
Status |
Bootstrap osiagniety - |
Wersja |
|
Licencja |
MIT (c) 2026 HackerOS Team |
struct Point [
x: Int,
y: Int
]
fun distance_squared(p: Point) -> Int [
end (p.x * p.x) + (p.y * p.y)
]
fun main() [
let p = Point(3, 4)
log("dist^2 =", distance_squared(p))
direct [
print("To jest czysty Python wykonywany wewnatrz binarki Rust.")
]
end
]Zobacz docs/hello-world/ i docs/module-demo/ - dzialajace
przyklady, oraz docs/SYNTAX.md - pelny opis skladni.
HackerScript/
hackerc/cmd/ transpilator .hcs -> Rust, W CALOSCI w HackerScript (self-hosted)
lexer.hcs tokenizacja + resolve_escape (\n \t \r \e ...)
parser.hcs recursive-descent parser -> AST
ast_nodes.hcs definicje Expr/Stmt/typow AST
typecheck.hcs diagnostyki (bledy/warningi), builtin-y
typeinfer.hcs inferencja typow, sygnatury projektu
codegen.hcs AST -> tekst Rust (~3700 linii, najwiekszy plik)
transpiler.hcs spina lexer/parser/typecheck/codegen w calosc
project.hcs wielo-plikowe skladanie projektu, Cargo.toml
formatter.hcs formater kodu .hcs
diagnostics.hcs renderowanie bledow w stylu rustc (podkreslona linia)
cli.hcs CLI: build/check/lint/fmt (kolorowe, z paskiem postepu)
playground.hcs demo/checker uzywany przez playground WASM
virus/cmd/ menedzer pakietow i build tool, W CALOSCI w HackerScript
main.hcs CLI: init/build/check/lint/fmt/install/remove/repair/clean
manifest.hcs parser formatu .hk (Virus.hk - NIE TOML)
install.hcs pobieranie zaleznosci z PyPI/crates.io/npm/JSR
hackerc_bridge.hcs resolve+download hackerc wg `using <wersja>`
build.hcs / check.hcs / lint.hcs / fmt.hcs / cache.hcs / cache_cmd.hcs
progress.hcs kolorowy CLI (std:term) - naglowki/pasek postepu
remove.hcs / repair.hcs / clean.hcs / init.hcs
libs/
core/lib/memory/ 4 alokatory: arena, chained_arena, stack_allocator, pool_allocator
std/lib/ fs, io, string, math, path, json, toml, hk, env,
process, http, term (KOLORY + PASEK POSTEPU - nowe),
result, cybersecurity/ (constant_time_eq, shannon_entropy)
playground/ checker HackerScript skompilowany do WASM (przegladarka)
docs/
hello-world/ minimalny dzialajacy przyklad (.hk + .hcs)
module-demo/ przyklad systemu modulow (get <core:...>)
SYNTAX.md pelny opis skladni
ROADMAP.md co jeszcze brakuje (szczegolowo, per-plik)
scripts/ install.sh/remove.sh (HackerOS) + skrypty .hl
.github/workflows/ CI (buduje I URUCHAMIA wygenerowany crate) + Release
|
Tip
|
Wczesniejsza architektura (hackerc/ w Pythonie, virus/clivirus/hk-parser w Rust z clap/reqwest) zostala calkowicie
zastapiona kodem HackerScript powyzej - patrz Historia wersji
jesli szukasz kontekstu tej zmiany.
|
-
fun→hackercgeneruje prawdziwy Rust (struct→struct
impl new(),manual[]→unsafe{},List<T>→Vec<T>, parametrystruct/List/Strautomatycznie dostaja&/&mutzamiast przenoszenia wlasnosci). -
direct [ … ]→ surowy Python wykonywany w trakcie dzialania programu przezPython::with_gil(PyO3, trybauto-initialize) - Rust jest hostem. -
get <core:memory::arena>→ realnie importuje kod zlibs/core/lib/memory/arena.hcs(system modulow:project.hcsdwufazowo zbiera sygnatury z calego projektu, zeby wywolania cross-plikowe tez dostaly poprawne&/&mut). -
get <crates:nazwa>→ prawdziwa zaleznosc Cargo.get <pypi/npm/jsr:…>→ pobierane przezvirus install(bezposrednio z PyPI/crates.io/npm/JSR API, BEZpip/cargo add/npm install). -
using <wersja>na poczatku pliku (albo[package] usingwVirus.hk) → deklaruje wymagana wersjehackerc. Jesli nie jest zainstalowana,viruspobiera ja automatycznie z GitHub 发布:https://github.com/HackerOS-Linux-System/HackerScript/releases/download/v<wersja>/hackerc(przez
curl, z natywnym paskiem postepu, cache’owana wcache/env/hackerc-<wersja>/) - patrzvirus/cmd/hackerc_bridge.hcs. -
virus build→hackerc build(generuje cargo crate) →cargo build(jedyne miejsce, gdzievirusuzywa cargo - jako kompilator, nie menedzer pakietow).
# hackerc i virus sa binarkami natywnymi (self-hosted) - najprosciej
# pobrac gotowe wydanie:
curl -L --fail -o hackerc \
https://github.com/HackerOS-Linux-System/HackerScript/releases/download/v0.1/hackerc
chmod +x hackerc
./hackerc check docs/hello-world/Virus.hk
./hackerc build docs/hello-world/cmd/main.hcs -o /tmp/out
cd /tmp/out && cargo run # wymaga zainstalowanego RustAlbo, w projekcie zarzadzanym przez virus (patrz Virus.hk):
virus init --name moj-projekt
cd moj-projekt
virus build --release # pobierze wlasciwy hackerc automatycznie (using <wersja>)hackerc build/virus build/check/lint/fmt maja teraz
kolorowe wyjscie (zielony = sukces, czerwony = blad, cyan =
nazwy/etykiety) i realny, procentowy pasek postepu renderowany w
miejscu (nie osobna linia per krok) - patrz nowy modul
libs/std/lib/term.hcs (get <std:term>).
-
Kolory wylaczaja sie automatycznie gdy ustawiona jest zmienna srodowiskowa
NO_COLOR(https://no-color.org). -
Pasek dla
hackerc build: 4 kroki (parsowanie → sygnatury projektu → sprawdzanie typow → generowanie crate’a Rust). -
Pobieranie binarek (
virus install, auto-pobieraniehackercwgusing <wersja>) uzywa natywnego paskacurl --progress-barzamiast wlasnego renderowania -virusnie ma dostepu do bajtow strumienia w trakcie trwania procesu pobierania (patrzdocs/ROADMAP.md, sekcja "CLI - kolory i pasek postepu", po wyjasnienie dlaczego).
|
Zamrozona. Wersja startowa: |
|
Ta wersja. Bootstrap osiagniety: |
|
Planowana. Niezalezny backend generujacy kod maszynowy
bezposrednio przez |
Caly kompilator (hackerc/cmd/) i menedzer pakietow (virus/cmd/)
sa dzis napisane w HackerScript i weryfikowane strukturalnie przez
hackerc check + inspekcje, a koncowo przez CI
(.github/workflows/ci.yml), ktore kompiluje i uruchamia
wygenerowany crate na prawdziwym runnerze z Rustem - to jedyne
miejsce, gdzie poprawnosc generowanego kodu Rust jest dzis realnie
zweryfikowana automatycznie przy kazdym PR.
W trakcie przepisywania na self-hosting znaleziono i naprawiono kilka
realnych bledow odziedziczonych z oryginalnej wersji Pythonowej (m.in.
!= mylone z komentarzem, Vec::len() zwracajace usize a nie
i64, przenoszenie wlasnosci struct/Vec/String przy
wielokrotnym uzyciu tej samej zmiennej).
Pelna, szczera lista tego co jeszcze brakuje - braki jezykowe
bootstrapu (iteracja po Dict, Set, numery linii w AST, prawdziwe
ParseError, log() dla struct/enum), uproszczenia per-plik
(codegen.hcs/typeinfer.hcs/project.hcs/cli.hcs/
formatter.hcs/parser.hcs), luki w libs/std poza rdzeniem, oraz
plan backendu Cranelift - jest w docs/ROADMAP.md.
-
docs/SYNTAX.md- pelny opis skladni.
UWAGA: w tym stanie repozytorium ten plik jest referencjonowany z dziesiatek komentarzy!!!w calym kodzie (lexer.hcs,libs/core/lib/mod.hcs, i inne), ale sam plik jeszcze nie istnieje-
patrz
docs/ROADMAP.md. Do czasu jego napisania jedynym pelnym zrodlem prawdy o skladni jest sam kodhackerc/cmd/parser.hcs
przyklady wdocs/hello-world//docs/module-demo/.
-
-
docs/ROADMAP.md- co brakuje, szczegolowo i per-plik -
Format
.hk: https://hackeros-linux-system.github.io/HackerOS-Website/tools-docs/hk.html