What?! Yet another programming language? Like, there isn't enough of them already?
Believe us, we know how it sounds! We also likely know every possible argument against creating a new programming language. But the truth is, Jancy was not created just to fix the infamous fatal flaw of other languages -- although we admit that the passion to invent was a significant driving force.
The main motivation to create Jancy was our software product called IO Ninja.
What we needed was a scripting language with safe data pointer arithmetic, integrated lexer generator, extensive facilities for UI programming (properties, events, etc.), and easy integration with the host C/C++ application.
We couldn't find such a language! So we created it. Meet Jancy.
Main design goals
- Object-oriented language for IO and UI programming with C-family syntax
- Designed to be used as a scripting language from the host C/C++ application
- ABI (application-binary-interface) compatibility with C/C++
- Automatic memory management via accurate GC (garbage collection)
- LLVM (Low Level Virtual Machine) as a back-end
- Safe pointers and pointer arithmetic
- Properties (the most comprehensive implementation thereof)
- Multicasts and events (including weak events, which do not require to unsubscribe)
- Reactive programming (one of the first implementations in a general-purpose imperative language)
- Exception-style syntax over error code checks
- Built-in incremental lexer/scanner generator (incremental here means they can process input chunk-by-chunk)
Other notable features
- Multiple inheritance support
- Const-correctness support
- Thread-local storage
- Weak pointers (that do not retain objects)
- Partial application support for functions and properties
- Scheduled function pointers
- Bitflag enums
- Perl-style formatting
- …and more