Fancy a self-hosted programming language for the Rubinius VM
fancy-lang.org
fancy-lang.org
From what I saw, the Ruby language has about 108 terminals+nonterminals in its grammar.
Python has something like 29 term+nonterm.
Smalltalk (an advanced dialect with namespaces and syntactically distinct class bindings) has 8 term+nonterm.
The Ruby syntax is about 3X bigger than Python's, which in turn is about 3X bigger than Smalltalk's.
I'd like to peruse the syntax of Fancy. If it's significantly smaller than Ruby's, then programming tools will appear in the Fancy community at a much faster rate than they did in Ruby. If large swathes of it are homomorphic to Ruby, then lots of Ruby library code could appear in Fancy at a high rate.
EDIT: Yes, size of the syntax is a real consideration. Just two guys wrote the widely used Refactoring Browser for Smalltalk, which includes a recursive meta-syntax parser engine. I have hand written a top-down parser for Smalltalk, and I completed it in just one afternoon. Contrast this with the situation several years ago, of multiple teams of Ruby syntax "study groups" that each labored many months to produce parsers outside of the Matz Ruby VM. (Yes, an "interpreter" is still a VM! The distinction is nonsense at this point.) Smaller syntaxes mean faster language/tool innovation!
[1] "Pure and fast Ruby source code parser for OCaml" https://github.com/m2ym/rbparser
https://github.com/bakkdoor/fancy/blob/master/examples/async... https://github.com/bakkdoor/fancy/blob/master/examples/futur... https://github.com/bakkdoor/fancy/blob/master/examples/futur...
It will be interesting to see how Fancy evolves its Actor features in comparison to other languages with built-in Actors.
EDIT: Personally, I would also add to the above list: algebraic data types, optional static typing with a (mostly) sane type system, no inheritance / minimal indirection, immutable by default, (reasonably) good introspection, support for live code replacement.