Standart Kütüphane v0.9.4
BERK Standart Kütüphanesi, modern yazılım geliştirme için gerekli tüm temel fonksiyonları sağlar. v0.9.4 sürümü ile 75 modül (42 stdlib + 33 HAL) ve 4100+ fonksiyon sunarak kapsamlı bir ekosistem sağlar.
🎯 Embedded-First Approach: BERK stdlib, gömülü sistemler ve AI/ML edge deployment için optimize edilmiştir. 7 farklı MCU platformunu destekleyen 33 HAL modülü ile bare-metal programlama, RTOS entegrasyonu ve real-time AI inference mümkündür.
📊 İstatistikler
- 75 modül - 42 stdlib + 33 HAL (gömülü sistemler)
- 1140 KB - Stdlib kod boyutu (minimal runtime: 2-5 KB)
- 4100+ fonksiyon - Kapsamlı API (NumPy/SciPy/Julia seviyesi)
- 7 embedded platform - ESP32, STM32F4, RP2040, nRF52, GD32, Nuvoton, Arduino
- AI/ML Ready - ONNX Runtime entegrasyonu, TinyML desteği
- Sıfır bağımlılık - Sadece BERK ile yazılmış, portable
🎯 Modül Kategorileri
1. Temel Modüller (Core)
Tüm BERK programlarının temel ihtiyaçlarını karşılar:
| Modül | Boyut | Açıklama |
|---|---|---|
| io | 3.9 KB | Giriş/çıkış işlemleri |
| string | 7.5 KB | String manipülasyonu |
| collections | 7.5 KB | Veri yapıları (list, map, set) |
| result | 7.4 KB | Hata yönetimi (Option, Result) |
| time | 6.6 KB | Tarih ve zaman |
2. Sistem Programlama (System)
Düşük seviye sistem etkileşimi:
| Modül | Boyut | Açıklama |
|---|---|---|
| fs | 7.8 KB | Dosya sistemi işlemleri |
| thread | 13.8 KB | Çoklu iş parçacığı, mutex, atomics |
| sys | 17.5 KB | Sistem bilgisi (CPU, RAM, OS) |
| terminal | 15.6 KB | ANSI terminal kontrolü |
3. Fonksiyonel Programlama (Functional)
Julia ve Rust tarzı fonksiyonel programlama:
| Modül | Boyut | Açıklama |
|---|---|---|
| iter | 19.7 KB | İteratörler, map, filter, reduce, accumulate |
| fmt | 17.9 KB | Printf-style formatlama, progress bars |
4. Bilimsel Hesaplama (Scientific Computing) 🔬
v1.4'ün yıldızı! Üniversite ve araştırma seviyesinde matematik:
| Modül | Boyut | Açıklama | Inspiration |
|---|---|---|---|
| math | 27.5 KB | 150+ matematik fonksiyonu | Julia Math, NumPy, GSL |
| physics | 25.5 KB | Klasik fizik simülasyonu | MATLAB, SciPy |
| complex | 15.9 KB | Kompleks sayı aritmetiği | Julia complex.jl |
| random | 15.1 KB | Xoshiro256++, 20+ dağılım | Julia Random |
| linalg | 25.4 KB | Matris işlemleri, decompositions | Julia LinearAlgebra, nalgebra |
| stats | 29.8 KB | İstatistik ve makine öğrenme | Julia Statistics, SciPy.stats |
| plot | 56.3 KB | Veri görselleştirme | matplotlib, plotly |
| optim | 26.6 KB | Optimizasyon algoritmaları | SciPy.optimize, Optim.jl |
5. Yapay Zeka ve Makine Öğrenmesi (AI/ML) 🤖
Edge AI ve embedded ML için optimize edilmiş kütüphaneler:
| Modül | Boyut | Açıklama | Platform Desteği |
|---|---|---|---|
| ai_rl | 28.7 KB | Reinforcement Learning (Q-learning, SARSA, DQN) | Tüm platformlar |
| ml | 35.2 KB | Classical ML (Linear/Logistic Regression, KNN, Decision Trees) | Desktop + Edge |
| nn | 42.6 KB | Neural Networks (MLP, CNN layers, backprop) | Desktop + ARM Cortex-M7 |
| onnx | 18.3 KB | ONNX Runtime entegrasyonu (model inference) | Desktop + ESP32/STM32F4 |
| tinyml | 12.8 KB | TinyML (quantization, pruning, model compression) | All embedded |
AI/ML Özellikleri:
- Model Training: Python/PyTorch ile eğitim, ONNX export
- Edge Inference: ARM Cortex-M, ESP32, RISC-V üzerinde <10ms latency
- Quantization: INT8/INT16 model optimization
- Hardware Acceleration: NPU, DSP offloading desteği
- Real-Time: Deterministic inference, RTOS uyumlu
6. Gömülü Sistemler - HAL (Hardware Abstraction Layer) ⚡
33 HAL modülü ile 7 farklı platformu destekler:
| Kategori | Modüller | Desteklenen Platformlar |
|---|---|---|
| Temel Periferaller | GPIO, UART, SPI, I2C, ADC, DAC, PWM | Tüm platformlar |
| Zamanlayıcılar | Timer, WDT, RTC | Tüm platformlar |
| DMA & Bellek | DMA, Flash, EEPROM | STM32F4, ESP32, nRF52 |
| Ağ | WiFi, Bluetooth, Ethernet, CAN | ESP32, STM32F4 (Ethernet) |
| Güç Yönetimi | Power, Sleep modes | Tüm platformlar |
| Ekran | LCD, OLED, TFT | SPI/I2C üzerinden |
Desteklenen Platformlar:
- ✅ ESP32 - WiFi/BT, 240 MHz dual-core
- ✅ STM32F4 - 168 MHz ARM Cortex-M4, FPU
- ✅ RP2040 - Raspberry Pi Pico, 133 MHz dual-core
- ✅ nRF52 - Nordic BLE, ultra-low power
- ✅ GD32 - Gigadevice ARM Cortex-M
- ✅ Nuvoton - Industrial MCUs
- ✅ Arduino - AVR/ARM compatible
🚀 Hızlı Başlangıç
Basit Kullanım
// Matematik
kullan math
değişken sonuç = math_sin(math_PI / 2.0) // 1.0
değişken faktöriyel = math_factorial(5) // 120
İteratörler
kullan iter
değişken sayılar = [1, 2, 3, 4, 5]
değişken kareler = iter_map(sayılar, fonksiyon(x) yap dön x * x son)
değişken toplam = iter_sum(kareler) // 55
Doğrusal Cebir
kullan linalg
// 3×3 birim matris
değişken I = linalg_birim_mat(3)
// Matris çarpımı
değişken A = [1.0, 2.0, 3.0, 4.0] // 2×2
değişken B = [5.0, 6.0, 7.0, 8.0]
değişken C = linalg_mat_çarp(A, B, 2, 2, 2)
İstatistik
kullan stats
değişken data = [1.5, 2.3, 3.1, 4.8, 5.2]
değişken ortalama = stats_ortalama(data, 5) // 3.38
değişken std_dev = stats_standart_sapma(data, 5) // 1.52
değişken medyan = stats_medyan(data, 5) // 3.1
Optimizasyon
kullan optim
// f(x) = x² - 4x + 4 fonksiyonunun minimumunu bul
fonksiyon f(x: ondalık): ondalık yap
dön x * x - 4.0 * x + 4.0
son
değişken minimum = optim_golden_section(f, 0.0, 5.0, 0.001)
// minimum ≈ 2.0
📚 Detaylı Dokümantasyon
Her modül için detaylı dokümantasyon ayrı sayfalarda bulunmaktadır:
Temel Modüller
- io - Giriş/Çıkış
- string - String İşlemleri
- collections - Koleksiyonlar
- result - Hata Yönetimi
- time - Zaman İşlemleri
Sistem Programlama
Fonksiyonel Programlama
Bilimsel Hesaplama
- math - Matematik
- physics - Fizik
- complex - Kompleks Sayılar
- random - Rastgele Sayılar
- linalg - Doğrusal Cebir
- stats - İstatistik
- optim - Optimizasyon
Web ve Veri
- http - HTTP İstemci/Sunucu
- json - JSON İşleme
- regex - Düzenli İfadeler
- testing - Test Framework
- logging - Loglama
- network - Ağ İşlemleri
- async - Asenkron Programlama
- xml - XML İşlemleri
- yaml - YAML İşlemleri
- csv - CSV Dosya İşlemleri
- encoding - Kodlama Dönüşümleri
- compression - Veri Sıkıştırma
- crypto - Kriptografi
- sqlite - SQLite Veritabanı
Grafik ve Oyun
- gui - Grafik Kullanıcı Arayüzü
- graphics - 2D Grafik
- audio - Ses İşleme
- image - Görüntü İşleme
- physics2d - 2D Fizik Motoru
- cad3d - 3D CAD Modelleme
- mesh - 3D Mesh İşlemleri
- math_3d - 3D Matematik
- color - Renk İşlemleri
İleri Seviye
🎓 Kullanım Senaryoları
Bilimsel Araştırma
// İstatistiksel analiz
değişken veriler = veri_oku("deney.csv")
değişken ortalama = stats_ortalama(veriler)
değişken t_skoru = stats_t_score(veriler, 0.0)
// Hipotez testi
eğer math_mutlak(t_skoru) > 2.0 ise yap
yazdır("İstatistiksel olarak anlamlı!")
son
Makine Öğrenmesi Temelleri
// Doğrusal regresyon
değişken X = [1.0, 2.0, 3.0, 4.0, 5.0]
değişken y = [2.1, 3.9, 6.2, 8.1, 9.8]
değişken (a, b, r2) = stats_linear_regression(X, y, 5)
yazdır("y = " + a + " + " + b + "x")
yazdır("R² = " + r2)
Nümerik Simülasyon
// Monte Carlo π tahmini
kullan random
değişken içerde = 0
değişken toplam = 1000000
değişken rng = random_xoshiro_seed(12345)
değişken i = 0
iken (i < toplam) yap
değişken x = random_xoshiro_next_float(rng)
değişken y = random_xoshiro_next_float(rng)
eğer (x*x + y*y < 1.0) ise yap
içerde = içerde + 1
son
i = i + 1
son
değişken pi_tahmini = 4.0 * içerde / toplam
yazdır("π ≈ " + pi_tahmini) // ~3.14159
Optimizasyon Problemleri
// Gradyan inişi ile fonksiyon minimizasyonu
kullan optim
kullan linalg
// f(x, y) = x² + y² - 2x - 4y + 5
fonksiyon gradyan(pos: [ondalık], n: tam_sayı): [ondalık] yap
değişken grad = [2.0 * pos[0] - 2.0, 2.0 * pos[1] - 4.0]
dön grad
son
değişken başlangıç = [0.0, 0.0]
değişken minimum = optim_gradient_descent(gradyan, başlangıç, 2, 0.1, 100, 0.001)
yazdır("Minimum nokta: (" + minimum[0] + ", " + minimum[1] + ")")
// Beklenen: (1.0, 2.0)
Yapay Zeka ve Makine Öğrenmesi
// Reinforcement Learning - Q-Learning
kullan ai_rl
// Labirent problemi için Q-learning
değişken ortam = ai_rl_ortam_oluştur(durum_sayısı: 16, eylem_sayısı: 4)
değişken ajan = ai_rl_q_learning_ajan(
öğrenme_oranı: 0.1,
keşif_oranı: 0.2,
indirim: 0.95
)
// Eğitim
değişken bölüm = 0
iken (bölüm < 1000) yap
değişken durum = ortam_sıfırla(ortam)
değişken toplam_ödül = 0.0
iken (durum_terminal_mi(durum) yok ise) yap
değişken eylem = ajan_eylem_seç(ajan, durum)
değişken (yeni_durum, ödül) = ortam_adım(ortam, eylem)
ajan_güncelle(ajan, durum, eylem, ödül, yeni_durum)
durum = yeni_durum
toplam_ödül = toplam_ödül + ödül
son
bölüm = bölüm + 1
son
yazdır("Eğitim tamamlandı! Ortalama ödül: " + toplam_ödül / 1000.0)
// Neural Network - MLP Classification
kullan nn
kullan linalg
// 2-katmanlı sinir ağı (784 → 128 → 10)
değişken model = nn_mlp_oluştur([784, 128, 10])
// MNIST veri seti yükleme
değişken (X_train, y_train) = veri_yükle("mnist_train.csv")
değişken (X_test, y_test) = veri_yükle("mnist_test.csv")
// Eğitim
değişken dönem = 0
iken (dönem < 10) yap
değişken kayıp = nn_mlp_eğit(
model,
X_train,
y_train,
öğrenme_oranı: 0.01,
batch_boyutu: 32
)
// Test doğruluğu
değişken doğruluk = nn_mlp_değerlendir(model, X_test, y_test)
yazdır("Dönem " + dönem + ": Kayıp=" + kayıp + ", Doğruluk=" + doğruluk)
dönem = dönem + 1
son
// Edge AI - ONNX Model Inference (ESP32/STM32)
kullan onnx
kullan hal_gpio
// ONNX modelini yükle (quantized INT8)
değişken model = onnx_model_yükle("mobilenet_v2_int8.onnx")
// Kamera görüntüsü al (ESP32-CAM)
değişken görüntü = kamera_çek() // 224x224 RGB
// Ön işleme
değişken giriş = görüntü_normalize(görüntü, ortalama: 0.5, std: 0.5)
// Inference (tipik: 5-8ms ESP32 üzerinde)
değişken çıktı = onnx_inference(model, giriş)
// Sonucu işle
değişken sınıf = argmax(çıktı)
değişken güven = çıktı[sınıf]
yazdır("Tespit edilen: " + sınıf_isimleri[sınıf])
yazdır("Güven: " + (güven * 100.0) + "%")
// LED ile görsel geri bildirim
eğer güven > 0.8 ise yap
hal_gpio_yaz(LED_PIN, YÜKSEK) // Yeşil LED
son
🔧 Implementation Status (v0.9.4)
| Kategori | Modül | Durum | Backend/Notlar |
|---|---|---|---|
| Temel | io | ✅ | LLVM intrinsics |
| string | ✅ | UTF-8 support | |
| collections | ✅ | Heap allocation | |
| result | ✅ | Enum support | |
| time | ✅ | OS time APIs | |
| Sistem | fs | 🟡 | POSIX/Win32 APIs |
| thread | 🟡 | pthread/WinThreads | |
| sys | 🟡 | Platform-specific | |
| terminal | 🟡 | ANSI/VT100 | |
| Fonksiyonel | iter | ✅ | List operations |
| fmt | ✅ | Printf-style | |
| Bilimsel | math | 🟡 | libm + LLVM intrinsics |
| physics | 🟡 | ODE solvers | |
| complex | 🟡 | Struct support | |
| random | 🟡 | Xoshiro256++ | |
| linalg | 🟡 | BLAS/LAPACK (optional) | |
| stats | 🟡 | Distributions + regression | |
| optim | 🟡 | Numerical optimization | |
| plot | 🟡 | Terminal graphics | |
| AI/ML | ai_rl | 🟡 | Q-learning, DQN |
| ml | 🟡 | Classical algorithms | |
| nn | 🟡 | Backprop + autodiff | |
| onnx | 🔴 | ONNX Runtime C API | |
| tinyml | 🔴 | Model compression | |
| Web/Veri | http | 🟡 | TCP socket + parser |
| json | 🟡 | Parser + serializer | |
| xml | 🟡 | SAX/DOM parser | |
| yaml | 🔴 | libyaml binding | |
| csv | ✅ | Pure BERK | |
| regex | 🟡 | NFA/DFA engine | |
| sqlite | 🔴 | libsqlite3 FFI | |
| HAL (Embedded) | GPIO | ✅ | 7 platforms |
| UART/SPI/I2C | ✅ | 7 platforms | |
| Timer/PWM | ✅ | Hardware timers | |
| ADC/DAC | ✅ | Analog I/O | |
| WiFi/BT | ✅ | ESP32, nRF52 | |
| DMA | 🟡 | STM32, ESP32 | |
| Flash/EEPROM | 🟡 | Non-volatile storage |
Durum Açıklaması:
- ✅ Stable - API finalized, production-ready
- 🟡 Beta - API stable, implementation in progress
- 🔴 Alpha - Experimental, API may change
- ⏳ Planned - Design phase
🎯 v1.0 Roadmap (Ocak 2026)
v1.0 için kalan geliştirmeler:
- Macro System - Compile-time code generation
- dataframe - Pandas-like columnar data structures
- Public Registry - berk.dev package registry launch
- Package Verification - Digital signatures for security
- Linux & macOS - Cross-platform support
Gelecek Sürümler (v1.5, v2.0+)
- signal - Sinyal işleme (FFT, filtering, spectral analysis)
- sparse - Seyrek matrisler (COO, CSR, CSC formats)
- ode - Diferansiyel denklemler (RK4, BDF, adaptive)
- FPGA synthesis - Hardware description, Verilog/VHDL generation
- Formal verification - Proof assistants integration
📖 Daha Fazla Bilgi
Hazır mısınız? Bir sonraki bölümde modülleri detaylı olarak inceleyelim!