Skip to content

v1.2.0: Add section for Visual Studio Code extension and update author

Latest

Choose a tag to compare

@KamilMalicki KamilMalicki released this 18 Mar 16:07
9089aa2

Bracket Language v1.2.0

The Comprehensive Native & Metaprogramming Update

Wersja 1.2.0 to przełomowy moment dla Bracket Language. Z prostego ewaluatora skryptów, projekt wyewoluował w pełnoprawne, dynamiczne środowisko programistyczne. Zapewnia teraz wsparcie dla zaawansowanych struktur danych, bezpiecznej obsługi błędów oraz hermetycznej komunikacji z natywnym kodem C++.

Kluczowe Funkcje i Możliwości Języka

Zaawansowane Struktury Danych: Pełne, natywne wsparcie dla Tablic definiowanych nawiasami klamrowymi { ... } oraz Słowników/Map definiowanych nawiasami kwadratowymi [ ... ]. Wbudowane komendy get, set oraz push pozwalają na swobodne odczytywanie i modyfikowanie struktur w pamięci.

  • Bezpieczna Obsługa Błędów (try-catch): Awarie nie kończą już działania programu. Zaimplementowano konstrukcję (try blok_glowny zmienna_bledu handler), która bezpiecznie przechwytuje wyjątki (np. wyjście poza zakres tablicy, brak pliku) i przekazuje treść błędu do wskazanego bloku ratunkowego.
  • Natywna Interoperacyjność z C/C++ (native_include): Prawdziwa rewolucja w wydajności. Bracket potrafi otwierać skompilowane biblioteki współdzielone (.so) za pomocą systemowego API (dlopen/dlsym) i uruchamiać wysokowydajny kod C++ (w tym biblioteki graficzne, takie jak X11) bezpośrednio ze skryptu!
  • System Modułów i Bibliotek (include): Język obsługuje dzielenie kodu na wiele plików .bl. Moduł importowania zawiera wbudowane zabezpieczenia przed nieskończonymi cyklami (działa jak include_once), co pozwala na tworzenie rozbudowanej biblioteki standardowej.
  • Metaprogramowanie (macro & eval): Wprowadzono lispowe podejście do modyfikacji kodu. Komenda eval pozwala na uruchamianie ciągów znaków jako kodu Bracket, a funkcje typu macro przechwytują surowy tekst z argumentów, pozwalając na manipulowanie logiką zanim zostanie ona wyewaluowana.
  • Interakcja z Systemem (I/O): Język jest gotowy do tworzenia narzędzi automatyzujących. Posiada komendy do odczytu i zapisu plików (read, write), pobierania danych z klawiatury (input), generowania liczb losowych (random), a nawet wywoływania komend powłoki systemowej (sys).

🛠 Zmiany pod maską (Silnik i Wydajność)

  • Bezpieczeństwo Środowiska (const): Dodano słowo kluczowe const do deklarowania zmiennych stałych, blokując możliwość przypadkowego nadpisania kluczowych danych przez komendę def czy set.
  • Nowy system domknięć (Lexical Scoping): Całkowicie przebudowano architekturę zarządzania pamięcią (Environment). Interpreter wykorzystuje teraz strukturę wskaźników nadrzędnych (parent-pointers), eliminując kosztowne kopiowanie całych map.
  • Błyskawiczna Rekurencja: Dzięki zoptymalizowanemu środowisku, wywołania rekurencyjne działają w czasie $O(1)$ dla alokacji pamięci. Programy przestały "wyciekać", a obciążające algorytmy matematyczne działają stabilnie.