Wi is a small, fast, embeddable, prototype-based scripting language
obj_person := object { name: ""; greet: |self| => print("Hello, ${self.name}!"); }; slava := new obj_person { name: "Slava"; }; slava->greet(); // Hello, Slava!
- Wi is small. The entire implementation takes less than 15,000 lines of code.
- Wi is fast. Fast single-pass compiler to bytecode with NaN boxing value representation help Wi to compete with other dynamic programming languages.
- Wi is simple. You can learn its dead-simple syntax and standard library in less than a week using its lovingly made documentation.
- Wi is prototype-based. Many languages use classes – Wi uses objects. You clone these objects and create whatever you want. No delegation, just cloning.
- Wi is extendable. Simple and straightforward FFI allows you to easily create libraries for Wi and use them with the ease of one statement.
Notes
This programming language was created by me, and only me – a single person. It's in beta, because I'm still designing it and breaking syntax changes are to be expected. The standard library isn't finished yet, but it's already quite useful. Other than the API, the code is not heavily commented. Some parts may still need polish, and I'm very open to suggestions – if you have one, open an issue!No AI was used in the development of Wi – only me, my horrendous laptop, my favorite book (Crafting Interpreters), and tons of Googling.
This website is still work-in-progress.
