Lily is statically-typed, with an interpreter as a reference. Lily uses reference counting for memory management with garbage collection as a fallback.
Key features of Lily:
Built-in template mode
Embed/extend in C
Single-inheritance classes
Exceptions
Generics
Algebraic data types (with Option and Result predefined).
Here's a small example showing most of Lily's features: