BroLang v8.2
Bahasa pemrograman buat yang males nulis syntax panjang
Sintaks Bahasa Indonesia, fitur lengkap, enak dipake
Quick Start
Cara 1: Install dengan script (recommended)
git clone https://github.com/salzcill-cmd/BroLang.git
cd BroLang
chmod +x install.sh
./install.sh
Cara 2: Install manual
git clone https://github.com/salzcill-cmd/BroLang.git
cd BroLang
pip install -e .
Cara 3: Install langsung dari GitHub
pip install git+https://github.com/salzcill-cmd/BroLang.git
Cek apakah udah jalan
bro --version # BroLang 8.2.0
echo 'tulis "Halo Dunia!"' > halo.bro
bro halo.bro
Apa yang Baru di v8.2? ✨
properti Decorator — Getter/Clean Setter
Sintaks bersih untuk getter/setter di kelas, mirip Python @property:
kelas Suhu
fungsi __init__(self, derajat)
self._derajat = derajat
selesai
@properti
fungsi derajat(self)
kembali self._derajat
selesai
@derajat.setter
fungsi set_derajat(self, v)
self._derajat = v
selesai
selesai
buat s = Suhu(36)
tulis s.derajat # 36 (getter)
s.derajat = 37 # setter
tulis s.derajat # 37
4 Modul Stdlib Baru 🧩
statistik — Fungsi statistik dasar:
impor statistik
buat data = [10, 20, 30, 40, 50]
tulis statistik.rerata(data) # 30.0
tulis statistik.median(data) # 30
tulis statistik.modus([1, 1, 2, 3]) # [1]
tulis statistik.simpangan_baku(data) # 14.14...
tulis statistik.korelasi(x, y) # Korelasi Pearson
tulis statistik.ringkasan(data) # Ringkasan lengkap
zaman — Timer & stopwatch:
impor zaman
# Stopwatch
buat sw = zaman.Stopwatch()
sw.mulai()
# ... kode ... sw.berhenti()
tulis sw.detik # waktu berlalu (detik)
tulis zaman.uman(3725) # "1j 2m 5d"
# Timer countdown
buat timer = zaman.Timer(5.0)
timer.mulai()
tulis timer.sisa() # sisa waktu
tulis timer.habis # sudah habis?
# Waktu berlalu
tulis zaman.berlalu(t0) # detik sejak t0
penampilan — Pretty print & format data:
impor penampilan
tulis penampilan.angka(1234567) # "1,234,567"
tulis penampilan.tabel([{"nama": "Budi"}]) # Tabel ASCII
tulis penampilan.pohon(objek) # Pohon / tree view
tulis penampilan.horizontal(0.7) # [███████░░░] 70%
tulis penampilan.json_indented(objek) # JSON terformat
warna — Warna terminal ANSI, gradient, kotak:
impor warna
tulis warna.merah("Error!") # Teks merah
tulis warna.hijau("Sukses!") # Teks hijau
tulis warna.gradient("Halo!", (255,0,0), (0,0,255)) # Gradient RGB
tulis warna.kotak("Penting") # Kotak di sekitar teks
tulis warna.rainbow("BroLang!") # Teks pelangi
tulis warna.rgb_to_hex(255, 128, 0) # "#ff8000"
Semua fitur v8.2 tersedia di interpreter. 58 test cases baru.
Apa yang Baru di v8.1? 🎮
Game Dev Upgrade
Object Pooling — gunakan ulang bullet/partikel/musuh, hindari lag GC:
impor kumpulan_objek
buat pool = kumpulan_objek.KumpulanObjek(lalu() {"aktif": salah}, ukuran_awal=20)
buat peluru = pool.ambil() # pinjam
pool.kembalikan(peluru) # kembalikan
Simpan/Muat Game — slot save, checkpoint, metadata:
impor simpan_game
simpan_game.simpan("slot1", {"level": 3, "nyawa": 5}, label="Level 3")
buat data = simpan_game.muat("slot1", default={"level": 1})
simpan_game.checkpoint({"level": 4}) # auto-save
Sistem Dialog — efek mesin ketik + pilihan bercabang:
impor dialog
buat d = dialog.Dialog(["Halo, pengembara!", "Selamat datang."],
nama_pembicara="Kepala Desa", kecepatan=40)
d.update(dt)
buat habis = d.lanjut()
AI Musuh (FSM + Steering) — mesin status & kejar/lari/tiba/jelajah:
impor ai
buat mesin = ai.FSM("jaga")
mesin.tambah_status("kejar", masuk=lalu() tulis "Mengejar!" selesai)
mesin.ganti_status("kejar")
buat (vx, vy) = ai.kejar(100, 100, 300, 300, 120)
Tilemap Lanjutan — platform satu arah & platform bergerak:
impor tilemap
tileset.atur_satu_arah(2) # tile id 2 = platform satu arah
buat mendarat = lantai.cek_lantai_satu_arah(px, py, kecepatan_y)
buat plat = lantai.tambah_platform_bergerak(0, 300, 320, 300, kecepatan=80)
lantai.dorong_bodi(pemain, dt)
Quest & Achievement — progres, status, simpan/muat:
impor misi
buat q = misi.Misi("cari_kunci", "Cari 5 Kunci", tujuan=5)
q.tambah_progres(5) # True (baru selesai)
buat manajer = misi.ManajerMisi()
manajer.buat_misi("m1", "Misi 1", tujuan=3)
Semua modul v8.1 tersedia di interpreter, transpiler, dan VM.
Detail: docs/GAME_V81.md.
Apa yang Baru di v8.0?
Fitur Bahasa Modern 🧩
Spread objek — sebarkan isi objek ke objek literal, campur bebas sama pasangan kunci-nilai:
buat pengaturan = {"suara": 80, "bahasa": "id"}
buat pemain = {...pengaturan, "nama": "Budi"}
# {'suara': 80, 'bahasa': 'id', 'nama': 'Budi'}
buat a = {"x": 1, "y": 2}
buat b = {...a, "y": 99} # kunci item belakang menimpa
# {'x': 1, 'y': 99}
Null-coalescing assignment ??= — isi cuma kalau nilainya kosong
(short-circuit, nilai kanan ga dievaluasi kalau ga perlu):
buat nama = kosong
nama ??= "Anonim" # Anonim
buat skor = 100
skor ??= 0 # ga berubah (sudah terisi)
akun.nama ??= "Budi" # atribut objek
cache[0] ??= 42 # index list
kecuali (TipeA, TipeB) — satu klausa buat banyak tipe error:
coba
buat hasil = 100 / x
kecuali (TypeError, ZeroDivisionError) sebagai e
tulis "tertangkap"
selesai
Mendukung tipe bawaan dan kelas_error kustom — dan v8.0 memperbaiki
VM supaya kelas_error + lempar + kecuali berfungsi penuh di mesin
bytecode (sebelumnya dibuang diam-diam), konsisten dengan interpreter &
transpiler.
Performa VM ⚡
Optimasi hot path bytecode VM: fast path _execute tanpa try/except,
alokasi frame sesuai ukuran, fast path _call_function, dan LOAD_GLOBAL
satu dict op. Fibonacci rekursif ~15% lebih cepat, loop ~10% lebih cepat.
Detail: docs/FITUR_V80.md.
Apa yang Baru di v6.9?
Guard Clause untuk Semua Statement 🧩
Guard clause (v6.8) diperluas ke semua statement sederhana — statement hanya dijalankan saat kondisi benar:
fungsi cek(x)
tulis x jika x > 0 # print bersyarat
kembali x * 2 jika x > 0 # early return (v6.8)
selesai
buat skor = 0
skor = 100 jika benar # reassignment bersyarat
skor += 10 jika menang # augmented bersyarat
kelas Akun
fungsi beri_bonus(self, n)
self.bonus += n jika n > 0 # atribut objek ber-guard
kembali self.bonus
selesai
selesai
buat data = [1, 2, 3]
data[1] += 10 jika benar # index list ber-guard
lempar "stok habis" jika stok <= 0 # raise bersyarat
log(pesan) jika mode_debug # panggilan fungsi bersyarat
hapus cache jika basi # delete bersyarat
Statement yang didukung: tulis, buat (deklarasi + destructuring),
reassignment, augmented assignment, atribut objek, index list, lempar,
hapus, pemanggilan fungsi, dan hasilkan (yield). Tidak ambigu dengan
ternary — a jika b lainnya c tetap ternary:
buat a = 5 jika benar lainnya 99 # ternary → a = 5
buat b = 5 jika salah lainnya 99 # ternary → b = 99
Detail: docs/FITUR_V69.md.
Apa yang Baru di v6.8?
Fitur Bahasa Baru 🧩
Guard clause — kembali, hentikan, dan lanjutkan bisa diberi kondisi:
fungsi cek(x)
kembali "negatif" jika x < 0
kembali "nol" jika x == 0
kembali "positif"
selesai
tulis cek(-5), cek(0), cek(7) # negatif nol positif
untuk i dari 1 sampai 10 lakukan
lanjutkan jika i % 2 == 0 # skip genap
hentikan jika i > 5 # break bersyarat
tulis i # 1 3 5
selesai
Tidak ambigu dengan ternary: kembali a jika b lainnya c tetap ternary.
Floor division // — pembagian dibulatkan ke bawah:
tulis 17 // 5 # 3
buat x = 10
x //= 3
tulis x # 3
Augmented assignment pada atribut & index:
kelas Akun
fungsi __init__(self)
self.total = 0
selesai
fungsi naik(self, n)
self.total += n # atribut objek
kembali self.total
selesai
selesai
buat data = [1, 2, 3]
data[1] += 10 # index list → [1, 12, 3]
Game Dev 🎮
audio BGM prosedural — musik latar tanpa file eksternal:
impor audio
buat bgm = audio.buat_bgm(audio.pola_arcade) # pola siap pakai
audio.mainkan_bgm(audio.pola_epik, 120) # putar loop (butuh pygame)
audio.hentikan_bgm()
Pola bisa pakai nama not ("C4", "A#3"), frekuensi, tuple (nada, ketukan), atau jeda 0.
Perbaikan VM ⚙️
x %= y dan x **= y yang tadinya diam-diam menjadi x = y di VM kini benar; loop dengan guard hentikan jika tidak lagi memotong body.
Detail: docs/FITUR_V68.md.
Apa yang Baru di v6.7?
Fitur Bahasa Modern 🧩
Rest parameter ...nama — fungsi menampung semua sisa argumen:
fungsi jumlahkan(...angka)
buat total = 0
untuk setiap n dalam angka lakukan
total = total + n
selesai
kembali total
selesai
tulis jumlahkan(1, 2, 3, 4, 5) # 15
Spread call f(...args) — bongkar list jadi argumen:
fungsi kali3(a, b, c)
kembali a * b * c
selesai
buat nilai = [2, 3, 4]
tulis kali3(...nilai) # 24
Spread list [...a, 1] — gabungkan list di literal:
buat gabung = [...dasar, 3, 4] # [1, 2, 3, 4]
Multiple return kembali a, b — beberapa nilai sekaligus:
fungsi bagi_dan_sisa(a, b)
kembali a / b, a % b
selesai
buat [hasil, sisa] = bagi_dan_sisa(17, 5) # 3.4 2
Bytecode VM kini lengkap ⚙️
Range-for, destructuring, pipeline, dan for-each (untuk setiap) yang
sebelumnya NotImplementedError / diam-diam dilewati di VM bytecode kini
berfungsi penuh — konsisten dengan interpreter & transpiler.
Game Dev 🎮
efek.Guncangan— screen shake trauma-based (memudar alami, testable tanpa pygame)audiosynth —nada()/laser()/ledakan()/blip()buat WAV procedural tanpa file eksternal
Detail: docs/FITUR_V67.md.
Apa yang Baru di v6.6?
Upgrade Library Game Komprehensif 🎮
2 modul baru + 8 modul ditingkatkan — buat bikin game 2D makin gampang:
Modul baru jalur — pathfinding A* + navigasi waypoint:
impor jalur
buat rute = jalur.cari_jalur(denah, (1, 1), (10, 5)) # A* di tilemap
jika rute maka
tulis jalur.panjang_jalur(rute)
selesai
buat penjaga = jalur.Patroli([(100, 100), (500, 100)], kecepatan=120,
mode="bolak-balik") # patroli waypoint
penjaga.update(dt)
Modul baru efek — efek layar instan:
impor efek
buat kilat = efek.buat_flash("putih", durasi=0.15) # flash layar
buat dmg = efek.TeksMelayang("-25", x, y, warna="merah") # damage number
buat vin = efek.Vignette(kekuatan=0.4) # vignette
Fisika AABB + raycast: collider persegi (set_persegi), tabrakan campuran,
dunia.raycast(x1, y1, x2, y2), dunia.cari_bodi_di_area(...).
Partikel: gradien warna seumur hidup (warna_awal/warna_akhir),
tekstur partikel, emiter siap pakai buat_trail / buat_asap / buat_bintang.
Tilemap: tile animasi (atur_animasi + peta.update(dt)), layer objek
(tambah_objek, cari_objek), cek_lantai untuk platformer.
Kamera: parallax layers (screen_parallax), deadzone follow
(set_target(pemain, deadzone=(120, 80))), set_lerp.
Game loop: fixed timestep fisika (game.atur_fisika(fungsi, 1/120)),
screenshot (tangkap_layar), resize jendela.
Grafis: gradien vertikal/horizontal, glow_lingkaran, perataan teks
(tengah/kanan), gambar_gambar_alpha.
UI: Tooltip, Tombol bergambar, DaftarSkor (high score persisten),
navigasi fokus keyboard.
Sprite: ikuti_patroli, rotasi_ke_titik, tampilkan/sembunyikan.
Bonus: sintaks buat (x, y) = fungsi() yang selama ini ada di dokumentasi
kini benar-benar berfungsi.
bro examples/game_v66.bro # showcase lengkap semua fitur v6.6
Detail: docs/GAME_V66.md.
Apa yang Baru di v6.5?
Fitur Bahasa Baru 🧩
konstanta — variabel immutable, nilai tidak bisa diubah setelah deklarasi:
konstanta PI = 3.14
konstanta NAMA = "BroLang"
PI = 3.15 # error: Konstanta 'PI' tidak bisa diubah
ulangi ... sampai — do-until loop, body jalan minimal satu kali:
buat tebakan = 0
ulangi
tebakan = tebakan + 1
tulis "Percobaan ke-" + teks(tebakan)
sampai tebakan >= 3
untuk i dari A sampai B — range for loop (inklusif, bisa langkah):
untuk i dari 1 sampai 10 lakukan
tulis i
selesai
untuk i dari 10 sampai 2 langkah -2 lakukan
tulis i
selesai
Semua fitur berjalan konsisten di interpreter, transpiler (bro run),
dan compiler (bro build). Detail: docs/FITUR_V65.md.
Apa yang Baru di v6.3?
Performance Boost ⚡
Tiga lapis optimasi bikin BroLang makin kencang:
- Peephole optimizer di bytecode VM — constant folding (
2 + 3 * 4jadi satu konstanta), removal NOP, remap jump otomatis - Method cache — pemanggilan method di inheritance chain di-cache (invalidasi otomatis saat monkey-patch)
- Fast path interpreter — operator biner pada angka/teks tidak lagi mengecek operator overloading
bro benchmark benchmarks/fibonacci.bro --repeat 3
# Transpiler 11x-151x lebih cepat dari VM per kasus
Benchmark publik ada di folder benchmarks/ + docs docs/PERFORMANCE.md.
Tooling Proyek Modern 🛠️
bro init myapp # scaffolding proyek lengkap
cd myapp
bro run # jalankan entry point dari brolang.json (tanpa argumen)
bro test # jalankan test
Struktur yang dibuat: brolang.json, src/main.bro, tests/, docs/, .gitignore.
Web Framework 🌐
Bikin API backend langsung dari BroLang — tanpa dependency eksternal:
impor web_server
fungsi halaman(req)
kembali req.kirim_json({"pesan": "Halo Dunia!"})
selesai
buat app = web_server.Buat()
app.get("/", halaman)
app.get("/pengguna/{id}", detail) # parameter dinamis
app.jalankan(8000) # http://127.0.0.1:8000
Routing GET/POST/PUT/DELETE, query string, body JSON, static files, CORS.
Contoh lengkap: examples/web_api.bro.
Apa yang Baru di v6.4?
Keamanan, Arsip & Terminal UX 🔐
Tiga modul stdlib baru — semuanya murni stdlib Python, tanpa dependency eksternal:
kripto — Keamanan & kriptografi:
impor kripto
tulis kripto.sha256("halo dunia") # 64 karakter hex
tulis kripto.base64_encode("BroLang") # QnJvTGFuZw==
buat hash = kripto.hash_password("rahasia123") # PBKDF2 + salt acak
tulis kripto.cek_password("rahasia123", hash) # True
buat api_key = kripto.token(32) # token crypto-grade
arsip — ZIP & kompresi:
impor arsip
arsip.buat_zip("backup.zip", ["a.txt", "b.txt"])
tulis arsip.daftar_zip("backup.zip")
arsip.ekstrak_zip("backup.zip", "restore/")
buat padat = arsip.kompres("teks panjang ...") # lebih pendek (zlib)
terminal — UX terminal untuk program CLI:
impor terminal
tulis terminal.hijau("sukses")
terminal.sukses("Deploy berhasil")
tulis terminal.bilah_progress(7, 10) # [███████░░░] 70%
buat nama = terminal.tanya("Nama kamu? ", "anonim")
Tooling: bro test lebih pintar 🧪
bro test --nama <filter>— hanya jalankan file tes yang namanya mengandung filterbro test --detail— tampilkan status ✓/✗ + durasi tiap file- Ringkasan total dengan waktu eksekusi
Perintah baru bro upgrade 🔄
bro upgrade — update BroLang ke versi terbaru langsung dari GitHub
(git pull + install ulang otomatis).
Contoh lengkap: examples/kripto.bro, examples/arsip.bro, examples/terminal.bro.
Apa yang Baru di v6.2?
Scene Lifecycle + Transisi 🎬
Scene sekarang punya siklus hidup penuh: on_masuk / on_keluar, transisi fade antar scene, dan tumpukan scene untuk overlay menu pause.
impor game
# Lifecycle: setup saat scene aktif, cleanup saat diganti
game.tambah_scene("main", update_main, gambar_main,
on_masuk=muat_level, on_keluar=simpan_skor)
# Transisi fade antar scene
game.ganti_scene("main", transisi="fade", durasi=1.0, warna="hitam")
# Overlay menu pause di atas gameplay (scene bawah tetap digambar)
game.dorong_scene("pause", transisi="fade")
game.pop_scene(transisi="fade")
UI Komponen Baru 🖱️
Empat komponen UI baru siap pakai: KotakTeks (input teks), Slider, KotakCentang (checkbox), dan DaftarPilih (dropdown).
impor ui
buat nama = ui.KotakTeks(200, 150, 250, 40, placeholder="Nama pemain")
buat volume = ui.Slider(200, 300, 250, nilai=50, min=0, maks=100)
buat musik = ui.KotakCentang(200, 400, label="Aktifkan musik", dicentang=True)
buat level = ui.DaftarPilih(200, 500, 200, opsi=["Mudah", "Sedang", "Sulit"])
nama.update(mx, my, klik) # fokus via klik
nama.tambah_karakter("A") # terima karakter dari input keyboard
volume.update(mx, my, ditekan) # drag
musik.update(mx, my, klik) # toggle
level.update(mx, my, klik) # buka/pilih opsi
Semua komponen logika-nya jalan tanpa pygame (hanya render yang butuh pygame) — gampang di-test.
5 Modul Stdlib Baru 🧩
Modul yang selama ini hanya dijanjikan di dokumentasi kini benar-benar ada: angka, sistem, sistem_operasi, web, dan database.
impor angka
impor sistem
impor web
impor database
tulis angka.pi # 3.141592653589793 (konstanta langsung)
tulis angka.sqr(16) # 4.0
tulis sistem.platform() # linux / windows / darwin
buat respon = web.get("https://api.example.com/data")
tulis respon.status # 200
tulis respon.json # body ter-parse sebagai objek
buat db = database.buka("data.db")
db.eksekusi_sql("CREATE TABLE IF NOT EXISTS t (id INTEGER, nama TEXT)")
db.eksekusi_sql("INSERT INTO t (id, nama) VALUES (?, ?)", 1, "Budi")
tulis db.query("SELECT * FROM t")[0]["nama"] # Budi
Plus sistem_operasi untuk operasi file/folder & jalur (list_dir, buat_folder, pindah, gabung_jalur, dll).
Belajar BroLang 🎓 (untuk pemula)
Mau belajar coding dari nol, pakai Bahasa Indonesia? Jalankan:
bro belajar
Tutorial interaktif di terminal — 8 bab bertingkat:
- 🖨️ Halo Dunia
- 📦 Variabel
- ➕ Operasi Matematika
- 🌿 Percabangan
- 🔁 Perulangan
- 📋 List
- 🧩 Fungsi
- 🎮 Proyek Mini: Kalkulator
Setiap bab ada materi singkat + latihan soal yang dicek otomatis (dijalankan langsung, lalu dibandingkan output-nya). Ada nilai akhir, petunjuk saat kesulitan, dan solusi kalau mentok. Tanpa install apa-apa, langsung dari terminal.
Ramah pemula di semua sisi:
- Pesan error memberi saran keyword:
print→ "mungkin maksudmu 'tulis'?",null→ "mungkin maksudmu 'kosong'?" - Hint kesalahan umum:
jika x = 5 maka→ "pakai '==' untuk membandingkan", titik koma;→ "tidak perlu dipakai" - REPL makin pintar: blok
jika/fungsimulti-baris berfungsi, hasil ekspresi muncul (2 + 3→=> 5), perintahbantuan/tips/contoh
Apa yang Baru di v6.0?
Type System Lengkap 🏷️
Anotasi tipe di variabel, parameter, dan return value — diverifikasi otomatis (ditolak kalau salah).
buat umur: Angka = 25 # anotasi variabel
buat nama: Teks = "Budi"
fungsi kali2(a: Angka) -> Angka # anotasi parameter & return
kembali a * 2
selesai
tulis kali2(21) # 42
# Union, generik, dan alias
buat nilai: Angka | Teks = "lima" # union type
buat angka2: Daftar<Angka> = [1, 2, 3] # generic
tipe ID = Angka # type alias
buat kode: ID = 12345
buat umur: Angka = "salah" # Error: Tipe tidak cocok untuk 'umur'
Mismatch tipe ditolak di dua lapis: analyzer statis (sebelum jalan) dan interpreter (saat runtime). Kelas user juga bisa dipakai sebagai tipe parameter (fungsi info(m: Mobil)).
Pattern Matching Modern 🎯
cocokkan kini bisa membongkar list/objek langsung di polanya.
buat data = [1, 2]
cocokkan data {
[a, b]: tulis a + b # pola list → bind elemen → 3
_: tulis "lain"
}
buat orang = {"nama": "Ani", "umur": 20}
cocokkan orang {
{"nama": n, "umur": u}: tulis "Nama: " + n + ", Umur: " + teks(u)
_: tulis "siapa?"
}
buat skor = 15
cocokkan skor {
x jika x > 10: tulis "tinggi" # guard condition
_: tulis "rendah"
}
Pola: list [a, b], objek {"nama": n}, binding n:, literal, wildcard _, plus guard jika. Bekerja sama di interpreter dan transpiler.
Error Handling Profesional 🚨
Custom error class — kelas_error dengan field sendiri + hierarki + fallback.
kelas_error SaldoTidakCukup extends Kesalahan
fungsi __init__(pesan, saldo)
self.pesan = pesan
self.saldo = saldo
selesai
selesai
coba
lempar SaldoTidakCukup("Saldo tidak cukup", 5000)
kecuali SaldoTidakCukup sebagai e
tulis "Tertangkap: " + e.pesan + ", saldo=" + teks(e.saldo)
selesai
Hierarki error didukung: kecuali Induk sebagai e menangkap semua turunannya, dan kecuali lainnya sebagai e jadi fallback. Konsisten di interpreter & transpiler. Error CLI juga makin profesional — bro run menampilkan baris/kolom, baris sumber dengan penanda ^, solusi, dan stack trace.
Ekosistem Stdlib + Package Registry 🌐
Enam modul baru siap pakai:
impor tanggal
impor catat
impor lingkungan
impor proses
impor csv
impor registri
tulis tanggal.selisih_hari("2026-08-07", "2026-08-01") # 6
buat hasil = proses.jalankan("echo halo")
tulis hasil.keluaran # halo
impor csv
buat data = [{"nama": "Budi", "umur": 20}]
csv.tulis("data.csv", data)
tulis csv.baca("data.csv")[0]["nama"] # Budi
Package Registry Online: registri.jalankan_async(port) menjalankan registry HTTP lokal — bro pkg publish / bro pkg install / cari_remote sekarang bisa lewat jaringan.
Apa yang Baru di v5.5?
Operator Overloading 🧮
Kelas BroLang sekarang bisa mendefinisikan perilaku operator sendiri — nggak perlu fungsi bantu manual.
kelas Titik
fungsi __init__(x, y)
self.x = x
self.y = y
selesai
fungsi _tambah_(lain)
kembali Titik(self.x + lain.x, self.y + lain.y)
selesai
fungsi _sama_(lain)
kembali self.x == lain.x dan self.y == lain.y
selesai
fungsi _teks_()
kembali "(" + teks(self.x) + ", " + teks(self.y) + ")"
selesai
selesai
buat a = Titik(1, 2)
buat b = Titik(3, 4)
tulis a + b # (4, 6)
tulis a == Titik(1, 2) # True
Method yang bisa di-overload: _tambah_ (+), _kurang_ (-), _kali_ (*), _bagi_ (/), _modulo_ (%), _pangkat_ (**), _sama_ (==), _tidak_sama_ (!=), _kurang_dari_ (<), _lebih_dari_ (>), _kurang_sama_ (<=), _lebih_sama_ (>=), _negasi_ (-), _positif_ (+), _dalam_ (dalam), _teks_ (print/konversi), _panjang_ (panjang()), _index_/_index_set_ ([]). Bekerja konsisten di interpreter dan transpiler.
Threading (sejajar) 🧵
Jalankan fungsi di background thread supaya game loop / program utama tetap responsif.
impor sejajar
fungsi hitung(x)
kembali x * 2
selesai
buat t = sejajar.jalankan(hitung, 21) # background thread
buat hasil = t.hasil() # 42 (blokir sampai selesai)
tulis sejajar.peta_sejajar(hitung, [1, 2, 3, 4]) # [2, 4, 6, 8]
API: jalankan, tunggu, tunggu_semua, peta_sejajar, atur_thread/jumlah_thread, objek Tugas (selesai()/hasil()/batal()). Fungsi BroLang otomatis di-serialisasi biar aman; callable Python murni jalan paralel penuh.
LSP & Tooling ⚡
Language server makin pintar: auto-completion mencakup keyword + semua builtin + simbol di dokumen + member modul (setelah titik), go-to-definition lompat ke baris deklarasi, dan hover menampilkan info tipe simbol. Cocok dipasang di VS Code / editor yang mendukung LSP.
Apa yang Baru di v5.4?
Full Upgrade Library Game 🎮
Semua modul game di-full update — 14 modul game lengkap buat bikin game 2D ala Python Arcade/Pygame:
| Modul | Fitur baru |
|---|---|
sprite |
Diperbaiki total (sebelumnya SyntaxError, ga bisa di-import!) — gambar, sprite sheet, animasi frame, rotasi, flip, alpha, z-order, collider kotak/lingkaran, GrupSprite |
partikel 🆕 |
Particle system: ledakan, hujan, semburan, emisi otomatis, gravitasi partikel |
ui 🆕 |
Tombol (hover+klik+callback), Label, Panel, Bar (health/progress bar) |
game |
Pause/resume, dt-clamp anti-lag, FPS display, background color, reset state |
input |
Fix konflik event dengan game loop, scroll wheel, mouse just-pressed, gamepad/joystick |
grafis |
Rounded rect, teks multi-baris, poligon bebas, ellipse, offscreen surface |
animasi |
Fix easing elastic/bounce crash + 26 jenis easing + callback on_selesai |
fisika |
Radius per-bodi (bukan hardcode 16), gravitasi configurable, ground detection |
tilemap |
Fix solid_map setelah bulk-load, dari_file, rendering warna fallback |
kamera |
Reset, pan, rotasi, batas world otomatis, buat_layar_penuh |
vektor |
Sudut derajat, dari_polar, proyeksi, refleksi, midpoint |
waktu |
Timer, Stopwatch, FPS counter, delta otomatis |
impor game
impor sprite
impor ui
impor partikel
buat pemain = sprite.Sprite(kosong, 100, 300, lebar=34, tinggi=40)
pemain.warna = "langit"
buat tombol = ui.Tombol("MULAI", 300, 330, 200, 60)
buat hp = ui.Bar(100, 100, 10, 42, 220, 18)
buat efek = partikel.buat_emiter(0, 0)
Coba game showcase lengkapnya:
bro examples/game_arena.bro
Platformer arena dengan tilemap solid, musuh patroli, tembakan, ledakan partikel, health bar, tombol menu, kamera shake, dan pause — semua pakai API baru.
Interpreter: Atribut Objek Stdlib
Objek stdlib (Sprite, Vec2, ui, dll) sekarang bisa diset atributnya (pemain.warna = "merah", pemain.vel_x = 100) — konsisten dengan transpiler yang sudah mendukungnya sebelumnya.
Apa yang Baru di v5.3?
Visualisasi Data (visualisasi)
impor visualisasi
buat penjualan = {"Senin": 12, "Selasa": 45, "Rabu": 23, "Kamis": 67, "Jumat": 34}
# Chart ASCII langsung di terminal
# Senin │ ███████ 12
# Selasa │ ███████████████████████████ 45
# ...
tulis visualisasi.batang(penjualan, judul="Penjualan Mingguan", satuan="unit")
# Chart SVG + laporan HTML untuk dibuka di browser
buat svg = visualisasi.batang_svg(penjualan, judul="Penjualan Mingguan")
visualisasi.simpan_svg("penjualan.svg", svg)
visualisasi.simpan_html("laporan.html", [svg], judul="Laporan Penjualan")
Modul visualisasi menyediakan 5 jenis chart (bar, garis, pie/donut, scatter, histogram) dalam tiga format: ASCII buat tampil langsung di terminal, SVG/HTML buat laporan profesional, dan GUI jendela native buat tampilan ala game.
GUI Chart (Pygame) 🎮
# pip install pygame-ce (sekali saja)
impor visualisasi
buat chart1 = {"jenis": "batang", "data": [12, 45, 23], "judul": "Penjualan"}
buat chart2 = {"jenis": "kue", "data": {"A": 30, "B": 40}, "judul": "Pasar"}
visualisasi.tampilkan_jendela([chart1, chart2], judul="Dashboard")
Chart tampil di jendela gelap ala game: animasi masuk, hover tooltip, navigasi keyboard (panah ganti chart, 1-9 lompat, F fullscreen, S screenshot, ESC tutup). Data bisa berupa list nilai, list pasangan [label, nilai], atau objek {label: nilai}.
Apa yang Baru di v5.2?
Keyword Arguments
fungsi sapa(nama, umur=0)
kembali "Halo " + nama + " umur " + teks(umur)
selesai
tulis sapa(nama="Budi") # Halo Budi umur 0
tulis sapa(nama="Ani", umur=25) # Halo Ani umur 25
tulis sapa("Citra", umur=30) # Halo Citra umur 30
Argumen bernama bikin pemanggilan fungsi lebih jelas & ga perlu inget urutan parameter. Bisa dipakai di fungsi, method, lambda, dan constructor kelas.
Pipeline Operator (|>)
fungsi kali2(x)
kembali x * 2
selesai
buat hasil = 21 |> kali2 # 42 — nilai dikirim ke fungsi berikutnya
buat genap = [1, 2, 3, 4] |> saring(lalu(x) x % 2 == 0) # [2, 4]
buat plus1 = [1, 2, 3] |> peta(lalu(x) x + 1) # [2, 3, 4]
Komposisi fungsi ala Elixir/F# — baca dari kiri ke kanan, ga perlu nested call.
Destructuring Assignment
buat [a, b, c] = [1, 2, 3]
tulis a, b, c # 1 2 3
buat {x, y} = {"x": 10, "y": 20}
tulis x, y # 10 20
Unpacking list & objek langsung ke variabel, kayak Python/JS.
Package Manager (BroPM)
bro pkg init # Bikin project + manifest brolang.json
bro pkg install <nama|git-url> # Install package
bro pkg publish # Publish ke registry lokal
bro pkg search <kata> # Cari package
impor paket-ku
tulis paket-ku.fungsi_utama()
Package manager beneran jalan: manifest brolang.json, install dari folder lokal / git URL / registry, dan package yang terinstall bisa langsung di-impor dari kode BroLang.
Benchmark Command
bro benchmark <file> # bandingkan Interpreter vs Transpiler vs Bytecode VM
bro bench <file>
Ukur performa ketiga mesin eksekusi BroLang dalam satu command.
VM Optimasi
Bytecode VM sekarang punya builtin cache (fast path LOAD_GLOBAL/CALL_BUILTIN) plus perbaikan stack discipline STORE_LOCAL/STORE_GLOBAL yang bikin for-loop & assignment berjalan benar dan lebih cepat.
Apa yang Baru di v5.0?
Null Coalescing (??)
buat nama = kosong
tulis nama ?? "Anonim" # Anonim
Kalo nilainya kosong, otomatis ganti ke default. Ga perlu nulis jika panjang-panjang.
Higher-Order Functions
buat angka = [1, 2, 3, 4, 5]
tulis peta(angka, lalu(x) x * 2) # [2, 4, 6, 8, 10]
tulis saring(angka, lalu(x) x > 3) # [4, 5]
tulis kurangi(angka, lalu(a, b) a + b, 0) # 15
peta, saring, kurangi — fungsi tinggi level kayak di Python tapi pake bahasa Indonesia.
Result & Option Types
buat hasil = Benar(42)
buat error = Salah("ada yang salah")
buat nilai = Ada(100)
buat kosong = Kosong()
Buat handle error dengan rapi, mirip Rust tapi versi santai.
Macros
makro Logger()
tulis "[LOG] Program jalan!"
selesai
Logger()
Bikin macro gampang, tinggal makro terus isi badannya.
Namespaces
ruang nama Matematika
fungsi tambah(a, b)
kembali a + b
selesai
selesai
pakai Matematika
tulis Matematika.tambah(2, 3) # 5
Organisasi kode biar ga berantakan.
For-Each
buat buah = ["apel", "mangga", "jeruk"]
untuk setiap item dalam buah lakukan
tulis item
selesai
Lebih pendek dari untuk i dalam range(...).
Interfaces
antarmuka DapatJalankan {
fungsi jalankan()
}
kelas Robot(DapatJalankan)
fungsi jalankan()
tulis "Robot jalan!"
selesai
selesai
Kalo ga implement method wajib, langsung error.
Abstract Classes
abstrak kelas Hewan {
fungsi suara()
}
buat hewan = Hewan() # error! ga bisa langsung bikin instance
Harus diwarisi dulu sebelum bisa dipake.
Access Modifiers
kelas Keamanan
privat fungsi rahasia()
tulis "jangan liat!"
selesai
fungsi buka()
self.rahasia() # bisa dari dalam kelas
selesai
selesai
buat k = Keamanan()
k.buka() # bisa
k.rahasia() # error! privat
privat beneran diproteksi, publik bisa diakses dari mana aja, terlindungi cuma bisa dari kelas turunan.
Chained Comparisons
buat x = 5
jika 0 < x < 10 maka
tulis "dalam range"
selesai
Ga perlu pake dan lagi buat range checking.
Generators
fungsi gen_sampai(n)
buat i = 0
selama i < n lakukan
hasilkan i
i = i + 1
selesai
selesai
untuk angka dalam gen_sampai(5) lakukan
tulis(angka)
selesai
hasilkan bikin fungsi jadi generator — value dikirim satu per satu.
Iterator Protocol
kelas Rentang
fungsi __init__(mulai, akhir)
self.mulai = mulai
self.akhir = akhir
selesai
fungsi __iter__()
self._current = self.mulai
kembali self
selesai
fungsi __next__()
jika self._current >= self.akhir maka
hentikan_iterasi()
selesai
buat val = self._current
self._current = self._current + 1
kembali val
selesai
selesai
Bikin objek iterable sendiri pake __iter__/__next__, sama kayak Python.
Properties (Getter/Setter)
kelas Suhu
fungsi __init__(derajat)
self._derajat = derajat
selesai
fungsi _derajat()
kembali self._derajat
selesai
fungsi _derajat_set(nilai)
self._derajat = nilai
selesai
selesai
buat s = Suhu(36)
tulis(s.get("derajat")) # 36
s.set("derajat", 37)
tulis(s.get("derajat")) # 37
Convention: _<nama>() buat getter, _<nama>_set(v) buat setter.
Static Methods
kelas Kalkulator
statis fungsi tambah(a, b)
kembali a + b
selesai
selesai
tulis(Kalkulator.tambah(3, 4)) # 7
statis bikin method bisa dipanggil tanpa bikin instance.
String Interpolation
buat nama = "Bro"
buat umur = 5
# Dollar variable
tulis("Halo $nama, umur $umur tahun!")
# Dollar expression
tulis("2 + 3 = ${2 + 3}")
# F-string
tulis(f"Halo {nama}, umur {umur} tahun!")
Dua cara: $variable buat simpel, f"..." buat expression.
Type Checking
tulis(cek_tipe(42)) # int
tulis(cek_tipe(42, "angka")) # True
pastikan(42 == 42, "Harus sama!") # assert
Semua Fitur (v4.0 + v5.0 + v5.2 + v5.3 + v5.4 + v5.5 + v6.0)
v6.0
- Type system lengkap:
buat x: Angka = 5,fungsi f(a: Angka) -> Teks, unionAngka | Teks, generikDaftar<Angka>, alias tipe - Pattern matching modern: pola list
[a, b], pola objek{"nama": n}, binding, guardx jika x > 10 - Error handling profesional:
kelas_errorcustom error class + hierarki +kecuali lainnya - Modul baru:
tanggal,catat,lingkungan,proses,csv,registri(package registry online) - CLI error display profesional: baris/kolom, penanda
^, solusi, stack trace - Analyzer: dukungan kelas_error & pattern binding + cek tipe statis (mismatch ditolak di
bro run)
v5.5
- Operator overloading:
_tambah_,_kurang_,_sama_,_teks_,_panjang_,_index_, dll. - Modul
sejajar: threading/parallel —jalankan,tunggu,peta_sejajar, objekTugas - LSP: completion pintar, go-to-definition, hover
v5.4
- Full upgrade library game (14 modul): sprite ditulis ulang,
partikel🆕,ui🆕, input event fix, tilemap fix, fisika radius configurable, kamera rotasi, 26 easing animasi, Timer/Stopwatch/FPS examples/game_arena.bro: showcase platformer (sprite + fisika + partikel + UI + tilemap + kamera)- Interpreter: atribut objek stdlib bisa diset (
pemain.warna = "merah")
v5.3
- Modul
visualisasi: chart ASCII + SVG + HTML (bar, garis, pie, scatter, histogram) - Export laporan:
simpan_svg,simpan_html,simpan_txt - GUI chart (Pygame):
tampilkan_jendela/tampilkan_batang/ dll. +simpan_png- Jendela native ala game: animasi, tooltip, keyboard nav, fullscreen, screenshot
v5.2
- Keyword arguments:
sapa(nama="Budi", umur=25) - Pipeline operator:
nilai |> fungsi - Destructuring assignment:
buat [a, b] = list/buat {x, y} = objek - Package manager:
bro pkg init/install/remove/list/search/publish/info - Package import:
impor <paket>untuk package terinstall - Benchmark CLI:
bro benchmark <file>
v5.0
Basic
buatvariabel,fungsi,kelas,muatmodule- Tipe data: angka, teks, boolean, list, tuple, set, objek, kosong
- Operator: aritmatika, perbandingan, logika, bitwise
- Percabangan:
jika...maka...lainnya...selesai - Perulangan:
untuk,selama,hentikan,lanjutkan
Functions
- Default parameters, lambda (
lalu), closures - List comprehension, keyword arguments, argument labels
- Variadic functions (
...), recursion
OOP
- Class, inheritensi,
super(), dataclass - Multiple inheritance, property
Advanced
try...kecuali...selesaierror handlinglemparexception,finalblockglobal/nonlokalscopecocokkan(match/case), dekorator- Async/await, generators, context manager
- Enum, struct, ternary expression
v5.0
- Null coalescing
?? - Higher-order functions (
peta,saring,kurangi) - Result & Option types (
Benar/Salah,Ada/Kosong) - Macros (
makro) - Namespaces (
ruang nama+pakai) - Interfaces (
antarmuka) - Abstract classes (
abstrak kelas) - Access modifiers (
publik,privat,terlindungi) - For-each (
untuk setiap ... dalam ... lakukan) - Chained comparisons (
0 < x < 10) - Generators (
hasilkan) - Iterator protocol (
__iter__/__next__/hentikan_iterasi()) - Properties (
_<nama>()getter,_<nama>_set(v)setter) - Static methods (
statis fungsi) - String interpolation (
$variable/f"...") - Type checking (
cek_tipe/pastikan) - Class inheritance syntax (
kelas Nama(Parent))
Contoh Program
Hello World
tulis "Halo Dunia!"
Fungsi & Lambda
fungsi tambah(a, b)
kembali a + b
selesai
buat kali2 = lalu(x) x * 2
tulis tambah(10, 5) # 15
tulis kali2(10) # 20
Class
kelas Mahasiswa
fungsi __init__(nama, nim)
self.nama = nama
self.nim = nim
selesai
fungsi info()
tulis(self.nama + " - " + self.nim)
selesai
selesai
buat mhs = Mahasiswa("Budi", "12345")
mhs.info()
Higher-Order Functions
buat angka = [1, 2, 3, 4, 5]
buat genap = saring(angka, lalu(x) x % 2 == 0)
tulis genap # [2, 4]
buat kali3 = peta(angka, lalu(x) x * 3)
tulis kali3 # [3, 6, 9, 12, 15]
Result Handling
fungsi bagi(a, b)
jika b == 0 maka
kembali Salah("bagi dengan nol!")
selesai
kembali Benar(a / b)
selesai
buat hasil = bagi(10, 2)
tulis hasil # 5.0
Game Development
impor game
impor grafis
impor input
game.buat_jendela(800, 600, "Game Pertamaku")
game.set_latar_warna("biru_gelap")
fungsi update(dt)
jika input.tombol_baru_ditekan("SPACE") maka
tulis "Lompat!"
selesai
selesai
fungsi gambar(screen)
grafis.segi_panjang(400, 300, 50, 50, "merah")
selesai
game.tambah_scene("utama", update, gambar)
game.ganti_scene("utama")
game.mulai()
Full API game (sprite, partikel, ui, fisika, tilemap, kamera, dll): baca docs/GAME.md. Contoh lengkap: bro examples/game_arena.bro.
Standard Library (43+ modules)
| Module | Fungsi |
|---|---|
matematika |
Fungsi matematika |
teks |
Manipulasi string |
acak |
Random number |
waktu |
Waktu & sleep |
sistem |
OS interaction |
file |
File I/O |
jaringan |
HTTP client |
database |
SQLite wrapper |
json |
JSON parse/serialize |
game |
Game loop & scene |
grafis |
2D graphics (SDL2) |
input |
Keyboard & mouse |
audio |
Sound effects |
vektor |
Vektor 2D/3D |
sprite |
Sprite system |
animasi |
Animation & tweens |
tilemap |
Tilemap support |
kamera |
Camera system |
fisika |
Physics engine |
partikel |
Particle system (ledakan, hujan, semburan) |
ui |
UI components (Tombol, Label, Panel, Bar) |
tes |
Test framework |
profil |
Performance profiler |
debugger |
Step-through debugging |
pencocok |
Regex patterns |
antrian |
Queue & priority queue |
tumpukan |
Stack data structure |
serialisasi |
JSON, base64, CSV |
dasar |
Base encoding utilities |
visualisasi |
Chart & grafik data (ASCII, SVG, HTML, GUI Pygame) |
sejajar |
Threading & parallel (jalankan background task, peta_sejajar) |
tanggal |
Tanggal Indonesia: parse, format, selisih hari, komponen |
catat |
Logging ber-level (info/error/warning) ke terminal & file |
lingkungan |
Environment variables (get/set/ada/hapus) |
proses |
Jalankan subprocess (keluaran, kode exit) |
csv |
Baca/tulis CSV → list objek |
registri |
Package registry online: server HTTP + publish/install |
angka |
Matematika lanjut: pi/e (nilai), sqr, abs, min, max, faktorial |
sistem |
Info sistem: versi, platform, prosesor, hostname, cwd |
sistem_operasi |
Operasi OS: list_dir, buat/hapus/pindah file & folder, jalur |
web |
HTTP client: get/post/put/delete → objek respon (teks, status, json) |
database |
SQLite: buka, query, eksekusi_sql, tabel, kolom |
kripto |
Keamanan: md5/sha1/sha256/sha512, base64, password PBKDF2+salt, token (v6.4) |
arsip |
Arsip: buat/tambah/ekstrak/daftar ZIP, kompresi teks (v6.4) |
terminal |
UX CLI: warna ANSI, gaya teks, progress bar, prompt, pesan status (v6.4) |
jalur |
Pathfinding A* + navigasi: cari_jalur, IkutiJalur, Patroli waypoint (v6.6) |
efek |
Efek layar: Flash, Vignette, TeksMelayang, Pulsa (v6.6) + Guncangan screen shake (v6.7) |
Dokumentasi
| Dokumentasi | Isinya |
|---|---|
| Instalasi | Cara install BroLang |
| Quick Start | Tutorial singkat |
| Dasar Bahasa | Tipe data, variabel, operator |
| Fungsi | Fungsi, lambda, closures |
| Class & OOP | OOP & inheritance |
| Fitur v8.1 | Game dev: object pooling, simpan/muat, dialog, AI (FSM+steering), platform satu arah & bergerak, quest/achievement |
| Fitur v8.0 | Spread objek {...a}, null-coalescing assignment ??=, kecuali multi-tipe (A, B), performa VM |
| Fitur v6.9 | Guard clause untuk semua statement (tulis, assignment, lempar, dst) |
| Fitur v6.8 | Guard clause, floor division //, augmented pada atribut/index, BGM prosedural |
| Fitur v6.7 | Rest/spread parameter, multiple return, VM lengkap, screen shake, synth audio |
| Game Dev v6.6 | Pathfinding A*, efek layar, fisika AABB, parallax, fixed timestep, UI baru |
| Fitur v6.5 | Konstanta, do-until loop, range for loop |
| Fitur v6.0 | Type system, pattern matching modern, kelas_error, stdlib baru, package registry online |
| Fitur v5.0 | Semua fitur lengkap |
| Game Development | Bikin game pake BroLang |
| Standard Library | 43+ module built-in |
| CLI Tools | Compiler, formatter, profiler |
| Arsitektur | Pipeline eksekusi |
CLI Commands
bro run <file> # Jalankan file .bro (tanpa argumen: dari brolang.json)
bro init <nama> # Bikin proyek baru (src/, tests/, docs/, brolang.json)
bro build <file> # Compile ke Python
bro repl # REPL interaktif
bro test [file] # Jalankan tes (--nama <filter>, --detail)
bro profile <file> # Profil eksekusi
bro lint <file> # Analisis kode statis
bro fmt <file> # Format kode
bro doc [topik] # Dokumentasi (kripto, arsip, terminal, web, ...)
bro new-game <nama> # Bikin proyek game baru
bro run-game <file> # Jalankan game
bro benchmark <file> # Benchmark interpreter vs transpiler vs VM
bro upgrade # Update BroLang ke versi terbaru dari GitHub (v6.4)
bro belajar # Belajar coding interaktif untuk pemula 🎓
bro pkg <cmd> # Package manager (init/install/publish/dll)
Game (showcase library game)
pip install pygame-ce # sekali saja, untuk semua modul game
bro examples/game_v66.bro # showcase v6.6: pathfinding A*, efek, AABB, parallax, tooltip
bro examples/game_arena.bro # platformer: sprite + fisika + partikel + UI + tilemap + kamera
GUI Chart
pip install pygame-ce # sekali saja, untuk jendela GUI chart
bro examples/visualisasi.bro # tur lengkap: ASCII + HTML + buka jendela GUI
bro examples/visualisasi_gui.bro # khusus jendela chart ala game
Arsitektur
Source Code (.bro)
↓
┌─────────┐
│ Lexer │ ← Tokenisasi (130+ tokens)
└─────────┘
↓
┌──────────┐
│ Parser │ ← Bikin AST (110+ nodes)
└──────────┘
↓
┌─────────────────────┐
│ SemanticAnalyzer │ ← Cek tipe & scope
└─────────────────────┘
↓
┌────────────┐
│ Optimizer │ ← Dead code elim, constant folding
└────────────┘
↓
┌─────────────┐
│ Interpreter │ ← Eksekusi langsung
└─────────────┘
↓
┌─────────┐
│ Output │
└─────────┘
Testing
# Jalankan semua test
python3 -m pytest tests/ -v
# Cuma test v5.0
python3 -m pytest tests/unit/test_v5_language.py -v
1288 test cases, semua passing! (termasuk 48 test v8.1: object pooling, simpan/muat, dialog, AI FSM+steering, platform satu arah & bergerak, quest/achievement; 32 test v8.0: spread objek, ??=, kecuali multi-tipe + error kustom di VM, konsistensi VM; 32 test v7.2; 10 test yield di dalam coba/tangkap di generator; 8 test perbaikan hasilkandari yield-from; 43 test v6.9: guard clause statement umum; 55 test v6.8: guard clause, floor division, augmented pada atribut/index, BGM prosedural; 59 test v6.7: rest/spread parameter, multiple return, VM lengkap; 65 test v6.6 game dev: pathfinding A*, efek layar, fisika AABB + raycast, partikel gradien, tilemap animasi, parallax, fixed timestep, Tooltip/DaftarSkor; 43 test v6.2 game dev; 61 test library game v5.4; output-consistency; visualisasi; ramah pemula; dan modul stdlib v6.0/v6.4)
Kontribusi
- Fork repo ini
- Buat branch baru (
git checkout -b fitur-baru) - Commit perubahan (
git commit -m "tambah fitur baru") - Push ke branch (
git push origin fitur-baru) - Buka Pull Request
License
MIT License — Bebas pake, dimodif, disebar.
Credits
Dibuat dengan ❤️ oleh salzcill-cmd
BroLang v8.2 — Bahasa pemrograman buat yang males nulis syntax panjang 🇮🇩
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file brolang-8.2.0.tar.gz.
File metadata
- Download URL: brolang-8.2.0.tar.gz
- Upload date:
- Size: 373.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a55d29ac0a316cd1426a53c2f0821c6be9132fe46f940c83c6fe84f8af5907b5
|
|
| MD5 |
4db24e7cfcf1e474f9ca745673458b58
|
|
| BLAKE2b-256 |
6adab8ec367c1b9ef90b5186ec299bbdfcd5192245a83f59246808fa082fa72f
|
Provenance
The following attestation bundles were made for brolang-8.2.0.tar.gz:
Publisher:
publish.yml on salzcill-cmd/BroLang
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
brolang-8.2.0.tar.gz -
Subject digest:
a55d29ac0a316cd1426a53c2f0821c6be9132fe46f940c83c6fe84f8af5907b5 - Sigstore transparency entry: 2572078127
- Sigstore integration time:
-
Permalink:
salzcill-cmd/BroLang@837eb3c3cbc1675e6395727607afd5d4fe8e36ab -
Branch / Tag:
refs/tags/v8.2.0 - Owner: https://github.com/salzcill-cmd
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@837eb3c3cbc1675e6395727607afd5d4fe8e36ab -
Trigger Event:
release
-
Statement type:
File details
Details for the file brolang-8.2.0-py3-none-any.whl.
File metadata
- Download URL: brolang-8.2.0-py3-none-any.whl
- Upload date:
- Size: 370.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e226d387d9eea4d9e71da94b6e99240bcdb43658668f69f9f6a9cc9a82da39de
|
|
| MD5 |
49835da8d53b481e280431dbf4c9e4b4
|
|
| BLAKE2b-256 |
a54407866dc4283ab608a33636bd6866f7d3665bcce037bf192a1fd1cf610e2d
|
Provenance
The following attestation bundles were made for brolang-8.2.0-py3-none-any.whl:
Publisher:
publish.yml on salzcill-cmd/BroLang
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
brolang-8.2.0-py3-none-any.whl -
Subject digest:
e226d387d9eea4d9e71da94b6e99240bcdb43658668f69f9f6a9cc9a82da39de - Sigstore transparency entry: 2572078193
- Sigstore integration time:
-
Permalink:
salzcill-cmd/BroLang@837eb3c3cbc1675e6395727607afd5d4fe8e36ab -
Branch / Tag:
refs/tags/v8.2.0 - Owner: https://github.com/salzcill-cmd
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@837eb3c3cbc1675e6395727607afd5d4fe8e36ab -
Trigger Event:
release
-
Statement type: