2026-02-23 08:51:37 -05:00
2026-02-23 08:51:37 -05:00
2026-02-23 08:51:37 -05:00
2026-02-23 08:51:37 -05:00
2026-02-23 08:51:37 -05:00
2026-02-23 08:51:37 -05:00
2026-02-23 08:51:37 -05:00
2026-02-23 08:51:37 -05:00
2026-02-23 08:51:37 -05:00
2026-02-23 08:51:37 -05:00
2026-02-23 08:51:37 -05:00
2026-02-23 08:51:37 -05:00
2026-02-23 08:51:37 -05:00

🚀 Aura Programming Language

Aura to eksperymentalny, ultrawydajny język programowania stworzony z myślą o wyzwaniach inżynierii oprogramowania 2026 roku. Łączy w sobie bezwzględne bezpieczeństwo pamięci znane z Rusta, matematyczne dowody poprawności z Haskella oraz minimalistyczną, czytelną składnię inspirowaną Pythonem.

Kompilator Aury (aurac) został w całości napisany w Ruście i kompiluje kod źródłowy bezpośrednio do LLVM IR (Intermediate Representation), zapewniając wydajność na poziomie C/C++ przy zerowym narzucie w czasie działania programu (Zero-Cost Abstractions).


Główne założenia (Filozofia Języka)

Aura rozwiązuje największy problem współczesnego IT: brak zaufania do kodu. Zamiast polegać na testach jednostkowych i Garbage Collectorze, Aura przenosi cały ciężar weryfikacji na etap kompilacji.

1. Niewidzialny Borrow Checker (Elided Affine Typing)

Koniec z wyciekami pamięci, wskaźnikami null i skomplikowanymi adnotacjami czasu życia (<'a>). Aura używa analizy przepływu danych (Dataflow Analysis), aby automatycznie śledzić "własność" (Ownership) zmiennych. Gdy przekazujesz zmienną do funkcji, zostaje ona skonsumowana. Próba jej ponownego użycia (Use-After-Move) kończy się natychmiastowym błędem kompilacji.

2. Typy Semantyczne (Refinement Types) i Silnik Wnioskowania

Typ f32 to tylko informacja o rozmiarze w pamięci. W Aurze typy niosą ze sobą matematyczne gwarancje! Dzięki wbudowanemu weryfikatorowi (Symbolic Verifier), kompilator na etapie budowania programu udowadnia, że operacje są logicznie poprawne. Zamiast pisać if czas < 0, definiujesz typ: type PositiveTime = f32{t | t > 0.0}. Jeśli kompilator nie jest w stanie matematycznie udowodnić, że zmienna spełnia ten warunek, program się nie skompiluje.

3. Zorientowanie na Dane (Data-Oriented Design)

Aura odrzuca tradycyjne programowanie obiektowe (OOP) na rzecz czystych transformacji danych. Skupia się na lokalności pamięci podręcznej (Cache Locality), co czyni ją idealną do pisania silników gier, systemów wbudowanych i oprogramowania HFT (High-Frequency Trading).


💻 Przykłady Kodu

Symulacja Fizyki z Gwarancją Matematyczną

// Typ ograniczony: Czas musi być zawsze dodatni!
type PositiveTime = f32{t | t > 0.0}

pure fn calculate_new_position(initial_x: f32, v: f32, dt: PositiveTime) -> f32:
    // Mnożenie: Zmienne 'v' i 'dt' zostają skonsumowane przez Borrow Checkera
    let displacement = v * dt
    
    // Dodawanie: 'initial_x' i 'displacement' zostają skonsumowane
    let new_x = initial_x + displacement
    
    return new_x
Description
No description provided
Readme 42 KiB
Languages
Rust 99.5%
C 0.5%