Herkes TypeScript matematik araçlarının math.js ya da numeric.js gibi 500 KB’lık canavarları sırtınıza yüklemek demek olduğunu sanıyordu, değil mi? Hani şu her şeyi vaat edip frontend’inizi boğazına düğüm atan türden. Derken mathfuse sahneye çıktı: safsata yok, sıfır bağımlılık, tam tip güvenli ve tree-shakeable. Sayı çitleyen geliştiriciler için her şeyi değiştiriyor, fazla yük olmadan.
Bakın, JS matematik kütüphanelerinin içinde IE6 günlerinden beri debeleniyorum — o zamanlar vektör dot ürününü elle yazardık, başka çare yoktu. Bu? O sadeliğin jeneriklerle turboşarjlanmış hali.
Neden TypeScript Geliştiricileri Hantal Matematik Kütüphanelerinden Nefret Ediyor?
Sadece ortalama ya da dot ürünü hesaplamak için devasa matematik kütüphaneleri çekmekten yoruldunuz mu? GitHub readme’sinden direkt alıntı — karnınıza yumruk gibi oturuyor, ha?
Sadece ortalama ya da dot ürünü hesaplamak için devasa matematik kütüphaneleri çekmekten yoruldunuz mu? mathfuse size sıfır bağımlılıklı, tree-shakeable TypeScript matematik araç seti veriyor.
Ve işin aslı: abartı değil. Ortalama, medyan, standart sapma, yüzdelik dilim gibi istatistikler? Dizi verin, sayı alsın. Cehennemvari import’lar yok.
Şuna bakın:
import { mean, median, stddev, percentile } from 'mathfuse';
const data = [2, 4, 4, 4, 5, 5, 7, 9];
console.log(mean(data)); // 5
console.log(median(data)); // 4.5
console.log(stddev(data)); // 2
console.log(percentile(data, 75)); // 6
Beş satır. Bun, Deno, Node, tarayıcı — hepsinde çalışır. Polyfill falan yok.
Ama vektörler. Tanrım, JS’te vektörler hep şakaydı — ta ki şimdiye kadar.
Mathfuse Vektörleri Hantallıksız Yönetiyor mu?
import { dot, magnitude, normalize } from 'mathfuse';
const v1 = [1, 2, 3];
const v2 = [4, 5, 6];
console.log(dot(v1, v2)); // 32
console.log(magnitude(v1)); // 3.74
console.log(normalize(v1)); // [0.27, 0.53, 0.80]
Hassas. Tip güvenli. Matrisler mi? Matmul, transpoz, determinant — eskiden doktora seviyesinde tipsiz hack’lere katlanmak gerekiyordu.
import { matmul, transpose, determinant } from 'mathfuse';
const A = [[1, 2], [3, 4]];
console.log(matmul(A, [[5,6],[7,8]])); // [[19,22],[43,50]]
console.log(determinant(A)); // -2
Sıfır bağımlılık demek bundle’ınız ince kalır. Tree-shakeable ESM/CJS? Var. Tam jenerik? Evet, IntelliSense sizi yarı yolda bırakmaz.
Düzineyle ‘hafif’ matematik kütüphanesi gördüm, hepsi söndü — numeric.js’ı hatırlayın mı? Kağıt üstünde süper, pratikte bundle cehennemi. Mathfuse farklı hissettiriyor. Cesur tahminim: Three.js yanıklarında ya da veri görselleştirme panellerinde standart olur. Eşsiz bakış: gl-matrix’in manevi varisi, ama TS çağı için tipli, WebGL yükü olmadan. Kim kâr eder? Bakımcı GitHub yıldızı alır, belki Sponsors parası. Açık kaynak saflığı, VC akbabaları yok.
Şüpheci yanım soruyor: savaşta test edildi mi? Repo yeni açılmış — https://github.com/Avinashvelu03/mathfuse — ama erken kıyaslamalar verimlilik diye bağırıyor. Lodash altçizgi saçmalığı yok; saf matematik.
Matrisler daha derine iniyor. Ters matris? Muhtemelen yolda. Şimdilik istatistikler (tam set), vektörler (operasyon cenneti), matrisler (temeller çakılmış). Readme’den istek listesi: “TypeScript’te hangi matematik fonksiyonları daha kolay olsa isterdiniz?” Adil oyun — topluluk odaklı yenilmez solo kahramanlara.
Mathfuse Üretim İçin Hazır mı?
Kısa cevap: evet, ihtiyaçlarınıza uyuyorsa. Üretim demek sıfır bağımlılık, her runtime’ta çalışır. Node? Sorunsuz. Bun? Uçuyor. Deno? Import’lar temiz. Tarayıcılar? ESM sihri — bundler krizleri yok.
Kinayeli not — Silikon Vadisi şimdi ‘AI matematiği’ diye bayılıyor, ama bu eski usul sayısal hesaplama. Henüz tensor yok, PyTorch hayali kuruyorsanız pas. Ama grafik çizen ya da oyun vektörü normalize eden %90 geliştirici için? Altın.
React panonuzu düşünün: mean, percentile import — bum, analytics için parcel 2 MB kusmuyor. Ya da Svelte oyunu: vektör normalize, webpack uyarıları yok.
Tarihsel benzetme: 2010 JS hafif util küt