<div style="float:right; margin-left: 15px;margin-bottom:15px">

<a href="/jancy/downloads.html"><img src="/images/ninja/jancy-maskot-350.png" 
alt="Jancy" style="display:block;margin-left:auto;margin-right:auto;"></a>

<!--<a href="/jancy/downloads.html"><img src="/images/ninja/download.png" 
style="display:block;margin:15px auto 0 auto"></a>-->


<div style="margin:15px auto;display:table;border:1px solid #cccccc;border-radius:3px;background: linear-gradient(to top, #ebebeb, #ffffff);height:56px;cursor:pointer;box-shadow:0 1px 5px rgba(0,0,0,0.2)" onclick="window.location = '/jancy/downloads.html'">
<div style="display:table-cell;vertical-align:middle;padding:0 15px">
<img src="/images/down_button_icon.png">
</div>
<div style="display:table-cell;padding:0 15px 0 0;vertical-align:middle;vertical-align:middle;text-align:center;"><a style="font-family:Arial;font-size:17px;font-weight:bold;color:rgba(0,0,0,0.4);text-decoration:none;white-space:nowrap" href="/jancy/downloads.html">Download Jancy</a></div>
</div>

</div>

<md>
# Introducing Jancy

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 <i>not</i> created just to fix the infamous <a href="http://www.drdobbs.com/windows/a-brief-history-of-windows-programming-r/225701475" target="_blank">fatal flaw</a> of other languages -- although we admit that the passion to invent was a significant driving force.

<i>The main</i> motivation to create Jancy was our software product called [IO Ninja](/ioninja/). 

What we needed was a scripting language with safe data pointer arithmetic, 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

## Key features

* 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 regexp-based generator of incremental lexers/scanners

## Other notable features
* Multiple inheritance support
* Const-correctness support
* RAII (resource-acquisition-is-initialization) paradigm support
* Explicit stack allocation and 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

---
Proceed to the detailed discussion of Jancy [feature list](features.html)

</md>
