LLVM Tabanlı, AOT-Derlenen Programlama Dili
Her şeyi kurgereksiz kod olmadan
Python kadar kolay, C kadar hızlı. Statik tipli, AOT-derlenen bir dil —
HTTP, JSON, SQLite, bir ORM, OpenAPI ve C FFI doğrudan runtime’a gömülü.
npm install yok, pip yok, bağımlılık yok.
içe_aktar "wings";
içe_aktar "orm";
orm_open("app.db");
define_model("users", {
"name": "TEXT", "age": "INTEGER"
});
fonk kullanicilari_listele(req) {
döndür ok(orm_all("users"));
}
get("/users", "kullanicilari_listele");
serve(8080); // + Swagger UI, /openapi.json // Tüm .tpr dosyalarındaki satırları say
değişken toplam = 0;
değişken dosyalar = list_dir(".");
için (str d içinde dosyalar) {
eğer (endsWith(d, ".tpr")) {
str icerik = read_file(d);
değişken satirlar = split(icerik, "\n");
tamsayi n = length(satirlar);
print(d + ": " + toString(n));
toplam = toplam + n;
}
}
print("Toplam: " + toString(toplam)); // Bir veri setinden istatistik hesapla
fonk ortalama(array veri) {
ondalik toplam = 0.0;
için (değişken x içinde veri) {
toplam = toplam + toFloat(x);
}
döndür toplam / toFloat(length(veri));
}
değişken notlar = [85, 92, 78, 96, 88, 73, 91];
ondalik ort = ortalama(notlar);
print("Ortalama: " + toString(ort));
print("En yüksek: " + toString(max(notlar)));
print("En düşük: " + toString(min(notlar))); Tek komut, tek native binary
tulpar build tüm hattı önceden (AOT) çalıştırır. Dağıttığın şey bağımsız, native bir çalıştırılabilir dosya — VM yok, yorumlayıcı yok.
-
api.tprKaynak
İngilizce ya da Türkçe anahtar kelimeler — aynı derleyici.
-
lexer → parserAyrıştırma
Kaynak AST'ye dönüşür. Sözdizimi hataları burada, senin dilinde durur.
-
LLVM 18 IRKod üretimi
AST, LLVM IR'a indirgenir.
-
clang + runtimeBağlama
Tulpar runtime ile bağlanır: HTTP, JSON, SQLite ve fazlası.
-
./apiNative binary
Bağımsız bir çalıştırılabilir dosya. VM yok, yorumlayıcı yok.
Önemli yerde hızlı
GET / → JSON {“hello”:“world”} throughput’u, keep-alive, native yük aracı, tek 14-vCPU kutu. Her runtime kendi önerilen tek-process yapılandırmasında.
Üstelik latency düşük kalıyor: p50 0.32 ms (Tulpar) vs 3.3 ms (FastAPI). CPU’da Tulpar fib’de C’yi 2,7× geçiyor (gcc -O3 -march=native -flto’ya karşı), sieve ve intloop’ta başa baş; arrayiter ve strcat’i eşit bayrak ve eşit araçla C alıyor. Tüm tablo, bayrak matrisi ve geri çekilen iddialar
Hepsi bir arada vs. parça parça kurulum
Başka yerde dört paket gerektiren şey, Tulpar’da tek binary ile gelir.
| TulparLang | Go | Python (FastAPI) | Node.js | |
|---|---|---|---|---|
| HTTP sunucusu | Gömülü | Gömülü | pip install | Minimal |
| ORM / veritabanı | Gömülü | go get gorm | pip install | npm install |
| OpenAPI / Swagger | Otomatik | Harici araç | Eklenti | npm install |
| Dağıtım | Tek binary | Tek binary | Container gerekli | Container gerekli |
| Bellek modeli | Arena (GC yok) | GC (stop-the-world) | GC + refcount | GC (V8) |
| Throughput | ~36k istek/sn | ~30k istek/sn | ~3.5k istek/sn | ~8.7k istek/sn |
| C interop (FFI) | Native | cgo | ctypes / cffi | node-ffi |
İhtiyacın olan her şey zaten kutuda
İngilizce ve Türkçe — aynı derleyici, aynı binary
Her anahtar kelimenin Türkçe karşılığı var. Serbestçe karıştır veya tamamen tek dilde yaz. Derleyici tanıları yerel ayarını takip eder. Bir anahtar kelimenin üzerine gel, karşılığı yansın.
import "wings";
func greet(req) {
var name = req.json["name"];
if (name == "") { return bad_request("Name required"); }
return ok("Hello, " + name + "!");
}
post("/greet", "greet");
serve(8080); içe_aktar "wings";
fonk selamla(req) {
değişken isim = req.json["name"];
eğer (isim == "") { döndür bad_request("İsim gerekli"); }
döndür ok("Merhaba, " + isim + "!");
}
post("/selamla", "selamla");
serve(8080); Doğrudan tarayıcında dene
Kurulum yok, ayar yok. Kodu düzenle ve Çalıştır’a bas — sayfa içinde çalışır.
Tek dosyada kalıcı bir CRUD servisi
Model, route’lar ve sunucu tek bir .tpr dosyasında — /healthz, /metrics, /openapi.json ve bir Swagger UI ile bedava açılır.
import "wings";import "orm";
orm_open("app.db");define_model("users", { "id": "INTEGER PRIMARY KEY AUTOINCREMENT", "name": "TEXT NOT NULL", "age": "INTEGER"});
func list_users(req) { return ok(orm_all("users")); }
func create_user(req) { int id = orm_create("users", req.json); return created(orm_find("users", id));}
get("/users", "list_users");post("/users", "create_user");body_schema({"name": "str", "age?": "int"}); // geçersiz gövde → otomatik 422
serve(8080);serve(8080) sonrası route’lar- GET
/userslist_users - POST
/usersdoğrulanır, hatalı gövdede 422 - GET
/healthzyerleşik - GET
/metricsJSON + Prometheus - GET
/openapi.jsonotomatik üretilir - UI
Swagger UIotomatik üretilir
Rehberli halini mi istersin? Wings Öğreticisi üç tam uygulamayı adım adım kurar — REST, token auth ve SQLite destekli bir API.
Tek komutla hazır
Araç zincirini kur, ilk programını derleyip çalıştır. macOS, Linux ve Windows.
curl -fsSL https://tulparlang.dev/install.sh | bash