Skip to content

Releases: KamilMalicki/bracket-language

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

18 Mar 16:07
9089aa2

Choose a tag to compare

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.

Bracket-Language v1.1.0

17 Oct 12:36
d035d8d

Choose a tag to compare

Bracket Language v1.1.0

Ta aktualizacja wprowadza jedną, bardzo wyczekiwaną funkcję, która znacząco poprawia czytelność kodu, oraz zawiera szereg poprawek stabilności.

Nowe Funkcje

Komentarze w Stylu Asemblera

Od teraz możesz dodawać do swojego kodu jednoliniowe komentarze, które zaczynają się od znaku średnika (;). Wszystko, co znajduje się po średniku do końca linii, jest całkowicie ignorowane przez interpreter.

Zmiana ta została wprowadzona w lexerze, który teraz poprawnie rozpoznaje i pomija linie z komentarzami.

Przykład użycia:

; To jest komentarz, który zostanie zignorowany.
(def a 10) ; Można go też umieścić po instrukcji.

; Poniższa linia wypisze wynik na ekran.
(print "Wynik: " (a + 15))

Poprawki Błędów

  • Naprawiono krytyczny błąd w parserze, który uniemożliwiał poprawne działanie specjalnej składni z apostrofem (') do indeksowania stringów. Funkcjonalność ta działa teraz zgodnie z założeniami.
  • Poprawiono literówkę w nazwie funkcji random w ewaluatorze, która uniemożliwiała jej wywołanie.
  • Zwiększono stabilność pętli loop przy porównywaniu wartości nieliczbowych.

Bracket-Language v1.0.0

16 Oct 11:12
2cf6591

Choose a tag to compare

Release Title: Bracket Language v1.0.0 - First Public Release

Description:

It is with great pleasure that I announce the first official binary release of the interpreter for the Bracket Language esoteric programming language!

This release provides a fully functional version of the interpreter, ready to use on Windows and Linux systems. The goal of Bracket Language is to explore unconventional syntax concepts by combining the world of LISP with a more traditional approach to operators.

Key Features in v1.0.0:

  • Unique Syntax: The language combines a LISP-style S-expression structure with standard, infix notation for arithmetic and logical operators (+, -, ==, etc.).
  • Language Fundamentals:
    • Variable definitions using the def keyword.
    • Support for number, string, and function data types.
    • Type checking with typeof and conversion with Number and String.
  • Control Structures:
    • if conditions (without else).
    • loop constructs that function like while loops.
    • do blocks for executing sequences of expressions.
  • First-Class Functions: The ability to create your own functions with closures using the fun keyword.
  • User and System Interaction:
    • Printing to the console with print.
    • Reading user input with input.
    • Executing system commands with sys.
  • Rich String Manipulation: Includes len, get, set, ord, and chr functions.
  • Random Number Generator: A random function for generating random integers.

Attached Binaries:

In this release, you will find ready-to-use executables for the following platforms:

  • bracketLang.exe - For 64-bit Windows systems.
  • bracketLang - For 64-bit Linux systems.

How to Get Started:

  1. Download the appropriate executable for your operating system from the Assets section below.
  2. Create your first .bl file.
  3. Run the interpreter from your command line, passing your script file as an argument:
    # On Windows
    .\bracketLang.exe my_first_script.bl
    
    # On Linux (make it executable first)
    chmod +x ./bracketLang 
    ./bracketLang my_first_script.bl

What's Next?

This is just the beginning! Future releases are planned to expand the language with new features. Thank you for your interest in the project, and I invite you to test it out.

Please report any bugs in the Issues tab and share your ideas or questions in the Discussions tab.

  • Kamil Malicki