yeşilkod
Sakarya Üniversitesi · COP31 Yeşil Bölge, AntalyaSakarya University · COP31 Green Zone, Antalya

Yazılımın enerjisini ölçer, israfı düzeltir, kazancı kanıtlar.

Measures software energy, fixes the waste, proves the gain.

Yeşil Kod, Python kodunda enerji israf eden kalıpları bulur, kodu kendisi yeniden yazar, iki sürümün birebir aynı sonucu verdiğini doğrular ve harcanan enerjiyi ölçüp karbona çevirir.

Yeşil Kod (“Green Code”) finds energy-wasting patterns in Python, rewrites the code itself, verifies both versions return exactly the same result, then measures the energy and converts it to carbon.

Tek satır. Motor israfı buldu ve satırı kendisi yeniden yazdı.One line. The engine found the waste and rewrote it.
− return [no for no in GELENLER if no in kayitlilar]
+ kayitlilar_kume = set(kayitlilar)
+ return [no for no in GELENLER if no in kayitlilar_kume]
465×

daha az enerji, birebir aynı sonuç. Günde 1 milyon istekte bu tek satır yılda yaklaşık 41 kg CO₂e salıyordu.

less energy, identical output. At one million requests a day, this single line emitted about 41 kg CO₂e a year.

FilmFilm

Aracın ne yaptığını bir buçuk dakikada anlatan stant filmi. Filmdeki bütün sayılar aracın kendi ölçümlerinden gelir.

The stand film, explaining the tool in under 90 seconds. English subtitles are on. Every number in it comes from the tool’s own measurements.

Kendi kodunu Dashboard’da test etTest your own code in the Dashboard

Kodu yapıştır ya da bir örnek seç: bulgular satır satır işaretlenir, motor düzeltmeyi yazar, hazır senaryolar bu cihazda ölçülür. Her analiz Analizler sayfasında saklanır; kodun cihazından çıkmaz.

Paste code or pick an example: findings are marked line by line, the engine writes the fix and ready-made scenarios are measured on this device. Every analysis is kept on the Analyses page; your code never leaves your device.

Dashboard’u açOpen the Dashboard →

Dört gerçek israf, dördünü de motor düzelttiFour real-world wastes, all four fixed by the engine

Düzeltilmiş kod elle yazılmadı. Her senaryoda iki sürüm aynı sayıda isteği işledi; çıktılar birebir aynıydı.

None of the optimised code was written by hand. In each scenario both versions handled the same number of requests and produced identical output.

~4.000×

Rota sayısıRoute count

Önbelleksiz çift özyineleme. Motor lru_cache ekledi.

Uncached double recursion. The engine added lru_cache.

465×

Yoklama kontrolüAttendance check

Döngüde listede arama. Motor listeyi set() ile kümeye çevirdi.

List lookup inside a loop. The engine turned the list into a set().

51×

Fiyat listesiPrice list

Döngüde değişmeyen iş: ayar ve desen her üründe yeniden hazırlanıyordu. Motor döngü dışına taşıdı.

Loop-invariant work: config and regex rebuilt for every product. The engine hoisted them out of the loop.

4.001 → 2

Sipariş raporuOrder report

N+1 veritabanı sorgusu. Motor tek bir toplu IN sorgusuna çevirdi; işlemci enerjisi 2,9 kat düştü.

N+1 database queries. The engine replaced them with one batched IN query; CPU energy fell 2.9×.

İstek başına işlemci enerjisi; tahmini ölçüm modu (işlemci süresi × çekirdek gücü), 26 Ekim 2026. Oranlar bilgisayardan bilgisayara değişir; standdaki panel her seferinde canlı ölçer.

CPU energy per request; estimated mode (CPU time × per-core power), 26 October 2026. Ratios vary between machines; the stand panel measures live every time.

Nasıl çalışıyorHow it works

Ölçülmeyen şey optimize edilemez. Yeşil Kod dört adımda çalışır.

You cannot optimise what you do not measure. Yeşil Kod works in four steps.

1

BulFind

Statik analiz kodun sözdizimi ağacını tarar, enerji israf eden 113 kalıbı satır satır işaretler.

Static analysis walks the syntax tree and flags 113 energy-wasting patterns, line by line.

2

DüzeltFix

Motor on bir kalıbı kendisi yeniden yazar: toplu sorgu, kümeyle arama, döngü dışına taşıma, önbellek, sıralama yerine min/max, gereksiz kopya ve dönüşümleri kaldırma. Yorumlara ve biçime dokunmaz.

The engine rewrites eleven of them itself: batched query, set lookup, loop hoisting, caching, min/max instead of sorting, and removing needless copies and conversions. Comments and formatting stay untouched.

3

DoğrulaVerify

İki sürüm de çalıştırılır. Çıktılar birebir aynı değilse düzeltme reddedilir.

Both versions are run. If the outputs are not identical, the fix is rejected.

4

ÖlçMeasure

İşlemcinin enerji sayaçları okunur; aynı iş için harcanan enerji karşılaştırılır ve karbona çevrilir.

CPU energy counters are read; the energy for the same work is compared and converted to carbon.

Karbon hesabıCarbon accounting

SCI = (E × I + M) / R
  • E: ölçülen enerji. Linux’ta Intel/AMD RAPL sayaçları, Mac’te Apple’ın işlemci güç verisi (powermetrics), izin yoksa işlemci süresi × çekirdek gücü.
  • I: Türkiye şebekesi, 341 gCO₂e/kWh (Ağustos 2025–Temmuz 2026).
  • M: donanımın gömülü emisyonu; sonraki aşamada eklenecek.
  • R: istek başına.
  • E: measured energy. Intel/AMD RAPL counters on Linux, Apple’s CPU power data (powermetrics) on Mac, CPU time × per-core power without permission.
  • I: Türkiye grid, 341 gCO₂e/kWh (Aug 2025–Jul 2026).
  • M: embodied hardware emissions; planned for the next phase.
  • R: per request.

Dürüst sınırlarHonest limits

  • Yalnızca işlemci enerjisi ölçülür; bellek, ağ ve soğutma dahil değildir. Gösterilen kazanç alt sınırdır.
  • Tahmini modda mutlak değerlerden çok oranlar güvenilirdir.
  • Düzeltilmiş koddaki önbellekler her istekten önce temizlenir; kazanç önceki ölçümden kalmaz.
  • Motor şimdilik Python içindir.
  • Only CPU energy is measured; memory, network and cooling are excluded. The gain shown is a lower bound.
  • In estimated mode, ratios are more reliable than absolute values.
  • Caches in the fixed code are cleared before every request, so gains never come from earlier runs.
  • The engine currently supports Python only.

Kendi bilgisayarında çalıştırRun it on your computer

Açık kaynak. Yalnızca Python 3.9 veya üstü gerekir; ek paket ve internet gerekmez. Canlı enerji ölçümlü panel 127.0.0.1:8000 adresinde açılır.

Open source. Needs only Python 3.9+; no extra packages, no internet. The live-measurement panel opens at 127.0.0.1:8000.

$ git clone https://github.com/yes3760/yesil-kod $ cd yesil-kod $ python -m greencode # canlı panel# live panel $ python -m greencode duzelt dosya.py # israfı düzelt# fix the waste $ python -m greencode rapor src/ --esik 0 # CI kontrolü# CI gate