Initial commit
This commit is contained in:
40
README.md
Normal file
40
README.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# 🚀 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ą
|
||||
```aura
|
||||
// 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
|
||||
Reference in New Issue
Block a user