jaki kiwen
April 29, 2025 · View on GitHub

Aren't you pilin lape from writing Rust programs in English? Do you like saying "pakala a" a lot? Would you like to try something different, in a super simplified language? Would you want to bring some Toki Pona touch to your programs?
jaki kiwen (Toki Pona for Rust) is here to save your day, as it allows you to write Rust programs in Toki Pona, using Toki Pona keywords, Toki Pona function names, Toki Pona idioms.
This has been designed to be used as the official programming language for ma pona pi toki pona.
You're a jan sin and don't feel at ease using only Toki Pona words?
Don't worry! Toki Pona Rust is fully compatible with English Rust, so you can mix both at your convenience.
Here's an example of what can be achieved with jaki kiwen:
trait and impl (aka nasin_suli en nasin_lon)
jaki_kiwen::jaki_kiwen! {
weka poki_suli jaki_kiwen;
o_kepeken std::collections::LipuNimi sama LipuN;
nasin_suli NimiEnKon {
nasin o_pana(&mi, nimi: Linja, kon: Linja);
nasin o_alasa(&mi, nimi: Linja) -> IjoPini<IjoKen<&Linja>, Linja>;
}
kule_awen ken_ante LIPU_NIMI: IjoKen<LipuN<Linja, Linja>> = IjoAla;
tomo IjoSijelo;
nasin_lon NimiEnKon lon_ale IjoSijelo {
nasin o_pana(&mi, nimi: Linja, kon: Linja) {
o_lon_e lipu = ike_a {
LIPU_NIMI.o_wile_anu_pana_kepeken(NasinOpen::nasin_open)
};
lipu.o_pana_lon_insa_e(nimi, kon);
}
nasin o_alasa(&mi, nimi: Linja) -> IjoPini<IjoKen<&Linja>, Linja> {
lon_la o_lon_e IjoLon(lipu) = ike_a { LIPU_NIMI.o_kama_ijo_tan() } {
Pona(lipu.o_wile_tan(&nimi))
}
ala_la {
Ike("lipu li ala a!".o_ante_tawa())
}
}
}
}
Other examples
See the examples to get a rough sense of the whole syntax. o lukin a, that's it.
o pana!
First of all, sina pona mute for considering participating to this joke,
Sonja Lang will thank you later! Feel free to throw in a few identifiers
here and there, and open a pull request against the suli-nanpa-wan (Toki
Pona for main) branch.
Please don't introduce any unpa, though: we will not excuse your Toki Pona.
but why would you do ni
- horsin around
- playing with raw proc macros
- making a bit of fun about programming languages that do this seriously, though I can see their utility.
- ni li sama nimi kijetesantakalu
Other languages
- French: rouille
- Dutch: roest
- German: rost
- Polish: rdza
- Italian: ruggine
- Russian: Ржавый
- Esperanto: rustteksto
- Hindi: zung
- Hungarian: rozsda
- Chinese: xiu (锈)
- Spanish: rustico
- Korean: Nok (녹)
- Finnish: ruoste
- Arabic: sada
- Turkish: pas
- Vietnamese: gỉ
- Japanese: sabi (錆)
- Danish: rust?
- Marathi: gan̄ja
- Romanian: rugină
- Czech: rez
- Ukrainian: irzha
- Bulgarian: ryzhda
- Slovak: hrdza
- Catalan: rovell
- Corsican: rughjina
- Indonesian: karat
- Lithuanian: rūdys
- Greek: skouriasmeno
- Thai: sanim (สนิม)
- Swiss: roeschti
- Swedish: rost
- Croatian: hrđa
- Persian: zangar (زنگار)
- Malagasy: arafesina
- Latin: ferrugo
- Norwegian: korrosjon
- Estonian: rooste
- All of the above: unirust
nasin pi ken pana
WTFPL. A translation to Toki Pona is provided at LICENSE-tok.txt.